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

Version Description

  • Fixed: Google fonts dns-prefetch erroneous deletion
  • Fixed: Importing and saving settings issues
  • Fixed: The "Recent Comments" widget does not deleted
  • Fixed: Redirection for rss feeds did not work
  • Fixed: urlspan.js was loaded when it was not necessary
  • Fixed: "Disable All WordPress Updates" deleted notifications in the adminbar
  • Fixed: Clearfy and DeliPress onflict on php 7.1
  • Fixed: The gravatars didn't turned off when disable comments
  • Fixed: Slowing down the plugins page when updates were disabled
  • Fixed: Issues with setting alt attributes for images
  • Fixed: The plugin interface did not work and the styles were not loaded due to security settings
  • ADDED: Plugin options caching to reduce database queries for 90%. Clearfy became lighter and faster.
  • ADDED: Compress and cache the plugin core files, to reduce the load on the admin panel
  • ADDED: Google Analytics cache
  • ADDED: Google Fonts asynchronous
  • ADDED: Font Awesome asynchronous
  • ADDED: Google Fonts disabling
  • ADDED: Google Maps disabling
  • ADDED: Dashicons disabling
  • ADDED: XFN (XHTML Friends Network) Profile Link disabling
  • ADDED: Gravatars disabling
  • ADDED: html minification settings was enhanced
  • ADDED: Transliteration of Cyrillic alphabet for URLs and filenames
  • ADDED: Login page protection (you can rename the login page)
  • ADDED: Warnings about plugin conflicts. You can see the warnings if you have plugins' options which can intersect with Clearfy and cause conflicts.
Download this release

Release Info

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

Code changes from version 1.1.8 to 1.2.0

Files changed (202) hide show
  1. admin/activation.php +37 -18
  2. admin/ajax/configurate.php +16 -10
  3. admin/ajax/import-settings.php +49 -5
  4. admin/ajax/index.php +0 -0
  5. admin/assets/css/components.css +21 -0
  6. admin/assets/css/components.less +30 -0
  7. admin/assets/css/general.css +2 -1
  8. admin/assets/css/index.php +0 -0
  9. admin/assets/img/asm-icon-128x128.png +0 -0
  10. admin/assets/img/dan-icon-128x128.jpg +0 -0
  11. admin/assets/img/dic-icon-128x128.png +0 -0
  12. admin/assets/img/index.php +0 -0
  13. admin/assets/img/upm-icon-128x128.png +0 -0
  14. admin/assets/index.php +0 -0
  15. admin/assets/js/index.php +0 -0
  16. admin/boot.php +129 -19
  17. admin/includes/classes/class.group.php +23 -3
  18. admin/includes/classes/class.option.php +31 -4
  19. admin/includes/classes/class.pages.php +41 -4
  20. admin/includes/classes/index.php +0 -0
  21. admin/includes/index.php +0 -0
  22. admin/includes/options.php +114 -4
  23. admin/index.php +0 -0
  24. admin/pages/additionally.php +0 -307
  25. admin/pages/advanced.php +283 -0
  26. admin/pages/components.php +150 -47
  27. admin/pages/defence-privacy-code.php +90 -0
  28. admin/pages/defence.php +256 -41
  29. admin/pages/index.php +0 -0
  30. admin/pages/performance-google.php +258 -0
  31. admin/pages/performance-html-minify.php +154 -0
  32. admin/pages/{code-clean.php → performance.php} +120 -48
  33. admin/pages/privacy.php +0 -134
  34. admin/pages/quick-start.php +62 -46
  35. admin/pages/{double-pages.php → seo-double-pages.php} +56 -31
  36. admin/pages/seo.php +95 -94
  37. admin/pages/widgets.php +22 -9
  38. assets/js/css-lazy-load.js +101 -0
  39. assets/js/css-lazy-load.min.js +1 -0
  40. cache/local-ga.js +59 -0
  41. clearfy.php +26 -83
  42. components/assets-manager/admin/assets/css/general.css +2 -2
  43. components/assets-manager/admin/assets/css/index.php +0 -0
  44. components/assets-manager/admin/assets/index.php +0 -0
  45. components/assets-manager/admin/assets/js/index.php +0 -0
  46. components/assets-manager/admin/boot.php +9 -4
  47. components/assets-manager/admin/index.php +0 -0
  48. components/assets-manager/admin/pages/assets-manager.php +30 -72
  49. components/assets-manager/admin/pages/index.php +0 -0
  50. components/assets-manager/admin/pages/more-features.php +6 -2
  51. components/assets-manager/assets/css/index.php +0 -0
  52. components/assets-manager/assets/img/index.php +0 -0
  53. components/assets-manager/assets/js/index.php +0 -0
  54. components/assets-manager/gonzales.php +25 -51
  55. components/assets-manager/includes/class.configurate-assets.php +32 -19
  56. components/assets-manager/includes/class.plugin.php +130 -0
  57. components/assets-manager/includes/index.php +0 -0
  58. components/assets-manager/index.php +0 -0
  59. components/assets-manager/languages/gonzales-fr_FR.mo +0 -0
  60. components/assets-manager/languages/gonzales-fr_FR.po +0 -171
  61. components/assets-manager/languages/gonzales-ru_RU.mo +0 -0
  62. components/assets-manager/languages/gonzales-ru_RU.po +85 -50
  63. components/assets-manager/languages/index.php +0 -0
  64. components/assets-manager/uninstall.php +1 -0
  65. components/assets-manager/updates/010003.php +27 -0
  66. components/assets-manager/updates/index.php +0 -0
  67. components/comments-plus/admin/assets/css/general.css +2 -2
  68. components/comments-plus/admin/assets/css/index.php +0 -0
  69. components/comments-plus/admin/assets/index.php +0 -0
  70. components/comments-plus/admin/assets/js/index.php +0 -0
  71. components/comments-plus/admin/boot.php +5 -6
  72. components/comments-plus/admin/index.php +0 -0
  73. components/comments-plus/admin/pages/comments.php +83 -221
  74. components/comments-plus/admin/pages/delete-comments.php +339 -0
  75. components/comments-plus/admin/pages/index.php +0 -0
  76. components/comments-plus/admin/pages/more-features.php +6 -2
  77. components/comments-plus/assets/css/index.php +0 -0
  78. components/comments-plus/assets/index.php +0 -0
  79. components/comments-plus/assets/js/index.php +0 -0
  80. components/comments-plus/comments-plus.php +25 -52
  81. components/comments-plus/includes/class.plugin.php +133 -0
  82. components/comments-plus/includes/classes/class.configurate-comments.php +28 -10
  83. components/comments-plus/includes/classes/index.php +0 -0
  84. components/comments-plus/includes/index.php +0 -0
  85. components/comments-plus/index.php +0 -0
  86. components/comments-plus/languages/comments-plus-fr_FR.mo +0 -0
  87. components/comments-plus/languages/comments-plus-fr_FR.po +0 -302
  88. components/comments-plus/languages/comments-plus-ru_RU.mo +0 -0
  89. components/comments-plus/languages/comments-plus-ru_RU.po +191 -98
  90. components/comments-plus/languages/index.php +0 -0
  91. components/comments-plus/uninstall.php +1 -0
  92. components/comments-plus/updates/010007.php +27 -0
  93. components/cyrlitera/admin/boot.php +123 -0
  94. components/cyrlitera/admin/options.php +68 -0
  95. components/cyrlitera/admin/pages/cyrlitera.php +85 -0
  96. components/cyrlitera/admin/pages/index.php +0 -0
  97. components/cyrlitera/admin/pages/more-features.php +16 -0
  98. components/cyrlitera/cyrlitera.php +59 -0
  99. components/cyrlitera/includes/class.helpers.php +218 -0
  100. components/cyrlitera/includes/class.plugin.php +128 -0
  101. components/cyrlitera/includes/classes/class.configurate-cyrlitera.php +27 -0
  102. components/cyrlitera/includes/classes/index.php +0 -0
  103. components/cyrlitera/includes/index.php +0 -0
  104. components/cyrlitera/languages/cyrlitera-ru_RU.mo +0 -0
  105. components/cyrlitera/languages/cyrlitera-ru_RU.po +480 -0
  106. components/cyrlitera/languages/index.php +0 -0
  107. components/cyrlitera/libs/index.php +0 -0
  108. components/cyrlitera/readme.txt +64 -0
  109. components/cyrlitera/uninstall.php +13 -0
  110. components/disable-admin-notices/admin/ajax/hide-notice.php +12 -13
  111. components/disable-admin-notices/admin/ajax/index.php +0 -0
  112. components/disable-admin-notices/admin/ajax/restore-notice.php +44 -0
  113. components/disable-admin-notices/admin/assets/css/index.php +0 -0
  114. components/disable-admin-notices/admin/assets/css/notifications-panel.css +17 -1
  115. components/disable-admin-notices/admin/assets/css/notifications-panel.less +20 -2
  116. components/disable-admin-notices/admin/assets/index.php +0 -0
  117. components/disable-admin-notices/admin/assets/js/general.js +0 -203
  118. components/disable-admin-notices/admin/assets/js/index.php +0 -0
  119. components/disable-admin-notices/admin/assets/js/notifications-panel.js +44 -0
  120. components/disable-admin-notices/admin/boot.php +8 -13
  121. components/disable-admin-notices/admin/options.php +12 -9
  122. components/disable-admin-notices/admin/pages/index.php +0 -0
  123. components/disable-admin-notices/admin/pages/more-features.php +6 -2
  124. components/disable-admin-notices/admin/pages/notices.php +22 -21
  125. components/disable-admin-notices/disable-admin-notices.php +25 -52
  126. components/disable-admin-notices/includes/class.plugin.php +135 -0
  127. components/disable-admin-notices/includes/classes/class.configurate-notices.php +102 -34
  128. components/disable-admin-notices/includes/classes/index.php +0 -0
  129. components/disable-admin-notices/includes/index.php +0 -0
  130. components/disable-admin-notices/languages/disable-admin-notices-ru_RU.mo +0 -0
  131. components/disable-admin-notices/languages/disable-admin-notices-ru_RU.po +34 -31
  132. components/disable-admin-notices/languages/index.php +0 -0
  133. components/disable-admin-notices/libs/index.php +0 -0
  134. components/disable-admin-notices/readme.txt +8 -0
  135. components/disable-admin-notices/uninstall.php +1 -0
  136. components/index.php +0 -0
  137. components/updates-manager/admin/assets/css/index.php +0 -0
  138. components/updates-manager/admin/assets/index.php +0 -0
  139. components/updates-manager/admin/assets/js/index.php +0 -0
  140. components/updates-manager/admin/boot.php +47 -7
  141. components/updates-manager/admin/index.php +0 -0
  142. components/updates-manager/admin/pages/advanced.php +35 -25
  143. components/updates-manager/admin/pages/index.php +0 -0
  144. components/updates-manager/admin/pages/more-features.php +6 -2
  145. components/updates-manager/admin/pages/plugins.php +52 -16
  146. components/updates-manager/admin/pages/updates.php +23 -7
  147. components/updates-manager/includes/class.plugin.php +135 -0
  148. components/updates-manager/includes/classes/class.configurate-updates.php +87 -12
  149. components/updates-manager/includes/classes/index.php +0 -0
  150. components/updates-manager/includes/index.php +0 -0
  151. components/updates-manager/index.php +0 -0
  152. components/updates-manager/languages/index.php +0 -0
  153. components/updates-manager/languages/webcraftic-updates-manager-fr_FR.mo +0 -0
  154. components/updates-manager/languages/webcraftic-updates-manager-fr_FR.po +0 -247
  155. components/updates-manager/languages/webcraftic-updates-manager-it-IT.mo +0 -0
  156. components/updates-manager/languages/webcraftic-updates-manager-it-IT.po +0 -184
  157. components/updates-manager/languages/webcraftic-updates-manager-ru_RU.mo +0 -0
  158. components/updates-manager/languages/webcraftic-updates-manager-ru_RU.po +115 -57
  159. components/updates-manager/libs/index.php +0 -0
  160. components/updates-manager/uninstall.php +1 -1
  161. components/updates-manager/updates/010005.php +27 -0
  162. components/updates-manager/updates/index.php +0 -0
  163. components/updates-manager/webcraftic-updates-manager.php +20 -51
  164. includes/class.plugin.php +250 -0
  165. includes/classes/class.configurate-advanced.php +74 -102
  166. includes/classes/class.configurate-google-performance.php +490 -0
  167. includes/classes/{class.configurate-code-clean.php → class.configurate-performance.php} +238 -118
  168. includes/classes/class.configurate-privacy.php +34 -35
  169. includes/classes/class.configurate-security.php +257 -8
  170. includes/classes/class.configurate-seo.php +142 -90
  171. includes/classes/class.wordpress-sanitize.php +0 -320
  172. includes/classes/class.zip-archive.php +5 -0
  173. includes/classes/index.php +0 -0
  174. includes/functions.php +0 -263
  175. includes/helpers.php +320 -0
  176. includes/index.php +0 -0
  177. includes/update-local-ga.php +81 -0
  178. index.php +0 -0
  179. languages/clearfy-fr_FR.mo +0 -0
  180. languages/clearfy-fr_FR.po +0 -1312
  181. languages/clearfy-it_IT.mo +0 -0
  182. languages/clearfy-it_IT.po +0 -1324
  183. languages/clearfy-ru_RU.mo +0 -0
  184. languages/clearfy-ru_RU.po +1321 -460
  185. languages/index.php +0 -0
  186. libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +11 -0
  187. libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +11 -0
  188. libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +11 -0
  189. libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +25 -0
  190. libs/factory/bootstrap/assets/css-min/bootstrap.datepicker.min.css +17 -0
  191. libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +11 -0
  192. libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +11 -0
  193. libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +11 -0
  194. libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +11 -0
  195. libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +11 -0
  196. libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +11 -0
  197. libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +11 -0
  198. libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +11 -0
  199. libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +11 -0
  200. libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +11 -0
  201. libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +11 -0
  202. libs/factory/bootstrap/assets/flat/css/bootstrap.core.css +0 -887
admin/activation.php CHANGED
@@ -4,35 +4,54 @@
4
  * Activator for the clearfy
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 09.09.2017, Webcraftic
7
- * @see Factory326_Activator
8
  * @version 1.0
9
  */
10
- /*class WbcrClr_Activation extends Factory326_Activator {
 
 
 
 
 
 
11
 
12
  /**
13
  * Runs activation actions.
14
  *
15
  * @since 1.0.0
16
  */
17
- /*public function activate()
18
- {
19
- global $wbcr_clearfy_plugin;
 
 
20
 
21
- do_action('wbcr_clearfy_before_activation', $wbcr_clearfy_plugin, $this);
22
- //wbcr_clearfy_import_old_options();
23
- do_action('wbcr_clearfy_after_activation', $wbcr_clearfy_plugin, $this);
24
- }
25
- }*/
 
26
 
27
- /*$wbcr_clearfy_plugin->registerActivation('WbcrClr_Activation');*/
 
28
 
29
- /*function bizpanda_cancel_plugin_deactivation($cancel)
30
- {
31
- if( !BizPanda::isSinglePlugin() ) {
32
- return true;
 
33
  }
34
 
35
- return $cancel;
 
 
 
 
 
 
 
 
 
 
36
  }
37
-
38
- add_filter('factory_cancel_plugin_deactivation_bizpanda', 'bizpanda_cancel_plugin_deactivation');*/
4
  * Activator for the clearfy
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 09.09.2017, Webcraftic
7
+ * @see Factory400_Activator
8
  * @version 1.0
9
  */
10
+
11
+ // Exit if accessed directly
12
+ if( !defined('ABSPATH') ) {
13
+ exit;
14
+ }
15
+
16
+ class WCL_Activation extends Wbcr_Factory400_Activator {
17
 
18
  /**
19
  * Runs activation actions.
20
  *
21
  * @since 1.0.0
22
  */
23
+ public function activate()
24
+ {
25
+ if( !defined('WPSEO_VERSION') ) {
26
+ WCL_Plugin::app()->deactivateComponent('yoast_seo');
27
+ }
28
 
29
+ // caching google analytics on a schedule
30
+ //----------------------------------------
31
+ $ga_cache = WCL_Plugin::app()->getOption('ga_cache');
32
+
33
+ if( $ga_cache ) {
34
+ wp_clear_scheduled_hook('wbcr_clearfy_update_local_ga');
35
 
36
+ if( !wp_next_scheduled('wbcr_clearfy_update_local_ga') ) {
37
+ $ga_caos_remove_wp_cron = WCL_Plugin::app()->getOption('ga_caos_remove_wp_cron');
38
 
39
+ if( !$ga_caos_remove_wp_cron ) {
40
+ wp_schedule_event(time(), 'daily', 'wbcr_clearfy_update_local_ga');
41
+ }
42
+ }
43
+ }
44
  }
45
 
46
+ /**
47
+ * Runs activation actions.
48
+ *
49
+ * @since 1.0.0
50
+ */
51
+ public function deactivate()
52
+ {
53
+ if( wp_next_scheduled('wbcr_clearfy_update_local_ga') ) {
54
+ wp_clear_scheduled_hook('wbcr_clearfy_update_local_ga');
55
+ }
56
+ }
57
  }
 
 
admin/ajax/configurate.php CHANGED
@@ -6,10 +6,13 @@
6
  * @version 1.0
7
  */
8
 
 
 
 
 
 
9
  function wbcr_clearfy_configurate_plugin()
10
  {
11
- global $wbcr_clearfy_plugin;
12
-
13
  check_ajax_referer('wbcr_clearfy_ajax_quick_start_nonce', 'security');
14
 
15
  if( !current_user_can('manage_options') ) {
@@ -26,11 +29,10 @@
26
  exit;
27
  }
28
 
29
- $opt_prefix = $wbcr_clearfy_plugin->pluginName . '_';
30
-
31
  if( $mode_name != 'reset' ) {
32
 
33
- $group = WbcrClr_Group::getInstance($mode_name);
 
34
  $mode_options = $group->getOptions();
35
 
36
  if( empty($mode_options) ) {
@@ -48,16 +50,20 @@
48
  $set_value = $option_value;
49
  }
50
 
51
- update_option($opt_prefix . $option_name, $set_value);
 
 
52
  }
53
  } else {
54
- $all_options = WbcrClr_Option::getAllOptions();
 
55
 
56
  if( !empty($all_options) ) {
57
  foreach($all_options as $option) {
58
- delete_option($opt_prefix . $option->getName());
59
- delete_option($opt_prefix . $option->getName() . '_is_active');
60
  }
 
 
61
  }
62
  }
63
 
@@ -72,7 +78,7 @@
72
  $GLOBALS['wp_fastest_cache']->deleteCache();
73
  }
74
 
75
- echo json_encode(array('status' => 'success', 'export_options' => wbcr_get_export_options()));
76
  exit;
77
  }
78
 
6
  * @version 1.0
7
  */
8
 
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
  function wbcr_clearfy_configurate_plugin()
15
  {
 
 
16
  check_ajax_referer('wbcr_clearfy_ajax_quick_start_nonce', 'security');
17
 
18
  if( !current_user_can('manage_options') ) {
29
  exit;
30
  }
31
 
 
 
32
  if( $mode_name != 'reset' ) {
33
 
34
+ $update_options = array();
35
+ $group = WCL_Group::getInstance($mode_name);
36
  $mode_options = $group->getOptions();
37
 
38
  if( empty($mode_options) ) {
50
  $set_value = $option_value;
51
  }
52
 
53
+ $update_options[$option_name] = $set_value;
54
+
55
+ WCL_Plugin::app()->updateOptions($update_options);
56
  }
57
  } else {
58
+ $delete_options = array();
59
+ $all_options = WCL_Option::getAllOptions();
60
 
61
  if( !empty($all_options) ) {
62
  foreach($all_options as $option) {
63
+ $delete_options[] = $option->getName();
 
64
  }
65
+
66
+ WCL_Plugin::app()->deleteOptions($delete_options);
67
  }
68
  }
69
 
78
  $GLOBALS['wp_fastest_cache']->deleteCache();
79
  }
80
 
81
+ echo json_encode(array('status' => 'success', 'export_options' => WCL_Helper::getExportOptions()));
82
  exit;
83
  }
84
 
admin/ajax/import-settings.php CHANGED
@@ -6,9 +6,14 @@
6
  * @version 1.0
7
  */
8
 
 
 
 
 
 
9
  function wbcr_clearfy_import_settings()
10
  {
11
- global $wpdb, $wbcr_clearfy_plugin;
12
 
13
  check_ajax_referer('wbcr_clearfy_ajax_quick_start_nonce', 'security');
14
 
@@ -17,7 +22,7 @@
17
  exit;
18
  }
19
 
20
- $settings = wbcr_maybe_get_post_json('settings');
21
 
22
  if( empty($settings) ) {
23
  echo json_encode(array('error' => __('Settings are not defined or do not exist.', 'clearfy')));
@@ -28,14 +33,53 @@
28
  $place_holders = array();
29
  $query = "INSERT INTO {$wpdb->prefix}options (option_name, option_value) VALUES ";
30
 
31
- foreach($settings as $key => $value) {
32
- array_push($values, sanitize_text_field($key), wp_kses_post($value));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  $place_holders[] = "('%s', '%s')";/* In my case, i know they will always be integers */
34
  }
35
 
36
  $query .= implode(', ', $place_holders);
37
 
38
- $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE '%" . $wbcr_clearfy_plugin->pluginName . "_%';");
 
 
 
 
 
 
 
39
  $wpdb->query($wpdb->prepare("$query ", $values));
40
 
41
  echo json_encode(array('status' => 'success'));
6
  * @version 1.0
7
  */
8
 
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
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
 
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')));
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);
43
+ $dir_host = $dir_host_without_scheme;
44
+
45
+ if( is_ssl() ) {
46
+ $dir_host = 'https://' . $dir_host_without_scheme;
47
+ }
48
+
49
+ $replace_host_value = preg_replace('/(Host:\s?)(.*)/', '$1' . $dir_host, $option_value);
50
+
51
+ if( !empty($replace_host_value) ) {
52
+ $option_value = $replace_host_value;
53
+ }
54
+
55
+ if( preg_match('/Sitemap:\s?(.*)/', $option_value, $matches) ) {
56
+ $site_map_url = $matches[1];
57
+
58
+ if( filter_var($site_map_url, FILTER_VALIDATE_URL) ) {
59
+ $url_parts = parse_url($site_map_url);
60
+ $replace_sitemap_value = preg_replace('/(Sitemap:\s?)(.*)/', '$1' . $url_parts['scheme'] . '://' . $dir_host_without_scheme . $url_parts['path'] . PHP_EOL, $option_value);
61
+
62
+ if( !empty($replace_sitemap_value) ) {
63
+ $option_value = $replace_sitemap_value;
64
+ }
65
+ }
66
+ }
67
+ }
68
+
69
+ array_push($values, $option_name, $option_value);
70
  $place_holders[] = "('%s', '%s')";/* In my case, i know they will always be integers */
71
  }
72
 
73
  $query .= implode(', ', $place_holders);
74
 
75
+ // Очищаем все опции
76
+ $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE '%" . WCL_Plugin::app()
77
+ ->getPrefix() . "_%';");
78
+
79
+ // Сбрасываем кеш опций
80
+ WCL_Plugin::app()->flushOptionsCache();
81
+
82
+ // Импортируем опции
83
  $wpdb->query($wpdb->prepare("$query ", $values));
84
 
85
  echo json_encode(array('status' => 'success'));
admin/ajax/index.php ADDED
File without changes
admin/assets/css/components.css CHANGED
@@ -20,3 +20,24 @@
20
  #WBCR .wbcr-clearfy-components .plugin-card .install-now {
21
  float: right;
22
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  #WBCR .wbcr-clearfy-components .plugin-card .install-now {
21
  float: right;
22
  }
23
+ #WBCR .wbcr-clearfy-components .plugin-card a.open-plugin-details-modal {
24
+ color: #5c5d5f;
25
+ text-decoration: none;
26
+ font-weight: 600;
27
+ font-size: 15px;
28
+ }
29
+ #WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive {
30
+ background-color: #f9f2f1;
31
+ }
32
+ #WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive a.open-plugin-details-modal {
33
+ color: #ababab;
34
+ text-decoration: none;
35
+ font-weight: 600;
36
+ font-size: 15px;
37
+ }
38
+ #WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive .plugin-icon {
39
+ opacity: 0.3;
40
+ }
41
+ #WBCR .wbcr-clearfy-components .plugin-card.plugin-status-deactive .desc {
42
+ color: #afafaf;
43
+ }
admin/assets/css/components.less CHANGED
@@ -8,6 +8,7 @@
8
  .wbcr-clearfy-components {
9
  padding: 20px;
10
  .plugin-card {
 
11
  .plugin-card-top {
12
  min-height: 163px;
13
  }
@@ -23,6 +24,35 @@
23
  .install-now {
24
  float: right;
25
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  }
27
  }
28
  }
8
  .wbcr-clearfy-components {
9
  padding: 20px;
10
  .plugin-card {
11
+
12
  .plugin-card-top {
13
  min-height: 163px;
14
  }
24
  .install-now {
25
  float: right;
26
  }
27
+
28
+ a.open-plugin-details-modal {
29
+ color: #5c5d5f;
30
+ text-decoration: none;
31
+ font-weight: 600;
32
+ font-size: 15px;
33
+ }
34
+
35
+ &.plugin-status-deactive {
36
+ background-color: #f9f2f1;
37
+
38
+ a.open-plugin-details-modal {
39
+ color: #ababab;
40
+ text-decoration: none;
41
+ font-weight: 600;
42
+ font-size: 15px;
43
+ }
44
+ .plugin-icon {
45
+ opacity: 0.3;
46
+ }
47
+
48
+ .desc {
49
+ color: #afafaf;
50
+ }
51
+
52
+ .button-success {
53
+
54
+ }
55
+ }
56
  }
57
  }
58
  }
admin/assets/css/general.css CHANGED
@@ -13,6 +13,7 @@
13
  }
14
  #WBCR .wbcr-right-sidebar-section {
15
  width: 49%;
 
16
  }
17
  #WBCR .wbcr-clearfy-group-header {
18
  background: #efefef;
@@ -89,7 +90,7 @@
89
  margin-top: 10px;
90
  }
91
  #WBCR #wbcr-clearfy-quick-mode-board {
92
- padding-right: 20px;
93
  }
94
  #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch {
95
  position: relative;
13
  }
14
  #WBCR .wbcr-right-sidebar-section {
15
  width: 49%;
16
+ padding-top: 20px;
17
  }
18
  #WBCR .wbcr-clearfy-group-header {
19
  background: #efefef;
90
  margin-top: 10px;
91
  }
92
  #WBCR #wbcr-clearfy-quick-mode-board {
93
+ padding: 20px;
94
  }
95
  #WBCR #wbcr-clearfy-quick-mode-board .wbcr-clearfy-switch {
96
  position: relative;
admin/assets/css/index.php ADDED
File without changes
admin/assets/img/asm-icon-128x128.png ADDED
Binary file
admin/assets/img/dan-icon-128x128.jpg ADDED
Binary file
admin/assets/img/dic-icon-128x128.png ADDED
Binary file
admin/assets/img/index.php ADDED
File without changes
admin/assets/img/upm-icon-128x128.png ADDED
Binary file
admin/assets/index.php ADDED
File without changes
admin/assets/js/index.php ADDED
File without changes
admin/boot.php CHANGED
@@ -6,25 +6,135 @@
6
  * @version 1.0
7
  */
8
 
9
- require_once(WBCR_CLR_PLUGIN_DIR . '/admin/includes/classes/class.option.php');
10
- require_once(WBCR_CLR_PLUGIN_DIR . '/admin/includes/classes/class.group.php');
11
- require_once(WBCR_CLR_PLUGIN_DIR . '/admin/includes/classes/class.pages.php');
12
-
13
- require_once(WBCR_CLR_PLUGIN_DIR . '/admin/activation.php');
14
- require_once(WBCR_CLR_PLUGIN_DIR . '/admin/pages/quick-start.php');
15
- require_once(WBCR_CLR_PLUGIN_DIR . '/admin/pages/code-clean.php');
16
- require_once(WBCR_CLR_PLUGIN_DIR . '/admin/pages/privacy.php');
17
- require_once(WBCR_CLR_PLUGIN_DIR . '/admin/pages/seo.php');
18
- require_once(WBCR_CLR_PLUGIN_DIR . '/admin/pages/double-pages.php');
19
- require_once(WBCR_CLR_PLUGIN_DIR . '/admin/pages/defence.php');
20
- require_once(WBCR_CLR_PLUGIN_DIR . '/admin/pages/widgets.php');
21
- require_once(WBCR_CLR_PLUGIN_DIR . '/admin/pages/additionally.php');
22
- //require_once(WBCR_CLR_PLUGIN_DIR . '/admin/pages/components.php');
23
-
24
- if( isset($_REQUEST['action']) && $_REQUEST['action'] == 'wbcr_clearfy_configurate' ) {
25
- require(WBCR_CLR_PLUGIN_DIR . '/admin/ajax/configurate.php');
26
  }
27
 
28
- if( isset($_REQUEST['action']) && $_REQUEST['action'] == 'wbcr_clearfy_import_settings' ) {
29
- require(WBCR_CLR_PLUGIN_DIR . '/admin/ajax/import-settings.php');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  * @version 1.0
7
  */
8
 
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  }
13
 
14
+ /**
15
+ * Ошибки совместимости с похожими плагинами
16
+ */
17
+ function wbcr_clearfy_admin_conflict_notices_error()
18
+ {
19
+ $notices = array();
20
+
21
+ $default_notice = WCL_Plugin::app()
22
+ ->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');
23
+ $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');
24
+
25
+ if( is_plugin_active('wp-disable/wpperformance.php') ) {
26
+ $notices[] = sprintf($default_notice, 'WP Disable', WCL_Plugin::app()
27
+ ->getPluginTitle(), 'WP Disable', 'WP Disable');
28
+ }
29
+
30
+ if( empty($notices) ) {
31
+ return;
32
+ }
33
+
34
+ ?>
35
+ <div id="wbcr-clearfy-conflict-error" class="notice notice-error is-dismissible">
36
+ <?php foreach((array)$notices as $notice): ?>
37
+ <p>
38
+ <?= $notice ?>
39
+ </p>
40
+ <?php endforeach; ?>
41
+ </div>
42
+ <?php
43
  }
44
+
45
+ add_action('admin_notices', 'wbcr_clearfy_admin_conflict_notices_error');
46
+
47
+ /**
48
+ * Welcome guid
49
+ * @param string $hook_suffix
50
+ */
51
+ function wbcr_enqueue_pointer_script_style($hook_suffix)
52
+ {
53
+ $enqueue_pointer_script_style = false;
54
+ $dismissed_pointers = explode(',', get_user_meta(get_current_user_id(), 'dismissed_wp_pointers', true));
55
+
56
+ if( !in_array('wbcr_clearfy_defence_pointer_1_2_0', $dismissed_pointers) || !in_array('wbcr_clearfy_settings_pointer_1_2_0', $dismissed_pointers) || !in_array('wbcr_clearfy_components_pointer_1_2_0', $dismissed_pointers) ) {
57
+ $enqueue_pointer_script_style = true;
58
+ add_action('admin_print_footer_scripts', 'wbcr_pointer_print_scripts');
59
+ }
60
+
61
+ if( $enqueue_pointer_script_style ) {
62
+ wp_enqueue_style('wp-pointer');
63
+ wp_enqueue_script('wp-pointer');
64
+ }
65
+ }
66
+
67
+ // todo: remove in 1.2.0
68
+ function wbcr_pointer_print_scripts()
69
+ {
70
+ $dismissed_pointers = explode(',', get_user_meta(get_current_user_id(), 'dismissed_wp_pointers', true));
71
+
72
+ $pointer_setting_content = "<h3>" . sprintf(__('Welcome to Clearfy (%s)', 'clearfy'), '1.2.0') . "</h3>";
73
+ $pointer_setting_content .= "<p>" . __('There are new optimization and protection features in the plugin. We recommend you to look at them maybe they will be useful!', 'clearfy') . "</p>";
74
+
75
+ $pointer_performance_content = "<h3>" . __('The section "Code cleaning" was renamed', 'clearfy') . "</h3>";
76
+ $pointer_performance_content .= "<p>" . __('Asynchronous Google fonts loading, Google Analytics optimization, disabling Google Fonts and Maps, disabling of gravatars, Font Awesome icons was added.', 'clearfy') . "</p>";
77
+
78
+ $pointer_defence_content = "<h3>" . __('Login page protection added', 'clearfy') . "</h3>";
79
+ $pointer_defence_content .= "<p>" . __('With the new Clearfy version, you can use the hide login page function. Nobody will know the address of your login page, which means there will be no password bruteforce and the attempts of your website hack will decrease.', 'clearfy') . "</p>";
80
+
81
+ ?>
82
+
83
+ <script type="text/javascript">
84
+ //<![CDATA[
85
+ jQuery(document).ready(function($) {
86
+ <?php if(!in_array('wbcr_clearfy_settings_pointer_1_2_0', $dismissed_pointers)): ?>
87
+ $('#menu-settings').pointer({
88
+ content: '<?php echo $pointer_setting_content; ?>',
89
+ position: {
90
+ edge: 'left', // arrow direction
91
+ align: 'center' // vertical alignment
92
+ },
93
+ pointerWidth: 350,
94
+ close: function() {
95
+ $.post(ajaxurl, {
96
+ pointer: 'wbcr_clearfy_settings_pointer_1_2_0', // pointer ID
97
+ action: 'dismiss-wp-pointer'
98
+ });
99
+ }
100
+ }).pointer('open');
101
+ <?php endif; ?>
102
+ <?php if(!in_array('wbcr_clearfy_performance_pointer_1_2_0', $dismissed_pointers) && in_array('wbcr_clearfy_settings_pointer_1_2_0', $dismissed_pointers)): ?>
103
+ $('#performance-clearfy-tab').pointer({
104
+ content: '<?php echo $pointer_performance_content; ?>',
105
+ position: {
106
+ edge: 'left', // arrow direction
107
+ align: 'center' // vertical alignment
108
+ },
109
+ pointerWidth: 350,
110
+ close: function() {
111
+ $.post(ajaxurl, {
112
+ pointer: 'wbcr_clearfy_performance_pointer_1_2_0', // pointer ID
113
+ action: 'dismiss-wp-pointer'
114
+ });
115
+ }
116
+ }).pointer('open');
117
+ <?php endif; ?>
118
+ <?php if(!in_array('wbcr_clearfy_defence_pointer_1_2_0', $dismissed_pointers) && in_array('wbcr_clearfy_performance_pointer_1_2_0', $dismissed_pointers)): ?>
119
+ $('#defence-clearfy-tab').pointer({
120
+ content: '<?php echo $pointer_defence_content; ?>',
121
+ position: {
122
+ edge: 'left', // arrow direction
123
+ align: 'center' // vertical alignment
124
+ },
125
+ pointerWidth: 350,
126
+ close: function() {
127
+ $.post(ajaxurl, {
128
+ pointer: 'wbcr_clearfy_defence_pointer_1_2_0', // pointer ID
129
+ action: 'dismiss-wp-pointer'
130
+ });
131
+ }
132
+ }).pointer('open');
133
+ <?php endif; ?>
134
+ });
135
+ //]]>
136
+ </script>
137
+ <?php
138
+ }
139
+
140
+ add_action('admin_enqueue_scripts', 'wbcr_enqueue_pointer_script_style');
admin/includes/classes/class.group.php CHANGED
@@ -6,10 +6,20 @@
6
  * @copyright (c) 16.09.2017, Webcraftic
7
  * @version 1.0
8
  */
9
- class WbcrClr_Group {
 
 
 
 
 
 
10
 
11
  private $group_name;
12
 
 
 
 
 
13
  public function __construct($group_name)
14
  {
15
  if( empty($group_name) || !is_string($group_name) ) {
@@ -18,19 +28,29 @@
18
  $this->group_name = $group_name;
19
  }
20
 
 
 
 
 
21
  public static function getInstance($group_name)
22
  {
23
- return new WbcrClr_Group($group_name);
24
  }
25
 
 
 
 
26
  public function getName()
27
  {
28
  return $this->group_name;
29
  }
30
 
 
 
 
31
  public function getOptions()
32
  {
33
- $options = WbcrClr_Option::getAllOptions();
34
  $filter = array();
35
 
36
  foreach($options as $option) {
6
  * @copyright (c) 16.09.2017, Webcraftic
7
  * @version 1.0
8
  */
9
+
10
+ // Exit if accessed directly
11
+ if( !defined('ABSPATH') ) {
12
+ exit;
13
+ }
14
+
15
+ class WCL_Group {
16
 
17
  private $group_name;
18
 
19
+ /**
20
+ * @param string $group_name
21
+ * @throws Exception
22
+ */
23
  public function __construct($group_name)
24
  {
25
  if( empty($group_name) || !is_string($group_name) ) {
28
  $this->group_name = $group_name;
29
  }
30
 
31
+ /**
32
+ * @param string $group_name
33
+ * @return WCL_Group
34
+ */
35
  public static function getInstance($group_name)
36
  {
37
+ return new WCL_Group($group_name);
38
  }
39
 
40
+ /**
41
+ * @return string
42
+ */
43
  public function getName()
44
  {
45
  return $this->group_name;
46
  }
47
 
48
+ /**
49
+ * @return WCL_Option[]
50
+ */
51
  public function getOptions()
52
  {
53
+ $options = WCL_Option::getAllOptions();
54
  $filter = array();
55
 
56
  foreach($options as $option) {
admin/includes/classes/class.option.php CHANGED
@@ -6,13 +6,23 @@
6
  * @copyright (c) 16.09.2017, Webcraftic
7
  * @version 1.0
8
  */
9
- class WbcrClr_Option {
 
 
 
 
 
 
10
 
11
  private $name;
12
  private $title;
13
  private $values;
14
  private $tags;
15
 
 
 
 
 
16
  public function __construct(array $option_data)
17
  {
18
  if( empty($option_data) ) {
@@ -24,16 +34,26 @@
24
  }
25
  }
26
 
 
 
 
27
  public function getName()
28
  {
29
  return $this->name;
30
  }
31
 
 
 
 
32
  public function getTitle()
33
  {
34
  return $this->title;
35
  }
36
 
 
 
 
 
37
  public function getValue($group_name = null)
38
  {
39
  if( !empty($group_name) && isset($this->values[$group_name]) ) {
@@ -45,11 +65,18 @@
45
  : array();
46
  }
47
 
 
 
 
48
  public function getTags()
49
  {
50
  return $this->tags;
51
  }
52
 
 
 
 
 
53
  public function hasGroup($group_name)
54
  {
55
  if( !empty($this->tags) && in_array($group_name, $this->tags) ) {
@@ -60,16 +87,16 @@
60
  }
61
 
62
  /**
63
- * @return array
64
  */
65
  public static function getAllOptions()
66
  {
67
- $all_options = require(WBCR_CLR_PLUGIN_DIR . '/admin/includes/options.php');
68
  $result = array();
69
 
70
  if( !empty($all_options) ) {
71
  foreach($all_options as $option_data) {
72
- $result[] = new WbcrClr_Option($option_data);
73
  }
74
  }
75
 
6
  * @copyright (c) 16.09.2017, Webcraftic
7
  * @version 1.0
8
  */
9
+
10
+ // Exit if accessed directly
11
+ if( !defined('ABSPATH') ) {
12
+ exit;
13
+ }
14
+
15
+ class WCL_Option {
16
 
17
  private $name;
18
  private $title;
19
  private $values;
20
  private $tags;
21
 
22
+ /**
23
+ * @param array $option_data
24
+ * @throws Exception
25
+ */
26
  public function __construct(array $option_data)
27
  {
28
  if( empty($option_data) ) {
34
  }
35
  }
36
 
37
+ /**
38
+ * @return mixed
39
+ */
40
  public function getName()
41
  {
42
  return $this->name;
43
  }
44
 
45
+ /**
46
+ * @return mixed
47
+ */
48
  public function getTitle()
49
  {
50
  return $this->title;
51
  }
52
 
53
+ /**
54
+ * @param null $group_name
55
+ * @return array
56
+ */
57
  public function getValue($group_name = null)
58
  {
59
  if( !empty($group_name) && isset($this->values[$group_name]) ) {
65
  : array();
66
  }
67
 
68
+ /**
69
+ * @return mixed
70
+ */
71
  public function getTags()
72
  {
73
  return $this->tags;
74
  }
75
 
76
+ /**
77
+ * @param $group_name
78
+ * @return bool
79
+ */
80
  public function hasGroup($group_name)
81
  {
82
  if( !empty($this->tags) && in_array($group_name, $this->tags) ) {
87
  }
88
 
89
  /**
90
+ * @return WCL_Option[]
91
  */
92
  public static function getAllOptions()
93
  {
94
+ $all_options = require(WCL_PLUGIN_DIR . '/admin/includes/options.php');
95
  $result = array();
96
 
97
  if( !empty($all_options) ) {
98
  foreach($all_options as $option_data) {
99
+ $result[] = new WCL_Option($option_data);
100
  }
101
  }
102
 
admin/includes/classes/class.pages.php CHANGED
@@ -5,9 +5,17 @@
5
  * Author: Webcraftic <wordpress.webraftic@gmail.com>
6
  * Version: 1.0.0
7
  */
8
- class WbcrClr_Page extends FactoryPages324_ImpressiveThemplate {
 
 
 
 
 
9
 
10
- public function __construct(Factory326_Plugin $plugin)
 
 
 
11
  {
12
  parent::__construct($plugin);
13
  }
@@ -15,7 +23,7 @@
15
  /**
16
  * Requests assets (js and css) for the page.
17
  *
18
- * @see FactoryPages324_AdminPage
19
  *
20
  * @since 1.0.0
21
  * @return void
@@ -24,7 +32,36 @@
24
  {
25
  parent::assets($scripts, $styles);
26
 
27
- $this->styles->add(WBCR_CLR_PLUGIN_URL . '/admin/assets/css/general.css');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  }
29
  }
30
 
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_FactoryPages400_ImpressiveThemplate {
14
 
15
+ /**
16
+ * @param WCL_Plugin $plugin
17
+ */
18
+ public function __construct(WCL_Plugin $plugin)
19
  {
20
  parent::__construct($plugin);
21
  }
23
  /**
24
  * Requests assets (js and css) for the page.
25
  *
26
+ * @see Wbcr_FactoryPages400_AdminPage
27
  *
28
  * @since 1.0.0
29
  * @return void
32
  {
33
  parent::assets($scripts, $styles);
34
 
35
+ $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/general.css');
36
+ }
37
+
38
+ /**
39
+ * @param $option_name
40
+ * @param bool $default
41
+ * @return mixed|void
42
+ */
43
+ public function getOption($option_name, $default = false)
44
+ {
45
+ return $this->plugin->getOption($option_name, $default);
46
+ }
47
+
48
+ /**
49
+ * @param $option_name
50
+ * @param $value
51
+ * @return bool
52
+ */
53
+ public function updateOption($option_name, $value)
54
+ {
55
+ return $this->plugin->updateOption($option_name, $value);
56
+ }
57
+
58
+ /**
59
+ * @param $option_name
60
+ * @return bool
61
+ */
62
+ public function deleteOption($option_name)
63
+ {
64
+ return $this->plugin->deleteOption($option_name);
65
  }
66
  }
67
 
admin/includes/classes/index.php ADDED
File without changes
admin/includes/index.php ADDED
File without changes
admin/includes/options.php CHANGED
@@ -6,22 +6,116 @@
6
  * @version 1.0
7
  */
8
 
 
 
 
 
 
9
  return apply_filters('wbcr_clearfy_group_options', array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  array(
11
  'name' => 'disable_json_rest_api',
12
  'title' => __('Remove REST API Links', 'clearfy'),
13
- 'tags' => array('recommended', 'clear_code')
14
  ),
15
  array(
16
  'name' => 'disable_emoji',
17
  'title' => __('Disable Emojis', 'clearfy'),
18
  'tags' => array('recommended', 'clear_code')
19
  ),
20
- array(
21
  'name' => 'remove_dns_prefetch',
22
  'title' => __('Remove dns-prefetch', 'clearfy'),
23
  'tags' => array('recommended', 'clear_code')
24
- ),
 
25
  array(
26
  'name' => 'remove_rsd_link',
27
  'title' => __('Remove RSD Link', 'clearfy'),
@@ -47,6 +141,7 @@
47
  'title' => __('Remove .recentcomments styles', 'clearfy'),
48
  'tags' => array('recommended', 'clear_code')
49
  ),
 
50
  array(
51
  'name' => 'content_image_auto_alt',
52
  'title' => __('Automatically set the alt attribute', 'clearfy'),
@@ -100,7 +195,7 @@
100
  array(
101
  'name' => 'redirect_archives_tag',
102
  'title' => __('Remove archives tag', 'clearfy'),
103
- 'tags' => array('recommended', 'seo_optimize')
104
  ),
105
  array(
106
  'name' => 'attachment_pages_redirect',
@@ -142,6 +237,21 @@
142
  'title' => __('Remove Version from Script', 'clearfy'),
143
  'tags' => array('recommended', 'clear_code', 'defence')
144
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
  array(
146
  'name' => 'remove_unneeded_widget_page',
147
  'title' => __('Remove the "Pages" widget', 'clearfy'),
6
  * @version 1.0
7
  */
8
 
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
  return apply_filters('wbcr_clearfy_group_options', array(
15
+ /** ------------------------ Google services ----------------------------- */
16
+ array(
17
+ 'name' => 'lazy_load_google_fonts',
18
+ 'title' => __('Google Fonts asynchronous', 'clearfy'),
19
+ 'tags' => array()
20
+ ),
21
+ array(
22
+ 'name' => 'disable_google_fonts',
23
+ 'title' => __('Disable Google Fonts', 'clearfy'),
24
+ 'tags' => array()
25
+ ),
26
+ array(
27
+ 'name' => 'remove_iframe_google_maps',
28
+ 'title' => __('Remove iframe Google maps', 'clearfy'),
29
+ 'tags' => array()
30
+ ),
31
+ array(
32
+ 'name' => 'exclude_from_disable_google_maps',
33
+ 'title' => __('Exclude pages from Disable Google Maps filter', 'clearfy'),
34
+ 'tags' => array()
35
+ ),
36
+ array(
37
+ 'name' => 'ga_cache',
38
+ 'title' => __('Google analytic cache', 'clearfy'),
39
+ 'tags' => array()
40
+ ),
41
+ array(
42
+ 'name' => 'ga_tracking_id',
43
+ 'title' => __('Google analytic Code', 'clearfy'),
44
+ 'tags' => array()
45
+ ),
46
+ array(
47
+ 'name' => 'ga_adjusted_bounce_rate',
48
+ 'title' => __('Use adjusted bounce rate?', 'clearfy'),
49
+ 'tags' => array()
50
+ ),
51
+ array(
52
+ 'name' => 'ga_enqueue_order',
53
+ 'title' => __('Change enqueue order?', 'clearfy'),
54
+ 'tags' => array()
55
+ ),
56
+ array(
57
+ 'name' => 'ga_caos_disable_display_features',
58
+ 'title' => __('Disable all display features functionality?', 'clearfy'),
59
+ 'tags' => array()
60
+ ),
61
+ array(
62
+ 'name' => 'ga_anonymize_ip',
63
+ 'title' => __('Use Anonymize IP? (Required by law for some countries)', 'clearfy'),
64
+ 'tags' => array()
65
+ ),
66
+ array(
67
+ 'name' => 'ga_track_admin',
68
+ 'title' => __('Track logged in Administrators?', 'clearfy'),
69
+ 'tags' => array()
70
+ ),
71
+ array(
72
+ 'name' => 'ga_caos_remove_wp_cron',
73
+ 'title' => __('Remove script from wp-cron?', 'clearfy'),
74
+ 'tags' => array()
75
+ ),
76
+ /** ------------------------ End google services ----------------------------- */
77
+ array(
78
+ 'name' => 'disable_google_maps',
79
+ 'title' => __('Disable Google maps', 'clearfy'),
80
+ 'tags' => array()
81
+ ),
82
+ /** ------------------------ Performance page ----------------------------- */
83
+ array(
84
+ 'name' => 'remove_xfn_link',
85
+ 'title' => __('Removing XFN (XHTML Friends Network) Profile Link', 'clearfy'),
86
+ 'tags' => array()
87
+ ),
88
+ array(
89
+ 'name' => 'lazy_load_font_awesome',
90
+ 'title' => __('Font Awesome asynchronous', 'clearfy'),
91
+ 'tags' => array()
92
+ ),
93
+ array(
94
+ 'name' => 'disable_dashicons',
95
+ 'title' => __('Disable Dashicons', 'clearfy'),
96
+ 'tags' => array()
97
+ ),
98
+ array(
99
+ 'name' => 'disable_gravatars',
100
+ 'title' => __('Disable gravatars', 'clearfy'),
101
+ 'tags' => array()
102
+ ),
103
  array(
104
  'name' => 'disable_json_rest_api',
105
  'title' => __('Remove REST API Links', 'clearfy'),
106
+ 'tags' => array()
107
  ),
108
  array(
109
  'name' => 'disable_emoji',
110
  'title' => __('Disable Emojis', 'clearfy'),
111
  'tags' => array('recommended', 'clear_code')
112
  ),
113
+ /*array(
114
  'name' => 'remove_dns_prefetch',
115
  'title' => __('Remove dns-prefetch', 'clearfy'),
116
  'tags' => array('recommended', 'clear_code')
117
+ ),*/
118
+
119
  array(
120
  'name' => 'remove_rsd_link',
121
  'title' => __('Remove RSD Link', 'clearfy'),
141
  'title' => __('Remove .recentcomments styles', 'clearfy'),
142
  'tags' => array('recommended', 'clear_code')
143
  ),
144
+ /** ------------------------ End Performance page ----------------------------- */
145
  array(
146
  'name' => 'content_image_auto_alt',
147
  'title' => __('Automatically set the alt attribute', 'clearfy'),
195
  array(
196
  'name' => 'redirect_archives_tag',
197
  'title' => __('Remove archives tag', 'clearfy'),
198
+ 'tags' => array()
199
  ),
200
  array(
201
  'name' => 'attachment_pages_redirect',
237
  'title' => __('Remove Version from Script', 'clearfy'),
238
  'tags' => array('recommended', 'clear_code', 'defence')
239
  ),
240
+ array(
241
+ 'name' => 'hide_wp_admin',
242
+ 'title' => __('Hide wp-admin', 'clearfy'),
243
+ 'tags' => array()
244
+ ),
245
+ array(
246
+ 'name' => 'hide_login_path',
247
+ 'title' => __('Hide Login Page', 'clearfy'),
248
+ 'tags' => array()
249
+ ),
250
+ array(
251
+ 'name' => 'login_path',
252
+ 'title' => __('New login page', 'clearfy'),
253
+ 'tags' => array()
254
+ ),
255
  array(
256
  'name' => 'remove_unneeded_widget_page',
257
  'title' => __('Remove the "Pages" widget', 'clearfy'),
admin/index.php ADDED
File without changes
admin/pages/additionally.php DELETED
@@ -1,307 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * The page Settings.
5
- *
6
- * @since 1.0.0
7
- */
8
- class WbcrClr_AdditionallyPage extends WbcrClr_Page {
9
-
10
- /**
11
- * The id of the page in the admin menu.
12
- *
13
- * Mainly used to navigate between pages.
14
- * @see FactoryPages324_AdminPage
15
- *
16
- * @since 1.0.0
17
- * @var string
18
- */
19
- public $id = "additionally";
20
-
21
- public $page_menu_dashicon = 'dashicons-list-view';
22
-
23
- public $page_menu_position = 0;
24
-
25
- public function __construct(Factory326_Plugin $plugin)
26
- {
27
- $this->menuTitle = __('Advanced', 'clearfy');
28
-
29
- parent::__construct($plugin);
30
- }
31
-
32
- protected function isPostRevisionConstant()
33
- {
34
- $config_path = ABSPATH . '/wp-config.php';
35
-
36
- if( file_exists($config_path) ) {
37
- $file = fopen($config_path, 'r');
38
- $content = fread($file, filesize($config_path));
39
- fclose($file);
40
-
41
- if( !empty($content) && preg_match('/define(.+?)WP_POST_REVISIONS/', $content) ) {
42
- return true;
43
- }
44
- }
45
-
46
- return false;
47
- }
48
-
49
- public function warningNotice()
50
- {
51
- parent::warningNotice();
52
-
53
- if( $this->isPostRevisionConstant() ) {
54
- $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'));
55
- }
56
- }
57
-
58
- /**
59
- * Permalinks options.
60
- *
61
- * @since 1.0.0
62
- * @return mixed[]
63
- */
64
- public function getOptions()
65
- {
66
- $options = array();
67
-
68
- $options[] = array(
69
- 'type' => 'html',
70
- '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>'
71
- );
72
-
73
- $options[] = array(
74
- 'type' => 'dropdown',
75
- 'name' => 'disable_heartbeat',
76
- 'way' => 'buttons',
77
- 'title' => __('Disable Heartbeat', 'clearfy'),
78
- 'data' => array(
79
- array('default', __('Default', 'clearfy')),
80
- array('everywhere', __('Everywhere', 'clearfy')),
81
- array('on_dashboard_page', __('On dashboard page', 'clearfy')),
82
- array('allow_only_on_post_edit_pages', __('Only allow when editing Posts/Pages', 'clearfy'))
83
- ),
84
- //'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
85
- //'hint' => __('You can disable all plugin updates or choose manual or automatic update mode.', 'clearfy'),
86
- 'events' => array(
87
- 'default' => array(
88
- 'show' => '.factory-control-heartbeat_frequency'
89
- ),
90
- 'on_dashboard_page' => array(
91
- 'show' => '.factory-control-heartbeat_frequency'
92
- ),
93
- 'allow_only_on_post_edit_pages' => array(
94
- 'show' => '.factory-control-heartbeat_frequency'
95
- ),
96
- 'everywhere' => array(
97
- 'hide' => '.factory-control-heartbeat_frequency'
98
- )
99
- ),
100
- 'default' => 'default',
101
- );
102
-
103
- $options[] = array(
104
- 'type' => 'dropdown',
105
- 'name' => 'heartbeat_frequency',
106
- 'title' => __('Heartbeat frequency', 'clearfy'),
107
- 'data' => array(
108
- array('default', __('Wordpress default', 'clearfy')),
109
- array('20', '20 ' . __('seconds', 'clearfy')),
110
- array('25', '25 ' . __('seconds', 'clearfy')),
111
- array('30', '30 ' . __('seconds', 'clearfy')),
112
- array('35', '35 ' . __('seconds', 'clearfy')),
113
- array('40', '40 ' . __('seconds', 'clearfy')),
114
- array('45', '45 ' . __('seconds', 'clearfy')),
115
- array('50', '50 ' . __('seconds', 'clearfy')),
116
- array('55', '55 ' . __('seconds', 'clearfy')),
117
- array('60', '60 ' . __('seconds', 'clearfy'))
118
- ),
119
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
120
- 'hint' => __('Select the heartbeat frequency wordpress. We recommend you 60 seconds, default is 20 seconds.', 'clearfy'),
121
- 'default' => 'default'
122
- );
123
-
124
- /*$options[] = array(
125
- 'type' => 'checkbox',
126
- 'way' => 'buttons',
127
- 'name' => 'disable_admin_notices',
128
- 'title' => __('Disable admin notice', 'clearfy'),
129
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
130
- 'hint' => __('Whenever there’s a major release available, a notification will display at the top of your admin area, letting you know your version is out-of-date and you need to update the core code.<br>
131
- For many people, this nag can be annoying. And if you developer websites for clients, you may want to hide it. After all, who wants to let their clients know their software is old?', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable admin notices.', 'clearfy'),
132
- 'default' => false
133
- );*/
134
-
135
- $options[] = array(
136
- 'type' => 'html',
137
- 'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Admin bar', 'clearfy') . '</strong>' . '<p>' . __('In this group of settings, you can manage the adminbar.', 'clearfy') . '</p>' . '</div>'
138
- );
139
-
140
- $options[] = array(
141
- 'type' => 'dropdown',
142
- 'name' => 'disable_admin_bar',
143
- 'way' => 'buttons',
144
- 'title' => __('Disable admin top bar', 'clearfy'),
145
- 'data' => array(
146
- array('enable', __('Default enable', 'clearfy')),
147
- array('for_all_users', __('For all users', 'clearfy')),
148
- array(
149
- 'for_all_users_except_administrator',
150
- __('For all users except administrator', 'clearfy')
151
- )
152
- ),
153
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
154
- 'hint' => __('In some cases, you need to disable the floating top admin panel. You can disable this panel.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable admin top bar.', 'clearfy'),
155
- 'default' => 'enable',
156
- );
157
-
158
- $options[] = array(
159
- 'type' => 'checkbox',
160
- 'way' => 'buttons',
161
- 'name' => 'disable_admin_bar_logo',
162
- 'title' => __('Remove admin bar WP logo', 'clearfy'),
163
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
164
- 'hint' => __('Enable this if you want to remove wp logo from admin bar.', 'clearfy'),
165
- 'default' => false
166
- );
167
-
168
- $options[] = array(
169
- 'type' => 'checkbox',
170
- 'way' => 'buttons',
171
- 'name' => 'replace_howdy_welcome',
172
- 'title' => __('Replace "Howdy" text with "Welcome"', 'clearfy'),
173
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
174
- 'hint' => __('Replaces the welcome text in admin bar.', 'clearfy'),
175
- 'default' => false
176
- );
177
-
178
- $options[] = array(
179
- 'type' => 'html',
180
- 'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Posts', 'clearfy') . '</strong>' . '<p>' . __('In this group of options, you can manage revisions and post autosave.', 'clearfy') . '</p>' . '</div>'
181
- );
182
-
183
- $options[] = array(
184
- 'type' => 'checkbox',
185
- 'way' => 'buttons',
186
- 'name' => 'revisions_disable',
187
- 'title' => __('Disable revision', 'clearfy'),
188
- 'default' => false,
189
- 'eventsOn' => array(
190
- 'hide' => '.factory-control-revision_limit'
191
- ),
192
- 'eventsOff' => array(
193
- 'show' => '.factory-control-revision_limit'
194
- ),
195
- );
196
-
197
- /*$options[] = array(
198
- 'type' => 'checkbox',
199
- 'way' => 'buttons',
200
- 'name' => 'disable_selection_patent',
201
- 'title' => __('Disable selection of parent category', 'clearfy'),
202
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
203
- 'hint' => __('If you do not use this section, you can disable it.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable selection of parent category.', 'clearfy'),
204
- 'default' => false
205
- );
206
-
207
- $options[] = array(
208
- 'type' => 'checkbox',
209
- 'way' => 'buttons',
210
- 'name' => 'enable_categoty_tree',
211
- 'title' => __('Enable category checklist tree', 'clearfy'),
212
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
213
- 'hint' => __('Enable this if you want to enable category checklist tree. On the post editing screen, after saving a post, you will notice that the checked categories are displayed on top, breaking the category hierarchy. This option removes that feature. Additionally, it automatically scrolls to the first checked category.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Enable category checklist tree.', 'clearfy'),
214
- 'default' => false
215
- );*/
216
-
217
- $options[] = array(
218
- 'type' => 'dropdown',
219
- 'name' => 'revision_limit',
220
- 'title' => __('Limit Post Revisions', 'clearfy'),
221
- 'data' => array(
222
- array('default', __('Wordpress default', 'clearfy')),
223
- array('15', '15 ' . __('revisions', 'clearfy')),
224
- array('20', '20 ' . __('revisions', 'clearfy')),
225
- array('25', '25 ' . __('revisions', 'clearfy')),
226
- array('30', '30 ' . __('revisions', 'clearfy')),
227
- array('35', '35 ' . __('revisions', 'clearfy')),
228
- array('40', '40 ' . __('revisions', 'clearfy')),
229
- array('45', '45 ' . __('revisions', 'clearfy')),
230
- array('50', '50 ' . __('revisions', 'clearfy')),
231
- array('55', '55 ' . __('revisions', 'clearfy')),
232
- array('60', '60 ' . __('revisions', 'clearfy'))
233
- ),
234
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
235
- 'hint' => __('WordPress automatically saves revisions when you are working on posts and pages. These can begin to add up pretty quick. By default, there is no limit in place. We have seen posts with over 1,000 revisions. Multiply this by 50 pages and suddenly you have over 50,000 revisions sitting in your database. The problem with this is that you will most likely never use them and they can start slowing down your database as well as using disk space.
236
- So we recommend either disabling or limiting your revisions. ', 'clearfy'),
237
- 'default' => 'default'
238
- );
239
-
240
- $options[] = array(
241
- 'type' => 'checkbox',
242
- 'way' => 'buttons',
243
- 'name' => 'disable_post_autosave',
244
- 'title' => __('Disable autosave', 'clearfy'),
245
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
246
- 'hint' => __('WordPress by default automatically saves a draft every 60 seconds (1 minute). There are reasons why you might want to change this.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disables automatic saving of drafts.', 'clearfy'),
247
- 'default' => false
248
- );
249
-
250
- $options[] = array(
251
- 'type' => 'checkbox',
252
- 'way' => 'buttons',
253
- 'name' => 'disable_texturization',
254
- 'title' => __('Disable Texturization - Smart Quotes', 'clearfy'),
255
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
256
- 'hint' => __('Function of text formatting. This function makes the text more correct, readable and visually appealing. But sometimes this function may prevent you from using certain codes and symbols.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable Texturization - Smart Quotes.', 'clearfy'),
257
- 'default' => false
258
- );
259
-
260
- $options[] = array(
261
- 'type' => 'checkbox',
262
- 'way' => 'buttons',
263
- 'name' => 'disable_auto_correct_dangit',
264
- 'title' => __('Disable capitalization in Wordpress branding', 'clearfy'),
265
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
266
- 'hint' => __('Replaces the incorrectly written letter "p" in the middle of WordPress (you need to write with the capital P in the middle).', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable capitalization in Wordpress branding.', 'clearfy'),
267
- 'default' => false
268
- );
269
-
270
- $options[] = array(
271
- 'type' => 'checkbox',
272
- 'way' => 'buttons',
273
- 'name' => 'disable_auto_paragraph',
274
- 'title' => __('Disable auto inserted paragraphs (i.e. p tags)', 'clearfy'),
275
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
276
- 'hint' => __('Replaces the double shifting of a string to an HTML p ... /p construct, and a single one on br.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable auto inserted paragraphs.', 'clearfy'),
277
- 'default' => false
278
- );
279
-
280
- $options[] = array(
281
- 'type' => 'html',
282
- 'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Others', 'clearfy') . '</strong>' . '<p>' . __('Other useful features.', 'clearfy') . '</p>' . '</div>'
283
- );
284
-
285
- $options[] = array(
286
- 'type' => 'checkbox',
287
- 'way' => 'buttons',
288
- 'name' => 'enable_wordpres_sanitize',
289
- 'title' => __('Enable Sanitization of WordPress', 'clearfy'),
290
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
291
- 'hint' => __('File names and some titles can have special characters, which can cause problems when creating permalinks.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Removes symbols, spaces, latin and other languages characters from uploaded files and gives them "permalink" structure (clean characters, only lowercase and dahes).', 'clearfy'),
292
- 'default' => false
293
- );
294
-
295
- $formOptions = array();
296
-
297
- $formOptions[] = array(
298
- 'type' => 'form-group',
299
- 'items' => $options,
300
- //'cssClass' => 'postbox'
301
- );
302
-
303
- return apply_filters('wbcr_clr_additionally_form_options', $formOptions, $this);
304
- }
305
- }
306
-
307
- FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_AdditionallyPage');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/pages/advanced.php ADDED
@@ -0,0 +1,283 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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_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 FactoryPages400_AdminPage
21
+ *
22
+ * @since 1.0.0
23
+ * @var string
24
+ */
25
+ public $id = "advanced";
26
+
27
+ public $page_menu_dashicon = 'dashicons-list-view';
28
+
29
+ public $page_menu_position = 1;
30
+
31
+ /**
32
+ * @param WCL_Plugin $plugin
33
+ */
34
+ public function __construct(WCL_Plugin $plugin)
35
+ {
36
+ $this->menu_title = __('Advanced', 'clearfy');
37
+
38
+ parent::__construct($plugin);
39
+
40
+ $this->plugin = $plugin;
41
+ }
42
+
43
+ protected function isPostRevisionConstant()
44
+ {
45
+ $config_path = ABSPATH . '/wp-config.php';
46
+
47
+ if( file_exists($config_path) ) {
48
+ $file = fopen($config_path, 'r');
49
+ $content = fread($file, filesize($config_path));
50
+ fclose($file);
51
+
52
+ if( !empty($content) && preg_match('/define(.+?)WP_POST_REVISIONS/', $content) ) {
53
+ return true;
54
+ }
55
+ }
56
+
57
+ return false;
58
+ }
59
+
60
+ public function warningNotice()
61
+ {
62
+ parent::warningNotice();
63
+
64
+ if( $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
+ }
68
+
69
+ /**
70
+ * Permalinks options.
71
+ *
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>' . __('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>'
83
+ );
84
+
85
+ $options[] = array(
86
+ 'type' => 'dropdown',
87
+ 'name' => 'disable_heartbeat',
88
+ 'way' => 'buttons',
89
+ 'title' => __('Disable Heartbeat', 'clearfy'),
90
+ 'data' => array(
91
+ array('default', __('Default', 'clearfy')),
92
+ array('everywhere', __('Everywhere', 'clearfy')),
93
+ array('on_dashboard_page', __('On dashboard page', 'clearfy')),
94
+ array('allow_only_on_post_edit_pages', __('Only allow when editing Posts/Pages', 'clearfy'))
95
+ ),
96
+ //'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
97
+ //'hint' => __('You can disable all plugin updates or choose manual or automatic update mode.', 'clearfy'),
98
+ 'events' => array(
99
+ 'default' => array(
100
+ 'show' => '.factory-control-heartbeat_frequency'
101
+ ),
102
+ 'on_dashboard_page' => array(
103
+ 'show' => '.factory-control-heartbeat_frequency'
104
+ ),
105
+ 'allow_only_on_post_edit_pages' => array(
106
+ 'show' => '.factory-control-heartbeat_frequency'
107
+ ),
108
+ 'everywhere' => array(
109
+ 'hide' => '.factory-control-heartbeat_frequency'
110
+ )
111
+ ),
112
+ 'default' => 'default',
113
+ );
114
+
115
+ $options[] = array(
116
+ 'type' => 'dropdown',
117
+ 'name' => 'heartbeat_frequency',
118
+ 'title' => __('Heartbeat frequency', 'clearfy'),
119
+ 'data' => array(
120
+ array('default', __('Wordpress default', 'clearfy')),
121
+ array('20', '20 ' . __('seconds', 'clearfy')),
122
+ array('25', '25 ' . __('seconds', 'clearfy')),
123
+ array('30', '30 ' . __('seconds', 'clearfy')),
124
+ array('35', '35 ' . __('seconds', 'clearfy')),
125
+ array('40', '40 ' . __('seconds', 'clearfy')),
126
+ array('45', '45 ' . __('seconds', 'clearfy')),
127
+ array('50', '50 ' . __('seconds', 'clearfy')),
128
+ array('55', '55 ' . __('seconds', 'clearfy')),
129
+ array('60', '60 ' . __('seconds', 'clearfy'))
130
+ ),
131
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
132
+ 'hint' => __('Select the heartbeat frequency wordpress. We recommend you 60 seconds, default is 20 seconds.', 'clearfy'),
133
+ 'default' => 'default'
134
+ );
135
+
136
+ //============================================================
137
+ // ADMINBAR MANAGER COMPONENT
138
+ //============================================================
139
+
140
+ if( $this->plugin->isActivateComponent('adminbar_manager') ) {
141
+ $options[] = array(
142
+ 'type' => 'html',
143
+ 'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Admin bar', 'clearfy') . '</strong>' . '<p>' . __('In this group of settings, you can manage the adminbar.', 'clearfy') . '</p>' . '</div>'
144
+ );
145
+
146
+ $options[] = array(
147
+ 'type' => 'dropdown',
148
+ 'name' => 'disable_admin_bar',
149
+ 'way' => 'buttons',
150
+ 'title' => __('Disable admin top bar', 'clearfy'),
151
+ 'data' => array(
152
+ array('enable', __('Default enable', 'clearfy')),
153
+ array('for_all_users', __('For all users', 'clearfy')),
154
+ array(
155
+ 'for_all_users_except_administrator',
156
+ __('For all users except administrator', 'clearfy')
157
+ )
158
+ ),
159
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
160
+ 'hint' => __('In some cases, you need to disable the floating top admin panel. You can disable this panel.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable admin top bar.', 'clearfy'),
161
+ 'default' => 'enable',
162
+ );
163
+
164
+ $options[] = array(
165
+ 'type' => 'checkbox',
166
+ 'way' => 'buttons',
167
+ 'name' => 'disable_admin_bar_logo',
168
+ 'title' => __('Remove admin bar WP logo', 'clearfy'),
169
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
170
+ 'hint' => __('Enable this if you want to remove wp logo from admin bar.', 'clearfy'),
171
+ 'default' => false
172
+ );
173
+
174
+ $options[] = array(
175
+ 'type' => 'checkbox',
176
+ 'way' => 'buttons',
177
+ 'name' => 'replace_howdy_welcome',
178
+ 'title' => __('Replace "Howdy" text with "Welcome"', 'clearfy'),
179
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
180
+ 'hint' => __('Replaces the welcome text in admin bar.', 'clearfy'),
181
+ 'default' => false
182
+ );
183
+ }
184
+
185
+ //============================================================
186
+ // POST TOOLS COMPONENT
187
+ //============================================================
188
+
189
+ if( $this->plugin->isActivateComponent('post_tools') ) {
190
+ $options[] = array(
191
+ 'type' => 'html',
192
+ 'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Posts', 'clearfy') . '</strong>' . '<p>' . __('In this group of options, you can manage revisions and post autosave.', 'clearfy') . '</p>' . '</div>'
193
+ );
194
+
195
+ $options[] = array(
196
+ 'type' => 'checkbox',
197
+ 'way' => 'buttons',
198
+ 'name' => 'revisions_disable',
199
+ 'title' => __('Disable revision', 'clearfy'),
200
+ 'default' => false,
201
+ 'eventsOn' => array(
202
+ 'hide' => '.factory-control-revision_limit'
203
+ ),
204
+ 'eventsOff' => array(
205
+ 'show' => '.factory-control-revision_limit'
206
+ ),
207
+ );
208
+
209
+ $options[] = array(
210
+ 'type' => 'dropdown',
211
+ 'name' => 'revision_limit',
212
+ 'title' => __('Limit Post Revisions', 'clearfy'),
213
+ 'data' => array(
214
+ array('default', __('Wordpress default', 'clearfy')),
215
+ array('15', '15 ' . __('revisions', 'clearfy')),
216
+ array('20', '20 ' . __('revisions', 'clearfy')),
217
+ array('25', '25 ' . __('revisions', 'clearfy')),
218
+ array('30', '30 ' . __('revisions', 'clearfy')),
219
+ array('35', '35 ' . __('revisions', 'clearfy')),
220
+ array('40', '40 ' . __('revisions', 'clearfy')),
221
+ array('45', '45 ' . __('revisions', 'clearfy')),
222
+ array('50', '50 ' . __('revisions', 'clearfy')),
223
+ array('55', '55 ' . __('revisions', 'clearfy')),
224
+ array('60', '60 ' . __('revisions', 'clearfy'))
225
+ ),
226
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
227
+ 'hint' => __('WordPress automatically saves revisions when you are working on posts and pages. These can begin to add up pretty quick. By default, there is no limit in place. We have seen posts with over 1,000 revisions. Multiply this by 50 pages and suddenly you have over 50,000 revisions sitting in your database. The problem with this is that you will most likely never use them and they can start slowing down your database as well as using disk space.
228
+ So we recommend either disabling or limiting your revisions. ', 'clearfy'),
229
+ 'default' => 'default'
230
+ );
231
+
232
+ $options[] = array(
233
+ 'type' => 'checkbox',
234
+ 'way' => 'buttons',
235
+ 'name' => 'disable_post_autosave',
236
+ 'title' => __('Disable autosave', 'clearfy'),
237
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
238
+ 'hint' => __('WordPress by default automatically saves a draft every 60 seconds (1 minute). There are reasons why you might want to change this.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disables automatic saving of drafts.', 'clearfy'),
239
+ 'default' => false
240
+ );
241
+
242
+ $options[] = array(
243
+ 'type' => 'checkbox',
244
+ 'way' => 'buttons',
245
+ 'name' => 'disable_texturization',
246
+ 'title' => __('Disable Texturization - Smart Quotes', 'clearfy'),
247
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
248
+ 'hint' => __('Function of text formatting. This function makes the text more correct, readable and visually appealing. But sometimes this function may prevent you from using certain codes and symbols.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable Texturization - Smart Quotes.', 'clearfy'),
249
+ 'default' => false
250
+ );
251
+
252
+ $options[] = array(
253
+ 'type' => 'checkbox',
254
+ 'way' => 'buttons',
255
+ 'name' => 'disable_auto_correct_dangit',
256
+ 'title' => __('Disable capitalization in Wordpress branding', 'clearfy'),
257
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
258
+ 'hint' => __('Replaces the incorrectly written letter "p" in the middle of WordPress (you need to write with the capital P in the middle).', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable capitalization in Wordpress branding.', 'clearfy'),
259
+ 'default' => false
260
+ );
261
+
262
+ $options[] = array(
263
+ 'type' => 'checkbox',
264
+ 'way' => 'buttons',
265
+ 'name' => 'disable_auto_paragraph',
266
+ 'title' => __('Disable auto inserted paragraphs (i.e. p tags)', 'clearfy'),
267
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
268
+ 'hint' => __('Replaces the double shifting of a string to an HTML p ... /p construct, and a single one on br.', 'clearfy') . '<br><b>Clearfy</b>: ' . __('Disable auto inserted paragraphs.', 'clearfy'),
269
+ 'default' => false
270
+ );
271
+ }
272
+
273
+ $formOptions = array();
274
+
275
+ $formOptions[] = array(
276
+ 'type' => 'form-group',
277
+ 'items' => $options,
278
+ //'cssClass' => 'postbox'
279
+ );
280
+
281
+ return apply_filters('wbcr_clr_additionally_form_options', $formOptions, $this);
282
+ }
283
+ }
admin/pages/components.php CHANGED
@@ -1,5 +1,4 @@
1
  <?php
2
-
3
  /**
4
  * This file is the add-ons page.
5
  *
@@ -8,46 +7,47 @@
8
  *
9
  * @since 1.0.0
10
  */
11
- class WbcrClr_ComponentsPage extends FactoryPages324_ImpressiveThemplate {
 
 
 
 
 
 
12
 
13
  /**
14
  * The id of the page in the admin menu.
15
  *
16
  * Mainly used to navigate between pages.
17
- * @see FactoryPages324_AdminPage
18
  *
19
  * @since 1.0.0
20
  * @var string
21
  */
22
  public $id = "components";
23
 
24
- public $internal = false;
25
 
26
  public $page_menu_dashicon = 'dashicons-admin-plugins';
27
 
28
  public $type = 'page';
29
 
30
- public function __construct(Factory326_Plugin $plugin)
 
 
 
31
  {
32
- $this->menuTitle = __('Components', 'clearfy');
33
-
34
- add_filter('factory_impressive_page_bottom_sidebar_widgets', function ($page_id, $widgets) {
35
- //if( $page_id == "components" ) {
36
- //unset($widgets['donate_widget']);
37
- //}
38
-
39
- $widgets['rating_widget'] = $this->getRatingWidget('http://yandex.ru');
40
-
41
- return $widgets;
42
- }, 10, 2);
43
 
44
  parent::__construct($plugin);
 
 
45
  }
46
 
47
  /**
48
  * Requests assets (js and css) for the page.
49
  *
50
- * @see FactoryPages324_AdminPage
51
  *
52
  * @since 1.0.0
53
  * @return void
@@ -56,60 +56,163 @@
56
  {
57
  parent::assets($scripts, $styles);
58
 
59
- $this->styles->add(WBCR_CLR_PLUGIN_URL . '/admin/assets/css/components.css');
60
  }
61
 
62
  public function showPageContent()
63
  {
64
- $components = new FactoryAddons000();
65
- $response = $components->getPluginAddons('sociallocker');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  ?>
 
 
 
 
 
 
67
  <div class="wbcr-clearfy-components">
68
  <?php foreach($response as $addon): ?>
69
- <div class="plugin-card plugin-card-akismet">
 
 
 
 
 
 
 
 
 
 
70
  <div class="plugin-card-top">
71
  <div class="name column-name">
72
  <h3>
73
  <a href="<?= $addon['url'] ?>" class="thickbox open-plugin-details-modal">
74
  <?= $addon['title'] ?>
75
- <img src="https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272" class="plugin-icon" alt="">
76
  </a>
77
  </h3>
78
  </div>
79
  <div class="desc column-description">
80
- <p><?= $components->excerpt($addon['description'], 16); ?></p>
81
  </div>
82
  </div>
83
  <div class="plugin-card-bottom">
84
- <div class="vers column-rating">
85
- <div class="star-rating">
86
- <span class="screen-reader-text">5.0 rating based on 796 ratings</span>
87
-
88
- <div class="star star-full" aria-hidden="true"></div>
89
- <div class="star star-full" aria-hidden="true"></div>
90
- <div class="star star-full" aria-hidden="true"></div>
91
- <div class="star star-full" aria-hidden="true"></div>
92
- <div class="star star-full" aria-hidden="true"></div>
93
- </div>
94
- <span class="num-ratings" aria-hidden="true">(796)</span>
95
- </div>
96
- <!--<div class="column-updated">
97
- <strong>Last Updated:</strong> 2 weeks ago
98
- </div>
99
- <div class="column-downloaded">
100
- 1+ Million Active Installs
101
- </div>
102
- <div class="column-compatibility">
103
- <span class="compatibility-compatible"><strong>Compatible</strong> with your version of WordPress</span>
104
- </div>-->
105
- <a class="install-now button" data-slug="akismet" href="http://testwp.dev/wp-admin/update.php?action=install-plugin&amp;plugin=akismet&amp;_wpnonce=64668827e5" aria-label="Install Akismet 4.0 now" data-name="Akismet 4.0">Install
106
- Now</a>
107
  </div>
108
  </div>
109
  <?php endforeach; ?>
 
110
  </div>
111
  <?php
112
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  }
114
 
115
- FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_ComponentsPage');
1
  <?php
 
2
  /**
3
  * This file is the add-ons page.
4
  *
7
  *
8
  * @since 1.0.0
9
  */
10
+
11
+ // Exit if accessed directly
12
+ if( !defined('ABSPATH') ) {
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 FactoryPages400_AdminPage
23
  *
24
  * @since 1.0.0
25
  * @var string
26
  */
27
  public $id = "components";
28
 
29
+ public $page_menu_position = 0;
30
 
31
  public $page_menu_dashicon = 'dashicons-admin-plugins';
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
+
44
+ $this->plugin = $plugin;
45
  }
46
 
47
  /**
48
  * Requests assets (js and css) for the page.
49
  *
50
+ * @see FactoryPages400_AdminPage
51
  *
52
  * @since 1.0.0
53
  * @return void
56
  {
57
  parent::assets($scripts, $styles);
58
 
59
+ $this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/components.css');
60
  }
61
 
62
  public function showPageContent()
63
  {
64
+ $preinsatall_components = $this->plugin->getOption('deactive_preinstall_components', array());
65
+
66
+ $default_image = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNjAiIGhlaWdodD0iMzYwIiB2aWV3Ym94PSIwIDAgMzYwIDM2MCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0icmdiKDcwLCA4MSwgOTMpIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjE1IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wNTQ2NjY2NjY2NjY2NjciIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYwLCAwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4wNDYiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMCwgMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDIiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDU0NjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDAsIDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjAyODY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzAwLCAwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4xMDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwgNjApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA5OCIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDYwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMTUzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIwLCA2MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDYzMzMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxODAsIDYwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMzczMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI0MCwgNjApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjE0MTMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAsIDYwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMzczMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsIDEyMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDg5MzMzMzMzMzMzMzMzIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MCwgMTIwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wODkzMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMCwgMTIwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4wODA2NjY2NjY2NjY2NjciIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMTIwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMzI2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLCAxMjApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjE1IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAsIDEyMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDk4IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAxODApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA2MzMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDE4MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDIiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMCwgMTgwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4wMzczMzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMTgwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMTUzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLCAxODApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA2MzMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzAwLCAxODApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjA1NDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwgMjQwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiNkZGQiIGZpbGwtb3BhY2l0eT0iMC4xMDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDI0MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDcyIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAsIDI0MCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMTE1MzMzMzMzMzMzMzMiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLW9wYWNpdHk9IjAuMDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MCwgMjQwKSIgLz48cG9seWxpbmUgcG9pbnRzPSIxOS44LDAsNDAuMiwwLDYwLDE5LjgsNjAsNDAuMiw0MC4yLDYwLDE5LjgsNjAsMCw0MC4yLDAsMTkuOCwxOS44LDAiIGZpbGw9IiMyMjIiIGZpbGwtb3BhY2l0eT0iMC4xMzI2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQwLCAyNDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjA4MDY2NjY2NjY2NjY2NyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzAwLCAyNDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iIzIyMiIgZmlsbC1vcGFjaXR5PSIwLjEzMjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAzMDApIiAvPjxwb2x5bGluZSBwb2ludHM9IjE5LjgsMCw0MC4yLDAsNjAsMTkuOCw2MCw0MC4yLDQwLjIsNjAsMTkuOCw2MCwwLDQwLjIsMCwxOS44LDE5LjgsMCIgZmlsbD0iI2RkZCIgZmlsbC1vcGFjaXR5PSIwLjAzNzMzMzMzMzMzMzMzMyIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utb3BhY2l0eT0iMC4wMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMTI0IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDI4NjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxODAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjZGRkIiBmaWxsLW9wYWNpdHk9IjAuMDcyIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDAsIDMwMCkiIC8+PHBvbHlsaW5lIHBvaW50cz0iMTkuOCwwLDQwLjIsMCw2MCwxOS44LDYwLDQwLjIsNDAuMiw2MCwxOS44LDYwLDAsNDAuMiwwLDE5LjgsMTkuOCwwIiBmaWxsPSIjMjIyIiBmaWxsLW9wYWNpdHk9IjAuMDI4NjY2NjY2NjY2NjY3IiBzdHJva2U9IiMwMDAiIHN0cm9rZS1vcGFjaXR5PSIwLjAyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAsIDMwMCkiIC8+PC9zdmc+';
67
+
68
+ $response = array(
69
+ array(
70
+ 'id' => 'update_manager',
71
+ 'title' => __('Updates manager', 'clearfy'),
72
+ 'url' => '#',
73
+ 'icon' => WCL_PLUGIN_URL . '/admin/assets/img/upm-icon-128x128.png',
74
+ 'description' => __('Disable updates enable auto updates for themes, plugins and WordPress.', 'clearfy')
75
+ ),
76
+ array(
77
+ 'id' => 'comments_tools',
78
+ 'title' => __('Comments tools', 'clearfy'),
79
+ 'url' => '#',
80
+ 'icon' => WCL_PLUGIN_URL . '/admin/assets/img/dic-icon-128x128.png',
81
+ 'description' => __('Bulk disable and remove comments, disable “Website” field, hides external links, disable XML-RPC.', 'clearfy')
82
+ ),
83
+ array(
84
+ 'id' => 'widget_tools',
85
+ 'title' => __('Widgets tools', 'clearfy'),
86
+ 'url' => '#',
87
+ 'icon' => $default_image,
88
+ 'description' => __('Disable unused widgets such as tag cloud, links, calendar etc.', 'clearfy')
89
+ ),
90
+ array(
91
+ 'id' => 'asset_manager',
92
+ 'title' => __('Asset manager', 'clearfy'),
93
+ 'url' => '#',
94
+ 'icon' => WCL_PLUGIN_URL . '/admin/assets/img/asm-icon-128x128.png',
95
+ 'description' => __('Selectively disable unused scripts and styles on the pages of your website.', 'clearfy')
96
+ ),
97
+ array(
98
+ 'id' => 'disable_notices',
99
+ 'title' => __('Disable admin notices', 'clearfy'),
100
+ 'url' => '#',
101
+ 'icon' => WCL_PLUGIN_URL . '/admin/assets/img/dan-icon-128x128.jpg',
102
+ 'description' => __('Disables admin notices bulk or individually. Collects notices into the admin bar.', 'clearfy')
103
+ ),
104
+ array(
105
+ 'id' => 'adminbar_manager',
106
+ 'title' => __('Admin bar manager', 'clearfy'),
107
+ 'url' => '#',
108
+ 'icon' => $default_image,
109
+ 'description' => __('Disables admin bar. Allows to change and remove admin bar elements.', 'clearfy')
110
+ ),
111
+ array(
112
+ 'id' => 'post_tools',
113
+ 'title' => __('Posts tools', 'clearfy'),
114
+ 'url' => '#',
115
+ 'icon' => $default_image,
116
+ 'description' => __('Disable revisions, disable posts autosave, disable smart quotes and disable auto paragraphs.', 'clearfy')
117
+ ),
118
+ array(
119
+ 'id' => 'yoast_seo',
120
+ 'title' => __('Yoast SEO optimization', 'clearfy'),
121
+ 'url' => '#',
122
+ 'icon' => $default_image,
123
+ 'description' => __('Set of optimization functions for the popular Yoast SEO plugin.', 'clearfy')
124
+ )
125
+ );
126
+
127
+ if( in_array(get_locale(), array('ru_RU', 'uk', 'bg', 'bg_BG', 'ka_GE')) ) {
128
+ $response[] = array(
129
+ 'id' => 'cyrlitera',
130
+ 'title' => __('Transliteration of Cyrillic alphabet', 'clearfy'),
131
+ 'url' => '#',
132
+ 'icon' => $default_image,
133
+ 'description' => __('Converts Cyrillic permalinks of post, pages, taxonomies and media files to the Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian languages.', 'clearfy')
134
+ );
135
+ }
136
  ?>
137
+ <div class="wbcr-factory-page-group-header"><?php _e('<strong>Plugin Components</strong>.', 'clearfy') ?>
138
+ <p>
139
+ <?php _e('These are components of the plugin bundle. When you activate the plugin, all the components turned on by default. If you don’t need some function, you can easily turn it off on this page.', 'clearfy') ?>
140
+ </p>
141
+ </div>
142
+
143
  <div class="wbcr-clearfy-components">
144
  <?php foreach($response as $addon): ?>
145
+ <?php
146
+ $status_class = '';
147
+ $plugin_activate = true;
148
+
149
+ if( in_array($addon['id'], $preinsatall_components) ) {
150
+ $status_class = ' plugin-status-deactive';
151
+ $plugin_activate = false;
152
+ }
153
+ ?>
154
+
155
+ <div class="plugin-card<?= $status_class ?>">
156
  <div class="plugin-card-top">
157
  <div class="name column-name">
158
  <h3>
159
  <a href="<?= $addon['url'] ?>" class="thickbox open-plugin-details-modal">
160
  <?= $addon['title'] ?>
161
+ <img src="<?= $addon['icon'] ?>" class="plugin-icon" alt="">
162
  </a>
163
  </h3>
164
  </div>
165
  <div class="desc column-description">
166
+ <p><?= $addon['description']; ?></p>
167
  </div>
168
  </div>
169
  <div class="plugin-card-bottom">
170
+ <?php if( !$plugin_activate ): ?>
171
+ <a class="install-now button button-success" href="<?= wp_nonce_url($this->getActionUrl('activate', array('id' => $addon['id'])), 'activate_' . $this->getResultId() . '_' . $addon['id']) ?>"><?php _e('Activate', 'clearfy') ?></a>
172
+ <?php else: ?>
173
+ <a class="install-now button" href="<?= wp_nonce_url($this->getActionUrl('deactivate', array('id' => $addon['id'])), 'deactivate_' . $this->getResultId() . '_' . $addon['id']) ?>"><?php _e('Deactivate', 'clearfy') ?></a>
174
+ <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
  </div>
176
  </div>
177
  <?php endforeach; ?>
178
+ <div class="clearfix"></div>
179
  </div>
180
  <?php
181
  }
182
+
183
+ public function deactivateAction()
184
+ {
185
+ $plugin_id = $this->request->get('id', null, true);
186
+ check_admin_referer('deactivate_' . $this->getResultId() . '_' . $plugin_id);
187
+
188
+ $preinsatall_components = $this->plugin->getOption('deactive_preinstall_components', array());
189
+
190
+ if( !in_array($plugin_id, $preinsatall_components) ) {
191
+ $preinsatall_components[] = $plugin_id;
192
+ }
193
+
194
+ $this->plugin->updateOption('deactive_preinstall_components', $preinsatall_components);
195
+ $this->redirectToAction('index');
196
+ }
197
+
198
+ public function activateAction()
199
+ {
200
+ $plugin_id = $this->request->get('id', null, true);
201
+ check_admin_referer('activate_' . $this->getResultId() . '_' . $plugin_id);
202
+
203
+ $preinsatall_components = $this->plugin->getOption('deactive_preinstall_components', array());
204
+
205
+ if( in_array($plugin_id, $preinsatall_components) ) {
206
+ foreach($preinsatall_components as $key => $component) {
207
+ if( $component == $plugin_id ) {
208
+ unset($preinsatall_components[$key]);
209
+ }
210
+ }
211
+ }
212
+
213
+ $this->plugin->updateOption('deactive_preinstall_components', $preinsatall_components);
214
+ $this->redirectToAction('index');
215
+ }
216
  }
217
 
218
+
admin/pages/defence-privacy-code.php ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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_PrivacyContentPage 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 FactoryPages400_AdminPage
21
+ *
22
+ * @since 1.0.0
23
+ * @var string
24
+ */
25
+ public $id = "privacy";
26
+
27
+ public $page_parent_page = 'defence';
28
+
29
+ public $page_menu_position = 15;
30
+
31
+ public $page_menu_dashicon = 'dashicons-hidden';
32
+
33
+ /**
34
+ * @param WCL_Plugin $plugin
35
+ */
36
+ public function __construct(WCL_Plugin $plugin)
37
+ {
38
+ $this->menu_title = __('Code privacy', 'clearfy');
39
+
40
+ parent::__construct($plugin);
41
+
42
+ $this->plugin = $plugin;
43
+ }
44
+
45
+ /**
46
+ * Permalinks options.
47
+ *
48
+ * @since 1.0.0
49
+ * @return mixed[]
50
+ */
51
+ public function getOptions()
52
+ {
53
+ $options = array();
54
+
55
+ $options[] = array(
56
+ 'type' => 'html',
57
+ 'html' => '<div class="wbcr-factory-page-group-header">' . __('<strong>Hide WordPress plugins 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>'
58
+ );
59
+
60
+ $options[] = array(
61
+ 'type' => 'checkbox',
62
+ 'way' => 'buttons',
63
+ 'name' => 'remove_html_comments',
64
+ 'title' => __('Remove html comments', 'clearfy'),
65
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
66
+ 'hint' => __('This function will remove all html comments in the source code, except for special and hidden comments. This is necessary to hide the version of installed plugins.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Remove html comments in source code.', 'clearfy'),
67
+ 'default' => false
68
+ );
69
+
70
+ $options[] = array(
71
+ 'type' => 'checkbox',
72
+ 'way' => 'buttons',
73
+ 'name' => 'remove_meta_generator',
74
+ 'title' => __('Remove meta generator', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
75
+ 'layout' => array('hint-type' => 'icon'),
76
+ 'hint' => __('Allows attacker to learn the version of WP installed on the site. This meta tag has no useful function.', 'clearfy') . '<br><b>Clearfy: </b>' . sprintf(__('Removes the meta tag from the %s section', 'clearfy'), '&lt;head&gt;'),
77
+ 'default' => false
78
+ );
79
+
80
+ $form_options = array();
81
+
82
+ $form_options[] = array(
83
+ 'type' => 'form-group',
84
+ 'items' => $options,
85
+ //'cssClass' => 'postbox'
86
+ );
87
+
88
+ return apply_filters('wbcr_clr_privacy_form_options', $form_options, $this);
89
+ }
90
+ }
admin/pages/defence.php CHANGED
@@ -1,46 +1,195 @@
1
  <?php
2
-
3
  /**
4
  * The page Settings.
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrClr_DefencePage extends WbcrClr_Page {
9
-
 
 
 
 
 
 
10
  /**
11
  * The id of the page in the admin menu.
12
  *
13
  * Mainly used to navigate between pages.
14
- * @see FactoryPages324_AdminPage
15
  *
16
  * @since 1.0.0
17
  * @var string
18
  */
19
  public $id = "defence";
20
-
21
  public $page_menu_dashicon = 'dashicons-shield-alt';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
 
23
- public function __construct(Factory326_Plugin $plugin)
 
 
 
 
24
  {
25
- $this->menuTitle = __('Defence', 'clearfy');
 
26
 
27
- parent::__construct($plugin);
 
 
 
 
 
 
28
  }
29
 
30
  /**
31
- * Shows the description above the options.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  *
33
- * @since 1.0.0
34
- * @return void
 
 
35
  */
36
- /*public function _showHeader()
37
  {
38
- ?>
39
- <div class="wbcr-clearfy-header">
40
- <?php _e('This page contains the security configuration settings for your site.', 'clearfy') ?>
41
- </div>
42
- <?php
43
- }*/
 
 
 
 
 
 
 
 
 
 
 
44
 
45
  /**
46
  * Permalinks options.
@@ -51,62 +200,128 @@
51
  public function getOptions()
52
  {
53
  $options = array();
54
-
55
- /*$options[] = array(
56
  'type' => 'html',
57
- 'html' => array($this, '_showHeader')
58
- );*/
59
-
60
  $options[] = array(
61
  'type' => 'checkbox',
62
  'way' => 'buttons',
63
  'name' => 'protect_author_get',
64
- 'title' => __('Hide author login', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
65
  'layout' => array('hint-type' => 'icon'),
66
  'hint' => __('An attacker can find out the author\'s login, using a similar request to get your site. mysite.com/?author=1', 'clearfy') . '<br><b>Clearfy: </b>' . __('Sets the redirect to exclude the possibility of obtaining a login.', 'clearfy'),
67
  'default' => false
68
  );
69
-
70
  $options[] = array(
71
  'type' => 'checkbox',
72
  'way' => 'buttons',
73
  'name' => 'change_login_errors',
74
- 'title' => __('Hide errors when logging into the site', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
75
  'layout' => array('hint-type' => 'icon'),
76
  'hint' => __('WP by default shows whether you entered a wrong login or incorrect password, which allows attackers to understand if there is a certain user on the site, and then start searching through the passwords.', 'clearfy') . '<br><b>Clearfy: </b>' . __('Changes in the text of the error so that attackers could not find the login.', 'clearfy'),
77
  'default' => false
78
  );
79
-
80
  $options[] = array(
81
  'type' => 'checkbox',
82
  'way' => 'buttons',
83
  'name' => 'remove_x_pingback',
84
- 'title' => __('Disable XML-RPC', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
85
  'layout' => array('hint-type' => 'icon'),
86
  '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.', 'clearfy') . '<br><b>Clearfy: </b>' . __('Removes the server responses a reference to the xmlrpc file.', 'clearfy'),
87
  'default' => false
88
  );
89
-
90
- /*$options[] = array(
91
- 'type' => 'separator',
92
- 'cssClass' => 'factory-separator-dashed'
93
- );*/
94
-
95
- /*$options[] = array(
96
  'type' => 'html',
97
- 'html' => array($this, '_showFormButton')
98
- );*/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
 
100
- $form_options = array();
 
 
 
 
101
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  $form_options[] = array(
103
  'type' => 'form-group',
104
  'items' => $options,
105
  //'cssClass' => 'postbox'
106
  );
107
-
108
  return apply_filters('wbcr_clr_defence_form_options', $form_options, $this);
109
  }
110
- }
111
 
112
- FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_DefencePage');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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_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 FactoryPages400_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
24
  */
25
  public $id = "defence";
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
+ add_filter('wp_unique_post_slug', array($this, 'loginPathNoConflict'), 10, 4);
39
+
40
+ $this->plugin = $plugin;
41
+ }
42
+
43
+ /**
44
+ * Уведомления о несовместимости плагинов
45
+ */
46
+ public function warningNotice()
47
+ {
48
+ if( is_plugin_active('hide-my-wp/index.php') ) {
49
+ $this->setWpLoginConflictNotite('Hide My WP');
50
+ }
51
+ if( is_plugin_active('clearfy/hide-my-wp.php') ) {
52
+ $this->setWpLoginFunctionContainNotite('Hide My WP');
53
+ }
54
+ if( is_plugin_active('rename-wp-login/rename-wp-login.php') ) {
55
+ $this->setWpLoginConflictNotite('Rename wp-login.php');
56
+ }
57
+ if( is_plugin_active('wps-hide-login/wps-hide-login.php') ) {
58
+ $this->setWpLoginConflictNotite('WPS Hide Login');
59
+ }
60
+ if( is_plugin_active('wp-cerber/wp-cerber.php') ) {
61
+ $this->setWpLoginFunctionContainNotite('WP Cerber Security & Antispam');
62
+ }
63
+ if( is_plugin_active('all-in-one-wp-security-and-firewall/wp-security.php') ) {
64
+ $this->setWpLoginFunctionContainNotite('All In One WP Security');
65
+ }
66
+ if( is_plugin_active('wp-hide-security-enhancer/wp-hide.php') ) {
67
+ $this->setWpLoginFunctionContainNotite('WP Hide & Security Enhancer');
68
+ }
69
+ }
70
 
71
+ /**
72
+ * Показывает уведомление о полной несовместимости плагинов
73
+ * @param string $plugin_name
74
+ */
75
+ public function setWpLoginConflictNotite($plugin_name)
76
  {
77
+ $this->printWarningNotice(sprintf(__("We found that you are use the (%s) plugin to change wp-login.php page address. Please delete it, because Clearfy already contains these functions and you do not need to use two plugins. If you do not want to remove (%s) plugin for some reason, please do not use wp-login.php page address change feature in the Clearfy plugin, to avoid conflicts.", 'clearfy'), $plugin_name, $plugin_name));
78
+ }
79
 
80
+ /**
81
+ * Показывает частичную несовместимость с плагином
82
+ * @param string $plugin_name
83
+ */
84
+ public function setWpLoginFunctionContainNotite($plugin_name)
85
+ {
86
+ $this->printWarningNotice(sprintf(__("We found that you are use the (%s) plugin. Please do not use its wp-login.php page address change and the same feature in the Clearfy plugin, to avoid conflicts.", 'clearfy'), $plugin_name, $plugin_name));
87
  }
88
 
89
  /**
90
+ * Предотвращаем попытки убить доступ к админ панели
91
+ */
92
+ protected function afterFormSave()
93
+ {
94
+ $login_path = $this->plugin->getOption('login_path');
95
+ $valid_path = !is_numeric($login_path) && preg_match('/^[0-9A-z_-]{3,}$/', $login_path);
96
+
97
+ if( !empty($login_path) ) {
98
+ if( !$valid_path ) {
99
+ $this->deleteLoginNewPath();
100
+
101
+ $this->redirectToAction('index', array('wbcr_clr_login_path_incorrect' => 1));
102
+ }
103
+
104
+ $args = array(
105
+ 'name' => $login_path,
106
+ 'post_type' => array('page', 'post', 'attachment'),
107
+ 'numberposts' => 1
108
+ );
109
+
110
+ $posts = get_posts($args);
111
+
112
+ if( !empty($posts) ) {
113
+ $this->deleteLoginNewPath();
114
+
115
+ $this->redirectToAction('index', array('wbcr_clr_login_path_exists' => 1));
116
+ }
117
+
118
+ $old_login_path = $this->plugin->getOption('old_login_path');
119
+
120
+ if( !$old_login_path || $login_path != $old_login_path ) {
121
+
122
+ $recovery_code = md5(rand(1, 9999) . microtime());
123
+
124
+ $body = __("Hi,\nThis is %s plugin. Here is your new WordPress login address:\nURL: %s", 'clearfy') . PHP_EOL . PHP_EOL;
125
+ $body .= __("IMPORTANT! Be sure that you wrote down the new login page address", 'clearfy') . '!' . PHP_EOL . PHP_EOL;
126
+ $body .= __("If unable to access the login/admin section anymore, use the Recovery Link which reset links to default: \n%s", 'clearfy') . PHP_EOL . PHP_EOL;
127
+ $body .= __("Best Regards,\n%s", 'clearfy') . PHP_EOL;
128
+
129
+ $new_url = site_url('wp-login.php');
130
+
131
+ $body = sprintf($body, WCL_Plugin::app()
132
+ ->getPluginTitle(), $new_url, $this->getRecoveryUrl($recovery_code), WCL_Plugin::app()
133
+ ->getPluginTitle()) . PHP_EOL;
134
+
135
+ $subject = sprintf(__('[%s] Your New WP Login!', 'clearfy'), WCL_Plugin::app()->getPluginTitle());
136
+
137
+ wp_mail(get_option('admin_email'), $subject, $body);
138
+
139
+ $this->plugin->updateOption('old_login_path', $login_path);
140
+ $this->plugin->updateOption('login_recovery_code', $recovery_code);
141
+ }
142
+ }
143
+ }
144
+
145
+ public function deleteLoginNewPath()
146
+ {
147
+ $this->plugin->deleteOption('login_path');
148
+ $this->plugin->deleteOption('hide_login_path');
149
+ }
150
+
151
+ public function loginPathNoConflict($slug, $post_ID, $post_status, $post_type)
152
+ {
153
+ if( in_array($post_type, array('post', 'page', 'attachment')) ) {
154
+ $login_path = $this->plugin->getOption('login_path');
155
+
156
+ if( !empty($login_path) ) {
157
+ if( $slug == trim($login_path) ) {
158
+ $slug = $slug . rand(10, 99);
159
+ }
160
+ }
161
+ }
162
+
163
+ return $slug;
164
+ }
165
+
166
+ /**
167
+ * We register notifications for some actions
168
  *
169
+ * @see libs\factory\pages\themplates\FactoryPages400_ImpressiveThemplate
170
+ * @param $notices
171
+ * @param Wbcr_Factory400_Plugin $plugin
172
+ * @return array
173
  */
174
+ public function getActionNotices($notices)
175
  {
176
+ $notices[] = array(
177
+ 'conditions' => array(
178
+ 'wbcr_clr_login_path_incorrect' => 1,
179
+ ),
180
+ 'type' => 'danger',
181
+ 'message' => __('You entered an incorrect part of the path to your login page. The path to the login page can not consist only of digits, at least 3 characters, you must use only the characters [0-9A-z_-]!', 'clearfy')
182
+ );
183
+ $notices[] = array(
184
+ 'conditions' => array(
185
+ 'wbcr_clr_login_path_exists' => 1,
186
+ ),
187
+ 'type' => 'danger',
188
+ 'message' => __('The entered login page name is already used for one of your pages. Try to choose a different login page name!', 'clearfy')
189
+ );
190
+
191
+ return $notices;
192
+ }
193
 
194
  /**
195
  * Permalinks options.
200
  public function getOptions()
201
  {
202
  $options = array();
203
+
204
+ $options[] = array(
205
  'type' => 'html',
206
+ 'html' => '<div class="wbcr-factory-page-group-header">' . __('<strong>Base settings</strong>.', 'clearfy') . '<p>' . __('Basic recommended security settings.', 'clearfy') . '</p></div>'
207
+ );
208
+
209
  $options[] = array(
210
  'type' => 'checkbox',
211
  'way' => 'buttons',
212
  'name' => 'protect_author_get',
213
+ 'title' => __('Hide author login', 'clearfy'),
214
  'layout' => array('hint-type' => 'icon'),
215
  'hint' => __('An attacker can find out the author\'s login, using a similar request to get your site. mysite.com/?author=1', 'clearfy') . '<br><b>Clearfy: </b>' . __('Sets the redirect to exclude the possibility of obtaining a login.', 'clearfy'),
216
  'default' => false
217
  );
218
+
219
  $options[] = array(
220
  'type' => 'checkbox',
221
  'way' => 'buttons',
222
  'name' => 'change_login_errors',
223
+ 'title' => __('Hide errors when logging into the site', 'clearfy'),
224
  'layout' => array('hint-type' => 'icon'),
225
  'hint' => __('WP by default shows whether you entered a wrong login or incorrect password, which allows attackers to understand if there is a certain user on the site, and then start searching through the passwords.', 'clearfy') . '<br><b>Clearfy: </b>' . __('Changes in the text of the error so that attackers could not find the login.', 'clearfy'),
226
  'default' => false
227
  );
228
+
229
  $options[] = array(
230
  'type' => 'checkbox',
231
  'way' => 'buttons',
232
  'name' => 'remove_x_pingback',
233
+ 'title' => __('Disable XML-RPC', 'clearfy'),
234
  'layout' => array('hint-type' => 'icon'),
235
  '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.', 'clearfy') . '<br><b>Clearfy: </b>' . __('Removes the server responses a reference to the xmlrpc file.', 'clearfy'),
236
  'default' => false
237
  );
238
+
239
+ $options = apply_filters('wbcr_clr_defence_form_base_options', $options);
240
+
241
+ $options[] = array(
 
 
 
242
  'type' => 'html',
243
+ 'html' => '<div class="wbcr-factory-page-group-header">' . __('<strong>Protect your admin login</strong>.', 'clearfy') . '<p>' . __('Dozens of bots attack your login page at /wp-login.php and /wp-admin/daily. Bruteforce and want to access your admin panel. Even if you\'re sure that you have created a complex and reliable password, this does not guarantee security and does not relieve your login page load. The easiest way is to protect the login page by simply changing its address to your own and unique.', 'clearfy') . '</p></div>'
244
+ );
245
+
246
+ $options[] = array(
247
+ 'type' => 'checkbox',
248
+ 'way' => 'buttons',
249
+ 'name' => 'hide_wp_admin',
250
+ 'title' => __('Hide wp-admin', 'clearfy'),
251
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
252
+ 'hint' => __("Hides the /wp-admin directory for unauthorized users. If the option is disabled, when you request the page /wp-admin you will be redirected to the login page, even if you changed its address. Therefore, for protection purposes enable this option.", 'clearfy')
253
+ );
254
+
255
+ $options[] = array(
256
+ 'type' => 'checkbox',
257
+ 'way' => 'buttons',
258
+ 'name' => 'hide_login_path',
259
+ 'title' => __('Hide Login Page', 'clearfy'),
260
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'red'),
261
+ 'hint' => __("Hides the wp-login.php and wp-signup.php pages.", 'clearfy') . '<br>--<br><span class="hint-warnign-color">' . __("Use this option carefully! If you forget the new login page address, you can not get into the admin panel.", 'clearfy') . '</span>'
262
+ );
263
 
264
+ $recovery_url = $this->getRecoveryUrl();
265
+ $recovery_url = !empty($recovery_url)
266
+ ? '<br><br>' . sprintf(__("If unable to access the login/admin section anymore, use the Recovery Link which reset links to default: \n%s", 'clearfy'), $recovery_url)
267
+ : '';
268
+ $new_login_url = $this->getNewLoginUrl();
269
 
270
+ $options[] = array(
271
+ 'type' => 'textbox',
272
+ 'name' => 'login_path',
273
+ 'placeholder' => 'secure/auth.php',
274
+ 'title' => __('New login page', 'clearfy'),
275
+ 'hint' => __('Set a new login page name without slash. Example: mysecretlogin', 'clearfy') . '<br><span style="color:red">' . __("IMPORTANT! Be sure that you wrote down the new login page address", 'clearfy') . '</span>: <b><a href="' . $new_login_url . '" target="_blank">' . $new_login_url . '</a></b>' . $recovery_url,
276
+ //'units' => '<i class="fa fa-unlock" title="' . __('This option will protect your blog against unauthorized access.', 'clearfy') . '"></i>',
277
+ //'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'red')
278
+ );
279
+
280
+ //$options = apply_filters('wbcr_clr_defence_form_login_options', $options);
281
+
282
+ $form_options = array();
283
+
284
  $form_options[] = array(
285
  'type' => 'form-group',
286
  'items' => $options,
287
  //'cssClass' => 'postbox'
288
  );
289
+
290
  return apply_filters('wbcr_clr_defence_form_options', $form_options, $this);
291
  }
 
292
 
293
+ /**
294
+ * @return string
295
+ */
296
+ public function getNewLoginUrl()
297
+ {
298
+ $login_path = WCL_Plugin::app()->getOption('login_path');
299
+
300
+ if( empty($login_path) ) {
301
+ return home_url('/') . 'wp-login.php';
302
+ }
303
+
304
+ if( WCL_Helper::isPermalink() ) {
305
+ return WbcrFactoryClearfy200_Helpers::userTrailingslashit(home_url('/') . $login_path);
306
+ } else {
307
+ return home_url('/') . '?' . $login_path;
308
+ }
309
+ }
310
+
311
+ /**
312
+ * @param null $recovery_code
313
+ * @return string|void
314
+ */
315
+ public function getRecoveryUrl($recovery_code = null)
316
+ {
317
+ $recovery_code = empty($recovery_code)
318
+ ? $this->getOption('login_recovery_code')
319
+ : $recovery_code;
320
+
321
+ if( empty($recovery_code) ) {
322
+ return '';
323
+ }
324
+
325
+ return home_url('/?wbcr_clearfy_login_recovery=' . $recovery_code);
326
+ }
327
+ }
admin/pages/index.php ADDED
File without changes
admin/pages/performance-google.php ADDED
@@ -0,0 +1,258 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The page Settings.
4
+ *
5
+ * @since 1.0.0
6
+ */
7
+
8
+ // Exit if accessed directly
9
+ if( !defined('ABSPATH') ) {
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 FactoryPages400_AdminPage
20
+ *
21
+ * @since 1.0.0
22
+ * @var string
23
+ */
24
+ public $id = "performance_google";
25
+
26
+ /**
27
+ * @var string
28
+ */
29
+ public $page_parent_page = 'performance';
30
+
31
+ /**
32
+ * @var string
33
+ */
34
+ public $page_menu_dashicon = 'dashicons-performance';
35
+
36
+ /**
37
+ * @var int
38
+ */
39
+ public $page_menu_position = 20;
40
+
41
+ /**
42
+ * @param WCL_Plugin $plugin
43
+ */
44
+ public function __construct(WCL_Plugin $plugin)
45
+ {
46
+ $this->menu_title = __('Google services', 'clearfy');
47
+
48
+ parent::__construct($plugin);
49
+
50
+ $this->plugin = $plugin;
51
+ }
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 ) {
60
+ if( !wp_next_scheduled('wbcr_clearfy_update_local_ga') ) {
61
+ wp_schedule_event(time(), 'daily', 'wbcr_clearfy_update_local_ga');
62
+ }
63
+
64
+ return;
65
+ }
66
+ }
67
+
68
+ if( (!$ga_cache || $ga_caos_remove_wp_cron) && wp_next_scheduled('wbcr_clearfy_update_local_ga') ) {
69
+ wp_clear_scheduled_hook('wbcr_clearfy_update_local_ga');
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Permalinks options.
75
+ *
76
+ * @since 1.0.0
77
+ * @return mixed[]
78
+ */
79
+ public function getOptions()
80
+ {
81
+ $options = array();
82
+
83
+ $options[] = array(
84
+ 'type' => 'html',
85
+ 'html' => '<div class="wbcr-factory-page-group-header">' . __('<strong>Fonts and Maps</strong>.', 'clearfy') . '<p>' . __('Google Fonts and Maps strongly affect your website loading speed. Use settings below to disable or optimize Google fonts and Maps.', 'clearfy') . '</p></div>'
86
+ );
87
+
88
+ $options[] = array(
89
+ 'type' => 'checkbox',
90
+ 'way' => 'buttons',
91
+ 'name' => 'lazy_load_google_fonts',
92
+ 'title' => __('Google Fonts asynchronous', 'clearfy'),
93
+ 'layout' => array('hint-type' => 'icon'),
94
+ 'hint' => __('By default, WordPress loads Google fonts synchronously, that is, your page will not be fully loaded until Google Fonts are loaded. This algorithm slows down the loading of your page and leads to errors when checking the site in Google Page Speed. Using this option, your Google Fonts will be loaded after your page is fully loaded. This method has a negative — you and visitors of your site will see how the font changes while loading a page, from the system to the downloadable one.', 'clearfy'),
95
+ 'default' => false
96
+ );
97
+
98
+ $options[] = array(
99
+ 'type' => 'checkbox',
100
+ 'way' => 'buttons',
101
+ 'name' => 'disable_google_fonts',
102
+ 'title' => __('Disable Google Fonts', 'clearfy'),
103
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
104
+ 'hint' => __('This function stops loading of Open Sans and other fonts used by WordPress and bundled themes (Twenty Twelve, Twenty Thirteen, Twenty Fourteen, Twenty Fifteen, Twenty Sixteen, Twenty Seventeen) from Google Fonts.
105
+ Reasons for not using Google Fonts might be privacy and security, local development or production, blocking of Google’s servers, characters not supported by font, performance.', 'clearfy'),
106
+ 'default' => false
107
+ );
108
+
109
+ $options[] = array(
110
+ 'type' => 'checkbox',
111
+ 'way' => 'buttons',
112
+ 'name' => 'disable_google_maps',
113
+ 'title' => __('Disable Google maps', 'clearfy'),
114
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
115
+ 'hint' => __('This function stops loading of Google Maps used by some themes or plugins.
116
+ Reasons for not using Google Maps might be privacy and security, local development or production, blocking of Google’s servers, performance, not necessary, etc.', 'clearfy'),
117
+ 'default' => false,
118
+ 'eventsOn' => array(
119
+ 'show' => '.factory-control-exclude_from_disable_google_maps,.factory-control-remove_iframe_google_maps'
120
+ ),
121
+ 'eventsOff' => array(
122
+ 'hide' => '.factory-control-exclude_from_disable_google_maps,.factory-control-remove_iframe_google_maps'
123
+ )
124
+ );
125
+
126
+ $options[] = array(
127
+ 'type' => 'checkbox',
128
+ 'way' => 'buttons',
129
+ 'name' => 'remove_iframe_google_maps',
130
+ 'title' => __('Remove iframe Google maps', 'clearfy'),
131
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
132
+ 'hint' => __('By default, the "Disable Google Maps" option removes maps inserted with the SCRIPT tag from the page source code. However, you can also cut out all maps inserted via the iframe by enabling this option.', 'clearfy'),
133
+ 'default' => false
134
+ );
135
+
136
+ $options[] = array(
137
+ 'type' => 'textbox',
138
+ 'way' => 'buttons',
139
+ 'name' => 'exclude_from_disable_google_maps',
140
+ 'title' => __('Exclude pages from Disable Google Maps filter', 'clearfy'),
141
+ 'hint' => __('Posts or Pages IDs separated by a ,', 'clearfy')
142
+ );
143
+
144
+ $options[] = array(
145
+ 'type' => 'html',
146
+ 'html' => '<div class="wbcr-factory-page-group-header">' . __('<strong>Google Analytics cache</strong>.', 'clearfy') . '<p>' . __('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. The second case that you might need these settings is the usual Google Analytics connection to your website. You do not need to do this with other plugins or insert the tracking code into your theme.', 'clearfy') . '</p></div>'
147
+ );
148
+
149
+ $options[] = array(
150
+ 'type' => 'checkbox',
151
+ 'way' => 'buttons',
152
+ 'name' => 'ga_cache',
153
+ 'title' => __('Google analytic cache', 'clearfy'),
154
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
155
+ 'hint' => __('If you enable this option, the plugin will begin to save a local copy of Google Analytics to speed up the loading of your website and improve Google Page Speed.', 'clearfy') . '<br>--<br><span class="hint-warnign-color">' . __('ATTENTION! Before using this option, remove the previously installed Google Analytics code inside your theme or plugins associated with this feature!', 'clearfy') . '</span>',
156
+ 'default' => false,
157
+ 'eventsOn' => array(
158
+ 'show' => '#wbcr-clearfy-performance-ga-block'
159
+ ),
160
+ 'eventsOff' => array(
161
+ 'hide' => '#wbcr-clearfy-performance-ga-block'
162
+ )
163
+
164
+ );
165
+
166
+ $options[] = array(
167
+ 'type' => 'div',
168
+ 'id' => 'wbcr-clearfy-performance-ga-block',
169
+ 'items' => array(
170
+ array(
171
+ 'type' => 'textbox',
172
+ 'way' => 'buttons',
173
+ 'name' => 'ga_tracking_id',
174
+ 'title' => __('Google analytic Code', 'clearfy'),
175
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
176
+ 'hint' => __('Set the Google Analytics tracking code.', 'clearfy'),
177
+ 'placeholder' => 'UA-XXXXX-Y'
178
+ ),
179
+ array(
180
+ 'type' => 'dropdown',
181
+ 'way' => 'buttons',
182
+ 'name' => 'ga_script_position',
183
+ 'data' => array(
184
+ array('header', 'Header'),
185
+ array('footer', 'Footer'),
186
+ ),
187
+ 'title' => __('Save GA in', 'clearfy'),
188
+ 'hint' => __('Select location for the Google Analytics code.', 'clearfy'),
189
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
190
+ 'default' => 'footer'
191
+ ),
192
+ array(
193
+ 'type' => 'integer',
194
+ 'name' => 'ga_adjusted_bounce_rate',
195
+ 'title' => __('Use adjusted bounce rate?', 'clearfy'),
196
+ 'default' => 0,
197
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
198
+ 'hint' => __('Essentially, you set up an event which is triggered after a user spends a certain amount of time on the landing page, telling Google Analytics not to count these users as bounces. A user may come to your website, find all of the information they need (a phone number, for example) and then leave the site without visiting another page. Without adjusted bounce rate, such a user would be considered a bounce, even though they had a successful experience. By defining a time limit after which you can consider a user to be "engaged," that user would no longer count as a bounce, and you\'d get a more accurate idea of whether they found what they were looking for.', 'clearfy')
199
+ ),
200
+ array(
201
+ 'type' => 'integer',
202
+ 'way' => 'buttons',
203
+ 'name' => 'ga_enqueue_order',
204
+ 'title' => __('Change enqueue order?', 'clearfy'),
205
+ 'default' => 0,
206
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
207
+ 'hint' => __('By default, Google Analytics code is loaded before other scripts and javasscript code, but if you set the value to 100, the GA code will be loaded after all other scripts. By changing the priority, you can set code position on the page.', 'clearfy')
208
+ ),
209
+ array(
210
+ 'type' => 'checkbox',
211
+ 'way' => 'buttons',
212
+ 'name' => 'ga_caos_disable_display_features',
213
+ 'title' => __('Disable all display features functionality?', 'clearfy'),
214
+ //'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
215
+ 'hint' => sprintf(__('Disable all <a href="%s">display features functionality?</a>', 'clearfy'), 'https://developers.google.com/analytics/devguides/collection/analyticsjs/display-features'),
216
+ 'default' => false
217
+ ),
218
+ array(
219
+ 'type' => 'checkbox',
220
+ 'way' => 'buttons',
221
+ 'name' => 'ga_anonymize_ip',
222
+ 'title' => __('Use Anonymize IP? (Required by law for some countries)', 'clearfy'),
223
+ //'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
224
+ 'hint' => sprintf(__('Use <a href="%s">Anonymize IP?</a> (Required by law for some countries)', 'clearfy'), 'https://developers.google.com/analytics/devguides/collection/analyticsjs/display-features'),
225
+ 'default' => false
226
+ ),
227
+ array(
228
+ 'type' => 'checkbox',
229
+ 'way' => 'buttons',
230
+ 'name' => 'ga_track_admin',
231
+ 'title' => __('Track logged in Administrators?', 'clearfy'),
232
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
233
+ 'hint' => __('Track logged in Administrators?', 'clearfy'),
234
+ 'default' => false
235
+ ),
236
+ array(
237
+ 'type' => 'checkbox',
238
+ 'way' => 'buttons',
239
+ 'name' => 'ga_caos_remove_wp_cron',
240
+ 'title' => __('Remove script from wp-cron?', 'clearfy'),
241
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
242
+ 'hint' => __('Clearfy creates a cron job to daily update Google Analytics cache scripts. After enabling this option, the plugin will not update Google Analytics cache file. Do not use this option if you do not understand why you need it!', 'clearfy'),
243
+ 'default' => false
244
+ )
245
+ )
246
+ );
247
+
248
+ $form_options = array();
249
+
250
+ $form_options[] = array(
251
+ 'type' => 'form-group',
252
+ 'items' => $options,
253
+ //'cssClass' => 'postbox'
254
+ );
255
+
256
+ return apply_filters('wbcr_clr_code_clean_form_options', $form_options, $this);
257
+ }
258
+ }
admin/pages/performance-html-minify.php ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The page Settings.
4
+ *
5
+ * @since 1.0.0
6
+ */
7
+
8
+ // Exit if accessed directly
9
+ if( !defined('ABSPATH') ) {
10
+ exit;
11
+ }
12
+
13
+ class WCL_PerformanceHtmlMinifyPage 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 FactoryPages400_AdminPage
20
+ *
21
+ * @since 1.0.0
22
+ * @var string
23
+ */
24
+ public $id = "performance_html_minify";
25
+
26
+ /**
27
+ * @var string
28
+ */
29
+ public $page_parent_page = 'performance';
30
+
31
+ /**
32
+ * @var string
33
+ */
34
+ public $page_menu_dashicon = 'dashicons-performance';
35
+
36
+ /**
37
+ * @var int
38
+ */
39
+ public $page_menu_position = 20;
40
+
41
+ /**
42
+ * @param WCL_Plugin $plugin
43
+ */
44
+ public function __construct(WCL_Plugin $plugin)
45
+ {
46
+ $this->menu_title = __('Html Minify', 'clearfy');
47
+
48
+ parent::__construct($plugin);
49
+
50
+ $this->plugin = $plugin;
51
+ }
52
+
53
+ /**
54
+ * Permalinks options.
55
+ *
56
+ * @since 1.0.0
57
+ * @return mixed[]
58
+ */
59
+ public function getOptions()
60
+ {
61
+ $options = array();
62
+
63
+ $options[] = array(
64
+ 'type' => 'html',
65
+ 'html' => '<div class="wbcr-factory-page-group-header">' . __('<strong>Make your website’s markup look professional by using Minify HTML options</strong>.', 'clearfy') . '<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 time.', 'clearfy') . '</p></div>'
66
+ );
67
+
68
+ $options[] = array(
69
+ 'type' => 'checkbox',
70
+ 'way' => 'buttons',
71
+ 'name' => 'html_minify',
72
+ 'title' => __('HTML minify', 'clearfy'),
73
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
74
+ 'hint' => __('Reduces the weight of the page by removing line breaks, tabs, spaces, etc.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Minify pages.', 'clearfy'),
75
+ 'default' => false,
76
+ 'eventsOn' => array(
77
+ 'show' => '#wbcr-clearfy-performance-html-minify-options'
78
+ ),
79
+ 'eventsOff' => array(
80
+ 'hide' => '#wbcr-clearfy-performance-html-minify-options'
81
+ )
82
+ );
83
+
84
+ $options[] = array(
85
+ 'type' => 'separator'
86
+ );
87
+
88
+ $sub_options[] = array(
89
+ 'type' => 'checkbox',
90
+ 'way' => 'buttons',
91
+ 'name' => 'minify_javascript',
92
+ 'title' => __('Minify inline JavaScript', 'clearfy'),
93
+ 'default' => true
94
+ );
95
+
96
+ $sub_options[] = array(
97
+ 'type' => 'checkbox',
98
+ 'way' => 'buttons',
99
+ 'name' => 'minify_html_comments',
100
+ 'title' => __('Remove HTML, JavaScript and CSS comments', 'clearfy'),
101
+ 'default' => true
102
+ );
103
+
104
+ $sub_options[] = array(
105
+ 'type' => 'checkbox',
106
+ 'way' => 'buttons',
107
+ 'name' => 'minify_html_xhtml',
108
+ 'title' => __('Remove XHTML closing tags from HTML5 void elements', 'clearfy'),
109
+ 'default' => false
110
+ );
111
+
112
+ $sub_options[] = array(
113
+ 'type' => 'checkbox',
114
+ 'way' => 'buttons',
115
+ 'name' => 'minify_html_relative',
116
+ 'title' => __('Remove relative domain from internal URLs', 'clearfy'),
117
+ 'default' => false
118
+ );
119
+
120
+ $sub_options[] = array(
121
+ 'type' => 'checkbox',
122
+ 'way' => 'buttons',
123
+ 'name' => 'minify_html_scheme',
124
+ 'title' => __('Remove schemes (HTTP: and HTTPS:) from all URLs', 'clearfy'),
125
+ 'default' => false
126
+ );
127
+
128
+ $sub_options[] = array(
129
+ 'type' => 'checkbox',
130
+ 'way' => 'buttons',
131
+ 'name' => 'minify_html_utf8',
132
+ 'title' => __('Support multi-byte UTF-8 encoding (if you see odd characters)', 'clearfy'),
133
+ 'default' => in_array(get_locale(), array('ru_RU', 'bel', 'kk', 'hy', 'uk', 'bg', 'bg_BG', 'ka_GE'))
134
+ ? true
135
+ : false
136
+ );
137
+
138
+ $options[] = array(
139
+ 'type' => 'div',
140
+ 'id' => 'wbcr-clearfy-performance-html-minify-options',
141
+ 'items' => $sub_options
142
+ );
143
+
144
+ $form_options = array();
145
+
146
+ $form_options[] = array(
147
+ 'type' => 'form-group',
148
+ 'items' => $options,
149
+ //'cssClass' => 'postbox'
150
+ );
151
+
152
+ return apply_filters('wbcr_clr_code_clean_form_options', $form_options, $this);
153
+ }
154
+ }
admin/pages/{code-clean.php → performance.php} RENAMED
@@ -1,48 +1,58 @@
1
  <?php
2
-
3
  /**
4
  * The page Settings.
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrClr_CodeCleanPage extends WbcrClr_Page {
 
 
 
 
 
 
9
 
10
  /**
11
  * The id of the page in the admin menu.
12
  *
13
  * Mainly used to navigate between pages.
14
- * @see FactoryPages324_AdminPage
15
  *
16
  * @since 1.0.0
17
  * @var string
18
  */
19
- public $id = "code_clean";
20
 
21
- public $page_menu_dashicon = 'dashicons-yes';
 
 
 
22
 
 
 
 
23
  public $page_menu_position = 20;
24
 
25
- public function __construct(Factory326_Plugin $plugin)
 
 
 
26
  {
27
- $this->menuTitle = __('Code cleaning', 'clearfy');
28
 
29
  parent::__construct($plugin);
 
 
30
  }
31
 
32
- /**
33
- * Shows the description above the options.
34
- *
35
- * @since 1.0.0
36
- * @return void
37
- */
38
- /*public function _showHeader()
39
  {
40
- ?>
41
- <div class="wbcr-clearfy-header">
42
- <?php _e('On this settings page, you can optimize the source code of the page.', 'clearfy') ?>
43
- </div>
44
- <?php
45
- }*/
46
 
47
  /**
48
  * Permalinks options.
@@ -54,10 +64,10 @@
54
  {
55
  $options = array();
56
 
57
- /*$options[] = array(
58
  'type' => 'html',
59
- 'html' => array($this, '_showHeader')
60
- );*/
61
 
62
  $options[] = array(
63
  'type' => 'checkbox',
@@ -66,7 +76,27 @@
66
  'title' => __('Disable RSS feeds', 'clearfy'),
67
  'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
68
  'hint' => __('By default, WordPress generates all types of different RSS feeds for your site. While RSS feeds can be useful if you are running a blog, businesses might not always utilize these. Not every site out there has a blog.', 'clearfy') . '<br><b>Clearfy: </b>' . sprintf(__('Removes a link to the RSS-feed from the %s section, closes and puts the redirect from all RSS-feeds.', 'clearfy'), '&lt;head&gt;'),
69
- 'default' => false
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  );
71
 
72
  $options[] = array(
@@ -83,7 +113,7 @@
83
  'type' => 'checkbox',
84
  'way' => 'buttons',
85
  'name' => 'disable_emoji',
86
- 'title' => __('Disable Emojis', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
87
  'layout' => array('hint-type' => 'icon'),
88
  'hint' => __('Emojis are fun and all, but if you are aren’t using them they actually load a JavaScript file (wp-emoji-release.min.js) on every page of your website. For a lot of businesses, this is not needed and simply adds load time to your site. So we recommend disabling this.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Removes WordPress Emojis JavaScript file (wp-emoji-release.min.js).', 'clearfy'),
89
  'default' => false
@@ -109,30 +139,41 @@
109
  'default' => false
110
  );
111
 
112
- $options[] = array(
113
  'type' => 'checkbox',
114
  'way' => 'buttons',
115
  'name' => 'remove_dns_prefetch',
116
- 'title' => __('Remove dns-prefetch', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
117
  'layout' => array('hint-type' => 'icon'),
118
  'hint' => sprintf(__('Since version 4.6.1 in WordPress there are new links in the section %s this type of: ', 'clearfy'), 'head') . ' <code>link rel="dns-prefetch" href="//s.w.org"</code><br><br><b>Clearfy: </b>' . sprintf(__('Removes dns-prefetch links from the %s section', 'clearfy'), 'head'),
119
  'default' => false
120
- );
121
  $options[] = array(
122
  'type' => 'checkbox',
123
  'way' => 'buttons',
124
  'name' => 'remove_rsd_link',
125
- 'title' => __('Remove RSD Link', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
126
  'layout' => array('hint-type' => 'icon'),
127
  'hint' => __('The above link is used by blog clients. If you edit your site from your browser then you don’t need this. It is also used by some 3rd party applications that utilize XML-RPC requests. In most cases, this is just unnecessary code.', 'clearfy') . '<br><code>link rel="EditURI" type="application/rsd+xml" title="RSD"</code><br><br><b>Clearfy: </b>' . __('Remove RSD (Real Simple Discovery) link tag.', 'clearfy'),
128
  'default' => false
129
  );
 
 
 
 
 
 
 
 
 
 
 
130
 
131
  $options[] = array(
132
  'type' => 'checkbox',
133
  'way' => 'buttons',
134
  'name' => 'remove_wlw_link',
135
- 'title' => __('Remove wlwmanifest Link', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
136
  'layout' => array('hint-type' => 'icon'),
137
  'hint' => '<code>link rel="wlwmanifest" type="application/wlwmanifest+xml"</code><br>' . __('This link is actually used by Windows Live Writer. If you don’t know use Windows Live Writer, which we are guessing you don’t, this is just unnecessary code.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Remove wlwmanifest (Windows Live Writer) link tag.', 'clearfy'),
138
  'default' => false
@@ -142,7 +183,7 @@
142
  'type' => 'checkbox',
143
  'way' => 'buttons',
144
  'name' => 'remove_shortlink_link',
145
- 'title' => __('Remove Shortlink', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
146
  'layout' => array('hint-type' => 'icon'),
147
  'hint' => sprintf(__('By default, the following tag shows up in every WordPress install. %s This is used for a shortlink to your pages and posts. However, if you are already using pretty permalinks, such as domain.com/post, then there is no reason to keep this, it is just unnecessary code.', 'clearfy'), '<br><code>link rel="shortlink" href="https://domain.com?p=712"</code><br>') . '<br><br><b>Clearfy: </b>' . __('Remove Shortlink link tag.', 'clearfy'),
148
  'default' => false
@@ -152,7 +193,7 @@
152
  'type' => 'checkbox',
153
  'way' => 'buttons',
154
  'name' => 'remove_adjacent_posts_link',
155
- 'title' => __('Remove links to previous, next post', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
156
  'layout' => array('hint-type' => 'icon'),
157
  'hint' => __('If you use Wordpress as a CMS, then you can delete these links, they can only come in handy for a blog.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Remove the previous and next post links within the wp_head of your wordpress theme.', 'clearfy'),
158
  'default' => false
@@ -162,7 +203,7 @@
162
  'type' => 'checkbox',
163
  'way' => 'buttons',
164
  'name' => 'remove_recent_comments_style',
165
- 'title' => __('Remove .recentcomments styles', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
166
  'layout' => array('hint-type' => 'icon'),
167
  'hint' => __('WP by default for the widget "recent comments" prescribes in the code styles that are almost impossible to change, because to them apply! important.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Removes .recentcomments styles from head section.', 'clearfy'),
168
  'default' => false
@@ -171,32 +212,65 @@
171
  $options[] = array(
172
  'type' => 'checkbox',
173
  'way' => 'buttons',
174
- 'name' => 'html_minify',
175
- 'title' => __('HTML minify', 'clearfy'),
 
 
 
 
 
 
 
 
 
 
176
  'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
177
- 'hint' => __('Reduces the weight of the page by removing line breaks, tabs, spaces, etc.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Minify pages.', 'clearfy'),
178
  'default' => false
179
  );
180
 
181
  $options[] = array(
182
  'type' => 'checkbox',
183
  'way' => 'buttons',
184
- 'name' => 'remove_html_comments',
185
- 'title' => __('Remove html comments', 'clearfy'),
186
  'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
187
- 'hint' => __('This function will remove all html comments in the source code, except for special and hidden comments. This is necessary to hide the version of installed plugins.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Remove html comments in source code.', 'clearfy'),
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  'default' => false
189
  );
190
 
191
- /*$options[] = array(
192
- 'type' => 'separator',
193
- 'cssClass' => 'factory-separator-dashed'
 
 
 
 
 
 
194
  );
195
 
196
  $options[] = array(
197
- 'type' => 'html',
198
- 'html' => array($this, '_showFormButton')
199
- );*/
 
 
 
 
200
 
201
  $form_options = array();
202
 
@@ -208,6 +282,4 @@
208
 
209
  return apply_filters('wbcr_clr_code_clean_form_options', $form_options, $this);
210
  }
211
- }
212
-
213
- FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_CodeCleanPage');
1
  <?php
 
2
  /**
3
  * The page Settings.
4
  *
5
  * @since 1.0.0
6
  */
7
+
8
+ // Exit if accessed directly
9
+ if( !defined('ABSPATH') ) {
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 FactoryPages400_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
23
  */
24
+ public $id = "performance";
25
 
26
+ /**
27
+ * @var string
28
+ */
29
+ public $page_menu_dashicon = 'dashicons-performance';
30
 
31
+ /**
32
+ * @var int
33
+ */
34
  public $page_menu_position = 20;
35
 
36
+ /**
37
+ * @param WCL_Plugin $plugin
38
+ */
39
+ public function __construct(WCL_Plugin $plugin)
40
  {
41
+ $this->menu_title = __('Performance', 'clearfy');
42
 
43
  parent::__construct($plugin);
44
+
45
+ $this->plugin = $plugin;
46
  }
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);
54
+ }
55
+ }
56
 
57
  /**
58
  * Permalinks options.
64
  {
65
  $options = array();
66
 
67
+ $options[] = array(
68
  'type' => 'html',
69
+ 'html' => '<div class="wbcr-factory-page-group-header">' . __('<strong>Clear the unnecessary scripts</strong>', 'clearfy') . '<p>' . __('This set of settings will help you remove unnecessary links and code from the head section, as well as reduce your website\'s pages weight.', 'clearfy') . '</p></div>'
70
+ );
71
 
72
  $options[] = array(
73
  'type' => 'checkbox',
76
  'title' => __('Disable RSS feeds', 'clearfy'),
77
  'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
78
  'hint' => __('By default, WordPress generates all types of different RSS feeds for your site. While RSS feeds can be useful if you are running a blog, businesses might not always utilize these. Not every site out there has a blog.', 'clearfy') . '<br><b>Clearfy: </b>' . sprintf(__('Removes a link to the RSS-feed from the %s section, closes and puts the redirect from all RSS-feeds.', 'clearfy'), '&lt;head&gt;'),
79
+ 'default' => false,
80
+ 'eventsOn' => array(
81
+ 'show' => '.factory-control-disabled_feed_behaviour'
82
+ ),
83
+ 'eventsOff' => array(
84
+ 'hide' => '.factory-control-disabled_feed_behaviour'
85
+ )
86
+ );
87
+
88
+ $options[] = array(
89
+ 'type' => 'dropdown',
90
+ 'way' => 'buttons',
91
+ 'name' => 'disabled_feed_behaviour',
92
+ 'data' => array(
93
+ array('redirect_301', __('Redirect 301', 'clearfy')),
94
+ array('redirect_404', __('Page 404', 'clearfy')),
95
+ ),
96
+ 'title' => __('Redirect feed requests', 'clearfy'),
97
+ 'hint' => __('Forward all requests to page 404 or to the main page through 301 redirects.', 'clearfy'),
98
+ //'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
99
+ 'default' => 'redirect_301'
100
  );
101
 
102
  $options[] = array(
113
  'type' => 'checkbox',
114
  'way' => 'buttons',
115
  'name' => 'disable_emoji',
116
+ 'title' => __('Disable Emojis', 'clearfy'),
117
  'layout' => array('hint-type' => 'icon'),
118
  'hint' => __('Emojis are fun and all, but if you are aren’t using them they actually load a JavaScript file (wp-emoji-release.min.js) on every page of your website. For a lot of businesses, this is not needed and simply adds load time to your site. So we recommend disabling this.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Removes WordPress Emojis JavaScript file (wp-emoji-release.min.js).', 'clearfy'),
119
  'default' => false
139
  'default' => false
140
  );
141
 
142
+ /*$options[] = array(
143
  'type' => 'checkbox',
144
  'way' => 'buttons',
145
  'name' => 'remove_dns_prefetch',
146
+ 'title' => __('Remove dns-prefetch', 'clearfy'),
147
  'layout' => array('hint-type' => 'icon'),
148
  'hint' => sprintf(__('Since version 4.6.1 in WordPress there are new links in the section %s this type of: ', 'clearfy'), 'head') . ' <code>link rel="dns-prefetch" href="//s.w.org"</code><br><br><b>Clearfy: </b>' . sprintf(__('Removes dns-prefetch links from the %s section', 'clearfy'), 'head'),
149
  'default' => false
150
+ );*/
151
  $options[] = array(
152
  'type' => 'checkbox',
153
  'way' => 'buttons',
154
  'name' => 'remove_rsd_link',
155
+ 'title' => __('Remove RSD Link', 'clearfy'),
156
  'layout' => array('hint-type' => 'icon'),
157
  'hint' => __('The above link is used by blog clients. If you edit your site from your browser then you don’t need this. It is also used by some 3rd party applications that utilize XML-RPC requests. In most cases, this is just unnecessary code.', 'clearfy') . '<br><code>link rel="EditURI" type="application/rsd+xml" title="RSD"</code><br><br><b>Clearfy: </b>' . __('Remove RSD (Real Simple Discovery) link tag.', 'clearfy'),
158
  'default' => false
159
  );
160
+ $options[] = array(
161
+ 'type' => 'checkbox',
162
+ 'way' => 'buttons',
163
+ 'name' => 'remove_xfn_link',
164
+ 'title' => __('Removing XFN (XHTML Friends Network) Profile Link', 'clearfy'),
165
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
166
+ 'hint' => __('The profile attribute specifies the metadata profile address. Usually, the browser recognizes the value of this attribute and executes some conventions related to the specified profile. Loading the document itself at the specified address does not really happen, moreover, it may not exist at all.
167
+ In particular, the profile is used for the XFN microformat (XHTML Friends Network) - a way of representing relationships between people using links and rel attributes with different values. WordPress also actively uses profile in its templates.
168
+ ', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Remove link tag', 'clearfy') . '<br><code>link rel="profile" href="http://gmpg.org/xfn/11"</code>',
169
+ 'default' => false
170
+ );
171
 
172
  $options[] = array(
173
  'type' => 'checkbox',
174
  'way' => 'buttons',
175
  'name' => 'remove_wlw_link',
176
+ 'title' => __('Remove wlwmanifest Link', 'clearfy'),
177
  'layout' => array('hint-type' => 'icon'),
178
  'hint' => '<code>link rel="wlwmanifest" type="application/wlwmanifest+xml"</code><br>' . __('This link is actually used by Windows Live Writer. If you don’t know use Windows Live Writer, which we are guessing you don’t, this is just unnecessary code.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Remove wlwmanifest (Windows Live Writer) link tag.', 'clearfy'),
179
  'default' => false
183
  'type' => 'checkbox',
184
  'way' => 'buttons',
185
  'name' => 'remove_shortlink_link',
186
+ 'title' => __('Remove Shortlink', 'clearfy'),
187
  'layout' => array('hint-type' => 'icon'),
188
  'hint' => sprintf(__('By default, the following tag shows up in every WordPress install. %s This is used for a shortlink to your pages and posts. However, if you are already using pretty permalinks, such as domain.com/post, then there is no reason to keep this, it is just unnecessary code.', 'clearfy'), '<br><code>link rel="shortlink" href="https://domain.com?p=712"</code><br>') . '<br><br><b>Clearfy: </b>' . __('Remove Shortlink link tag.', 'clearfy'),
189
  'default' => false
193
  'type' => 'checkbox',
194
  'way' => 'buttons',
195
  'name' => 'remove_adjacent_posts_link',
196
+ 'title' => __('Remove links to previous, next post', 'clearfy'),
197
  'layout' => array('hint-type' => 'icon'),
198
  'hint' => __('If you use Wordpress as a CMS, then you can delete these links, they can only come in handy for a blog.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Remove the previous and next post links within the wp_head of your wordpress theme.', 'clearfy'),
199
  'default' => false
203
  'type' => 'checkbox',
204
  'way' => 'buttons',
205
  'name' => 'remove_recent_comments_style',
206
+ 'title' => __('Remove .recentcomments styles', 'clearfy'),
207
  'layout' => array('hint-type' => 'icon'),
208
  'hint' => __('WP by default for the widget "recent comments" prescribes in the code styles that are almost impossible to change, because to them apply! important.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Removes .recentcomments styles from head section.', 'clearfy'),
209
  'default' => false
212
  $options[] = array(
213
  'type' => 'checkbox',
214
  'way' => 'buttons',
215
+ 'name' => 'lazy_load_font_awesome',
216
+ 'title' => __('Font Awesome asynchronous', 'clearfy'),
217
+ 'layout' => array('hint-type' => 'icon'),
218
+ 'hint' => __('By default, WordPress loads Font Awesome icons synchronously, that is, your page will not be fully loaded until Font Awesome icons are loaded. This algorithm slows down the loading of your page and leads to errors when checking the site in Google Page Speed. Using this option, your Font Awesome icons will be loaded after your page is fully loaded. This method has a negative — you and visitors of your site will see changes while loading a page, from the placeholders to icons.', 'clearfy'),
219
+ 'default' => false
220
+ );
221
+
222
+ $options[] = array(
223
+ 'type' => 'checkbox',
224
+ 'way' => 'buttons',
225
+ 'name' => 'disable_dashicons',
226
+ 'title' => __('Disable Dashicons', 'clearfy'),
227
  'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
228
+ 'hint' => __('Dashicons is the official icon font of the WordPress admin as of 3.8. Some of you have requested that we add a feature to remove Dashicons. Some themes and developers utilize this (dashicons.min.css) on the front-end of their sites.', 'clearfy'),
229
  'default' => false
230
  );
231
 
232
  $options[] = array(
233
  'type' => 'checkbox',
234
  'way' => 'buttons',
235
+ 'name' => 'disable_gravatars',
236
+ 'title' => __('Disable gravatars', 'clearfy'),
237
  'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
238
+ 'hint' => __('This function that prevents the user’s gravatar being automatically obtained from gravatar.com based on their registered email. This would be useful for sites where users require an extra layer of privacy, or if you just want to prevent potentially silly or embarrasing avatar accidents.
239
+ If you’re using Identicons or any other generated default avatar, the user should keep a consistent avatar unless they change their registered email.
240
+ ', 'clearfy'),
241
+ 'default' => false
242
+ );
243
+
244
+ $options[] = array(
245
+ 'type' => 'checkbox',
246
+ 'way' => 'buttons',
247
+ 'name' => 'remove_style_version',
248
+ 'title' => __('Remove Version from Stylesheet', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
249
+ 'layout' => array('hint-type' => 'icon'),
250
+ 'hint' => __('To make it more difficult for others to hack your website you can remove the WordPress version number from your site, your css and js. Without that number it\'s not possible to see if you run not the current version to exploit bugs from the older versions. <br><br>
251
+ Additionally it can improve the loading speed of your site, because without query strings in the URL the css and js files can be cached.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Removes the wordpress version number from stylesheets (not logged in user only).', 'clearfy'),
252
  'default' => false
253
  );
254
 
255
+ $options[] = array(
256
+ 'type' => 'checkbox',
257
+ 'way' => 'buttons',
258
+ 'name' => 'remove_js_version',
259
+ 'title' => __('Remove Version from Script', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
260
+ 'layout' => array('hint-type' => 'icon'),
261
+ 'hint' => __('To make it more difficult for others to hack your website you can remove the WordPress version number from your site, your css and js. Without that number it\'s not possible to see if you run not the current version to exploit bugs from the older versions. <br><br>
262
+ Additionally it can improve the loading speed of your site, because without query strings in the URL the css and js files can be cached.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Removes wordpress version number from scripts (not logged in user only).', 'clearfy'),
263
+ 'default' => false
264
  );
265
 
266
  $options[] = array(
267
+ 'type' => 'textarea',
268
+ 'name' => 'remove_version_exclude',
269
+ 'height' => '120',
270
+ 'title' => __('Eclude stylesheet/script file names', 'clearfy'),
271
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
272
+ 'hint' => __('Enter Stylesheet/Script file names to exclude from version removal (each exclude file starts with a new line)', 'clearfy') . '<br><br><b>' . __('Example', 'clearfy') . ':</b>' . ' http://testwp.dev/wp-includes/js/jquery/jquery.js',
273
+ );
274
 
275
  $form_options = array();
276
 
282
 
283
  return apply_filters('wbcr_clr_code_clean_form_options', $form_options, $this);
284
  }
285
+ }
 
 
admin/pages/privacy.php DELETED
@@ -1,134 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * The page Settings.
5
- *
6
- * @since 1.0.0
7
- */
8
- class WbcrClr_PrivacyPage extends WbcrClr_Page {
9
-
10
- /**
11
- * The id of the page in the admin menu.
12
- *
13
- * Mainly used to navigate between pages.
14
- * @see FactoryPages324_AdminPage
15
- *
16
- * @since 1.0.0
17
- * @var string
18
- */
19
- public $id = "privacy";
20
-
21
- public $page_menu_position = 15;
22
-
23
- public $page_menu_dashicon = 'dashicons-hidden';
24
-
25
- public function __construct(Factory326_Plugin $plugin)
26
- {
27
- $this->menuTitle = __('Privacy Settings', 'clearfy');
28
-
29
- parent::__construct($plugin);
30
- }
31
-
32
- /**
33
- * Shows the description above the options.
34
- *
35
- * @since 1.0.0
36
- * @return void
37
- */
38
- /*public function _showHeader()
39
- {
40
- ?>
41
- <div class="wbcr-clearfy-header">
42
- <?php _e('On this page you can configure the privacy settings of your site.', 'clearfy') ?>
43
- </div>
44
- <?php
45
- }*/
46
-
47
- /**
48
- * Permalinks options.
49
- *
50
- * @since 1.0.0
51
- * @return mixed[]
52
- */
53
- public function getOptions()
54
- {
55
- $options = array();
56
-
57
- /*$options[] = array(
58
- 'type' => 'html',
59
- 'html' => array($this, '_showHeader')
60
- );*/
61
-
62
- $options[] = array(
63
- 'type' => 'checkbox',
64
- 'way' => 'buttons',
65
- 'name' => 'remove_meta_generator',
66
- 'title' => __('Remove meta generator', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
67
- 'layout' => array('hint-type' => 'icon'),
68
- 'hint' => __('Allows attacker to learn the version of WP installed on the site. This meta tag has no useful function.', 'clearfy') . '<br><b>Clearfy: </b>' . sprintf(__('Removes the meta tag from the %s section', 'clearfy'), '&lt;head&gt;'),
69
- 'default' => false
70
- );
71
-
72
- $options[] = array(
73
- 'type' => 'checkbox',
74
- 'way' => 'buttons',
75
- 'name' => 'remove_style_version',
76
- 'title' => __('Remove Version from Stylesheet', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
77
- 'layout' => array('hint-type' => 'icon'),
78
- 'hint' => __('To make it more difficult for others to hack your website you can remove the WordPress version number from your site, your css and js. Without that number it\'s not possible to see if you run not the current version to exploit bugs from the older versions. <br><br>
79
- Additionally it can improve the loading speed of your site, because without query strings in the URL the css and js files can be cached.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Removes the wordpress version number from stylesheets (not logged in user only).', 'clearfy'),
80
- 'default' => false
81
- );
82
-
83
- $options[] = array(
84
- 'type' => 'checkbox',
85
- 'way' => 'buttons',
86
- 'name' => 'remove_js_version',
87
- 'title' => __('Remove Version from Script', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
88
- 'layout' => array('hint-type' => 'icon'),
89
- 'hint' => __('To make it more difficult for others to hack your website you can remove the WordPress version number from your site, your css and js. Without that number it\'s not possible to see if you run not the current version to exploit bugs from the older versions. <br><br>
90
- Additionally it can improve the loading speed of your site, because without query strings in the URL the css and js files can be cached.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Removes wordpress version number from scripts (not logged in user only).', 'clearfy'),
91
- 'default' => false
92
- );
93
-
94
- $options[] = array(
95
- 'type' => 'textarea',
96
- 'name' => 'remove_version_exclude',
97
- 'height' => '120',
98
- 'title' => __('Eclude stylesheet/script file names', 'clearfy'),
99
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
100
- 'hint' => __('Enter Stylesheet/Script file names to exclude from version removal (each exclude file starts with a new line)', 'clearfy') . '<br><br><b>' . __('Example', 'clearfy') . ':</b>' . ' http://testwp.dev/wp-includes/js/jquery/jquery.js',
101
- );
102
-
103
- $options[] = array(
104
- 'type' => 'checkbox',
105
- 'way' => 'buttons',
106
- 'name' => 'remove_html_comments',
107
- 'title' => __('Remove html comments', 'clearfy'),
108
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
109
- 'hint' => __('This function will remove all html comments in the source code, except for special and hidden comments. This is necessary to hide the version of installed plugins.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Remove html comments in source code.', 'clearfy'),
110
- 'default' => false
111
- );
112
- /*$options[] = array(
113
- 'type' => 'separator',
114
- 'cssClass' => 'factory-separator-dashed'
115
- );
116
-
117
- $options[] = array(
118
- 'type' => 'html',
119
- 'html' => array($this, '_showFormButton')
120
- );*/
121
-
122
- $form_options = array();
123
-
124
- $form_options[] = array(
125
- 'type' => 'form-group',
126
- 'items' => $options,
127
- //'cssClass' => 'postbox'
128
- );
129
-
130
- return apply_filters('wbcr_clr_privacy_form_options', $form_options, $this);
131
- }
132
- }
133
-
134
- FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_PrivacyPage');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/pages/quick-start.php CHANGED
@@ -5,36 +5,65 @@
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrClr_QuickStartPage extends WbcrClr_Page {
 
 
 
 
 
 
9
 
10
  /**
11
  * The id of the page in the admin menu.
12
  *
13
  * Mainly used to navigate between pages.
14
- * @see FactoryPages324_AdminPage
15
  *
16
  * @since 1.0.0
17
  * @var string
18
  */
19
  public $id = "quick_start";
20
-
21
- public $page_menu_dashicon = 'dashicons-performance';
22
-
 
 
 
 
 
 
23
  public $page_menu_position = 100;
24
-
 
 
 
25
  public $internal = false;
26
-
27
- public $addLinkToPluginActions = true;
28
-
29
- //public $menuIcon = '\f321';
30
-
 
 
 
 
 
 
 
 
 
31
  public $type = 'page';
32
-
33
- public function __construct(Factory326_Plugin $plugin)
 
 
 
34
  {
35
- $this->menuTitle = __('Clearfy menu', 'clearfy');
36
 
37
  parent::__construct($plugin);
 
 
38
  }
39
 
40
  public function getMenuTitle()
@@ -45,7 +74,7 @@
45
  /**
46
  * Requests assets (js and css) for the page.
47
  *
48
- * @see FactoryPages324_AdminPage
49
  *
50
  * @since 1.0.0
51
  * @return void
@@ -54,7 +83,7 @@
54
  {
55
  parent::assets($scripts, $styles);
56
 
57
- $this->scripts->add(WBCR_CLR_PLUGIN_URL . '/admin/assets/js/general.js');
58
 
59
  $params = array(
60
  'ajaxurl' => admin_url('admin-ajax.php'),
@@ -84,7 +113,7 @@
84
  */
85
  public function getDebugReport()
86
  {
87
- $run_time = number_format(microtime(true) - HMW_REQUEST_TIME, 3);
88
  $pps = number_format(1 / $run_time, 0);
89
  $memory_avail = ini_get('memory_limit');
90
  $memory_used = number_format(memory_get_usage(true) / (1024 * 1024), 2);
@@ -120,9 +149,9 @@
120
  */
121
  public function gererateReportAction()
122
  {
123
- require_once(WBCR_CLR_PLUGIN_DIR . '/includes/classes/class.zip-archive.php');
124
 
125
- $reposts_dir = WBCR_CLR_PLUGIN_DIR . '/reports';
126
  $reports_temp = $reposts_dir . '/temp';
127
 
128
  if( !file_exists($reposts_dir) ) {
@@ -138,33 +167,18 @@
138
  fclose($file);
139
 
140
  $download_file_name = 'webcraftic-clearfy-report-' . date('Y.m.d-H.i.s') . '.zip';
141
- $download_file_path = WBCR_CLR_PLUGIN_DIR . '/reports/' . $download_file_name;
142
 
143
- Wbcr_ExtendedZip::zipTree(WBCR_CLR_PLUGIN_DIR . '/reports/temp', $download_file_path, ZipArchive::CREATE);
144
 
145
- array_map('unlink', glob(WBCR_CLR_PLUGIN_DIR . "/reports/temp/*"));
146
 
147
- wp_redirect(WBCR_CLR_PLUGIN_URL . '/reports/' . $download_file_name);
148
  exit;
149
  }
150
-
151
- /*public function selected($mode_name)
152
- {
153
- $get_modes = get_option($this->plugin->pluginName . '_quick_modes');
154
-
155
- if( $mode_name == 'reset' ) {
156
- return ' wbcr-clearfy-mode-reset';
157
- }
158
-
159
- return is_array($get_modes) && in_array($mode_name, $get_modes)
160
- ? ' wbcr-clearfy-active'
161
- : '';
162
- }*/
163
-
164
  public function showPageContent()
165
  {
166
- global $wbcr_clearfy_plugin;
167
-
168
  $allow_mods = apply_filters('wbcr_clearfy_allow_quick_mods', array(
169
  'recommended' => array(
170
  'title' => __('Set the recommened for me', 'clearfy'),
@@ -182,6 +196,10 @@
182
  ),
183
  ));
184
 
 
 
 
 
185
  $allow_mods['reset'] = array('title' => __('Reset all settings', 'clearfy'), 'icon' => 'dashicons-backup');
186
  ?>
187
  <div class="wbcr-clearfy-layer"></div>
@@ -218,14 +236,14 @@
218
 
219
  <div class="col-sm-12">
220
  <?php
221
- $group = WbcrClr_Group::getInstance($mode_name);
222
 
223
  $filter_mode_options = array();
224
  foreach($group->getOptions() as $option) {
225
  $filter_mode_options[$option->getName()] = $option->getTitle();
226
  }
227
 
228
- $print_group_options = wbcr_get_escape_json($filter_mode_options);
229
  ?>
230
  <?php if( $mode_name == 'reset' ): ?>
231
  <h4><?php _e('Reset settings', 'clearfy') ?></h4>
@@ -269,7 +287,7 @@
269
  <label for="wbcr-clearfy-import-export">
270
  <strong><?php _e('Import/Export settings', 'clearfy') ?></strong>
271
  </label>
272
- <textarea id="wbcr-clearfy-import-export"><?= wbcr_get_export_options(); ?></textarea>
273
  <button class="button wbcr-clearfy-import-options-button"><?php _e('Import options', 'clearfy') ?></button>
274
  </p>
275
  </div>
@@ -284,7 +302,7 @@
284
  <p><?php _e('Generate a debug report which will contains inforamtion about your configuratin and installed plugins', 'clearfy') ?></p>
285
 
286
  <p>
287
- <a href="<?= admin_url('options-general.php?page=quick_start-' . $wbcr_clearfy_plugin->pluginName . '&action=gererate_report'); ?>" class="button"><?php _e('Generate Debug Report', 'clearfy') ?></a>
288
  </p>
289
  </li>
290
  <li>
@@ -299,6 +317,4 @@
299
 
300
  <?php
301
  }
302
- }
303
-
304
- FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_QuickStartPage');
5
  *
6
  * @since 1.0.0
7
  */
8
+
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
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 FactoryPages400_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
24
  */
25
  public $id = "quick_start";
26
+
27
+ /**
28
+ * @var string
29
+ */
30
+ public $page_menu_dashicon = 'dashicons-clock';
31
+
32
+ /**
33
+ * @var int
34
+ */
35
  public $page_menu_position = 100;
36
+
37
+ /**
38
+ * @var bool
39
+ */
40
  public $internal = false;
41
+
42
+ /**
43
+ * @var string
44
+ */
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
59
+ */
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()
74
  /**
75
  * Requests assets (js and css) for the page.
76
  *
77
+ * @see FactoryPages400_AdminPage
78
  *
79
  * @since 1.0.0
80
  * @return void
83
  {
84
  parent::assets($scripts, $styles);
85
 
86
+ $this->scripts->add(WCL_PLUGIN_URL . '/admin/assets/js/general.js');
87
 
88
  $params = array(
89
  'ajaxurl' => admin_url('admin-ajax.php'),
113
  */
114
  public function getDebugReport()
115
  {
116
+ $run_time = number_format(microtime(true), 3);
117
  $pps = number_format(1 / $run_time, 0);
118
  $memory_avail = ini_get('memory_limit');
119
  $memory_used = number_format(memory_get_usage(true) / (1024 * 1024), 2);
149
  */
150
  public function gererateReportAction()
151
  {
152
+ require_once(WCL_PLUGIN_DIR . '/includes/classes/class.zip-archive.php');
153
 
154
+ $reposts_dir = WCL_PLUGIN_DIR . '/reports';
155
  $reports_temp = $reposts_dir . '/temp';
156
 
157
  if( !file_exists($reposts_dir) ) {
167
  fclose($file);
168
 
169
  $download_file_name = 'webcraftic-clearfy-report-' . date('Y.m.d-H.i.s') . '.zip';
170
+ $download_file_path = WCL_PLUGIN_DIR . '/reports/' . $download_file_name;
171
 
172
+ Wbcr_ExtendedZip::zipTree(WCL_PLUGIN_DIR . '/reports/temp', $download_file_path, ZipArchive::CREATE);
173
 
174
+ array_map('unlink', glob(WCL_PLUGIN_DIR . "/reports/temp/*"));
175
 
176
+ wp_redirect(WCL_PLUGIN_URL . '/reports/' . $download_file_name);
177
  exit;
178
  }
179
+
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  public function showPageContent()
181
  {
 
 
182
  $allow_mods = apply_filters('wbcr_clearfy_allow_quick_mods', array(
183
  'recommended' => array(
184
  'title' => __('Set the recommened for me', 'clearfy'),
196
  ),
197
  ));
198
 
199
+ if( !$this->plugin->isActivateComponent('widget_tools') ) {
200
+ unset($allow_mods['remove_default_widgets']);
201
+ }
202
+
203
  $allow_mods['reset'] = array('title' => __('Reset all settings', 'clearfy'), 'icon' => 'dashicons-backup');
204
  ?>
205
  <div class="wbcr-clearfy-layer"></div>
236
 
237
  <div class="col-sm-12">
238
  <?php
239
+ $group = WCL_Group::getInstance($mode_name);
240
 
241
  $filter_mode_options = array();
242
  foreach($group->getOptions() as $option) {
243
  $filter_mode_options[$option->getName()] = $option->getTitle();
244
  }
245
 
246
+ $print_group_options = WCL_Helper::getEscapeJson($filter_mode_options);
247
  ?>
248
  <?php if( $mode_name == 'reset' ): ?>
249
  <h4><?php _e('Reset settings', 'clearfy') ?></h4>
287
  <label for="wbcr-clearfy-import-export">
288
  <strong><?php _e('Import/Export settings', 'clearfy') ?></strong>
289
  </label>
290
+ <textarea id="wbcr-clearfy-import-export"><?= WCL_Helper::getExportOptions(); ?></textarea>
291
  <button class="button wbcr-clearfy-import-options-button"><?php _e('Import options', 'clearfy') ?></button>
292
  </p>
293
  </div>
302
  <p><?php _e('Generate a debug report which will contains inforamtion about your configuratin and installed plugins', 'clearfy') ?></p>
303
 
304
  <p>
305
+ <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>
306
  </p>
307
  </li>
308
  <li>
317
 
318
  <?php
319
  }
320
+ }
 
 
admin/pages/{double-pages.php → seo-double-pages.php} RENAMED
@@ -1,34 +1,46 @@
1
  <?php
2
-
3
  /**
4
  * The page Settings.
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrClr_DoublePagesPage extends WbcrClr_Page {
9
-
 
 
 
 
 
 
10
  /**
11
  * The id of the page in the admin menu.
12
  *
13
  * Mainly used to navigate between pages.
14
- * @see FactoryPages324_AdminPage
15
  *
16
  * @since 1.0.0
17
  * @var string
18
  */
19
  public $id = "double_pages";
20
-
 
 
21
  public $page_menu_dashicon = 'dashicons-admin-page';
22
-
23
  public $page_menu_position = 16;
24
-
25
- public function __construct(Factory326_Plugin $plugin)
 
 
 
26
  {
27
- $this->menuTitle = __('Duplicate pages', 'clearfy');
28
-
29
  parent::__construct($plugin);
 
 
30
  }
31
-
32
  /**
33
  * Shows the description above the options.
34
  *
@@ -43,7 +55,7 @@
43
  </div>
44
  <?php
45
  }*/
46
-
47
  /**
48
  * Permalinks options.
49
  *
@@ -53,32 +65,47 @@
53
  public function getOptions()
54
  {
55
  $options = array();
56
-
57
  /*$options[] = array(
58
  'type' => 'html',
59
  'html' => array($this, '_showHeader')
60
  );*/
61
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  $options[] = array(
63
  'type' => 'checkbox',
64
  'way' => 'buttons',
65
  'name' => 'redirect_archives_date',
66
- 'title' => __('Remove archives date', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
67
  'layout' => array('hint-type' => 'icon'),
68
  'hint' => sprintf(__('Many duplicates in date archives. Imagine, in addition, that your article will be displayed in the main and in the category, you will still receive at least 3 duplicates: in archives by year, month and date, for example %s.', 'clearfy'), '/2016/2016/02 / /2016/02/15') . '<br><b>Clearfy: </b>' . __('Removes all pages with the date archives and puts a redirect.', 'clearfy'),
69
  'default' => false
70
  );
71
-
72
  $options[] = array(
73
  'type' => 'checkbox',
74
  'way' => 'buttons',
75
  'name' => 'redirect_archives_author',
76
- 'title' => __('Remove author archives ', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
77
  'layout' => array('hint-type' => 'icon'),
78
  'hint' => sprintf(__('If the site is only filled by you - a mandatory item. Allows you to get rid of duplicates on user archives, for example %s.', 'clearfy'), '/author/admin/') . '<br><b>Clearfy: </b>' . __('Removes all pages with the author archives and puts a redirect.', 'clearfy'),
79
  'default' => false
80
  );
81
-
82
  $options[] = array(
83
  'type' => 'checkbox',
84
  'way' => 'buttons',
@@ -88,37 +115,37 @@
88
  'hint' => __('If you use tags only for the block Similar records, or do not use them at all - it will be more correct to close them to avoid duplicates.', 'clearfy') . '<br><b>Clearfy: </b>' . __('Removes all pages with the tag archives and puts a redirect.', 'clearfy'),
89
  'default' => false
90
  );
91
-
92
  $options[] = array(
93
  'type' => 'checkbox',
94
  'way' => 'buttons',
95
  'name' => 'attachment_pages_redirect',
96
- 'title' => __('Remove attachment pages', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
97
  'layout' => array('hint-type' => 'icon'),
98
  'hint' => __('Every of the pictures has its own page on the site. Such pages are successfully indexed and create duplicates. The site can have thousands of same-type attachment pages.', 'clearfy') . '<br><b>Clearfy: </b>' . __('Removes attachment pages and puts a redirect.', 'clearfy'),
99
  'default' => false
100
  );
101
-
102
  $options[] = array(
103
  'type' => 'checkbox',
104
  'way' => 'buttons',
105
  'name' => 'remove_single_pagination_duplicate',
106
- 'title' => __('Remove post pagination', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
107
  'layout' => array('hint-type' => 'icon'),
108
  'hint' => sprintf(__('In WordPress, any post can be divided into parts (pages), each part will have its own address. But this functionality is rarely used, but it can create trouble for you. For example, you can add a number to the address of any entry of your blog, %s - the post itself will open, which will be a duplicate. You can substitute any number.', 'clearfy'), '/privet-mir/1/') . '<br><b>Clearfy: </b>' . sprintf(__('Removes the pagination from the post and puts a redirect. Example: %s', 'clearfy'), '/post-name/number'),
109
  'default' => false
110
  );
111
-
112
  $options[] = array(
113
  'type' => 'checkbox',
114
  'way' => 'buttons',
115
  'name' => 'remove_replytocom',
116
- 'title' => __('Remove ?replytocom', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
117
  'layout' => array('hint-type' => 'icon'),
118
  'hint' => sprintf(__('WordPress adds %s to the link "Reply" in the comments, if you use hierarchical comments.', 'clearfy'), '?replytocom') . '<br><b>Clearfy: </b>' . __('?relpytocom remove and and puts a redirect.', 'clearfy'),
119
  'default' => false
120
  );
121
-
122
  /*$options[] = array(
123
  'type' => 'separator',
124
  'cssClass' => 'factory-separator-dashed'
@@ -128,17 +155,15 @@
128
  'type' => 'html',
129
  'html' => array($this, '_showFormButton')
130
  );*/
131
-
132
  $form_options = array();
133
-
134
  $form_options[] = array(
135
  'type' => 'form-group',
136
  'items' => $options,
137
  //'cssClass' => 'postbox'
138
  );
139
-
140
  return apply_filters('wbcr_clr_double_form_options', $form_options, $this);
141
  }
142
- }
143
-
144
- FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_DoublePagesPage');
1
  <?php
 
2
  /**
3
  * The page Settings.
4
  *
5
  * @since 1.0.0
6
  */
7
+
8
+ // Exit if accessed directly
9
+ if( !defined('ABSPATH') ) {
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 FactoryPages400_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
23
  */
24
  public $id = "double_pages";
25
+
26
+ public $page_parent_page = 'seo';
27
+
28
  public $page_menu_dashicon = 'dashicons-admin-page';
29
+
30
  public $page_menu_position = 16;
31
+
32
+ /**
33
+ * @param WCL_Plugin $plugin
34
+ */
35
+ public function __construct(WCL_Plugin $plugin)
36
  {
37
+ $this->menu_title = __('Duplicate pages', 'clearfy');
38
+
39
  parent::__construct($plugin);
40
+
41
+ $this->plugin = $plugin;
42
  }
43
+
44
  /**
45
  * Shows the description above the options.
46
  *
55
  </div>
56
  <?php
57
  }*/
58
+
59
  /**
60
  * Permalinks options.
61
  *
65
  public function getOptions()
66
  {
67
  $options = array();
68
+
69
  /*$options[] = array(
70
  'type' => 'html',
71
  'html' => array($this, '_showHeader')
72
  );*/
73
+
74
+ /*$options[] = array(
75
+ 'type' => 'checkbox',
76
+ 'way' => 'buttons',
77
+ 'name' => 'redirect_archives_date',
78
+ 'title' => __('Disable search', 'clearfy'),
79
+ 'layout' => array('hint-type' => 'icon'),
80
+ 'hint' => sprintf(__('Many duplicates in date archives. Imagine, in addition, that your article will be displayed in the main and in the category, you will still receive at least 3 duplicates: in archives by year, month and date, for example %s.', 'clearfy'), '/2016/2016/02 / /2016/02/15') . '<br><b>Clearfy: </b>' . __('Removes all pages with the date archives and puts a redirect.', 'clearfy'),
81
+ 'default' => false
82
+ );*/
83
+
84
+ $options[] = array(
85
+ 'type' => 'html',
86
+ 'html' => '<div class="wbcr-factory-page-group-header">' . __('<strong>Delete duplicate pages.</strong>.', 'clearfy') . '<p>' . __('Search engines perceive these pages as website separate pages, therefore their content ceases to be unique because of duplication. In addition, page reference weight is reduced if it has a duplicate. A small number of duplicated pages will not be a serious problem, but if there are more than 50 percents of them - you urgently need to correct the situation.', 'clearfy') . '</p></div>'
87
+ );
88
+
89
  $options[] = array(
90
  'type' => 'checkbox',
91
  'way' => 'buttons',
92
  'name' => 'redirect_archives_date',
93
+ 'title' => __('Remove archives date', 'clearfy'),
94
  'layout' => array('hint-type' => 'icon'),
95
  'hint' => sprintf(__('Many duplicates in date archives. Imagine, in addition, that your article will be displayed in the main and in the category, you will still receive at least 3 duplicates: in archives by year, month and date, for example %s.', 'clearfy'), '/2016/2016/02 / /2016/02/15') . '<br><b>Clearfy: </b>' . __('Removes all pages with the date archives and puts a redirect.', 'clearfy'),
96
  'default' => false
97
  );
98
+
99
  $options[] = array(
100
  'type' => 'checkbox',
101
  'way' => 'buttons',
102
  'name' => 'redirect_archives_author',
103
+ 'title' => __('Remove author archives ', 'clearfy'),
104
  'layout' => array('hint-type' => 'icon'),
105
  'hint' => sprintf(__('If the site is only filled by you - a mandatory item. Allows you to get rid of duplicates on user archives, for example %s.', 'clearfy'), '/author/admin/') . '<br><b>Clearfy: </b>' . __('Removes all pages with the author archives and puts a redirect.', 'clearfy'),
106
  'default' => false
107
  );
108
+
109
  $options[] = array(
110
  'type' => 'checkbox',
111
  'way' => 'buttons',
115
  'hint' => __('If you use tags only for the block Similar records, or do not use them at all - it will be more correct to close them to avoid duplicates.', 'clearfy') . '<br><b>Clearfy: </b>' . __('Removes all pages with the tag archives and puts a redirect.', 'clearfy'),
116
  'default' => false
117
  );
118
+
119
  $options[] = array(
120
  'type' => 'checkbox',
121
  'way' => 'buttons',
122
  'name' => 'attachment_pages_redirect',
123
+ 'title' => __('Remove attachment pages', 'clearfy'),
124
  'layout' => array('hint-type' => 'icon'),
125
  'hint' => __('Every of the pictures has its own page on the site. Such pages are successfully indexed and create duplicates. The site can have thousands of same-type attachment pages.', 'clearfy') . '<br><b>Clearfy: </b>' . __('Removes attachment pages and puts a redirect.', 'clearfy'),
126
  'default' => false
127
  );
128
+
129
  $options[] = array(
130
  'type' => 'checkbox',
131
  'way' => 'buttons',
132
  'name' => 'remove_single_pagination_duplicate',
133
+ 'title' => __('Remove post pagination', 'clearfy'),
134
  'layout' => array('hint-type' => 'icon'),
135
  'hint' => sprintf(__('In WordPress, any post can be divided into parts (pages), each part will have its own address. But this functionality is rarely used, but it can create trouble for you. For example, you can add a number to the address of any entry of your blog, %s - the post itself will open, which will be a duplicate. You can substitute any number.', 'clearfy'), '/privet-mir/1/') . '<br><b>Clearfy: </b>' . sprintf(__('Removes the pagination from the post and puts a redirect. Example: %s', 'clearfy'), '/post-name/number'),
136
  'default' => false
137
  );
138
+
139
  $options[] = array(
140
  'type' => 'checkbox',
141
  'way' => 'buttons',
142
  'name' => 'remove_replytocom',
143
+ 'title' => __('Remove ?replytocom', 'clearfy'),
144
  'layout' => array('hint-type' => 'icon'),
145
  'hint' => sprintf(__('WordPress adds %s to the link "Reply" in the comments, if you use hierarchical comments.', 'clearfy'), '?replytocom') . '<br><b>Clearfy: </b>' . __('?relpytocom remove and and puts a redirect.', 'clearfy'),
146
  'default' => false
147
  );
148
+
149
  /*$options[] = array(
150
  'type' => 'separator',
151
  'cssClass' => 'factory-separator-dashed'
155
  'type' => 'html',
156
  'html' => array($this, '_showFormButton')
157
  );*/
158
+
159
  $form_options = array();
160
+
161
  $form_options[] = array(
162
  'type' => 'form-group',
163
  'items' => $options,
164
  //'cssClass' => 'postbox'
165
  );
166
+
167
  return apply_filters('wbcr_clr_double_form_options', $form_options, $this);
168
  }
169
+ }
 
 
admin/pages/seo.php CHANGED
@@ -1,17 +1,22 @@
1
  <?php
2
-
3
  /**
4
  * The page Settings.
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrClr_SeoPage extends WbcrClr_Page {
 
 
 
 
 
 
9
 
10
  /**
11
  * The id of the page in the admin menu.
12
  *
13
  * Mainly used to navigate between pages.
14
- * @see FactoryPages324_AdminPage
15
  *
16
  * @since 1.0.0
17
  * @var string
@@ -22,27 +27,32 @@
22
 
23
  public $page_menu_position = 16;
24
 
25
- public function __construct(Factory326_Plugin $plugin)
 
 
 
26
  {
27
- $this->menuTitle = __('SEO', 'clearfy');
28
 
29
  parent::__construct($plugin);
 
 
30
  }
31
 
32
  /**
33
- * Shows the description above the options.
34
- *
35
- * @since 1.0.0
36
- * @return void
37
  */
38
- /*public function _showHeader()
39
  {
40
- ?>
41
- <div class="wbcr-clearfy-header">
42
- <?php _e('This page contains important settings for SEO optimization.', 'clearfy') ?>
43
- </div>
44
- <?php
45
- }*/
 
 
 
46
 
47
  /**
48
  * Permalinks options.
@@ -54,10 +64,10 @@
54
  {
55
  $options = array();
56
 
57
- /*$options[] = array(
58
  'type' => 'html',
59
- 'html' => array($this, '_showHeader')
60
- );*/
61
 
62
  $options[] = array(
63
  'type' => 'checkbox',
@@ -89,21 +99,10 @@
89
  'type' => 'textarea',
90
  'name' => 'robots_txt_text',
91
  'title' => __('You can edit the robots.txt file in the box below:', 'clearfy'),
92
- 'default' => wbcr_clearfy_get_right_robot_txt(),
93
  'height' => '300'
94
-
95
  );
96
 
97
- /*$options[] = array(
98
- 'type' => 'checkbox',
99
- 'way' => 'buttons',
100
- 'name' => 'redirect_from_http_to_https',
101
- 'title' => __('Redirect Http to Https', 'clearfy'),
102
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'red'),
103
- 'hint' => __('If your site uses an SSL certificate, check this box to enable redirection from http to https.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Puts the redirect from http to https.', 'clearfy') . '<br>--<br><span class="hint-warnign-color">' . __('Warning! Before activation, make sure your site is open https.', 'clearfy') . '</span>',
104
- 'default' => false
105
- );*/
106
-
107
  $options[] = array(
108
  'type' => 'html',
109
  'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Server headers and response', 'clearfy') . '</strong>' . '<p>' . __('WordPress does not know how to give the Last Modified header in the server\'s responses. You can do this using the settings below.', 'clearfy') . '</p>' . '</div>'
@@ -140,70 +139,72 @@
140
  'default' => false
141
  );
142
 
143
- $options[] = array(
144
- 'type' => 'html',
145
- 'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('For the Yoast SEO plugin', 'clearfy') . '</strong>' . '<p>' . __('These settings will help you eliminate some problems associated with the popular Yoast SEO plugin', 'clearfy') . '</p>' . '</div>'
146
- );
147
-
148
- $options[] = array(
149
- 'type' => 'checkbox',
150
- 'way' => 'buttons',
151
- 'name' => 'remove_last_item_breadcrumb_yoast',
152
- 'title' => __('Remove duplicate names in breadcrumbs WP SEO by Yoast', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
153
- 'layout' => array('hint-type' => 'icon'),
154
- 'hint' => __('The last element in the breadcrumbs in the Yoast SEO plugin duplicates the title of the article. Some SEO-specialists consider this duplication to be superfluous.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Removes duplication of the name in the breadcrumbs of the WP SEO plugin from Yoast.', 'clearfy'),
155
- 'default' => false
156
- );
157
-
158
- $options[] = array(
159
- 'type' => 'checkbox',
160
- 'way' => 'buttons',
161
- 'name' => 'yoast_remove_image_from_xml_sitemap',
162
- 'title' => sprintf(__('Remove the tag %s from XML site map', 'clearfy'), 'image:image') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
163
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
164
- 'hint' => __('Yandex.Webmaster swears on a standard XML card from the plugin Yoast, tk. it has a specific tag', 'clearfy') . 'image:image<br><br><b>Clearfy: </b>' . sprintf(__('Remove the tag %s from XML site map of the plugin Yoast SEO.', 'clearfy'), 'image:image') . '<br>--<br><span class="hint-warnign-color">' . __('Attention! After activation, turn off the site map and enable it back to regenerate it.', 'clearfy') . '</span>' . '<br><span class="hint-warnign-color">' . __('In older versions of Yoast SEO may not work - update the plugin Yoast', 'clearfy') . '</span>',
165
- 'default' => false,
166
- 'eventsOn' => array()
167
- );
168
-
169
- /*$options[] = array(
170
- 'type' => 'html',
171
- 'id' => 'wbcr-clearfy-image-xml-sitemap-warning',
172
- 'cssClass' => 'factory-hints',
173
- 'html' => array($this, 'sfsdfsdf')
174
- );*/
175
-
176
- $options[] = array(
177
- 'type' => 'checkbox',
178
- 'way' => 'buttons',
179
- 'name' => 'yoast_remove_json_ld_search',
180
- 'title' => __('Disable JSON-LD sitelinks searchbox', 'clearfy') . '</span>',
181
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
182
- 'hint' => __('If you’re not familiar with Search Action it’s the mark-up that helps search engines add a shiny Sitelinks Search Box below your search engine results. For the majority of webmasters the extra search box is an absolutely fantastic feature but for many it’s not required or wanted, especially if a site only has a few pages or if the site uses a customised search platform that only searches blog posts and not pages.', 'clearfy') . ' <br><b>Clearfy: </b>' . __('Disable JSON-LD sitelinks searchbox using WordPress in plugin Yoast SEO.', 'clearfy'),
183
- 'default' => false
184
- );
185
-
186
- $options[] = array(
187
- 'type' => 'checkbox',
188
- 'way' => 'buttons',
189
- 'name' => 'yoast_remove_json_ld_output',
190
- 'title' => __('Disable Yoast Structured Data', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text"></span>',
191
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
192
- 'hint' => __('Prevents output of the script tag of type application/ld+json containing
 
193
  schema.org data from the popular Yoast SEO and Yoast SEO Premium plugins.
194
  There is currently no UI to do so.', 'clearfy') . ' <br><b>Clearfy: </b>' . __('Disable Structured Data in plugin Yoast SEO.', 'clearfy'),
195
- 'default' => false
196
- );
197
-
198
- $options[] = array(
199
- 'type' => 'checkbox',
200
- 'way' => 'buttons',
201
- 'name' => 'yoast_remove_head_comment',
202
- 'title' => sprintf(__('Remove comment from %s section', 'clearfy'), 'head') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
203
- 'layout' => array('hint-type' => 'icon'),
204
- 'hint' => sprintf(__('The Yoast SEO plugin displays a comment of the form %s in %s section', 'clearfy'), '!-- This site is optimized with the Yoast SEO plugin v3.1.1 - https://yoast.com/wordpress/plugins/seo/ --', 'head') . '<br><br><b>Clearfy: </b>' . sprintf(__('Removes the Yoast SEO plugin comment of their section %s', 'clearfy'), 'head'),
205
- 'default' => false
206
- );
 
207
 
208
  $form_options = array();
209
 
@@ -217,4 +218,4 @@ There is currently no UI to do so.', 'clearfy') . ' <br><b>Clearfy: </b>' . __('
217
  }
218
  }
219
 
220
- FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_SeoPage');
1
  <?php
 
2
  /**
3
  * The page Settings.
4
  *
5
  * @since 1.0.0
6
  */
7
+
8
+ // Exit if accessed directly
9
+ if( !defined('ABSPATH') ) {
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 FactoryPages400_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
27
 
28
  public $page_menu_position = 16;
29
 
30
+ /**
31
+ * @param WCL_Plugin $plugin
32
+ */
33
+ public function __construct(WCL_Plugin $plugin)
34
  {
35
+ $this->menu_title = __('SEO', 'clearfy');
36
 
37
  parent::__construct($plugin);
38
+
39
+ $this->plugin = $plugin;
40
  }
41
 
42
  /**
43
+ * Conflict notites
 
 
 
44
  */
45
+ public function warningNotice()
46
  {
47
+ $notices = apply_filters('wbcr_clr_seo_page_warnings', array());
48
+
49
+ if( !empty($notices) ) {
50
+ foreach($notices as $message) {
51
+ $this->printWarningNotice($message);
52
+ }
53
+ }
54
+ }
55
+
56
 
57
  /**
58
  * Permalinks options.
64
  {
65
  $options = array();
66
 
67
+ $options[] = array(
68
  'type' => 'html',
69
+ 'html' => '<div class="wbcr-factory-page-group-header">' . __('<strong>Basic SEO optimization settings</strong>.', 'clearfy') . '<p>' . __('Recommended settings that can complement your SEO plugin.', 'clearfy') . '</p></div>'
70
+ );
71
 
72
  $options[] = array(
73
  'type' => 'checkbox',
99
  'type' => 'textarea',
100
  'name' => 'robots_txt_text',
101
  'title' => __('You can edit the robots.txt file in the box below:', 'clearfy'),
102
+ 'default' => WCL_Helper::getRightRobotTxt(),
103
  'height' => '300'
 
104
  );
105
 
 
 
 
 
 
 
 
 
 
 
106
  $options[] = array(
107
  'type' => 'html',
108
  'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Server headers and response', 'clearfy') . '</strong>' . '<p>' . __('WordPress does not know how to give the Last Modified header in the server\'s responses. You can do this using the settings below.', 'clearfy') . '</p>' . '</div>'
139
  'default' => false
140
  );
141
 
142
+ if( $this->plugin->isActivateComponent('yoast_seo') ) {
143
+ $options[] = array(
144
+ 'type' => 'html',
145
+ 'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('For the Yoast SEO plugin', 'clearfy') . '</strong>' . '<p>' . __('These settings will help you eliminate some problems associated with the popular Yoast SEO plugin', 'clearfy') . '</p>' . '</div>'
146
+ );
147
+
148
+ $options[] = array(
149
+ 'type' => 'checkbox',
150
+ 'way' => 'buttons',
151
+ 'name' => 'remove_last_item_breadcrumb_yoast',
152
+ 'title' => __('Remove duplicate names in breadcrumbs WP SEO by Yoast', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
153
+ 'layout' => array('hint-type' => 'icon'),
154
+ 'hint' => __('The last element in the breadcrumbs in the Yoast SEO plugin duplicates the title of the article. Some SEO-specialists consider this duplication to be superfluous.', 'clearfy') . '<br><br><b>Clearfy: </b>' . __('Removes duplication of the name in the breadcrumbs of the WP SEO plugin from Yoast.', 'clearfy'),
155
+ 'default' => false
156
+ );
157
+
158
+ $options[] = array(
159
+ 'type' => 'checkbox',
160
+ 'way' => 'buttons',
161
+ 'name' => 'yoast_remove_image_from_xml_sitemap',
162
+ 'title' => sprintf(__('Remove the tag %s from XML site map', 'clearfy'), 'image:image') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
163
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
164
+ 'hint' => __('Yandex.Webmaster swears on a standard XML card from the plugin Yoast, tk. it has a specific tag', 'clearfy') . 'image:image<br><br><b>Clearfy: </b>' . sprintf(__('Remove the tag %s from XML site map of the plugin Yoast SEO.', 'clearfy'), 'image:image') . '<br>--<br><span class="hint-warnign-color">' . __('Attention! After activation, turn off the site map and enable it back to regenerate it.', 'clearfy') . '</span>' . '<br><span class="hint-warnign-color">' . __('In older versions of Yoast SEO may not work - update the plugin Yoast', 'clearfy') . '</span>',
165
+ 'default' => false,
166
+ 'eventsOn' => array()
167
+ );
168
+
169
+ /*$options[] = array(
170
+ 'type' => 'html',
171
+ 'id' => 'wbcr-clearfy-image-xml-sitemap-warning',
172
+ 'cssClass' => 'factory-hints',
173
+ 'html' => array($this, 'sfsdfsdf')
174
+ );*/
175
+
176
+ $options[] = array(
177
+ 'type' => 'checkbox',
178
+ 'way' => 'buttons',
179
+ 'name' => 'yoast_remove_json_ld_search',
180
+ 'title' => __('Disable JSON-LD sitelinks searchbox', 'clearfy') . '</span>',
181
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
182
+ 'hint' => __('If you’re not familiar with Search Action it’s the mark-up that helps search engines add a shiny Sitelinks Search Box below your search engine results. For the majority of webmasters the extra search box is an absolutely fantastic feature but for many it’s not required or wanted, especially if a site only has a few pages or if the site uses a customised search platform that only searches blog posts and not pages.', 'clearfy') . ' <br><b>Clearfy: </b>' . __('Disable JSON-LD sitelinks searchbox using WordPress in plugin Yoast SEO.', 'clearfy'),
183
+ 'default' => false
184
+ );
185
+
186
+ $options[] = array(
187
+ 'type' => 'checkbox',
188
+ 'way' => 'buttons',
189
+ 'name' => 'yoast_remove_json_ld_output',
190
+ 'title' => __('Disable Yoast Structured Data', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text"></span>',
191
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
192
+ 'hint' => __('Prevents output of the script tag of type application/ld+json containing
193
  schema.org data from the popular Yoast SEO and Yoast SEO Premium plugins.
194
  There is currently no UI to do so.', 'clearfy') . ' <br><b>Clearfy: </b>' . __('Disable Structured Data in plugin Yoast SEO.', 'clearfy'),
195
+ 'default' => false
196
+ );
197
+
198
+ $options[] = array(
199
+ 'type' => 'checkbox',
200
+ 'way' => 'buttons',
201
+ 'name' => 'yoast_remove_head_comment',
202
+ 'title' => sprintf(__('Remove comment from %s section', 'clearfy'), 'head') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'clearfy') . ')</span>',
203
+ 'layout' => array('hint-type' => 'icon'),
204
+ 'hint' => sprintf(__('The Yoast SEO plugin displays a comment of the form %s in %s section', 'clearfy'), '!-- This site is optimized with the Yoast SEO plugin v3.1.1 - https://yoast.com/wordpress/plugins/seo/ --', 'head') . '<br><br><b>Clearfy: </b>' . sprintf(__('Removes the Yoast SEO plugin comment of their section %s', 'clearfy'), 'head'),
205
+ 'default' => false
206
+ );
207
+ }
208
 
209
  $form_options = array();
210
 
218
  }
219
  }
220
 
221
+
admin/pages/widgets.php CHANGED
@@ -1,17 +1,22 @@
1
  <?php
2
-
3
  /**
4
  * The page Settings.
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrClr_WidgetsPage extends WbcrClr_Page {
 
 
 
 
 
 
9
 
10
  /**
11
  * The id of the page in the admin menu.
12
  *
13
  * Mainly used to navigate between pages.
14
- * @see FactoryPages324_AdminPage
15
  *
16
  * @since 1.0.0
17
  * @var string
@@ -20,11 +25,16 @@
20
 
21
  public $page_menu_dashicon = 'dashicons-networking';
22
 
23
- public function __construct(Factory326_Plugin $plugin)
 
 
 
24
  {
25
- $this->menuTitle = __('Widgets', 'clearfy');
26
 
27
  parent::__construct($plugin);
 
 
28
  }
29
 
30
  /**
@@ -37,6 +47,11 @@
37
  {
38
  $options = array();
39
 
 
 
 
 
 
40
  $options[] = array(
41
  'type' => 'checkbox',
42
  'way' => 'buttons',
@@ -171,8 +186,6 @@
171
  //'cssClass' => 'postbox'
172
  );
173
 
174
- return apply_filters('wbcr_clr_seo_form_options', $form_options);
175
  }
176
- }
177
-
178
- FactoryPages324::register($wbcr_clearfy_plugin, 'WbcrClr_WidgetsPage');
1
  <?php
 
2
  /**
3
  * The page Settings.
4
  *
5
  * @since 1.0.0
6
  */
7
+
8
+ // Exit if accessed directly
9
+ if( !defined('ABSPATH') ) {
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 FactoryPages400_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
25
 
26
  public $page_menu_dashicon = 'dashicons-networking';
27
 
28
+ /**
29
+ * @param WCL_Plugin $plugin
30
+ */
31
+ public function __construct(WCL_Plugin $plugin)
32
  {
33
+ $this->menu_title = __('Widgets', 'clearfy');
34
 
35
  parent::__construct($plugin);
36
+
37
+ $this->plugin = $plugin;
38
  }
39
 
40
  /**
47
  {
48
  $options = array();
49
 
50
+ $options[] = array(
51
+ 'type' => 'html',
52
+ 'html' => '<div class="wbcr-factory-page-group-header">' . __('<strong>Disable unused widgets</strong>.', 'clearfy') . '<p>' . __('Some widgets, such as the Calendar or Tag Cloud, create an extra query to the database, even if they are not displayed on the website. Of course, a couple of hits to the database will not do much harm to the whole site. However, if the resource contains a huge amount of content, and the speed of its work above all else, disabling unused functionality is the first step to optimizing and accelerating it.', 'clearfy') . '</p></div>'
53
+ );
54
+
55
  $options[] = array(
56
  'type' => 'checkbox',
57
  'way' => 'buttons',
186
  //'cssClass' => 'postbox'
187
  );
188
 
189
+ return apply_filters('wbcr_clr_widgets_form_options', $form_options, $this);
190
  }
191
+ }
 
 
assets/js/css-lazy-load.js ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
2
+
3
+ // https://github.com/filamentgroup/loadCSS/blob/master/src/loadCSS.js
4
+
5
+ (function(w) {
6
+ "use strict";
7
+ /* exported loadCSS */
8
+ var loadCSS = function(href, before, media) {
9
+ // Arguments explained:
10
+ // `href` [REQUIRED] is the URL for your CSS file.
11
+ // `before` [OPTIONAL] is the element the script should use as a reference for injecting our stylesheet <link>
12
+ // before By default, loadCSS attempts to inject the link after the last stylesheet or script in the DOM.
13
+ // However, you might desire a more specific location in your document. `media` [OPTIONAL] is the media type or
14
+ // query of the stylesheet. By default it will be 'all'
15
+ var doc = w.document;
16
+ var ss = doc.createElement("link");
17
+ var ref;
18
+ if( before ) {
19
+ ref = before;
20
+ }
21
+ else {
22
+ var refs = ( doc.body || doc.getElementsByTagName("head")[0] ).childNodes;
23
+ ref = refs[refs.length - 1];
24
+ }
25
+
26
+ var sheets = doc.styleSheets;
27
+ ss.rel = "stylesheet";
28
+ ss.href = href;
29
+ // temporarily set media to something inapplicable to ensure it'll fetch without blocking render
30
+ ss.media = "only x";
31
+
32
+ // wait until body is defined before injecting link. This ensures a non-blocking load in IE11.
33
+ function ready(cb) {
34
+ if( doc.body ) {
35
+ return cb();
36
+ }
37
+ setTimeout(function() {
38
+ ready(cb);
39
+ });
40
+ }
41
+
42
+ // Inject link
43
+ // Note: the ternary preserves the existing behavior of "before" argument, but we could choose to change the
44
+ // argument to "after" in a later release and standardize on ref.nextSibling for all refs Note: `insertBefore`
45
+ // is used instead of `appendChild`, for safety re:
46
+ // http://www.paulirish.com/2011/surefire-dom-element-insertion/
47
+ ready(function() {
48
+ ref.parentNode.insertBefore(ss, ( before ? ref : ref.nextSibling ));
49
+ });
50
+ // A method (exposed on return object for external use) that mimics onload by polling document.styleSheets
51
+ // until it includes the new sheet.
52
+ var onloadcssdefined = function(cb) {
53
+ var resolvedHref = ss.href;
54
+ var i = sheets.length;
55
+ while( i-- ) {
56
+ if( sheets[i].href === resolvedHref ) {
57
+ return cb();
58
+ }
59
+ }
60
+ setTimeout(function() {
61
+ onloadcssdefined(cb);
62
+ });
63
+ };
64
+
65
+ function loadCB() {
66
+ if( ss.addEventListener ) {
67
+ ss.removeEventListener("load", loadCB);
68
+ }
69
+ ss.media = media || "all";
70
+ }
71
+
72
+ // once loaded, set link's media back to `all` so that the stylesheet applies once it loads
73
+ if( ss.addEventListener ) {
74
+ ss.addEventListener("load", loadCB);
75
+ }
76
+ ss.onloadcssdefined = onloadcssdefined;
77
+ onloadcssdefined(loadCB);
78
+ return ss;
79
+ };
80
+ // commonjs
81
+ if( typeof exports !== "undefined" ) {
82
+ exports.loadCSS = loadCSS;
83
+ }
84
+ else {
85
+ w.loadCSS = loadCSS;
86
+ }
87
+ }(typeof global !== "undefined" ? global : this));
88
+
89
+ /**/
90
+ jQuery(document).ready(function($) {
91
+ "use strict";
92
+
93
+ if( 'undefined' !== typeof wbcr_clearfy_async_links && Object.keys(wbcr_clearfy_async_links).length ) {
94
+ var key;
95
+ for( key in wbcr_clearfy_async_links ) {
96
+ if( wbcr_clearfy_async_links.hasOwnProperty(key) ) {
97
+ loadCSS(wbcr_clearfy_async_links[key]);
98
+ }
99
+ }
100
+ }
101
+ });
assets/js/css-lazy-load.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(e){"use strict";var n=function(n,t,r){var i,a=e.document,o=a.createElement("link");if(t)i=t;else{var l=(a.body||a.getElementsByTagName("head")[0]).childNodes;i=l[l.length-1]}var s=a.styleSheets;o.rel="stylesheet",o.href=n,o.media="only x",function e(n){if(a.body)return n();setTimeout(function(){e(n)})}(function(){i.parentNode.insertBefore(o,t?i:i.nextSibling)});var c=function(e){for(var n=o.href,t=s.length;t--;)if(s[t].href===n)return e();setTimeout(function(){c(e)})};function d(){o.addEventListener&&o.removeEventListener("load",d),o.media=r||"all"}return o.addEventListener&&o.addEventListener("load",d),o.onloadcssdefined=c,c(d),o};"undefined"!=typeof exports?exports.loadCSS=n:e.loadCSS=n}("undefined"!=typeof global?global:this),jQuery(document).ready(function(e){"use strict";var n;if("undefined"!=typeof wbcr_clearfy_async_links&&Object.keys(wbcr_clearfy_async_links).length)for(n in wbcr_clearfy_async_links)wbcr_clearfy_async_links.hasOwnProperty(n)&&loadCSS(wbcr_clearfy_async_links[n])});
cache/local-ga.js ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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,d){a&&(c?(d="",b&&f.test(b)&&(d=' id="'+b+'"'),f.test(a)&&M.write("<script"+d+' src="'+a+'">\x3c/script>')):(c=M.createElement("script"),
3
+ c.type="text/javascript",c.async=!0,c.src=a,d&&(c.onload=d),b&&(c.id=b),a=M.getElementsByTagName("script")[0],a.parentNode.insertBefore(c,a)))},Ud=function(){return"https:"==M.location.protocol},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=
4
+ a.indexOf(b);if(5==c||6==c)if(a=a.charAt(c+b.length),"/"==a||"?"==a||""==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)&&
5
+ (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);
6
+ 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,
7
+ 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);
8
+ 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",
9
+ 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||Ud()?"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;if(!e)return!1;
10
+ 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",
11
+ 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("?")||
12
+ (a=["t=error","_e="+a,"_v=j66","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(oe()+"/collect",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";}
13
+ 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)}
14
+ 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)}
15
+ 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";}
16
+ 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)};
17
+ 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,
18
+ 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");
19
+ 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");
20
+ 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");
21
+ 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);
22
+ 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});
23
+ 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",
24
+ 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"),
25
+ Md=S("_r","_r"),qe=S("_dp");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(a,b){this.V=1E4;this.fa=a;this.$=!1;this.oa=b;this.ea=1},Ed=function(a,b){var c;if(a.fa&&a.$)return 0;a.$=!0;if(b){if(a.oa&&R(b,a.oa))return R(b,a.oa);if(0==b.get(dc))return 0}if(0==a.V)return 0;void 0===c&&(c=Bd());return 0==c%a.V?Math.floor(c/a.V)%a.ea+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&&
26
+ (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-
27
+ 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)&&
28
+ !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);var e=a.get(fe),g=a.get(ie);b=kc(P(a,Yb));var ca=lc(P(a,W));a=P(a,Na);g&&"aw.ds"!=g||(c=["1",e,Cc(c)].join("."),0<d&&zc("_gac_"+Cc(a),c,b,ca,a,d));le({})}}else J(75)}},ma=function(a,b,c,d){var e=nd(a,b);if(e){c=P(a,c);var g=kc(P(a,Yb)),ca=
29
+ 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,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,
30
+ 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)?{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);
31
+ 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=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("."));
32
+ 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}
33
+ 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("."))}
34
+ 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)};
35
+ 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=
36
+ 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))};
37
+ 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])&&
38
+ 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},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(b.get(ed)){if(ne()){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){b.get(c)||("1"==Ca(a.Y)[0]?
39
+ b.set(c,"",!0):b.set(c,""+hd(),!0))},Qd=function(a,b){b.get(ed)&&zc(a.Y,"1",b.get(Yb),b.get(W),b.get(Na),6E4)},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},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);a.get(ed)&&(a.set(Md,1,!0),ne()?(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 H=function(a){return a?(1*a).toFixed(3):"0"},da=function(a){var b=O.performance;if(b&&b.getEntriesByName){J(35);var c="https://www.google-analytics.com/analytics.js?wpid="+a;wa(c,void 0,void 0,function(){try{var d=1,e=b.getEntriesByName("https://www.google-analytics.com/analytics.js");e&&0!=e.length||(e=b.getEntriesByName("http://www.google-analytics.com/analytics.js"),d=0);var g=b.getEntriesByName(c);if(e&&1==e.length&&g&&1==g.length){J(37);var ca=e[0],l=g[0],k={tid:a,ad:H(ca.duration),bd:H(l.duration),
40
+ ar:H(ca.responseEnd-ca.requestStart),br:H(l.responseEnd-l.requestStart),an:H(ca.domainLookupEnd-ca.domainLookupStart),bn:H(l.domainLookupEnd-l.domainLookupStart),ac:H(ca.connectEnd-ca.connectStart),bc:H(l.connectEnd-l.connectStart),as:d};d=[];d.push("_v=j66");d.push("id=10");for(var w in k)k.hasOwnProperty(w)&&d.push(w+"="+K(k[w]));d.push("z="+hd());wc("https://www.google-analytics.com/u/d",d.join("&"),ua)}}catch(ha){}})}};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,"j66");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);
41
+ 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));this.ra=new Od(!0,"gaexp10")},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=
42
+ R(a,Zb);d=d+e<(new Date).getTime()/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):
43
+ e[d[g].ja]=[],e[d[g].ja].push({timestamp:ca[1],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);
44
+ break a}e&&(J(2),a.data.set(I,e))}else{J(22);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)));
45
+ if(d){var e=d.pathname||"";"/"!=e.charAt(0)&&(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&&
46
+ "function"===typeof b.javaEnabled&&b.javaEnabled()||!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"))&&
47
+ d.push(b[c]);0<d.length&&(b="#"+d.join("&"),a.set(kb,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]};
48
+ 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={},Ed(this.ra,this.b)&&da(this.b.get(Na)))}};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";
49
+ 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};
50
+ 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=
51
+ 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||Ud()?"https:":"http:")+"//www.google-analytics.com/plugins/ua/"+c),d=ae(c),a=d.protocol,c=M.location.protocol,("https:"==a||a==c||("http:"!=
52
+ 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"==a.host&&(a.port||
53
+ 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(":")&&(a=ca+e[2].substring(0,
54
+ 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};
55
+ 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];
56
+ 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&&
57
+ 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)};
58
+ 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(!Ud()&&!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=
59
+ !0;break a}}b=!1}b&&(Ba=!0)}Ud()||Ba||!Ed(new Od)||(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 Nd=N.N,se=O[gb];se&&se.r?Nd():z(Nd);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);
clearfy.php CHANGED
@@ -1,101 +1,44 @@
1
  <?php
2
  /**
3
- * Plugin Name: Webcraftic Clearfy - disable unused features
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.1.8
8
  * Text Domain: clearfy
9
  * Domain Path: /languages/
10
  */
11
 
 
 
 
 
 
12
  if( defined('WBCR_CLEARFY_PLUGIN_ACTIVE') ) {
13
  return;
14
  }
15
  define('WBCR_CLEARFY_PLUGIN_ACTIVE', true);
16
 
17
- define('WBCR_CLR_PLUGIN_DIR', dirname(__FILE__));
18
- define('WBCR_CLR_PLUGIN_BASE', plugin_basename(__FILE__));
19
- define('WBCR_CLR_PLUGIN_URL', plugins_url(null, __FILE__));
20
 
21
 
22
 
23
- // creating a plugin via the factory
24
- require_once(WBCR_CLR_PLUGIN_DIR . '/libs/factory/core/boot.php');
25
-
26
- add_action('plugins_loaded', 'wbcr_clearfy_plugin_init');
27
-
28
- function wbcr_clearfy_plugin_init()
29
- {
30
- global $wbcr_clearfy_plugin;
31
-
32
- // Localization plugin
33
- load_plugin_textdomain('clearfy', false, dirname(WBCR_CLR_PLUGIN_BASE) . '/languages/');
34
-
35
- $wbcr_clearfy_plugin = new Factory326_Plugin(__FILE__, array(
36
- 'name' => 'wbcr_clearfy',
37
- 'title' => __('Clearfy', 'clearfy'),
38
- 'version' => '1.1.8',
39
- 'host' => 'wordpress.org',
40
- 'url' => 'https://wordpress.org/plugins/clearfy/',
41
- 'assembly' => 'free',
42
- 'updates' => WBCR_CLR_PLUGIN_DIR . '/updates/'
43
- ));
44
-
45
- // requires factory modules
46
- $wbcr_clearfy_plugin->load(array(
47
- array('libs/factory/bootstrap', 'factory_bootstrap_330', 'admin'),
48
- array('libs/factory/forms', 'factory_forms_329', 'admin'),
49
- array('libs/factory/pages', 'factory_pages_324', 'admin'),
50
- array('libs/factory/clearfy', 'factory_clearfy_102', 'all'),
51
- ));
52
-
53
- require(WBCR_CLR_PLUGIN_DIR . '/includes/functions.php');
54
-
55
- // loading other files
56
- if( is_admin() ) {
57
- require(WBCR_CLR_PLUGIN_DIR . '/admin/boot.php');
58
- }
59
-
60
- require(WBCR_CLR_PLUGIN_DIR . '/includes/classes/class.configurate-code-clean.php');
61
- require(WBCR_CLR_PLUGIN_DIR . '/includes/classes/class.configurate-privacy.php');
62
- require(WBCR_CLR_PLUGIN_DIR . '/includes/classes/class.configurate-security.php');
63
- require(WBCR_CLR_PLUGIN_DIR . '/includes/classes/class.configurate-seo.php');
64
- require(WBCR_CLR_PLUGIN_DIR . '/includes/classes/class.configurate-advanced.php');
65
 
66
- new WbcrClearfy_ConfigCodeClean($wbcr_clearfy_plugin);
67
- new WbcrClearfy_ConfigPrivacy($wbcr_clearfy_plugin);
68
- new WbcrClearfy_ConfigSecurity($wbcr_clearfy_plugin);
69
- new WbcrClearfy_ConfigSeo($wbcr_clearfy_plugin);
70
- new WbcrClearfy_ConfigAdvanced($wbcr_clearfy_plugin);
71
-
72
- /**
73
- * Include plugin components
74
- */
75
- $wbcr_clearfy_plugin->loadAddons(array(
76
- 'updates_manager' => WBCR_CLR_PLUGIN_DIR . '/components/updates-manager/webcraftic-updates-manager.php',
77
- 'comments_plus' => WBCR_CLR_PLUGIN_DIR . '/components/comments-plus/comments-plus.php',
78
- 'gonzales' => WBCR_CLR_PLUGIN_DIR . '/components/assets-manager/gonzales.php',
79
- 'disable_admin_notices' => WBCR_CLR_PLUGIN_DIR . '/components/disable-admin-notices/disable-admin-notices.php'
80
- ));
81
- }
82
-
83
- /**
84
- * Activates the plugin.
85
- *
86
- * TThe activation hook has to be registered before loading the plugin.
87
- * The deactivateion hook can be registered in any place (currently in the file plugin.class.php).
88
- */
89
- /*function wbcr_clearfy_plugin_activation()
90
- {
91
- if( !current_user_can('activate_plugins') ) {
92
- wp_die(__('You do not have sufficient permissions to activate plugins for this site.'));
93
- }
94
-
95
- wbcr_clearfy_plugin_init();
96
-
97
- global $wbcr_clearfy_plugin;
98
- $wbcr_clearfy_plugin->activate();
99
- }
100
-
101
- register_activation_hook(__FILE__, 'wbcr_clearfy_plugin_activation');*/
1
  <?php
2
  /**
3
+ * Plugin Name: Webcraftic Clearfy WordPress optimization plugin
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.2.0
8
  * Text Domain: clearfy
9
  * Domain Path: /languages/
10
  */
11
 
12
+ // Exit if accessed directly
13
+ if( !defined('ABSPATH') ) {
14
+ exit;
15
+ }
16
+
17
  if( defined('WBCR_CLEARFY_PLUGIN_ACTIVE') ) {
18
  return;
19
  }
20
  define('WBCR_CLEARFY_PLUGIN_ACTIVE', true);
21
 
22
+ define('WCL_PLUGIN_DIR', dirname(__FILE__));
23
+ define('WCL_PLUGIN_BASE', plugin_basename(__FILE__));
24
+ define('WCL_PLUGIN_URL', plugins_url(null, __FILE__));
25
 
26
 
27
 
28
+ require_once(WCL_PLUGIN_DIR . '/includes/helpers.php');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
30
+ // creating a plugin via the factory
31
+ require_once(WCL_PLUGIN_DIR . '/libs/factory/core/boot.php');
32
+ require_once(WCL_PLUGIN_DIR . '/includes/class.plugin.php');
33
+
34
+ new WCL_Plugin(__FILE__, array(
35
+ 'prefix' => 'wbcr_clearfy_',
36
+ 'plugin_name' => 'wbcr_clearfy',
37
+ 'plugin_title' => __('Clearfy', 'clearfy'),
38
+ 'plugin_version' => '1.2.0',
39
+ 'required_php_version' => '5.2',
40
+ 'required_wp_version' => '4.2',
41
+ 'plugin_build' => 'free',
42
+ 'updates' => WCL_PLUGIN_DIR . '/updates/'
43
+
44
+ ));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
components/assets-manager/admin/assets/css/general.css CHANGED
@@ -25,10 +25,10 @@
25
  #WBCR .wbcr-clearfy-header {
26
  padding: 20px 20px 40px;
27
  }
28
- #WBCR .factory-bootstrap-330 label {
29
  font-weight: normal;
30
  }
31
- #WBCR .factory-bootstrap-330 .form-horizontal .control-label {
32
  max-width: 300px;
33
  }
34
  #WBCR .factory-control-buttons {
25
  #WBCR .wbcr-clearfy-header {
26
  padding: 20px 20px 40px;
27
  }
28
+ #WBCR .factory-bootstrap-400 label {
29
  font-weight: normal;
30
  }
31
+ #WBCR .factory-bootstrap-400 .form-horizontal .control-label {
32
  max-width: 300px;
33
  }
34
  #WBCR .factory-control-buttons {
components/assets-manager/admin/assets/css/index.php ADDED
File without changes
components/assets-manager/admin/assets/index.php ADDED
File without changes
components/assets-manager/admin/assets/js/index.php ADDED
File without changes
components/assets-manager/admin/boot.php CHANGED
@@ -6,15 +6,20 @@
6
  * @version 1.0
7
  */
8
 
9
- require(WBCR_GNZ_PLUGIN_DIR . '/admin/pages/assets-manager.php');
 
 
 
 
 
10
 
11
  if( !defined('LOADING_GONZALES_AS_ADDON') ) {
12
- require(WBCR_GNZ_PLUGIN_DIR . '/admin/pages/more-features.php');
13
  }
14
 
15
  function wbcr_gnz_set_plugin_meta($links, $file)
16
  {
17
- if( $file == WBCR_GNZ_PLUGIN_BASE ) {
18
  $links[] = '<a href="https://goo.gl/TcMcS4" style="color: #FF5722;font-weight: bold;" target="_blank">' . __('Get ultimate plugin free', 'gonzales') . '</a>';
19
  }
20
 
@@ -27,7 +32,7 @@
27
 
28
  function wbcr_gnz_rating_widget_url($page_url, $plugin_name)
29
  {
30
- if( $plugin_name == 'wbcr_gonzales' ) {
31
  return 'https://goo.gl/zyNV6z';
32
  }
33
 
6
  * @version 1.0
7
  */
8
 
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
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
  $links[] = '<a href="https://goo.gl/TcMcS4" style="color: #FF5722;font-weight: bold;" target="_blank">' . __('Get ultimate plugin free', 'gonzales') . '</a>';
24
  }
25
 
32
 
33
  function wbcr_gnz_rating_widget_url($page_url, $plugin_name)
34
  {
35
+ if( $plugin_name == WGZ_Plugin::app()->getPluginName() ) {
36
  return 'https://goo.gl/zyNV6z';
37
  }
38
 
components/assets-manager/admin/index.php ADDED
File without changes
components/assets-manager/admin/pages/assets-manager.php CHANGED
@@ -5,46 +5,56 @@
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrGnz_AssetsManagerPage extends FactoryPages324_ImpressiveThemplate {
 
 
 
 
 
 
9
 
10
  /**
11
  * The id of the page in the admin menu.
12
  *
13
  * Mainly used to navigate between pages.
14
- * @see FactoryPages324_AdminPage
15
  *
16
  * @since 1.0.0
17
  * @var string
18
  */
19
  public $id = "gonzales";
 
 
 
 
20
  public $page_menu_dashicon = 'dashicons-image-filter';
21
- //public $show_right_sidebar_in_options = true;
22
- //public $show_bottom_sidebar = false;
23
 
 
 
 
24
  public $page_menu_position = 95;
25
 
26
  /**
27
- * Stores list of all available assets (used in rendering panel)
28
- *
29
- * @var array
30
  */
31
- //private $collection = array();
32
-
33
- public function __construct(Factory326_Plugin $plugin)
34
  {
35
- $this->menuTitle = __('Assets manager', 'gonzales');
36
 
37
  if( !defined('LOADING_GONZALES_AS_ADDON') ) {
38
  $this->internal = false;
39
- $this->menuTarget = 'options-general.php';
40
- $this->addLinkToPluginActions = true;
 
 
41
  }
42
 
43
- //add_filter('wbcr_factory_imppage_right_sidebar_widgets', array($this, 'rightSidebar'));
44
-
45
  parent::__construct($plugin);
46
  }
47
 
 
 
 
48
  public function getMenuTitle()
49
  {
50
  return defined('LOADING_GONZALES_AS_ADDON')
@@ -52,49 +62,6 @@
52
  : __('General', 'gonzales');
53
  }
54
 
55
- /**
56
- * We register notifications for some actions
57
- * @param $notices
58
- * @return array
59
- */
60
- /*public function rightSidebar($widgets)
61
- {
62
- //$widgets['configuration_widget'] = $this->showConfigurationWidget();
63
-
64
- //unset($widgets['info_widget']);
65
- unset($widgets['rating_widget']);
66
- unset($widgets['donate_widget']);
67
-
68
- return $widgets;
69
- }*/
70
-
71
- /*public function showConfigurationWidget()
72
- {
73
- ?>
74
- <div class="wbcr-factory-sidebar-widget wbcr-factory-configuration wbcr-factory-warning wbcr-factory-hide">
75
- <p>
76
- <strong><?php _e('Make manager quiet after setting optimal configuration', 'factory_pages_324'); ?></strong>
77
- </p>
78
- <ul>
79
- <li><b>Q:</b> When I should implement this definition?</li>
80
- <li><b>A:</b> When you have 100% sure that everything works after saving final plugin configuration
81
- </li>
82
- <li><b>Q:</b> Why I should implement it?</li>
83
- <li><b>A:</b> Because a lot of HTML code is added to html body and 99% of time you won't use it.
84
- Other
85
- thing is
86
- you'll save space in top admin bar.
87
- </li>
88
- <li><b>Q:</b> Gonzales menu/panel renders only for administrator, I don't care.</li>
89
- <li><b>A:</b> It's OK but less memory is conumed and website renders a bit faster when implemented.
90
- Less
91
- it better right?
92
- </li>
93
- </ul>
94
- </div>
95
- <?php
96
- }*/
97
-
98
  /**
99
  * Permalinks options.
100
  *
@@ -104,11 +71,11 @@
104
  public function getOptions()
105
  {
106
  $options = array();
107
- $types = get_post_types(array('public' => true), 'objects');
108
- $post_types = array();
109
- foreach($types as $type_name => $type) {
110
- $post_types[] = array($type_name, $type->label);
111
- }
112
  $options[] = array(
113
  'type' => 'checkbox',
114
  'way' => 'buttons',
@@ -140,13 +107,6 @@
140
  'title' => __('Disable assets manager panel', 'gonzales'),
141
  'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
142
  'hint' => __('By default in your admin bar there is a button for control the assets scripts and styles. With this option, you can turn off the script manager on front and back-end.', 'gonzales'),
143
- /*'eventsOn' => array(
144
- 'show' => '.wbcr-factory-sidebar-widget.wbcr-factory-configuration'
145
- ),
146
- 'eventsOff' => array(
147
-
148
- 'hide' => '.wbcr-factory-sidebar-widget.wbcr-factory-configuration'
149
- ),*/
150
  'default' => false
151
  ),
152
  array(
@@ -181,5 +141,3 @@
181
  return apply_filters('wbcr_gnz_assets_manager_options', $formOptions);
182
  }
183
  }
184
-
185
- FactoryPages324::register($wbcr_gonzales_plugin, 'WbcrGnz_AssetsManagerPage');
5
  *
6
  * @since 1.0.0
7
  */
8
+
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+ class WbcrGnz_AssetsManagerPage extends Wbcr_FactoryPages400_ImpressiveThemplate {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages400_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
24
  */
25
  public $id = "gonzales";
26
+
27
+ /**
28
+ * @var string
29
+ */
30
  public $page_menu_dashicon = 'dashicons-image-filter';
 
 
31
 
32
+ /**
33
+ * @var int
34
+ */
35
  public $page_menu_position = 95;
36
 
37
  /**
38
+ * @param Wbcr_Factory400_Plugin $plugin
 
 
39
  */
40
+ public function __construct(Wbcr_Factory400_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;
48
+ } else {
49
+ $this->page_parent_page = 'performance';
50
  }
51
 
 
 
52
  parent::__construct($plugin);
53
  }
54
 
55
+ /**
56
+ * @return string|void
57
+ */
58
  public function getMenuTitle()
59
  {
60
  return defined('LOADING_GONZALES_AS_ADDON')
62
  : __('General', 'gonzales');
63
  }
64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  /**
66
  * Permalinks options.
67
  *
71
  public function getOptions()
72
  {
73
  $options = array();
74
+ $options[] = array(
75
+ 'type' => 'html',
76
+ 'html' => '<div class="wbcr-factory-page-group-header"><strong>' . __('Disable unused scripts, styles, and fonts', 'gonzales') . '</strong><p>' . __('There is a button in the adminbar called "Script Manager". If you click on it you will see a list of loaded scripts, styles and fonts on the current page of your site. If you think that one of the assets is superfluous on this page, you can disable it individually, so that it does not create unnecessary queries when page loading. Use the script manager very carefull to non-corrupt your website. We recommend to test this function at a local server.', 'gonzales') . '</p></div>'
77
+ );
78
+
79
  $options[] = array(
80
  'type' => 'checkbox',
81
  'way' => 'buttons',
107
  'title' => __('Disable assets manager panel', 'gonzales'),
108
  'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
109
  'hint' => __('By default in your admin bar there is a button for control the assets scripts and styles. With this option, you can turn off the script manager on front and back-end.', 'gonzales'),
 
 
 
 
 
 
 
110
  'default' => false
111
  ),
112
  array(
141
  return apply_filters('wbcr_gnz_assets_manager_options', $formOptions);
142
  }
143
  }
 
 
components/assets-manager/admin/pages/index.php ADDED
File without changes
components/assets-manager/admin/pages/more-features.php CHANGED
@@ -5,8 +5,12 @@
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrGnz_MoreFeaturesPage extends FactoryClearfy102_MoreFeaturesPage {
9
 
 
 
 
10
  }
11
 
12
- FactoryPages324::register($wbcr_gonzales_plugin, 'WbcrGnz_MoreFeaturesPage');
 
 
5
  *
6
  * @since 1.0.0
7
  */
 
8
 
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
  }
13
 
14
+ class WbcrGnz_MoreFeaturesPage extends Wbcr_FactoryClearfy200_MoreFeaturesPage {
15
+
16
+ }
components/assets-manager/assets/css/index.php ADDED
File without changes
components/assets-manager/assets/img/index.php ADDED
File without changes
components/assets-manager/assets/js/index.php ADDED
File without changes
components/assets-manager/gonzales.php CHANGED
@@ -4,12 +4,17 @@
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.1
8
  * Text Domain: gonzales
9
  * Domain Path: /languages/
10
  */
11
 
12
- if( defined('WBCR_GNZ_PLUGIN_ACTIVE') || (defined('WBCR_CLEARFY_PLUGIN_ACTIVE') && !defined('LOADING_GONZALES_AS_ADDON')) ) {
 
 
 
 
 
13
  function wbcr_gnz_admin_notice_error()
14
  {
15
  ?>
@@ -24,63 +29,32 @@
24
  return;
25
  } else {
26
 
27
- define('WBCR_GNZ_PLUGIN_ACTIVE', true);
28
 
29
- define('WBCR_GNZ_PLUGIN_DIR', dirname(__FILE__));
30
- define('WBCR_GNZ_PLUGIN_BASE', plugin_basename(__FILE__));
31
- define('WBCR_GNZ_PLUGIN_URL', plugins_url(null, __FILE__));
32
 
33
 
34
 
35
  if( !defined('LOADING_GONZALES_AS_ADDON') ) {
36
- require_once(WBCR_GNZ_PLUGIN_DIR . '/libs/factory/core/boot.php');
37
  }
38
 
39
- function wbcr_gnz_plugin_init()
40
- {
41
- global $wbcr_gonzales_plugin;
42
-
43
- // Localization plugin
44
- load_plugin_textdomain('gonzales', false, dirname(WBCR_GNZ_PLUGIN_BASE) . '/languages/');
45
-
46
- if( defined('LOADING_GONZALES_AS_ADDON') ) {
47
- //return;
48
- global $wbcr_clearfy_plugin;
49
- $wbcr_gonzales_plugin = $wbcr_clearfy_plugin;
50
- } else {
51
-
52
- $wbcr_gonzales_plugin = new Factory326_Plugin(__FILE__, array(
53
- 'name' => 'wbcr_gonzales',
54
- 'title' => __('Webcraftic assets manager', 'gonzales'),
55
- 'version' => '1.0.1',
56
- 'host' => 'wordpress.org',
57
- 'url' => 'https://wordpress.org/plugins/gonzales/',
58
- 'assembly' => 'free',
59
- 'updates' => WBCR_GNZ_PLUGIN_DIR . '/updates/'
60
- ));
61
 
62
- // requires factory modules
63
- $wbcr_gonzales_plugin->load(array(
64
- array('libs/factory/bootstrap', 'factory_bootstrap_330', 'admin'),
65
- array('libs/factory/forms', 'factory_forms_329', 'admin'),
66
- array('libs/factory/pages', 'factory_pages_324', 'admin'),
67
- array('libs/factory/clearfy', 'factory_clearfy_102', 'all')
68
- ));
69
- }
70
-
71
- // loading other files
72
- if( is_admin() ) {
73
- require(WBCR_GNZ_PLUGIN_DIR . '/admin/boot.php');
74
- }
75
-
76
- require(WBCR_GNZ_PLUGIN_DIR . '/includes/class.configurate-assets.php');
77
- new WbcrGnz_ConfigAssetsManager($wbcr_gonzales_plugin);
78
- }
79
-
80
- if( defined('LOADING_GONZALES_AS_ADDON') ) {
81
- wbcr_gnz_plugin_init();
82
- } else {
83
- add_action('plugins_loaded', 'wbcr_gnz_plugin_init');
84
  }
85
  }
86
 
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.3
8
  * Text Domain: gonzales
9
  * Domain Path: /languages/
10
  */
11
 
12
+ // Exit if accessed directly
13
+ if( !defined('ABSPATH') ) {
14
+ exit;
15
+ }
16
+
17
+ if( defined('WGZ_PLUGIN_ACTIVE') || (defined('WCL_PLUGIN_ACTIVE') && !defined('LOADING_GONZALES_AS_ADDON')) ) {
18
  function wbcr_gnz_admin_notice_error()
19
  {
20
  ?>
29
  return;
30
  } else {
31
 
32
+ define('WGZ_PLUGIN_ACTIVE', true);
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_GONZALES_AS_ADDON') ) {
41
+ require_once(WGZ_PLUGIN_DIR . '/libs/factory/core/boot.php');
42
  }
43
 
44
+ require_once(WGZ_PLUGIN_DIR . '/includes/class.plugin.php');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
+ if( !defined('LOADING_GONZALES_AS_ADDON') ) {
47
+ //todo: обновить опции в старом плагине на новый префикс
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.3',
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
 
components/assets-manager/includes/class.configurate-assets.php CHANGED
@@ -6,7 +6,13 @@
6
  * @copyright (c) 05.11.2017, Webcraftic
7
  * @version 1.0
8
  */
9
- class WbcrGnz_ConfigAssetsManager extends WbcrFactoryClearfy_Configurate {
 
 
 
 
 
 
10
 
11
  /**
12
  * Stores list of all available assets (used in rendering panel)
@@ -14,6 +20,15 @@
14
  * @var array
15
  */
16
  private $collection = array();
 
 
 
 
 
 
 
 
 
17
 
18
 
19
  /**
@@ -25,9 +40,9 @@
25
  return;
26
  }
27
 
28
- $on_frontend = (bool)$this->getOption('disable_assets_manager_on_front', false);
29
- $on_backend = (bool)$this->getOption('disable_assets_manager_on_backend', true);
30
- $is_panel = (bool)$this->getOption('disable_assets_manager_panel', false);
31
 
32
  if( (!is_admin() && !$on_frontend) || (is_admin() && !$on_backend) ) {
33
  add_filter('script_loader_src', array($this, 'unloadAssets'), 10, 2);
@@ -66,7 +81,10 @@
66
  add_action('admin_init', array($this, 'formSave'));
67
  }
68
  }
69
-
 
 
 
70
  function assetsManagerAdminBar($wp_admin_bar)
71
  {
72
  if( !current_user_can('manage_options') ) {
@@ -85,13 +103,12 @@
85
 
86
  function assetsManager()
87
  {
88
- global $wbcr_gonzales_plugin;
89
  if( !current_user_can('manage_options') || !isset($_GET['wbcr_assets_manager']) ) {
90
  return;
91
  }
92
 
93
  $current_url = esc_url($this->getCurrentUrl());
94
- $options = $this->getOption('manager_options', array());
95
 
96
  echo "<div id='wbcr-assets-manager-wrapper' ";
97
  if( isset($_GET['wbcr_assets_manager']) ) {
@@ -121,7 +138,7 @@
121
  $setting_page_url = !defined('LOADING_GONZALES_AS_ADDON')
122
  ? 'options-general.php'
123
  : 'admin.php';
124
- $setting_page_url .= '?page=gonzales-' . $wbcr_gonzales_plugin->pluginName;
125
  echo "<a href='" . admin_url($setting_page_url) . "' class='wbcr-hide-panel'>" . __('Hide panel in adminbar?', 'gonzales') . "</a>";
126
  echo "</div>";
127
 
@@ -286,15 +303,13 @@
286
 
287
  public function formSave()
288
  {
289
- global $wbcr_gonzales_plugin;
290
-
291
  if( isset($_GET['wbcr_assets_manager']) && isset($_POST['wbcr_assets_manager_save']) ) {
292
 
293
  if( !current_user_can('manage_options') || !wp_verify_nonce(filter_input(INPUT_POST, 'wbcr_assets_manager_save'), 'wbcr_assets_manager_nonce') ) {
294
  return false;
295
  }
296
 
297
- $options = $this->getOption('manager_options', array());
298
  $current_url = esc_url($this->getCurrentUrl());
299
 
300
  if( isset($_POST['disabled']) && !empty($_POST['disabled']) ) {
@@ -413,9 +428,9 @@
413
  }
414
  }
415
  }
416
-
417
- update_option($wbcr_gonzales_plugin->pluginName . '_manager_options', $options);
418
-
419
  // todo: test cache control
420
  if( function_exists('w3tc_pgcache_flush') ) {
421
  w3tc_pgcache_flush();
@@ -435,7 +450,7 @@
435
  ? 'js'
436
  : 'css';
437
 
438
- $options = $this->getOption('manager_options', array());
439
  $current_url = esc_url($this->getCurrentUrl());
440
 
441
  $disabled = null;
@@ -532,11 +547,9 @@
532
  */
533
  public function appendAsset()
534
  {
535
- global $wbcr_gonzales_plugin;
536
-
537
  if( current_user_can('manage_options') && isset($_GET['wbcr_assets_manager']) ) {
538
- wp_enqueue_style('wbcr-assets-manager', WBCR_GNZ_PLUGIN_URL . '/assets/css/assets-manager.css', array(), $wbcr_gonzales_plugin->version);
539
- wp_enqueue_script('wbcr-assets-manager', WBCR_GNZ_PLUGIN_URL . '/assets/js/assets-manager.js', array(), $wbcr_gonzales_plugin->version, true);
540
  }
541
  }
542
 
6
  * @copyright (c) 05.11.2017, Webcraftic
7
  * @version 1.0
8
  */
9
+
10
+ // Exit if accessed directly
11
+ if( !defined('ABSPATH') ) {
12
+ exit;
13
+ }
14
+
15
+ class WbcrGnz_ConfigAssetsManager extends Wbcr_FactoryClearfy200_Configurate {
16
 
17
  /**
18
  * Stores list of all available assets (used in rendering panel)
20
  * @var array
21
  */
22
  private $collection = array();
23
+
24
+ /**
25
+ * @param Wbcr_Factory400_Plugin $plugin
26
+ */
27
+ public function __construct(Wbcr_Factory400_Plugin $plugin)
28
+ {
29
+ parent::__construct($plugin);
30
+ $this->plugin = $plugin;
31
+ }
32
 
33
 
34
  /**
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);
81
  add_action('admin_init', array($this, 'formSave'));
82
  }
83
  }
84
+
85
+ /**
86
+ * @param WP_Admin_Bar $wp_admin_bar
87
+ */
88
  function assetsManagerAdminBar($wp_admin_bar)
89
  {
90
  if( !current_user_can('manage_options') ) {
103
 
104
  function assetsManager()
105
  {
 
106
  if( !current_user_can('manage_options') || !isset($_GET['wbcr_assets_manager']) ) {
107
  return;
108
  }
109
 
110
  $current_url = esc_url($this->getCurrentUrl());
111
+ $options = $this->getOption('assets_manager_options', array());
112
 
113
  echo "<div id='wbcr-assets-manager-wrapper' ";
114
  if( isset($_GET['wbcr_assets_manager']) ) {
138
  $setting_page_url = !defined('LOADING_GONZALES_AS_ADDON')
139
  ? 'options-general.php'
140
  : 'admin.php';
141
+ $setting_page_url .= '?page=gonzales-' . $this->plugin->getPluginName();
142
  echo "<a href='" . admin_url($setting_page_url) . "' class='wbcr-hide-panel'>" . __('Hide panel in adminbar?', 'gonzales') . "</a>";
143
  echo "</div>";
144
 
303
 
304
  public function formSave()
305
  {
 
 
306
  if( isset($_GET['wbcr_assets_manager']) && isset($_POST['wbcr_assets_manager_save']) ) {
307
 
308
  if( !current_user_can('manage_options') || !wp_verify_nonce(filter_input(INPUT_POST, 'wbcr_assets_manager_save'), 'wbcr_assets_manager_nonce') ) {
309
  return false;
310
  }
311
 
312
+ $options = $this->getOption('assets_manager_options', array());
313
  $current_url = esc_url($this->getCurrentUrl());
314
 
315
  if( isset($_POST['disabled']) && !empty($_POST['disabled']) ) {
428
  }
429
  }
430
  }
431
+
432
+ $this->updateOption('assets_manager_options', $options);
433
+
434
  // todo: test cache control
435
  if( function_exists('w3tc_pgcache_flush') ) {
436
  w3tc_pgcache_flush();
450
  ? 'js'
451
  : 'css';
452
 
453
+ $options = $this->getOption('assets_manager_options', array());
454
  $current_url = esc_url($this->getCurrentUrl());
455
 
456
  $disabled = null;
547
  */
548
  public function appendAsset()
549
  {
 
 
550
  if( current_user_can('manage_options') && isset($_GET['wbcr_assets_manager']) ) {
551
+ wp_enqueue_style('wbcr-assets-manager', WGZ_PLUGIN_URL . '/assets/css/assets-manager.css', array(), $this->plugin->getPluginVersion());
552
+ wp_enqueue_script('wbcr-assets-manager', WGZ_PLUGIN_URL . '/assets/js/assets-manager.js', array(), $this->plugin->getPluginVersion(), true);
553
  }
554
  }
555
 
components/assets-manager/includes/class.plugin.php ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Hide my wp 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
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
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_Factory400_Plugin {
23
+
24
+ }
25
+ }
26
+ }
27
+
28
+ class WGZ_Plugin extends WGZ_PluginFactory {
29
+
30
+ /**
31
+ * @var Wbcr_Factory400_Plugin
32
+ */
33
+ private static $app;
34
+
35
+ /**
36
+ * @var bool
37
+ */
38
+ private $as_addon;
39
+
40
+ /**
41
+ * @param string $plugin_path
42
+ * @param array $data
43
+ * @throws Exception
44
+ */
45
+ public function __construct($plugin_path, $data)
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_Factory400_Plugin) ) {
55
+ throw new Exception('An invalid instance of the class was passed.');
56
+ }
57
+
58
+ self::$app = $plugin_parent;
59
+ } else {
60
+ self::$app = $this;
61
+ }
62
+
63
+ if( !$this->as_addon ) {
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_Factory400_Plugin
80
+ */
81
+ public static function app()
82
+ {
83
+ return self::$app;
84
+ }
85
+
86
+ protected function setTextDomain()
87
+ {
88
+ // Localization plugin
89
+ load_plugin_textdomain('gonzales', false, dirname(WGZ_PLUGIN_BASE) . '/languages/');
90
+ }
91
+
92
+ protected function setModules()
93
+ {
94
+ if( !$this->as_addon ) {
95
+ self::app()->load(array(
96
+ array('libs/factory/bootstrap', 'factory_bootstrap_400', 'admin'),
97
+ array('libs/factory/forms', 'factory_forms_400', 'admin'),
98
+ array('libs/factory/pages', 'factory_pages_400', 'admin'),
99
+ array('libs/factory/clearfy', 'factory_clearfy_200', 'all')
100
+ ));
101
+ }
102
+ }
103
+
104
+ private function registerPages()
105
+ {
106
+ $admin_path = WGZ_PLUGIN_DIR . '/admin/pages';
107
+ self::app()->registerPage('WbcrGnz_AssetsManagerPage', $admin_path . '/assets-manager.php');
108
+
109
+ if( !$this->as_addon ) {
110
+ self::app()->registerPage('WbcrGnz_MoreFeaturesPage', $admin_path . '/more-features.php');
111
+ }
112
+ }
113
+
114
+ private function adminScripts()
115
+ {
116
+ require(WGZ_PLUGIN_DIR . '/admin/boot.php');
117
+ $this->registerPages();
118
+ }
119
+
120
+ private function globalScripts()
121
+ {
122
+ require(WGZ_PLUGIN_DIR . '/includes/class.configurate-assets.php');
123
+ new WbcrGnz_ConfigAssetsManager(self::$app);
124
+ }
125
+ /*public function pluginsLoaded()
126
+ {
127
+
128
+ }*/
129
+ }
130
+ }
components/assets-manager/includes/index.php ADDED
File without changes
components/assets-manager/index.php ADDED
File without changes
components/assets-manager/languages/gonzales-fr_FR.mo DELETED
Binary file
components/assets-manager/languages/gonzales-fr_FR.po DELETED
@@ -1,171 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2017-11-16 09:39+0300\n"
5
- "PO-Revision-Date: 2017-11-17 13:22+0100\n"
6
- "Last-Translator: Robert <soutien@bestgoodeal.eu>\n"
7
- "Language-Team: Russian\n"
8
- "Language: fr_FR\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.0.4\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
- "Report-Msgid-Bugs-To: \n"
19
- "X-Poedit-SearchPath-0: .\n"
20
- "X-Poedit-SearchPathExcluded-0: libs\n"
21
-
22
- #: admin/pages/assets-manager.php:50
23
- msgid "Comments"
24
- msgstr "Commentaires"
25
-
26
- #: gonzales.php:82
27
- msgid "Webcraftic assets cleanup"
28
- msgstr "Nettoyage des actifs webcraftic"
29
-
30
- #: admin/pages/assets-manager.php:33
31
- msgid "Webcraftic Assets manager"
32
- msgstr "Gestionnaire d'actifs webcraftic"
33
-
34
- #: admin/pages/assets-manager.php:51
35
- msgid "General"
36
- msgstr "Général"
37
-
38
- #: admin/pages/assets-manager.php:116
39
- msgid "Disable assets manager"
40
- msgstr "Désactiver le gestionnaire d'actifs"
41
-
42
- #: admin/pages/assets-manager.php:118
43
- msgid "Full disable of the module."
44
- msgstr "Désactivation complète du module."
45
-
46
- #: admin/pages/assets-manager.php:140
47
- msgid "Disable assets manager panel"
48
- msgstr "Désactiver le panneau gestion des actifs"
49
-
50
- #: admin/pages/assets-manager.php:142
51
- msgid ""
52
- "By default in your admin bar there is a button for control the assets "
53
- "scripts and styles. With this option, you can turn off the script manager on "
54
- "front and back-end."
55
- msgstr ""
56
- "Par défaut dans votre barre d'administration il y a un bouton pour contrôler "
57
- "les scripts et les styles des actifs. Avec cette option, vous pouvez "
58
- "désactiver le gestionnaire de scripts à l'avant et back-end."
59
-
60
- #: admin/pages/assets-manager.php:156
61
- msgid "Disable assets manager on front"
62
- msgstr "Désactiver le gestionnaire d'actifs à l'avant"
63
-
64
- #: admin/pages/assets-manager.php:158
65
- msgid "Disables assets manager initialization for frontend."
66
- msgstr "Initialisation du gestionnaire d'actifs désactivés pour le frontend."
67
-
68
- #: admin/pages/assets-manager.php:165
69
- msgid "Disable assets manager on back-end"
70
- msgstr "Désactiver le gestionnaire d'actifs sur back-end"
71
-
72
- #: admin/pages/assets-manager.php:167
73
- msgid "Disables assets manager initialization for backend."
74
- msgstr "Initialisation du gestionnaire d'actifs désactivés pour backend."
75
-
76
- #: gonzales.php:17
77
- msgid ""
78
- "We found that you use the plugin \"Clearfy - disable unused functions\", "
79
- "this plugin already has the same functions as \"WP Asset CleanUp\", so you "
80
- "can disable the \"WP Asset CleanUp\" plugin!"
81
- msgstr ""
82
- "Nous avons constaté que vous utilisez le plugin \"Clearfy-désactiver les "
83
- "fonctions inutilisées\", ce plugin a déjà les mêmes fonctions que \"WP Asset "
84
- "Cleanup\", de sorte que vous pouvez désactiver le \"WP Asset Cleanup\" "
85
- "plugin!"
86
-
87
- #: plugin/includes/class.configurate-assets.php:80
88
- msgid "Script Manager"
89
- msgstr "Gestionnaire de scripts"
90
-
91
- #: plugin/includes/class.configurate-assets.php:106
92
- msgid "Assets manager"
93
- msgstr "Gestionnaire d'actifs"
94
-
95
- #: plugin/includes/class.configurate-assets.php:108
96
- msgid ""
97
- "Below you can disable/enable CSS and JS files on a per page/post basis, as "
98
- "well as by custom post types. We recommend testing this locally or on a "
99
- "staging site first, as you could break the appearance of your live site. If "
100
- "you aren't sure about a certain script, you can try clicking on it, as a lot "
101
- "of authors will mention their plugin or theme in the header of the source "
102
- "code."
103
- msgstr ""
104
- "Ci-dessous vous pouvez désactiver/activer les fichiers CSS et JS sur une "
105
- "base par page/post, ainsi que par les types de postes personnalisés. Nous "
106
- "vous recommandons de tester cela localement ou sur un site de mise en scène "
107
- "d'abord, comme vous pourriez rompre l'apparence de votre site en direct. Si "
108
- "vous n'êtes pas sûr d'un certain script, vous pouvez essayer de cliquer "
109
- "dessus, comme beaucoup d'auteurs mentionneront leur plugin ou thème dans "
110
- "l'en-tête du code source."
111
-
112
- #: plugin/includes/class.configurate-assets.php:109
113
- msgid ""
114
- "If for some reason you run into trouble, you can always enable everything "
115
- "again to reset the settings."
116
- msgstr ""
117
- "Si pour une raison quelconque vous avez des problèmes, vous pouvez toujours "
118
- "activer tout à nouveau pour réinitialiser les paramètres."
119
-
120
- #: plugin/includes/class.configurate-assets.php:118
121
- msgid "Save settings"
122
- msgstr "Enregistrer les paramètres"
123
-
124
- #: plugin/includes/class.configurate-assets.php:124
125
- msgid "Hide panel in adminbar?"
126
- msgstr "Masquer le panneau dans la barre d'administration?"
127
-
128
- #: plugin/includes/class.configurate-assets.php:135
129
- msgid "State"
130
- msgstr "État"
131
-
132
- #: plugin/includes/class.configurate-assets.php:136
133
- msgid "Size"
134
- msgstr "Taille"
135
-
136
- #: plugin/includes/class.configurate-assets.php:137
137
- msgid "Script"
138
- msgstr "Script"
139
-
140
- #: plugin/includes/class.configurate-assets.php:138
141
- msgid "In use"
142
- msgstr "En cours d'utilisation"
143
-
144
- #: plugin/includes/class.configurate-assets.php:139
145
- msgid "Disable"
146
- msgstr "Désactivé"
147
-
148
- #: plugin/includes/class.configurate-assets.php:140
149
- msgid "Enable"
150
- msgstr "Activez"
151
-
152
- #: plugin/includes/class.configurate-assets.php:187
153
- msgid "In use by"
154
- msgstr "Utilisé par"
155
-
156
- #: plugin/includes/class.configurate-assets.php:214
157
- msgid "Enabled"
158
- msgstr "Activée"
159
-
160
- #: plugin/includes/class.configurate-assets.php:219
161
- msgid "Everywhere"
162
- msgstr "Partout"
163
-
164
- #: plugin/includes/class.configurate-assets.php:226
165
- #: plugin/includes/class.configurate-assets.php:249
166
- msgid "Current URL"
167
- msgstr "URL actuelle"
168
-
169
- #: plugin/includes/class.configurate-assets.php:235
170
- msgid "Disable everwhere to view enable settings."
171
- msgstr "Désactivez partout pour afficher les paramètres d'activation."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
components/assets-manager/languages/gonzales-ru_RU.mo CHANGED
Binary file
components/assets-manager/languages/gonzales-ru_RU.po CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2017-11-16 09:47+0300\n"
5
- "PO-Revision-Date: 2017-11-16 13: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"
@@ -18,32 +18,66 @@ msgstr ""
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPathExcluded-0: libs\n"
20
 
21
- #: admin/pages/assets-manager.php:33
22
- #: plugin/includes/class.configurate-assets.php:106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  msgid "Assets manager"
24
  msgstr "Менеджер скриптов"
25
 
26
- #: admin/pages/assets-manager.php:49
27
- msgid "Comments"
28
- msgstr ""
29
-
30
- #: admin/pages/assets-manager.php:50
31
  msgid "General"
32
  msgstr "Основные"
33
 
34
- #: admin/pages/assets-manager.php:115
35
- msgid "Disable assets manager"
36
- msgstr "Отключить менеджер скриптов"
37
 
38
- #: admin/pages/assets-manager.php:117
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  msgid "Full disable of the module."
40
  msgstr "Полностью отключает работу модуля."
41
 
42
- #: admin/pages/assets-manager.php:139
43
- msgid "Disable assets manager panel"
44
- msgstr "Скрыть панель в админбаре"
45
-
46
- #: admin/pages/assets-manager.php:141
47
  msgid ""
48
  "By default in your admin bar there is a button for control the assets "
49
  "scripts and styles. With this option, you can turn off the script manager on "
@@ -53,41 +87,33 @@ msgstr ""
53
  "скриптами и стилями. Используя эту настроку вы можете скрыть эту панель из "
54
  "админбара, чтобы она не занимала место."
55
 
56
- #: admin/pages/assets-manager.php:155
57
- msgid "Disable assets manager on front"
58
- msgstr "Отключить менеджер скриптов на внешней стороне сайта"
59
-
60
- #: admin/pages/assets-manager.php:157
61
  msgid "Disables assets manager initialization for frontend."
62
  msgstr "Отключает инициализацию менеджера лицензий на внешней стороне сайта."
63
 
64
- #: admin/pages/assets-manager.php:164
65
- msgid "Disable assets manager on back-end"
66
- msgstr "Отключить менеджер скриптов в админпанели"
67
-
68
- #: admin/pages/assets-manager.php:166
69
  msgid "Disables assets manager initialization for backend."
70
  msgstr "Отключает инициализацию менеджера лицензий в админпанели сайта."
71
 
72
- #: gonzales.php:17
73
  msgid ""
74
  "We found that you use the plugin \"Clearfy - disable unused functions\", "
75
- "this plugin already has the same functions as \"WP Asset CleanUp\", so you "
76
- "can disable the \"WP Asset CleanUp\" plugin!"
77
  msgstr ""
78
  "Мы обнаружили, что вы используете плагин \"Clearfy - disable unused features"
79
  "\", этот плагин включает функционал \"WP Asset CleanUp\", вы можете "
80
- "деактивировать плагин \"WP Asset CleanUp\"!"
81
 
82
- #: gonzales.php:82
83
  msgid "Webcraftic assets manager"
84
  msgstr "Webcraftic менеджер скриптов"
85
 
86
- #: plugin/includes/class.configurate-assets.php:80
87
  msgid "Script Manager"
88
  msgstr "Менеджер скриптов"
89
 
90
- #: plugin/includes/class.configurate-assets.php:108
91
  msgid ""
92
  "Below you can disable/enable CSS and JS files on a per page/post basis, as "
93
  "well as by custom post types. We recommend testing this locally or on a "
@@ -107,7 +133,7 @@ msgstr ""
107
  "функциях плагина, вы сможете более уверенно включать или отключать его стили "
108
  "и скрипты."
109
 
110
- #: plugin/includes/class.configurate-assets.php:109
111
  msgid ""
112
  "If for some reason you run into trouble, you can always enable everything "
113
  "again to reset the settings."
@@ -115,60 +141,69 @@ msgstr ""
115
  "Если по какой-то причине вы столкнулись с проблемами, вы всегда можете "
116
  "включить все опции, чтобы сбросить настройки."
117
 
118
- #: plugin/includes/class.configurate-assets.php:118
119
  msgid "Save settings"
120
  msgstr "Сохранить"
121
 
122
- #: plugin/includes/class.configurate-assets.php:124
123
  msgid "Hide panel in adminbar?"
124
  msgstr "Скрыть панель из админбара?"
125
 
126
- #: plugin/includes/class.configurate-assets.php:135
127
  msgid "State"
128
  msgstr "Состояние"
129
 
130
- #: plugin/includes/class.configurate-assets.php:136
131
  msgid "Size"
132
  msgstr "Размер"
133
 
134
- #: plugin/includes/class.configurate-assets.php:137
135
  msgid "Script"
136
  msgstr "Скрипт"
137
 
138
- #: plugin/includes/class.configurate-assets.php:138
139
  msgid "In use"
140
  msgstr "Используется"
141
 
142
- #: plugin/includes/class.configurate-assets.php:139
143
  msgid "Disable"
144
  msgstr "Отключить"
145
 
146
- #: plugin/includes/class.configurate-assets.php:140
147
  msgid "Enable"
148
  msgstr "Включить"
149
 
150
- #: plugin/includes/class.configurate-assets.php:187
151
  msgid "In use by"
152
  msgstr "Используется "
153
 
154
- #: plugin/includes/class.configurate-assets.php:214
155
  msgid "Enabled"
156
  msgstr "Включить"
157
 
158
- #: plugin/includes/class.configurate-assets.php:219
159
  msgid "Everywhere"
160
  msgstr "Повсюду"
161
 
162
- #: plugin/includes/class.configurate-assets.php:226
163
- #: plugin/includes/class.configurate-assets.php:249
164
  msgid "Current URL"
165
  msgstr "Текущий URL"
166
 
167
- #: plugin/includes/class.configurate-assets.php:235
168
  msgid "Disable everwhere to view enable settings."
169
  msgstr ""
170
  "Нужно включить опцию \"повсюду\", чтобы увидеть дополнительные настройки."
171
 
 
 
 
 
 
 
 
 
 
172
  #~ msgid "Webcraftic Assets manager"
173
  #~ msgstr "Webcraftic менеджер скриптов"
174
 
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"
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 "
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 "
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."
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
 
components/assets-manager/languages/index.php ADDED
File without changes
components/assets-manager/uninstall.php CHANGED
@@ -9,4 +9,5 @@
9
  global $wpdb;
10
 
11
  $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_gonzales_%';");
 
12
 
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
 
components/assets-manager/updates/010003.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 WGZUpdate010003 extends Wbcr_Factory400_Update {
8
+
9
+ public function install()
10
+ {
11
+ global $wpdb;
12
+
13
+ $request = $wpdb->get_results("SELECT option_id, option_name, option_value FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_gonzales_%'");
14
+
15
+ if( !empty($request) ) {
16
+ foreach($request as $option) {
17
+ $option_new_name = str_replace('wbcr_gonzales_', WGZ_Plugin::app()
18
+ ->getPrefix(), $option->option_name);
19
+ if( !get_option($option_new_name, false) ) {
20
+ $wpdb->query("UPDATE {$wpdb->prefix}options SET option_name='$option_new_name' WHERE option_id='{$option->option_id}'");
21
+ } else {
22
+ delete_option($option->option_name);
23
+ }
24
+ }
25
+ }
26
+ }
27
+ }
components/assets-manager/updates/index.php ADDED
File without changes
components/comments-plus/admin/assets/css/general.css CHANGED
@@ -25,10 +25,10 @@
25
  #WBCR .wbcr-clearfy-header {
26
  padding: 20px 20px 40px;
27
  }
28
- #WBCR .factory-bootstrap-330 label {
29
  font-weight: normal;
30
  }
31
- #WBCR .factory-bootstrap-330 .form-horizontal .control-label {
32
  max-width: 300px;
33
  }
34
  #WBCR .factory-control-buttons {
25
  #WBCR .wbcr-clearfy-header {
26
  padding: 20px 20px 40px;
27
  }
28
+ #WBCR .factory-bootstrap-400 label {
29
  font-weight: normal;
30
  }
31
+ #WBCR .factory-bootstrap-400 .form-horizontal .control-label {
32
  max-width: 300px;
33
  }
34
  #WBCR .factory-control-buttons {
components/comments-plus/admin/assets/css/index.php ADDED
File without changes
components/comments-plus/admin/assets/index.php ADDED
File without changes
components/comments-plus/admin/assets/js/index.php ADDED
File without changes
components/comments-plus/admin/boot.php CHANGED
@@ -6,15 +6,14 @@
6
  * @version 1.0
7
  */
8
 
9
- require(WBCR_CMP_PLUGIN_DIR . '/admin/pages/comments.php');
10
-
11
- if( !defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
12
- require(WBCR_CMP_PLUGIN_DIR . '/admin/pages/more-features.php');
13
  }
14
 
15
  function wbcr_cmp_rating_widget_url($page_url, $plugin_name)
16
  {
17
- if( $plugin_name == 'wbcr_comments_plus' ) {
18
  return 'https://goo.gl/v4QkW5';
19
  }
20
 
@@ -76,7 +75,7 @@
76
 
77
  function wbcr_cmp_set_plugin_meta($links, $file)
78
  {
79
- if( $file == WBCR_CMP_PLUGIN_BASE ) {
80
  $links[] = '<a href="https://goo.gl/TcMcS4" style="color: #FF5722;font-weight: bold;" target="_blank">' . __('Get ultimate plugin free', 'comments-plus') . '</a>';
81
  }
82
 
6
  * @version 1.0
7
  */
8
 
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
 
12
  }
13
 
14
  function wbcr_cmp_rating_widget_url($page_url, $plugin_name)
15
  {
16
+ if( $plugin_name == WCM_Plugin::app()->getPluginName() ) {
17
  return 'https://goo.gl/v4QkW5';
18
  }
19
 
75
 
76
  function wbcr_cmp_set_plugin_meta($links, $file)
77
  {
78
+ if( $file == WCM_PLUGIN_BASE ) {
79
  $links[] = '<a href="https://goo.gl/TcMcS4" style="color: #FF5722;font-weight: bold;" target="_blank">' . __('Get ultimate plugin free', 'comments-plus') . '</a>';
80
  }
81
 
components/comments-plus/admin/index.php ADDED
File without changes
components/comments-plus/admin/pages/comments.php CHANGED
@@ -1,203 +1,54 @@
1
  <?php
2
-
3
  /**
4
  * The page Settings.
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrCmp_CommentsPage extends FactoryPages324_ImpressiveThemplate {
9
-
 
 
 
 
 
 
10
  /**
11
  * The id of the page in the admin menu.
12
  *
13
  * Mainly used to navigate between pages.
14
- * @see FactoryPages324_AdminPage
15
  *
16
  * @since 1.0.0
17
  * @var string
18
  */
19
  public $id = "comments";
20
  public $page_menu_dashicon = 'dashicons-testimonial';
21
-
22
- public function __construct(Factory326_Plugin $plugin)
 
 
 
23
  {
24
- $this->menuTitle = __('Disable comments', 'comments-plus');
25
-
26
  if( !defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
27
  $this->internal = false;
28
- $this->menuTarget = 'options-general.php';
29
- $this->addLinkToPluginActions = true;
30
  }
31
-
32
- add_filter('wbcr_factory_imppage_actions_notice', array($this, 'actionsNotice'), 10, 2);
33
-
34
  parent::__construct($plugin);
35
  }
36
-
37
  public function getMenuTitle()
38
  {
39
  return defined('LOADING_COMMENTS_PLUS_AS_ADDON')
40
  ? __('Comments', 'comments-plus')
41
  : __('General', 'comments-plus');
42
  }
43
-
44
- /**
45
- * We register notifications for some actions
46
- * @param $notices
47
- * @return array
48
- */
49
- public function actionsNotice($notices, $plugin)
50
- {
51
- global $wbcr_comments_plus_plugin;
52
-
53
- if( $wbcr_comments_plus_plugin->pluginName != $plugin->pluginName ) {
54
- return $notices;
55
- }
56
-
57
- $notices[] = array(
58
- 'conditions' => array(
59
- 'wbcr_cmp_clear_comments' => 1
60
- ),
61
- 'type' => 'success',
62
- 'message' => __('All comments have been deleted.', 'factory_pages_324')
63
- );
64
-
65
- $notices[] = array(
66
- 'conditions' => array(
67
- 'wbcr_cmp_clear_comments_error' => 1,
68
- 'wbcr_cmp_code' => 'interal_error'
69
- ),
70
- 'type' => 'danger',
71
- 'message' => __('An error occurred while trying to delete comments. Internal error occured. Please try again later.', 'factory_pages_324')
72
- );
73
-
74
- return $notices;
75
- }
76
-
77
- public function clearCommentsAction()
78
- {
79
- global $wpdb;
80
- $comments_type = isset($_GET['wbcr_cmp_comments_type'])
81
- ? sanitize_text_field($_GET['wbcr_cmp_comments_type'])
82
- : null;
83
-
84
- if( empty($comments_type) ) {
85
- wp_die(__('You are not allowed to view this page.', 'comments-plus'));
86
- }
87
-
88
- $get_all_selected_types = $this->getOption('disable_comments_for_post_types');
89
- $post_types = explode(',', $get_all_selected_types);
90
-
91
- $sql = "SELECT count(comment_id) from $wpdb->comments";
92
-
93
- if( $comments_type == 'certain_post_types' ) {
94
- if( empty($post_types) ) {
95
- wp_die(__('You do not have the selected post types!', 'comments-plus'));
96
- }
97
-
98
- $post_types_str = '';
99
- foreach($post_types as $type_name) {
100
- $post_types_str .= "'" . $type_name . "',";
101
- }
102
- $post_types_str = rtrim($post_types_str, ',');
103
-
104
- $sql = "SELECT SUM(comment_count) from $wpdb->posts WHERE post_type in ($post_types_str)";
105
- }
106
-
107
- $comments_count = $wpdb->get_var($sql);
108
-
109
- if( $comments_count <= 0 ) {
110
- wp_die(__('No comments available for deletion.', 'comments-plus'));
111
- }
112
-
113
- if( $comments_type == 'all' ) {
114
- $this->confirmPageTemplate(array(
115
- 'title' => __('Are you sure that you desire to delete all comments from the database?', 'comments-plus'),
116
- 'description' => __('Deleting comments will remove existing comment entries in the database and cannot be reverted without a database backup.', 'comments-plus'),
117
- 'hint' => sprintf(__('You have %s comments', 'comments-plus'), $comments_count),
118
- 'actions' => array(
119
- 'onp_confirm' => array(
120
- 'class' => 'btn btn-danger',
121
- 'title' => __("Yes, I'm sure", 'comments-plus'),
122
- 'url' => $this->getActionUrl('clearComments', array(
123
- 'wbcr_cmp_comments_type' => 'all',
124
- 'wbcr_cmp_confirmed' => true
125
- ))
126
- ),
127
- 'onp_cancel' => array(
128
- 'class' => 'btn btn-default',
129
- 'title' => __("No, return back", 'comments-plus'),
130
- 'url' => $this->getActionUrl('index')
131
- ),
132
- )
133
- ));
134
-
135
- if( isset($_GET['wbcr_cmp_confirmed']) ) {
136
- if( $wpdb->query("TRUNCATE $wpdb->commentmeta") != false ) {
137
- if( $wpdb->query("TRUNCATE $wpdb->comments") != false ) {
138
- $wpdb->query("UPDATE $wpdb->posts SET comment_count = 0 WHERE post_author != 0");
139
- $wpdb->query("OPTIMIZE TABLE $wpdb->commentmeta");
140
- $wpdb->query("OPTIMIZE TABLE $wpdb->comments");
141
-
142
- $this->redirectToAction('index', array(
143
- 'wbcr_cmp_clear_comments' => '1'
144
- ));
145
- } else {
146
- $this->redirectToAction('index', array(
147
- 'wbcr_cmp_clear_comments_error' => '1',
148
- 'wbcr_cmp_code' => 'interal_error',
149
- ));
150
- }
151
- } else {
152
- $this->redirectToAction('index', array(
153
- 'wbcr_cmp_clear_comments_error' => '1',
154
- 'wbcr_cmp_code' => 'interal_error',
155
- ));
156
- }
157
- }
158
-
159
- return;
160
- }
161
-
162
- $this->confirmPageTemplate(array(
163
- 'title' => sprintf(__('Are you sure that you desire to delete all comments from the database for the selected post types (%s)?', 'comments-plus'), implode(',', $post_types)),
164
- 'description' => __('Deleting comments will remove existing comment entries in the database and cannot be reverted without a database backup.', 'comments-plus'),
165
- 'hint' => sprintf(__('You have %s comments', 'comments-plus'), $comments_count),
166
- 'actions' => array(
167
- 'onp_confirm' => array(
168
- 'class' => 'btn btn-danger',
169
- 'title' => __("Yes, I'm sure", 'comments-plus'),
170
- 'url' => $this->getActionUrl('clearComments', array(
171
- 'wbcr_cmp_comments_type' => 'certain_post_types',
172
- 'wbcr_cmp_confirmed' => true
173
- ))
174
- ),
175
- 'onp_cancel' => array(
176
- 'class' => 'btn btn-default',
177
- 'title' => __("No, return back", 'comments-plus'),
178
- 'url' => $this->getActionUrl('index')
179
- ),
180
- )
181
- ));
182
-
183
- if( isset($_GET['wbcr_cmp_confirmed']) ) {
184
- // Loop through post_types and remove comments/meta and set posts comment_count to 0
185
- foreach($post_types as $delete_post_type) {
186
- $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'");
187
- $wpdb->query("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'");
188
- $wpdb->query("UPDATE $wpdb->posts SET comment_count = 0 WHERE post_author != 0 AND post_type = '$delete_post_type'");
189
- }
190
-
191
- $wpdb->query("OPTIMIZE TABLE $wpdb->commentmeta");
192
- $wpdb->query("OPTIMIZE TABLE $wpdb->comments");
193
-
194
- $this->redirectToAction('index', array(
195
- 'wbcr_cmp_clear_comments' => '1'
196
- ));
197
- }
198
- }
199
-
200
-
201
  /**
202
  * Permalinks options.
203
  *
@@ -207,12 +58,18 @@
207
  public function getOptions()
208
  {
209
  $options = array();
 
 
 
 
 
 
210
  $types = get_post_types(array('public' => true), 'objects');
211
  $post_types = array();
212
  foreach($types as $type_name => $type) {
213
  $post_types[] = array($type_name, $type->label);
214
  }
215
-
216
  $options[] = array(
217
  'type' => 'dropdown',
218
  'name' => 'disable_comments',
@@ -223,12 +80,12 @@
223
  array(
224
  'disable_comments',
225
  __('Everywhere', 'comments-plus'),
226
- sprintf(__('You can delete all comments in the database by clicking on this link (<a href="%s">cleaning comments in database</a>).', 'comments-plus'), $this->getActionUrl('clearComments', array('wbcr_cmp_comments_type' => 'all')))
227
  ),
228
  array(
229
  'disable_certain_post_types_comments',
230
  __('On certain post types', 'comments-plus'),
231
- sprintf(__('You can delete all comments for the selected post types. Select the post types below and save the settings. After that, click the link (<a href="%s">delete all comments for the selected post types in database</a>).', 'comments-plus'), $this->getActionUrl('clearComments', array('wbcr_cmp_comments_type' => 'certain_post_types')))
232
  )
233
  ),
234
  'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
@@ -236,18 +93,18 @@
236
  'default' => 'enable_comments',
237
  'events' => array(
238
  'disable_certain_post_types_comments' => array(
239
- 'show' => '.factory-control-disable_comments_for_post_types, .factory-control-remove_x_pingback, .factory-control-comment_text_convert_links_pseudo, .factory-control-pseudo_comment_author_link, .factory-control-remove_url_from_comment_form'
240
  ),
241
  'enable_comments' => array(
242
- 'show' => '.factory-control-remove_x_pingback, .factory-control-comment_text_convert_links_pseudo, .factory-control-pseudo_comment_author_link, .factory-control-remove_url_from_comment_form',
243
  'hide' => '.factory-control-disable_comments_for_post_types'
244
  ),
245
  'disable_comments' => array(
246
- 'hide' => '.factory-control-disable_comments_for_post_types, .factory-control-remove_x_pingback, .factory-control-comment_text_convert_links_pseudo, .factory-control-pseudo_comment_author_link, .factory-control-remove_url_from_comment_form'
247
  )
248
  )
249
  );
250
-
251
  $options[] = array(
252
  'type' => 'list',
253
  'way' => 'checklist',
@@ -260,55 +117,60 @@
260
  );
261
 
262
  $options[] = array(
263
- 'type' => 'checkbox',
264
- 'way' => 'buttons',
265
- 'name' => 'remove_url_from_comment_form',
266
- 'title' => __('Remove field "site" in comment form', 'comments-plus'),
267
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
268
- 'hint' => __('Tired of spam in the comments? Do visitors leave "blank" comments for the sake of a link to their site?', 'comments-plus') . '<br><b>Clearfy: </b>' . __('Removes the "Site" field from the comment form.', 'comments-plus') . '<br>--<br><span class="hint-warnign-color"> *' . __('Works with the standard comment form, if the form is manually written in your theme-it probably will not work!', 'comments-plus') . '</span>',
269
- 'default' => false
270
- );
271
-
272
- $options[] = array(
273
- 'type' => 'checkbox',
274
- 'way' => 'buttons',
275
- 'name' => 'comment_text_convert_links_pseudo',
276
- 'title' => __('Replace external links in comments on the JavaScript code', 'comments-plus') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'comments-plus') . ')</span>',
277
- 'layout' => array('hint-type' => 'icon'),
278
- 'hint' => __('Superfluous external links from comments, which can be typed from a dozen and more for one article, do not bring anything good for promotion.', 'comments-plus') . '<br><br><b>Clearfy: </b>' . sprintf(__('Replaces the links of this kind of %s, on links of this kind %s', 'comments-plus'), '<code>a href="http://yourdomain.com" rel="nofollow"</code>', '<code>span data-uri="http://yourdomain.com"</code>'),
279
- 'default' => false
280
- );
281
-
282
- $options[] = array(
283
- 'type' => 'checkbox',
284
- 'way' => 'buttons',
285
- 'name' => 'pseudo_comment_author_link',
286
- 'title' => __('Replace external links from comment authors on the JavaScript code', 'comments-plus') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'comments-plus') . ')</span>',
287
- 'layout' => array('hint-type' => 'icon'),
288
- '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>',
289
- 'default' => false
290
- );
291
-
292
- $options[] = array(
293
- 'type' => 'checkbox',
294
- 'way' => 'buttons',
295
- 'name' => 'remove_x_pingback',
296
- 'title' => __('Disable XML-RPC', 'clearfy') . ' <span class="wbcr-clearfy-recomended-text">(' . __('Recommended', 'comments-plus') . ')</span>',
297
- 'layout' => array('hint-type' => 'icon'),
298
- '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'),
299
- 'default' => false
 
 
 
 
 
 
 
300
  );
301
 
302
  $formOptions = array();
303
-
304
  $formOptions[] = array(
305
  'type' => 'form-group',
306
  'items' => $options,
307
  //'cssClass' => 'postbox'
308
  );
309
-
310
  return apply_filters('wbcr_cmp_comments_form_options', $formOptions);
311
  }
312
- }
313
-
314
- FactoryPages324::register($wbcr_comments_plus_plugin, 'WbcrCmp_CommentsPage');
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 WbcrCmp_CommentsPage extends Wbcr_FactoryPages400_ImpressiveThemplate {
15
+
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages400_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_Factory400_Plugin $plugin
30
+ */
31
+ public function __construct(Wbcr_Factory400_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';
38
+ $this->add_link_to_plugin_actions = true;
39
  }
40
+
 
 
41
  parent::__construct($plugin);
42
  }
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
  /**
53
  * Permalinks options.
54
  *
58
  public function getOptions()
59
  {
60
  $options = array();
61
+
62
+ $options[] = array(
63
+ 'type' => 'html',
64
+ '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>'
65
+ );
66
+
67
  $types = get_post_types(array('public' => true), 'objects');
68
  $post_types = array();
69
  foreach($types as $type_name => $type) {
70
  $post_types[] = array($type_name, $type->label);
71
  }
72
+
73
  $options[] = array(
74
  'type' => 'dropdown',
75
  'name' => 'disable_comments',
80
  array(
81
  'disable_comments',
82
  __('Everywhere', 'comments-plus'),
83
+ sprintf(__('You can delete all comments in the database by clicking on this link (<a href="%s">cleaning comments in database</a>).', 'comments-plus'), admin_url('admin.php?page=delete_comments-' . $this->plugin->getPluginName()))
84
  ),
85
  array(
86
  'disable_certain_post_types_comments',
87
  __('On certain post types', 'comments-plus'),
88
+ sprintf(__('You can delete all comments for the selected post types. Select the post types below and save the settings. After that, click the link (<a href="%s">delete all comments for the selected post types in database</a>).', 'comments-plus'), admin_url('admin.php?page=delete_comments-' . $this->plugin->getPluginName()))
89
  )
90
  ),
91
  'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
93
  'default' => 'enable_comments',
94
  'events' => array(
95
  'disable_certain_post_types_comments' => array(
96
+ 'show' => '.factory-control-disable_comments_for_post_types, #wbcr-clearfy-comments-base-options'
97
  ),
98
  'enable_comments' => array(
99
+ 'show' => '#wbcr-clearfy-comments-base-options',
100
  'hide' => '.factory-control-disable_comments_for_post_types'
101
  ),
102
  'disable_comments' => array(
103
+ 'hide' => '.factory-control-disable_comments_for_post_types, #wbcr-clearfy-comments-base-options'
104
  )
105
  )
106
  );
107
+
108
  $options[] = array(
109
  'type' => 'list',
110
  'way' => 'checklist',
117
  );
118
 
119
  $options[] = array(
120
+ 'type' => 'div',
121
+ 'id' => 'wbcr-clearfy-comments-base-options',
122
+ 'items' => array(
123
+ array(
124
+ 'type' => 'html',
125
+ 'html' => '<div class="wbcr-factory-page-group-header"><strong>' . __('General settings for comments', 'comments-plus') . '</strong><p>' . __('These settings will help you improve SEO and reduce the amount of spam.', 'comments-plus') . '</p></div>'
126
+ ),
127
+ array(
128
+ 'type' => 'checkbox',
129
+ 'way' => 'buttons',
130
+ 'name' => 'remove_url_from_comment_form',
131
+ 'title' => __('Remove field "site" in comment form', 'comments-plus'),
132
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
133
+ 'hint' => __('Tired of spam in the comments? Do visitors leave "blank" comments for the sake of a link to their site?', 'comments-plus') . '<br><b>Clearfy: </b>' . __('Removes the "Site" field from the comment form.', 'comments-plus') . '<br>--<br><span class="hint-warnign-color"> *' . __('Works with the standard comment form, if the form is manually written in your theme-it probably will not work!', 'comments-plus') . '</span>',
134
+ 'default' => false
135
+ ),
136
+ array(
137
+ 'type' => 'checkbox',
138
+ 'way' => 'buttons',
139
+ 'name' => 'comment_text_convert_links_pseudo',
140
+ 'title' => __('Replace external links in comments on the JavaScript code', 'comments-plus'),
141
+ 'layout' => array('hint-type' => 'icon'),
142
+ 'hint' => __('Superfluous external links from comments, which can be typed from a dozen and more for one article, do not bring anything good for promotion.', 'comments-plus') . '<br><br><b>Clearfy: </b>' . sprintf(__('Replaces the links of this kind of %s, on links of this kind %s', 'comments-plus'), '<code>a href="http://yourdomain.com" rel="nofollow"</code>', '<code>span data-uri="http://yourdomain.com"</code>'),
143
+ 'default' => false
144
+ ),
145
+ array(
146
+ 'type' => 'checkbox',
147
+ 'way' => 'buttons',
148
+ 'name' => 'pseudo_comment_author_link',
149
+ 'title' => __('Replace external links from comment authors on the JavaScript code', 'comments-plus'),
150
+ 'layout' => array('hint-type' => 'icon'),
151
+ '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>',
152
+ 'default' => false
153
+ ),
154
+ array(
155
+ 'type' => 'checkbox',
156
+ 'way' => 'buttons',
157
+ 'name' => 'remove_x_pingback',
158
+ 'title' => __('Disable XML-RPC', 'clearfy'),
159
+ 'layout' => array('hint-type' => 'icon'),
160
+ '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'),
161
+ 'default' => false
162
+ )
163
+ )
164
  );
165
 
166
  $formOptions = array();
167
+
168
  $formOptions[] = array(
169
  'type' => 'form-group',
170
  'items' => $options,
171
  //'cssClass' => 'postbox'
172
  );
173
+
174
  return apply_filters('wbcr_cmp_comments_form_options', $formOptions);
175
  }
176
+ }
 
 
components/comments-plus/admin/pages/delete-comments.php ADDED
@@ -0,0 +1,339 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+
15
+ class WbcrCmp_DeleteCommentsPage extends Wbcr_FactoryPages400_ImpressiveThemplate {
16
+
17
+ /**
18
+ * The id of the page in the admin menu.
19
+ *
20
+ * Mainly used to navigate between pages.
21
+ * @see FactoryPages400_AdminPage
22
+ *
23
+ * @since 1.0.0
24
+ * @var string
25
+ */
26
+ public $id = "delete_comments";
27
+ public $type = "page";
28
+ public $page_parent_page = "comments";
29
+ public $page_menu_dashicon = 'dashicons-testimonial';
30
+
31
+ /**
32
+ * @param Wbcr_Factory400_Plugin $plugin
33
+ */
34
+ public function __construct(Wbcr_Factory400_Plugin $plugin)
35
+ {
36
+ $this->menu_title = __('Comments cleaner', 'comments-plus');
37
+
38
+ parent::__construct($plugin);
39
+ }
40
+
41
+ /**
42
+ * We register notifications for some actions
43
+ *
44
+ * @see libs\factory\pages\themplates\FactoryPages400_ImpressiveThemplate
45
+ * @param $notices
46
+ * @param Wbcr_Factory400_Plugin $plugin
47
+ * @return array
48
+ */
49
+ public function getActionNotices($notices)
50
+ {
51
+
52
+ $notices[] = array(
53
+ 'conditions' => array(
54
+ 'wbcr_cmp_clear_comments' => 1
55
+ ),
56
+ 'type' => 'success',
57
+ 'message' => __('All comments have been deleted.', 'comments-plus')
58
+ );
59
+
60
+ $notices[] = array(
61
+ 'conditions' => array(
62
+ 'wbcr_cmp_clear_comments_error' => 1,
63
+ 'wbcr_cmp_code' => 'interal_error'
64
+ ),
65
+ 'type' => 'danger',
66
+ 'message' => __('An error occurred while trying to delete comments. Internal error occured. Please try again later.', 'comments-plus')
67
+ );
68
+
69
+ return $notices;
70
+ }
71
+
72
+ /**
73
+ * Prints the content of the page
74
+ *
75
+ * @see libs\factory\pages\themplates\FactoryPages400_ImpressiveThemplate
76
+ */
77
+ public function showPageContent()
78
+ {
79
+ global $wpdb;
80
+
81
+ $stat_data = $wpdb->get_results("SELECT count(*) as total_comments,
82
+ SUM(comment_type='order_note') as order_notes_count,
83
+ SUM(comment_approved='spam') as spamcount,
84
+ SUM(comment_approved='0') as unpcount,
85
+ SUM(comment_approved='trash') as trashcount
86
+ FROM wp_comments");
87
+
88
+ $stat_data_by_post_type = $wpdb->get_results("SELECT
89
+ SUM(comment_count) as type_comments_count, post_type
90
+ FROM $wpdb->posts
91
+ GROUP BY post_type");
92
+
93
+ $types = get_post_types(array('public' => true), 'objects');
94
+
95
+ $post_types = array();
96
+ foreach((array)$types as $type_name => $type) {
97
+ $comments_count = 0;
98
+ if( !empty($stat_data_by_post_type) ) {
99
+ foreach((array)$stat_data_by_post_type as $post_type_stat_value) {
100
+ if( $post_type_stat_value->post_type == $type_name ) {
101
+ $comments_count = $post_type_stat_value->type_comments_count;
102
+ }
103
+ }
104
+ }
105
+
106
+ $post_types[$type_name] = array('label' => $type->label, 'comments_count' => $comments_count);
107
+ }
108
+
109
+ ?>
110
+ <script>
111
+ /**
112
+ * Select all types by one click.
113
+ */
114
+ jQuery(document).ready(function($) {
115
+ var allTypesCheckbox = $('#wbcr-cmp-all-types-checkbox');
116
+ allTypesCheckbox.click(function() {
117
+ $('.wbcr-cmp-post-type-checkbox').prop("checked", $(this).prop("checked"));
118
+ });
119
+
120
+ $('.wbcr-cmp-post-type-checkbox').click(function() {
121
+ if( !$(this).prop("checked") ) {
122
+ allTypesCheckbox.prop("checked", false);
123
+ }
124
+ });
125
+
126
+ $('.wbcr-cmp-delete-comments-button').click(function() {
127
+ var confrimDelete = confirm('<?php _e('Are you sure you want to delete comments from the database without restoring?', 'comments-plus'); ?>');
128
+
129
+ if( !confrimDelete ) {
130
+ return false;
131
+ }
132
+
133
+ $(this).submit();
134
+ });
135
+ });
136
+ </script>
137
+
138
+ <div class="wbcr-factory-page-group-header" style="margin-top:0;">
139
+ <strong><?php _e('Comments clearing tools', 'comments-plus') ?></strong>
140
+
141
+ <p>
142
+ <?php _e('These functions can be useful for global disabling comments or bulk cleaning spam comments.', 'comments-plus') ?>
143
+ </p>
144
+ </div>
145
+
146
+ <form method="post" action="<?= $this->getActionUrl('delete-all-comments') ?>" style="padding: 20px;">
147
+ <h5><?php _e('Remove all comments', 'comments-plus'); ?></h5>
148
+
149
+ <p><?php _e('You can delete all comments in your database with one click.', 'comments-plus'); ?></p>
150
+
151
+ <p><strong><?php _e('Choose post types', 'comments-plus'); ?></strong>
152
+
153
+ <div style="height:150px; width:400px; padding:10px 10px 0; background: #fff; border:1px solid #ccc; overflow-y: scroll; overflow-x:hidden;">
154
+ <p>
155
+ <label>
156
+ <input type="checkbox" id="wbcr-cmp-all-types-checkbox" name="wbcr_cmp_post_type[]" value="all" checked/> <?php _e('Select all', 'comments-plus'); ?>
157
+ </label>
158
+ </p>
159
+ <?php foreach((array)$post_types as $key => $type): ?>
160
+ <p>
161
+ <label>
162
+ <input type="checkbox" class="wbcr-cmp-post-type-checkbox" name="wbcr_cmp_post_type[]" value="<?= esc_attr($key) ?>" checked/> <?= $type['label'] ?>
163
+ (<?= $type['comments_count'] ?>)
164
+ </label>
165
+ </p>
166
+ <?php endforeach; ?>
167
+ </div>
168
+
169
+ <?php if( class_exists('WooCommerce') ): ?>
170
+ <p style="margin:15px 0 0">
171
+ <label>
172
+ <input type="checkbox" name="wbcr_cmp_delete_order_notes" value="1"/> <?php printf(__('Delete Woocommerce order notices? (%d)', 'comments-plus'), $stat_data[0]->order_notes_count); ?>
173
+ </label>
174
+ </p>
175
+ <?php endif; ?>
176
+ <p style="margin-top:15px;">
177
+ <input type="submit" name="wbcr_cmp_delete_all" class="button button-default wbcr-cmp-delete-comments-button" value="<?php printf(__('Delete (%d)', 'comments-plus'), $stat_data[0]->total_comments); ?>">
178
+ </p>
179
+ <?php wp_nonce_field($this->getResultId() . '_delete_all_comments') ?>
180
+ </form>
181
+
182
+ <div style="padding: 20px;">
183
+ <hr/>
184
+ <h5><?php _e('Remove spam comments', 'comments-plus'); ?></h5>
185
+
186
+ <p><?php _e('You can remove only spam comments from the database with one click.', 'comments-plus'); ?></p>
187
+ <a href="<?= wp_nonce_url($this->getActionUrl('delete-spam-comments'), $this->getResultId() . '_delete_spam_comments') ?>" class="button button-default wbcr-cmp-delete-comments-button">
188
+ <?php printf(__('Delete (%d)', 'comments-plus'), $stat_data[0]->spamcount); ?>
189
+ </a>
190
+ <hr/>
191
+ <h5><?php _e('Remove unapproved comments', 'comments-plus'); ?></h5>
192
+
193
+ <p><?php _e('You can remove only unapproved comments from the database with one click.', 'comments-plus'); ?></p>
194
+ <a href="<?= wp_nonce_url($this->getActionUrl('delete-unaproved-comments'), $this->getResultId() . '_delete_unaproved_comments') ?>" class="button button-default wbcr-cmp-delete-comments-button">
195
+ <?php printf(__('Delete (%d)', 'comments-plus'), $stat_data[0]->unpcount); ?>
196
+ </a>
197
+ <hr/>
198
+ <h5><?php _e('Remove trashed comments', 'comments-plus'); ?></h5>
199
+
200
+ <p><?php _e('You can remove only trashed comments from the database with one click.', 'comments-plus'); ?></p>
201
+ <a href="<?= wp_nonce_url($this->getActionUrl('delete-trash-comments'), $this->getResultId() . '_delete_trash_comments') ?>" class="button button-default wbcr-cmp-delete-comments-button">
202
+ <?php printf(__('Delete (%d)', 'comments-plus'), $stat_data[0]->trashcount); ?>
203
+ </a>
204
+ </div>
205
+ <?php
206
+ }
207
+
208
+ /**
209
+ * This action deletes all comments from the database without restoring.
210
+ */
211
+ public function deleteAllCommentsAction()
212
+ {
213
+ global $wpdb;
214
+ check_admin_referer($this->getResultId() . '_delete_all_comments');
215
+
216
+ if( isset($_POST['wbcr_cmp_delete_all']) ) {
217
+ $post_types = $this->request->post('wbcr_cmp_post_type', array(), true);
218
+ $delete_order_notes = $this->request->post('wbcr_cmp_delete_order_notes', false, 'intval');
219
+
220
+ if( empty($post_types) || in_array('all', $post_types) ) {
221
+ if( $wpdb->query("TRUNCATE $wpdb->commentmeta") != false ) {
222
+ $delete_all_sql = "TRUNCATE $wpdb->comments";
223
+
224
+ if( class_exists('WooCommerce') ) {
225
+ if( !$delete_order_notes ) {
226
+ $delete_all_sql = "DELETE FROM $wpdb->comments WHERE comment_type != 'order_note'";
227
+ }
228
+ }
229
+ if( $wpdb->query($delete_all_sql) != false ) {
230
+ $wpdb->query("UPDATE $wpdb->posts SET comment_count = 0 WHERE post_author != 0");
231
+ $wpdb->query("OPTIMIZE TABLE $wpdb->commentmeta");
232
+ $wpdb->query("OPTIMIZE TABLE $wpdb->comments");
233
+
234
+ $this->redirectToAction('index', array(
235
+ 'wbcr_cmp_clear_comments' => '1'
236
+ ));
237
+ } else {
238
+ $this->redirectToAction('index', array(
239
+ 'wbcr_cmp_clear_comments_error' => '1',
240
+ 'wbcr_cmp_code' => 'interal_error',
241
+ ));
242
+ }
243
+ } else {
244
+ $this->redirectToAction('index', array(
245
+ 'wbcr_cmp_clear_comments_error' => '1',
246
+ 'wbcr_cmp_code' => 'interal_error',
247
+ ));
248
+ }
249
+ } else {
250
+
251
+ // Loop through post_types and remove comments/meta and set posts comment_count to 0
252
+ foreach($post_types as $delete_post_type) {
253
+ $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'");
254
+
255
+ $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'";
256
+
257
+ if( class_exists('WooCommerce') ) {
258
+ if( !$delete_order_notes ) {
259
+ $delete_certain_sql .= " and comment_type != 'order_note'";
260
+ }
261
+ }
262
+
263
+ $wpdb->query($delete_certain_sql);
264
+ $wpdb->query("UPDATE $wpdb->posts SET comment_count = 0 WHERE post_author != 0 AND post_type = '$delete_post_type'");
265
+ }
266
+
267
+ $wpdb->query("OPTIMIZE TABLE $wpdb->commentmeta");
268
+ $wpdb->query("OPTIMIZE TABLE $wpdb->comments");
269
+
270
+ $this->redirectToAction('index', array(
271
+ 'wbcr_cmp_clear_comments' => '1'
272
+ ));
273
+ }
274
+ }
275
+
276
+ $this->redirectToAction('index');
277
+ }
278
+
279
+ /**
280
+ * The basic function of deleting comments.
281
+ *
282
+ * @param int|string $type
283
+ */
284
+ public function deleteComments($type = 0)
285
+ {
286
+ global $wpdb;
287
+
288
+ if( in_array($type, array('spam', 'trash', 0)) ) {
289
+ $wpdb->query("DELETE cmeta
290
+ FROM $wpdb->commentmeta cmeta
291
+ INNER JOIN $wpdb->comments comments ON cmeta.comment_id=comments.comment_ID
292
+ WHERE comment_approved='{$type}'");
293
+
294
+ if( $wpdb->query("DELETE FROM $wpdb->comments WHERE comment_approved='{$type}'") ) {
295
+ $wpdb->query("OPTIMIZE TABLE $wpdb->comments");
296
+ $wpdb->query("OPTIMIZE TABLE $wpdb->commentmeta");
297
+
298
+ $this->redirectToAction('index', array(
299
+ 'wbcr_cmp_clear_comments' => '1'
300
+ ));
301
+ } else {
302
+ $this->redirectToAction('index', array(
303
+ 'wbcr_cmp_clear_comments_error' => '1',
304
+ 'wbcr_cmp_code' => 'interal_error',
305
+ ));
306
+ }
307
+ }
308
+ }
309
+
310
+ /**
311
+ * This action deletes spam comments
312
+ */
313
+ public function deleteSpamCommentsAction()
314
+ {
315
+ check_admin_referer($this->getResultId() . '_delete_spam_comments');
316
+
317
+ $this->deleteComments('spam');
318
+ }
319
+
320
+ /**
321
+ * This action deletes unaproved comments
322
+ */
323
+ public function deleteUnaprovedCommentsAction()
324
+ {
325
+ check_admin_referer($this->getResultId() . '_delete_unaproved_comments');
326
+
327
+ $this->deleteComments();
328
+ }
329
+
330
+ /**
331
+ * This action deletes trash comments
332
+ */
333
+ public function deleteTrashCommentsAction()
334
+ {
335
+ check_admin_referer($this->getResultId() . '_delete_trash_comments');
336
+
337
+ $this->deleteComments('trash');
338
+ }
339
+ }
components/comments-plus/admin/pages/index.php ADDED
File without changes
components/comments-plus/admin/pages/more-features.php CHANGED
@@ -5,8 +5,12 @@
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrCmp_MoreFeaturesPage extends FactoryClearfy102_MoreFeaturesPage {
9
 
 
 
 
10
  }
11
 
12
- FactoryPages324::register($wbcr_comments_plus_plugin, 'WbcrCmp_MoreFeaturesPage');
 
 
5
  *
6
  * @since 1.0.0
7
  */
 
8
 
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
  }
13
 
14
+ class WbcrCmp_MoreFeaturesPage extends Wbcr_FactoryClearfy200_MoreFeaturesPage {
15
+
16
+ }
components/comments-plus/assets/css/index.php ADDED
File without changes
components/comments-plus/assets/index.php ADDED
File without changes
components/comments-plus/assets/js/index.php ADDED
File without changes
components/comments-plus/comments-plus.php CHANGED
@@ -4,12 +4,17 @@
4
  * Plugin URI: https://wordpress.org/plugins/comments-plus/
5
  * Description: Allows administrators to globally disable comments on their site. Comments can be disabled for individual record types.
6
  * Author: Webcraftic <wordpress.webraftic@gmail.com>
7
- * Version: 1.0.5
8
  * Text Domain: comments-plus
9
  * Domain Path: /languages/
10
  */
11
 
12
- if( defined('WBCR_CMP_PLUGIN_ACTIVE') || (defined('WBCR_CLEARFY_PLUGIN_ACTIVE') && !defined('LOADING_COMMENTS_PLUS_AS_ADDON')) ) {
 
 
 
 
 
13
  function wbcr_cmp_admin_notice_error()
14
  {
15
  ?>
@@ -24,63 +29,31 @@
24
  return;
25
  } else {
26
 
27
- define('WBCR_CMP_PLUGIN_ACTIVE', true);
28
 
29
- define('WBCR_CMP_PLUGIN_DIR', dirname(__FILE__));
30
- define('WBCR_CMP_PLUGIN_BASE', plugin_basename(__FILE__));
31
- define('WBCR_CMP_PLUGIN_URL', plugins_url(null, __FILE__));
32
 
33
 
34
 
35
  if( !defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
36
- require_once(WBCR_CMP_PLUGIN_DIR . '/libs/factory/core/boot.php');
37
  }
38
 
39
- function wbcr_cmp_plugin_init()
40
- {
41
- global $wbcr_comments_plus_plugin;
42
-
43
- // Localization plugin
44
- load_plugin_textdomain('comments-plus', false, dirname(WBCR_CMP_PLUGIN_BASE) . '/languages/');
45
-
46
- if( defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
47
- //return;
48
- global $wbcr_clearfy_plugin;
49
- $wbcr_comments_plus_plugin = $wbcr_clearfy_plugin;
50
- } else {
51
-
52
- $wbcr_comments_plus_plugin = new Factory326_Plugin(__FILE__, array(
53
- 'name' => 'wbcr_comments_plus',
54
- 'title' => __('Webcraftic Disable comments', 'comments-plus'),
55
- 'version' => '1.0.5',
56
- 'host' => 'wordpress.org',
57
- 'url' => 'https://wordpress.org/plugins/comments-plus/',
58
- 'assembly' => 'free',
59
- 'updates' => WBCR_CMP_PLUGIN_DIR . '/updates/'
60
- ));
61
-
62
- // requires factory modules
63
- $wbcr_comments_plus_plugin->load(array(
64
- array('libs/factory/bootstrap', 'factory_bootstrap_330', 'admin'),
65
- array('libs/factory/forms', 'factory_forms_329', 'admin'),
66
- array('libs/factory/pages', 'factory_pages_324', 'admin'),
67
- array('libs/factory/clearfy', 'factory_clearfy_102', 'all')
68
- ));
69
- }
70
 
71
- // loading other files
72
- if( is_admin() ) {
73
- require(WBCR_CMP_PLUGIN_DIR . '/admin/boot.php');
74
- }
75
-
76
- require(WBCR_CMP_PLUGIN_DIR . '/includes/classes/class.configurate-comments.php');
77
-
78
- new WbcrCmp_ConfigComments($wbcr_comments_plus_plugin);
79
- }
80
-
81
- if( defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
82
- wbcr_cmp_plugin_init();
83
- } else {
84
- add_action('plugins_loaded', 'wbcr_cmp_plugin_init');
85
  }
86
  }
4
  * Plugin URI: https://wordpress.org/plugins/comments-plus/
5
  * Description: Allows administrators to globally disable comments on their site. Comments can be disabled for individual record types.
6
  * Author: Webcraftic <wordpress.webraftic@gmail.com>
7
+ * Version: 1.0.7
8
  * Text Domain: comments-plus
9
  * Domain Path: /languages/
10
  */
11
 
12
+ // Exit if accessed directly
13
+ if( !defined('ABSPATH') ) {
14
+ exit;
15
+ }
16
+
17
+ if( defined('WCM_PLUGIN_ACTIVE') || (defined('WCL_PLUGIN_ACTIVE') && !defined('LOADING_COMMENTS_PLUS_AS_ADDON')) ) {
18
  function wbcr_cmp_admin_notice_error()
19
  {
20
  ?>
29
  return;
30
  } else {
31
 
32
+ define('WCM_PLUGIN_ACTIVE', true);
33
 
34
+ define('WCM_PLUGIN_DIR', dirname(__FILE__));
35
+ define('WCM_PLUGIN_BASE', plugin_basename(__FILE__));
36
+ define('WCM_PLUGIN_URL', plugins_url(null, __FILE__));
37
 
38
 
39
 
40
  if( !defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
41
+ require_once(WCM_PLUGIN_DIR . '/libs/factory/core/boot.php');
42
  }
43
 
44
+ require_once(WCM_PLUGIN_DIR . '/includes/class.plugin.php');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
+ if( !defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
47
+ //todo: обновить опции в старом плагине на новый префикс
48
+ new WCM_Plugin(__FILE__, array(
49
+ 'prefix' => 'wbcr_cmp_',
50
+ 'plugin_name' => 'comments_plus',
51
+ 'plugin_title' => __('Webcraftic Disable comments', 'comments-plus'),
52
+ 'plugin_version' => '1.0.7',
53
+ 'required_php_version' => '5.2',
54
+ 'required_wp_version' => '4.2',
55
+ 'plugin_build' => 'free',
56
+ 'updates' => WCM_PLUGIN_DIR . '/updates/'
57
+ ));
 
 
58
  }
59
  }
components/comments-plus/includes/class.plugin.php ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Hide my wp 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
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+ if( !class_exists('WCM_Plugin') ) {
15
+
16
+ if( !class_exists('WCM_PluginFactory') ) {
17
+ if( defined('LOADING_COMMENTS_PLUS_AS_ADDON') ) {
18
+ class WCM_PluginFactory {
19
+
20
+ }
21
+ } else {
22
+ class WCM_PluginFactory extends Wbcr_Factory400_Plugin {
23
+
24
+ }
25
+ }
26
+ }
27
+
28
+ class WCM_Plugin extends WCM_PluginFactory {
29
+
30
+ /**
31
+ * @var Wbcr_Factory400_Plugin
32
+ */
33
+ private static $app;
34
+
35
+ /**
36
+ * @var bool
37
+ */
38
+ private $as_addon;
39
+
40
+ /**
41
+ * @param string $plugin_path
42
+ * @param array $data
43
+ * @throws Exception
44
+ */
45
+ public function __construct($plugin_path, $data)
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_Factory400_Plugin) ) {
55
+ throw new Exception('An invalid instance of the class was passed.');
56
+ }
57
+
58
+ self::$app = $plugin_parent;
59
+ } else {
60
+ self::$app = $this;
61
+ }
62
+
63
+ if( !$this->as_addon ) {
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_Factory400_Plugin
80
+ */
81
+ public static function app()
82
+ {
83
+ return self::$app;
84
+ }
85
+
86
+ protected function setTextDomain()
87
+ {
88
+ // Localization plugin
89
+ load_plugin_textdomain('comments-plus', false, dirname(WCM_PLUGIN_BASE) . '/languages/');
90
+ }
91
+
92
+ protected function setModules()
93
+ {
94
+ if( !$this->as_addon ) {
95
+ self::app()->load(array(
96
+ array('libs/factory/bootstrap', 'factory_bootstrap_400', 'admin'),
97
+ array('libs/factory/forms', 'factory_forms_400', 'admin'),
98
+ array('libs/factory/pages', 'factory_pages_400', 'admin'),
99
+ array('libs/factory/clearfy', 'factory_clearfy_200', 'all')
100
+ ));
101
+ }
102
+ }
103
+
104
+ private function registerPages()
105
+ {
106
+
107
+ $admin_path = WCM_PLUGIN_DIR . '/admin/pages';
108
+
109
+ self::app()->registerPage('WbcrCmp_CommentsPage', $admin_path . '/comments.php');
110
+ self::app()->registerPage('WbcrCmp_DeleteCommentsPage', $admin_path . '/delete-comments.php');
111
+
112
+ if( !$this->as_addon ) {
113
+ self::app()->registerPage('WbcrCmp_MoreFeaturesPage', $admin_path . '/more-features.php');
114
+ }
115
+ }
116
+
117
+ private function adminScripts()
118
+ {
119
+ require(WCM_PLUGIN_DIR . '/admin/boot.php');
120
+ $this->registerPages();
121
+ }
122
+
123
+ private function globalScripts()
124
+ {
125
+ require(WCM_PLUGIN_DIR . '/includes/classes/class.configurate-comments.php');
126
+ new WbcrCmp_ConfigComments(self::$app);
127
+ }
128
+ /*public function pluginsLoaded()
129
+ {
130
+
131
+ }*/
132
+ }
133
+ }
components/comments-plus/includes/classes/class.configurate-comments.php CHANGED
@@ -6,10 +6,25 @@
6
  * @copyright (c) 2017 Webraftic Ltd
7
  * @version 1.0
8
  */
9
- class WbcrCmp_ConfigComments extends WbcrFactoryClearfy_Configurate {
 
 
 
 
 
 
10
 
11
  private $modified_types = array();
12
 
 
 
 
 
 
 
 
 
 
13
  public function registerActionsAndFilters()
14
  {
15
  // Removes the server responses a reference to the xmlrpc file.
@@ -32,8 +47,7 @@
32
  add_action('admin_init', array($this, 'filterAdminBar'));
33
  } else {
34
 
35
- if( $this->getOption('comment_text_convert_links_pseudo') || $this->getOption('remove_url_from_comment_form') ) {
36
-
37
  add_action('wp_enqueue_scripts', array($this, 'assetsUrlSpanScripts'));
38
  }
39
 
@@ -162,7 +176,7 @@
162
 
163
  public function dummyCommentsTemplate()
164
  {
165
- return WBCR_CMP_PLUGIN_DIR . '/includes/comments-template.php';
166
  }
167
 
168
  /*
@@ -200,8 +214,14 @@
200
  $disabled_post_types = $this->getDisabledPostTypes();
201
  if( get_current_screen()->id == 'options-discussion' && !empty($disabled_post_types) ) {
202
  $names = array();
203
- foreach($disabled_post_types as $type)
204
- $names[$type] = get_post_type_object($type)->labels->name;
 
 
 
 
 
 
205
  ?>
206
  <script>
207
  jQuery(document).ready(function($) {
@@ -384,13 +404,11 @@
384
 
385
  public function assetsUrlSpanScripts()
386
  {
387
- global $wbcr_comments_plus_plugin;
388
-
389
  if( !is_singular() ) {
390
  return;
391
  }
392
 
393
- wp_enqueue_style('wbcr-comments-plus-url-span', WBCR_CMP_PLUGIN_URL . '/assets/css/url-span.css', array(), $wbcr_comments_plus_plugin->version);
394
- wp_enqueue_script('wbcr-comments-plus-url-span', WBCR_CMP_PLUGIN_URL . '/assets/js/url-span.js', array(), $wbcr_comments_plus_plugin->version, true);
395
  }
396
  }
6
  * @copyright (c) 2017 Webraftic Ltd
7
  * @version 1.0
8
  */
9
+
10
+ // Exit if accessed directly
11
+ if( !defined('ABSPATH') ) {
12
+ exit;
13
+ }
14
+
15
+ class WbcrCmp_ConfigComments extends Wbcr_FactoryClearfy200_Configurate {
16
 
17
  private $modified_types = array();
18
 
19
+ /**
20
+ * @param Wbcr_Factory400_Plugin $plugin
21
+ */
22
+ public function __construct(Wbcr_Factory400_Plugin $plugin)
23
+ {
24
+ parent::__construct($plugin);
25
+ $this->plugin = $plugin;
26
+ }
27
+
28
  public function registerActionsAndFilters()
29
  {
30
  // Removes the server responses a reference to the xmlrpc file.
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
 
176
 
177
  public function dummyCommentsTemplate()
178
  {
179
+ return WCM_PLUGIN_DIR . '/includes/comments-template.php';
180
  }
181
 
182
  /*
214
  $disabled_post_types = $this->getDisabledPostTypes();
215
  if( get_current_screen()->id == 'options-discussion' && !empty($disabled_post_types) ) {
216
  $names = array();
217
+ foreach($disabled_post_types as $type) {
218
+ $type_object = get_post_type_object($type);
219
+ if( empty($type_object) ) {
220
+ continue;
221
+ }
222
+ $names[$type] = $type_object->labels->name;
223
+ }
224
+
225
  ?>
226
  <script>
227
  jQuery(document).ready(function($) {
404
 
405
  public function assetsUrlSpanScripts()
406
  {
 
 
407
  if( !is_singular() ) {
408
  return;
409
  }
410
 
411
+ wp_enqueue_style('wbcr-comments-plus-url-span', WCM_PLUGIN_URL . '/assets/css/url-span.css', array(), $this->plugin->getPluginVersion());
412
+ wp_enqueue_script('wbcr-comments-plus-url-span', WCM_PLUGIN_URL . '/assets/js/url-span.js', array(), $this->plugin->getPluginVersion(), true);
413
  }
414
  }
components/comments-plus/includes/classes/index.php ADDED
File without changes
components/comments-plus/includes/index.php ADDED
File without changes
components/comments-plus/index.php ADDED
File without changes
components/comments-plus/languages/comments-plus-fr_FR.mo DELETED
Binary file
components/comments-plus/languages/comments-plus-fr_FR.po DELETED
@@ -1,302 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2017-11-09 10:26+0300\n"
5
- "PO-Revision-Date: 2017-11-09 17:46+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: fr\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:19
22
- msgid "Disable comments on the entire site"
23
- msgstr "Désactiver les commentaires sur l'ensemble du site"
24
-
25
- #: admin/boot.php:25 admin/pages/comments.php:249
26
- msgid "Select post types"
27
- msgstr "Sélectionnez types de publication"
28
-
29
- #: admin/boot.php:30 admin/pages/comments.php:270
30
- msgid "Replace external links in comments on the JavaScript code"
31
- msgstr ""
32
- "Remplacer les liens externes dans les commentaires sur le code JavaScript"
33
-
34
- #: admin/boot.php:35 admin/pages/comments.php:280
35
- msgid "Replace external links from comment authors on the JavaScript code"
36
- msgstr ""
37
- "Remplacer les liens externes des auteurs de commentaires sur le code "
38
- "JavaScript"
39
-
40
- #: admin/boot.php:40
41
- msgid "Disable X-Pingback"
42
- msgstr "Désactiver X-Pingback"
43
-
44
- #: admin/boot.php:45 admin/pages/comments.php:260
45
- msgid "Remove field \"site\" in comment form"
46
- msgstr "Supprimer le champ \"site\" dans le formulaire de commentaire"
47
-
48
- #: admin/boot.php:56
49
- msgid "Disable all comments"
50
- msgstr "Désactiver tous les commentaires"
51
-
52
- #: admin/boot.php:66
53
- msgid "Get ultimate plugin free"
54
- msgstr "Obtenez le plugin ultime gratuitement"
55
-
56
- #: admin/pages/comments.php:24 admin/pages/comments.php:214
57
- msgid "Disable comments"
58
- msgstr "Désactiver les commentaires"
59
-
60
- #: admin/pages/comments.php:40
61
- msgid "Comments"
62
- msgstr "Commentaires"
63
-
64
- #: admin/pages/comments.php:41
65
- msgid "General"
66
- msgstr "Général"
67
-
68
- #: admin/pages/comments.php:56
69
- msgid "All comments have been deleted."
70
- msgstr "Tous les commentaires ont été supprimés."
71
-
72
- #: admin/pages/comments.php:65
73
- msgid ""
74
- "An error occurred while trying to delete comments. Internal error occured. "
75
- "Please try again later."
76
- msgstr ""
77
- "Une erreur s'est produite lors de la tentative de suppression des "
78
- "commentaires. Erreur interne s'est produite. Veuillez réessayer plus tard."
79
-
80
- #: admin/pages/comments.php:79
81
- msgid "You are not allowed to view this page."
82
- msgstr "Vous n’êtes pas autorisé à voir cette page."
83
-
84
- #: admin/pages/comments.php:89
85
- msgid "You do not have the selected post types!"
86
- msgstr "Vous n'avez pas les types de postes sélectionnés!"
87
-
88
- #: admin/pages/comments.php:104
89
- msgid "No comments available for deletion."
90
- msgstr "Aucun commentaire disponible pour la suppression."
91
-
92
- #: admin/pages/comments.php:109
93
- msgid "Are you sure that you desire to delete all comments from the database?"
94
- msgstr ""
95
- "Êtes-vous sûr de vouloir supprimer tous les commentaires de la base de "
96
- "données?"
97
-
98
- #: admin/pages/comments.php:110 admin/pages/comments.php:158
99
- msgid ""
100
- "Deleting comments will remove existing comment entries in the database and "
101
- "cannot be reverted without a database backup."
102
- msgstr ""
103
- "La suppression des commentaires supprime les entrées de commentaire "
104
- "existantes dans la base de données et ne peut pas être restaurée sans une "
105
- "sauvegarde de base de données."
106
-
107
- #: admin/pages/comments.php:111 admin/pages/comments.php:159
108
- #, php-format
109
- msgid "You have %s comments"
110
- msgstr "Vous avez des commentaires %s"
111
-
112
- #: admin/pages/comments.php:115 admin/pages/comments.php:163
113
- msgid "Yes, I'm sure"
114
- msgstr "Oui, je suis sûr"
115
-
116
- #: admin/pages/comments.php:123 admin/pages/comments.php:171
117
- msgid "No, return back"
118
- msgstr "Non, revenez"
119
-
120
- #: admin/pages/comments.php:157
121
- #, php-format
122
- msgid ""
123
- "Are you sure that you desire to delete all comments from the database for "
124
- "the selected post types (%s)?"
125
- msgstr ""
126
- "Êtes-vous sûr de vouloir supprimer tous les commentaires de la base de "
127
- "données pour les types de publication sélectionnés (%s)?"
128
-
129
- #: admin/pages/comments.php:216
130
- msgid "Not disable"
131
- msgstr "Ne pas désactiver"
132
-
133
- #: admin/pages/comments.php:219
134
- msgid "Everywhere"
135
- msgstr "Partout"
136
-
137
- #: admin/pages/comments.php:220
138
- #, php-format
139
- msgid ""
140
- "You can delete all comments in the database by clicking on this link (<a "
141
- "href=\"%s\">cleaning comments in database</a>)."
142
- msgstr ""
143
- "Vous pouvez supprimer tous les commentaires de la base de données en "
144
- "cliquant sur ce lien (<a href=\"%s\"> nettoyer les commentaires dans la "
145
- "base de données </a>)."
146
-
147
- #: admin/pages/comments.php:224
148
- msgid "On certain post types"
149
- msgstr "Sur certains types de postes"
150
-
151
- #: admin/pages/comments.php:225
152
- #, php-format
153
- msgid ""
154
- "You can delete all comments for the selected post types. Select the post "
155
- "types below and save the settings. After that, click the link (<a href=\"%s"
156
- "\">delete all comments for the selected post types in database</a>)."
157
- msgstr ""
158
- "Vous pouvez supprimer tous les commentaires pour les types de publication "
159
- "sélectionnés. Sélectionnez les types de publication ci-dessous et "
160
- "enregistrez les paramètres. Après cela, cliquez sur le lien (<a href=\"%s"
161
- "\"> supprimer tous les commentaires pour les types de publication "
162
- "sélectionnés dans la base de données </a>)."
163
-
164
- #: admin/pages/comments.php:229
165
- msgid ""
166
- "Everywhere - Warning: This option is global and will affect your entire "
167
- "site. Use it only if you want to disable comments everywhere. A complete "
168
- "description of what this option does is available here"
169
- msgstr ""
170
- "Partout - Attention: Cette option est globale et aura une incidence sur "
171
- "l'ensemble de votre site. Utilisez-le uniquement si vous souhaitez "
172
- "désactiver les commentaires partout. Une description complète de ce que "
173
- "cette option fait est disponible ici"
174
-
175
- #: admin/pages/comments.php:229
176
- msgid ""
177
- "On certain post types - Disabling comments will also disable trackbacks and "
178
- "pingbacks. All comment-related fields will also be hidden from the edit/"
179
- "quick-edit screens of the affected posts. These settings cannot be "
180
- "overridden for individual posts."
181
- msgstr ""
182
- "Sur certains types de publication - Désactiver les commentaires désactivera "
183
- "également les rétroliens et les pingbacks. Tous les champs relatifs aux "
184
- "commentaires seront également masqués dans les écrans d'édition / de "
185
- "modification rapide des publications concernées. Ces paramètres ne peuvent "
186
- "pas être remplacés pour les messages individuels."
187
-
188
- #: admin/pages/comments.php:252
189
- msgid "Select the post types for which comments will be disabled"
190
- msgstr ""
191
- "Sélectionnez les types de postes pour lesquels les commentaires seront "
192
- "désactivés"
193
-
194
- #: admin/pages/comments.php:262
195
- msgid ""
196
- "Tired of spam in the comments? Do visitors leave \"blank\" comments for the "
197
- "sake of a link to their site?"
198
- msgstr ""
199
- "Fatigué de spam dans les commentaires? Est-ce que les visiteurs laissent "
200
- "des commentaires «vides» pour un lien vers leur site?"
201
-
202
- #: admin/pages/comments.php:262
203
- msgid "Removes the \"Site\" field from the comment form."
204
- msgstr "Supprime le champ \"site\" du formulaire de commentaire."
205
-
206
- #: admin/pages/comments.php:262
207
- msgid ""
208
- "Works with the standard comment form, if the form is manually written in "
209
- "your theme-it probably will not work!"
210
- msgstr ""
211
- "Fonctionne avec le formulaire de commentaire standard, si le formulaire est "
212
- "écrit manuellement dans votre thème-il ne fonctionnera probablement pas!"
213
-
214
- #: admin/pages/comments.php:270 admin/pages/comments.php:280
215
- #: admin/pages/comments.php:290
216
- msgid "Recommended"
217
- msgstr "Recommandées"
218
-
219
- #: admin/pages/comments.php:272
220
- msgid ""
221
- "Superfluous external links from comments, which can be typed from a dozen "
222
- "and more for one article, do not bring anything good for promotion."
223
- msgstr ""
224
- "Superflu Liens externes de commentaires, qui peut être tapé à partir d'une "
225
- "douzaine et plus pour un article, ne pas apporter quelque chose de bon pour "
226
- "la promotion."
227
-
228
- #: admin/pages/comments.php:272
229
- #, php-format
230
- msgid "Replaces the links of this kind of %s, on links of this kind %s"
231
- msgstr "Remplace les liens de ce type de %s, sur les liens de ce type %s"
232
-
233
- #: admin/pages/comments.php:282
234
- msgid ""
235
- "Up to 90 percent of comments in the blog can be left for the sake of an "
236
- "external link. Even nofollow from page weight loss here does not help."
237
- msgstr ""
238
- "Jusqu'à 90% des commentaires dans le blog peuvent être laissés pour un lien "
239
- "externe. Même nofollow de la perte de poids de page ici ne aide pas."
240
-
241
- #: admin/pages/comments.php:282
242
- msgid ""
243
- "Replaces the links of the authors of comments on the JavaScript code, it is "
244
- "impossible to distinguish it from usual links."
245
- msgstr ""
246
- "Remplace les liens des auteurs de commentaires sur le code JavaScript, il "
247
- "est impossible de le distinguer des liens habituels."
248
-
249
- #: admin/pages/comments.php:282
250
- msgid "In some Wordpress topics this may not work."
251
- msgstr "Dans certains sujets WordPress cela peut ne pas fonctionner."
252
-
253
- #: admin/pages/comments.php:290
254
- msgid "Disable XML-RPC"
255
- msgstr "Désactiver xml-rpc"
256
-
257
- #: admin/pages/comments.php:292
258
- msgid ""
259
- "A pingback is basically an automated comment that gets created when another "
260
- "blog links to you. A self-pingback is created when you link to an article "
261
- "within your own blog. Pingbacks are essentially nothing more than spam and "
262
- "simply waste resources."
263
- msgstr ""
264
- "Un Pingback est fondamentalement un commentaire automatisé qui obtient créé "
265
- "quand un autre blog lie à vous. Un self-Pingback est créé lorsque vous liez "
266
- "à un article dans votre propre blog. Pingbacks sont essentiellement rien de "
267
- "plus que du spam et simplement des ressources de gaspillage."
268
-
269
- #: admin/pages/comments.php:292
270
- msgid "Removes the server responses a reference to the xmlrpc file."
271
- msgstr "Supprime les réponses du serveur une référence au fichier xml-rpc."
272
-
273
- #: comments-plus.php:17
274
- msgid ""
275
- "We found that you have the \"Clearfy - disable unused features\" plugin "
276
- "installed, this plugin already has disable comments functions, so you can "
277
- "deactivate plugin \"Disable comments\"!"
278
- msgstr ""
279
- "Nous avons trouvé que vous aviez installé le plugin \"Clarifier - "
280
- "désactiver les fonctionnalités inutilisées\", ce plugin a déjà désactivé "
281
- "les fonctions de commentaires, vous pouvez donc désactiver le plugin "
282
- "\"Désactiver les commentaires\"!"
283
-
284
- #: comments-plus.php:82
285
- msgid "Webcraftic Disable comments"
286
- msgstr "Webcraftic Désactiver les commentaires"
287
-
288
- #: includes/classes/class.configurate-comments.php:169
289
- #: includes/classes/class.configurate-comments.php:215
290
- msgid "Comments are closed."
291
- msgstr "Les commentaires sont fermés."
292
-
293
- #: includes/classes/class.configurate-comments.php:203
294
- #, php-format
295
- msgid ""
296
- "Note: The <em>%s</em> plugin is currently active, and comments are "
297
- "completely disabled on: %s. Many of the settings below will not be "
298
- "applicable for those post types."
299
- msgstr ""
300
- "Note: Le plugin <em>%s</em> est actuellement actif, et les commentaires "
301
- "sont complètement désactivés sur: %s. La plupart des paramètres ci-dessous "
302
- "ne seront pas applicables pour ces types de publication."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
components/comments-plus/languages/comments-plus-ru_RU.mo CHANGED
Binary file
components/comments-plus/languages/comments-plus-ru_RU.po CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-01-22 00:34+0300\n"
5
- "PO-Revision-Date: 2018-01-22 00:34+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"
@@ -18,118 +18,78 @@ msgstr ""
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPathExcluded-0: libs\n"
20
 
21
- #: admin/boot.php:19
22
  msgid "Disable comments on the entire site"
23
  msgstr "Отключить комментарии на всем сайте"
24
 
25
- #: admin/boot.php:25 admin/pages/comments.php:255
26
  msgid "Select post types"
27
  msgstr "Выбрать тип записи"
28
 
29
- #: admin/boot.php:30 admin/pages/comments.php:276
30
  msgid "Replace external links in comments on the JavaScript code"
31
  msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
32
 
33
- #: admin/boot.php:35 admin/pages/comments.php:286
34
  msgid "Replace external links from comment authors on the JavaScript code"
35
  msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
36
 
37
- #: admin/boot.php:40
38
  msgid "Disable X-Pingback"
39
  msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
40
 
41
- #: admin/boot.php:45 admin/pages/comments.php:266
42
  msgid "Remove field \"site\" in comment form"
43
  msgstr "Удаляет поле \"Сайт\" в форме комментариев"
44
 
45
- #: admin/boot.php:57
46
  msgid "One click disable all comments"
47
  msgstr "Отключить все комментарии в один клик"
48
 
49
- #: admin/boot.php:69
50
  msgid "Get ultimate plugin free"
51
  msgstr "Получите полную версию плагина бесплатно"
52
 
53
- #: admin/pages/comments.php:24 admin/pages/comments.php:220
54
  msgid "Disable comments"
55
  msgstr "Отключить комментарии"
56
 
57
- #: admin/pages/comments.php:40
58
  msgid "Comments"
59
  msgstr "Комментарии"
60
 
61
- #: admin/pages/comments.php:41
62
  msgid "General"
63
  msgstr "Основные"
64
 
65
- #: admin/pages/comments.php:62
66
- msgid "All comments have been deleted."
67
- msgstr "Все комментарии были удалены."
68
-
69
- #: admin/pages/comments.php:71
70
- msgid ""
71
- "An error occurred while trying to delete comments. Internal error occured. "
72
- "Please try again later."
73
- msgstr ""
74
- "При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
75
- "попытку позже."
76
-
77
- #: admin/pages/comments.php:85
78
- msgid "You are not allowed to view this page."
79
- msgstr "Вам не разрешено просматривать эту страницу."
80
 
81
- #: admin/pages/comments.php:95
82
- msgid "You do not have the selected post types!"
83
- msgstr "Вы не выбрали еще ни одного типа записей!"
84
-
85
- #: admin/pages/comments.php:110
86
- msgid "No comments available for deletion."
87
- msgstr "Нет комментариев для удаления."
88
-
89
- #: admin/pages/comments.php:115
90
- msgid "Are you sure that you desire to delete all comments from the database?"
91
- msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
92
-
93
- #: admin/pages/comments.php:116 admin/pages/comments.php:164
94
  msgid ""
95
- "Deleting comments will remove existing comment entries in the database and "
96
- "cannot be reverted without a database backup."
 
 
 
97
  msgstr ""
98
- "При удалении комментариев удаляются существующие записи комментариев в базе "
99
- "данных, они не могут быть восстановлены без резервного копирования базы "
100
- "данных."
101
-
102
- #: admin/pages/comments.php:117 admin/pages/comments.php:165
103
- #, php-format
104
- msgid "You have %s comments"
105
- msgstr "У вас есть %s комментариев"
106
-
107
- #: admin/pages/comments.php:121 admin/pages/comments.php:169
108
- msgid "Yes, I'm sure"
109
- msgstr "Да, я уверен"
110
-
111
- #: admin/pages/comments.php:129 admin/pages/comments.php:177
112
- msgid "No, return back"
113
- msgstr "Нет, вернуться"
114
-
115
- #: admin/pages/comments.php:163
116
- #, php-format
117
- msgid ""
118
- "Are you sure that you desire to delete all comments from the database for "
119
- "the selected post types (%s)?"
120
- msgstr ""
121
- "Вы уверены, что хотите удалить все комментарии из базы данных для выбранных "
122
- "типов записей (%s)?"
123
-
124
- #: admin/pages/comments.php:222
125
  msgid "Not disable"
126
  msgstr "Не отключать"
127
 
128
- #: admin/pages/comments.php:225
129
  msgid "Everywhere"
130
  msgstr "Повсюду"
131
 
132
- #: admin/pages/comments.php:226
133
  #, php-format
134
  msgid ""
135
  "You can delete all comments in the database by clicking on this link (<a "
@@ -138,11 +98,11 @@ msgstr ""
138
  "Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
139
  "href=\"%s\">очистка комментариев в базе данных</a> )."
140
 
141
- #: admin/pages/comments.php:230
142
  msgid "On certain post types"
143
  msgstr "Только выбранные типы записей"
144
 
145
- #: admin/pages/comments.php:231
146
  #, php-format
147
  msgid ""
148
  "You can delete all comments for the selected post types. Select the post "
@@ -153,7 +113,7 @@ msgstr ""
153
  "записей ниже и сохраните настройки. После этого нажмите ссылку ( <a href=\"%s"
154
  "\">удалите все комментарии для выбранных типов записей в базе данных</a> )."
155
 
156
- #: admin/pages/comments.php:235
157
  msgid ""
158
  "Everywhere - Warning: This option is global and will affect your entire "
159
  "site. Use it only if you want to disable comments everywhere. A complete "
@@ -163,7 +123,7 @@ msgstr ""
163
  "весь ваш сайт. Используйте его только в том случае, если вы хотите отключить "
164
  "комментарии повсюду. "
165
 
166
- #: admin/pages/comments.php:235
167
  msgid ""
168
  "On certain post types - Disabling comments will also disable trackbacks and "
169
  "pingbacks. All comment-related fields will also be hidden from the edit/"
@@ -175,11 +135,19 @@ msgstr ""
175
  "от экранов редактирования / быстрого редактирования затронутых сообщений. "
176
  "Эти настройки нельзя переопределять для отдельных сообщений."
177
 
178
- #: admin/pages/comments.php:258
179
  msgid "Select the post types for which comments will be disabled"
180
  msgstr "Выберите типы записей, для которых комментарии будут отключены."
181
 
182
- #: admin/pages/comments.php:268
 
 
 
 
 
 
 
 
183
  msgid ""
184
  "Tired of spam in the comments? Do visitors leave \"blank\" comments for the "
185
  "sake of a link to their site?"
@@ -187,11 +155,11 @@ msgstr ""
187
  "Надоел спам в комментариях? Посетители оставляют «пустые» комментарии ради "
188
  "ссылки на свой сайт?"
189
 
190
- #: admin/pages/comments.php:268
191
  msgid "Removes the \"Site\" field from the comment form."
192
  msgstr "Убирает поле «Сайт» из формы комментирования."
193
 
194
- #: admin/pages/comments.php:268
195
  msgid ""
196
  "Works with the standard comment form, if the form is manually written in "
197
  "your theme-it probably will not work!"
@@ -199,12 +167,7 @@ msgstr ""
199
  "Работает со стандартной формой комментирования, если в Вашей теме форма "
200
  "прописана вручную - скорей всего не сработает!"
201
 
202
- #: admin/pages/comments.php:276 admin/pages/comments.php:286
203
- #: admin/pages/comments.php:296
204
- msgid "Recommended"
205
- msgstr "Рекомендовано"
206
-
207
- #: admin/pages/comments.php:278
208
  msgid ""
209
  "Superfluous external links from comments, which can be typed from a dozen "
210
  "and more for one article, do not bring anything good for promotion."
@@ -212,14 +175,14 @@ msgstr ""
212
  "Внешние ссылки в комментариях, которых может быть десятки или больше на "
213
  "одной странице, могут ухудшить продвижение вашего сайта."
214
 
215
- #: admin/pages/comments.php:278
216
  #, php-format
217
  msgid "Replaces the links of this kind of %s, on links of this kind %s"
218
  msgstr ""
219
  "Заменяет ссылки %s, на span тег и устанавливает переход с помощью JavaScript "
220
  "%s"
221
 
222
- #: admin/pages/comments.php:288
223
  msgid ""
224
  "Up to 90 percent of comments in the blog can be left for the sake of an "
225
  "external link. Even nofollow from page weight loss here does not help."
@@ -227,7 +190,7 @@ msgstr ""
227
  "До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
228
  "поможет даже nofollow от потери веса страницы."
229
 
230
- #: admin/pages/comments.php:288
231
  msgid ""
232
  "Replaces the links of the authors of comments on the JavaScript code, it is "
233
  "impossible to distinguish it from usual links."
@@ -235,15 +198,15 @@ msgstr ""
235
  "Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
236
  "отличить от обычной ссылки."
237
 
238
- #: admin/pages/comments.php:288
239
  msgid "In some Wordpress topics this may not work."
240
  msgstr "В некоторых темах Wordpress это может не сработать."
241
 
242
- #: admin/pages/comments.php:296
243
  msgid "Disable XML-RPC"
244
  msgstr "Отключить XML-RPC"
245
 
246
- #: admin/pages/comments.php:298
247
  msgid ""
248
  "A pingback is basically an automated comment that gets created when another "
249
  "blog links to you. A self-pingback is created when you link to an article "
@@ -255,11 +218,101 @@ msgstr ""
255
  "оставили ссылку на статью в своем блоге. Pingbacks по существу являются не "
256
  "более чем спам и пустая трата ресурсов вашего сайта."
257
 
258
- #: admin/pages/comments.php:298
259
  msgid "Removes the server responses a reference to the xmlrpc file."
260
  msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
261
 
262
- #: comments-plus.php:17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
263
  msgid ""
264
  "We found that you have the \"Clearfy - disable unused features\" plugin "
265
  "installed, this plugin already has disable comments functions, so you can "
@@ -269,16 +322,16 @@ msgstr ""
269
  "неиспользуемые функции», этот плагин уже имеет функции отключения "
270
  "комментариев, поэтому вы можете отключить плагин «Отключить комментарии»!"
271
 
272
- #: comments-plus.php:82
273
  msgid "Webcraftic Disable comments"
274
  msgstr "Webcraftic отключить комментарии"
275
 
276
- #: includes/classes/class.configurate-comments.php:174
277
- #: includes/classes/class.configurate-comments.php:220
278
  msgid "Comments are closed."
279
  msgstr "Комментарии Закрыты."
280
 
281
- #: includes/classes/class.configurate-comments.php:208
282
  #, php-format
283
  msgid ""
284
  "Note: The <em>%s</em> plugin is currently active, and comments are "
@@ -289,6 +342,46 @@ msgstr ""
289
  "полностью отключены: %s. Многие из приведенных ниже настроек не будут "
290
  "применяться для этих типов сообщений."
291
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
292
  #~ msgid "Webcraftic comments tweaks"
293
  #~ msgstr "Webcraftic инструменты комментариев"
294
 
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"
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 "
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 "
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 "
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/"
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?"
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!"
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."
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."
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."
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 "
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 "
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 "
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
 
components/comments-plus/languages/index.php ADDED
File without changes
components/comments-plus/uninstall.php CHANGED
@@ -9,4 +9,5 @@
9
  global $wpdb;
10
 
11
  $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_comments_plus_%';");
 
12
 
9
  global $wpdb;
10
 
11
  $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_comments_plus_%';");
12
+ $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_cmp_%';");
13
 
components/comments-plus/updates/010007.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 WCLUpdate010007 extends Wbcr_Factory400_Update {
8
+
9
+ public function install()
10
+ {
11
+ global $wpdb;
12
+
13
+ $request = $wpdb->get_results("SELECT option_id, option_name, option_value FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_comments_plus_%'");
14
+
15
+ if( !empty($request) ) {
16
+ foreach($request as $option) {
17
+ $option_new_name = str_replace('wbcr_comments_plus_', WCM_Plugin::app()
18
+ ->getPrefix(), $option->option_name);
19
+ if( !get_option($option_new_name, false) ) {
20
+ $wpdb->query("UPDATE {$wpdb->prefix}options SET option_name='$option_new_name' WHERE option_id='{$option->option_id}'");
21
+ } else {
22
+ delete_option($option->option_name);
23
+ }
24
+ }
25
+ }
26
+ }
27
+ }
components/cyrlitera/admin/boot.php ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ * @return array
16
+ */
17
+ function wbcr_cyrlitera_get_conflict_notices_error()
18
+ {
19
+ $notices = array();
20
+ $plugin_title = WCTR_Plugin::app()->getPluginTitle();
21
+
22
+ $default_notice = $plugin_title . ': ' . __('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.', 'cyrlitera');
23
+ $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!', 'cyrlitera');
24
+
25
+ if( is_plugin_active('wp-translitera/wp-translitera.php') ) {
26
+ $notices[] = sprintf($default_notice, 'WP Translitera', $plugin_title, 'WP Translitera', 'WP Translitera');
27
+ }
28
+
29
+ if( is_plugin_active('cyr3lat/cyr-to-lat.php') ) {
30
+ $notices[] = sprintf($default_notice, 'Cyr to Lat enhanced', $plugin_title, 'Cyr to Lat enhanced', 'Cyr to Lat enhanced');
31
+ }
32
+
33
+ if( is_plugin_active('cyr2lat/cyr-to-lat.php') ) {
34
+ $notices[] = sprintf($default_notice, 'Cyr to Lat', $plugin_title, 'Cyr to Lat', 'Cyr to Lat');
35
+ }
36
+
37
+ if( is_plugin_active('cyr-and-lat/cyr-and-lat.php') ) {
38
+ $notices[] = sprintf($default_notice, 'Cyr-And-Lat', $plugin_title, 'Cyr-And-Lat', 'Cyr-And-Lat');
39
+ }
40
+
41
+ if( is_plugin_active('rustolat/rus-to-lat.php') ) {
42
+ $notices[] = sprintf($default_notice, 'RusToLat', $plugin_title, 'RusToLat', 'RusToLat');
43
+ }
44
+
45
+ if( is_plugin_active('rus-to-lat-advanced/ru-translit.php') ) {
46
+ $notices[] = sprintf($default_notice, 'Rus filename and link translit', $plugin_title, 'Rus filename and link translit', 'Rus filename and link translit');
47
+ }
48
+
49
+ return $notices;
50
+ }
51
+
52
+ add_filter('wbcr_clr_seo_page_warnings', 'wbcr_cyrlitera_get_conflict_notices_error');
53
+
54
+ /**
55
+ * Ошибки совместимости с похожими плагинами
56
+ */
57
+ function wbcr_cyrlitera_admin_conflict_notices_error()
58
+ {
59
+ $notices = wbcr_cyrlitera_get_conflict_notices_error();
60
+
61
+ if( empty($notices) ) {
62
+ return;
63
+ }
64
+
65
+ ?>
66
+ <div id="wbcr-cyrlitera-conflict-error" class="notice notice-error is-dismissible">
67
+ <?php foreach((array)$notices as $notice): ?>
68
+ <p>
69
+ <?= $notice ?>
70
+ </p>
71
+ <?php endforeach; ?>
72
+ </div>
73
+ <?php
74
+ }
75
+
76
+ add_action('admin_notices', 'wbcr_cyrlitera_admin_conflict_notices_error');
77
+
78
+ function wbcr_cyrlitera_rating_widget_url($page_url, $plugin_name)
79
+ {
80
+ if( $plugin_name == WCTR_Plugin::app()->getPluginName() ) {
81
+ return 'https://goo.gl/68ucHp';
82
+ }
83
+
84
+ return $page_url;
85
+ }
86
+
87
+ add_filter('wbcr_factory_imppage_rating_widget_url', 'wbcr_cyrlitera_rating_widget_url', 10, 2);
88
+
89
+ function wbcr_cyrlitera_group_options($options)
90
+ {
91
+ $options[] = array(
92
+ 'name' => 'use_transliterations',
93
+ 'title' => __('Use transliteration', 'cyrlitera'),
94
+ 'tags' => array(),
95
+ 'values' => array('hide_admin_notices' => 'only_selected')
96
+ );
97
+
98
+ $options[] = array(
99
+ 'name' => 'use_transliterations_filename',
100
+ 'title' => __('Convert file names', 'cyrlitera'),
101
+ 'tags' => array()
102
+ );
103
+
104
+ return $options;
105
+ }
106
+
107
+ add_filter("wbcr_clearfy_group_options", 'wbcr_cyrlitera_group_options');
108
+
109
+ function wbcr_cyrlitera_set_plugin_meta($links, $file)
110
+ {
111
+ if( $file == WCTR_PLUGIN_BASE ) {
112
+ $links[] = '<a href="https://goo.gl/TcMcS4" style="color: #FF5722;font-weight: bold;" target="_blank">' . __('Get ultimate plugin free', 'cyrlitera') . '</a>';
113
+ }
114
+
115
+ return $links;
116
+ }
117
+
118
+ if( !defined('LOADING_CYRLITERA_AS_ADDON') ) {
119
+ add_filter('plugin_row_meta', 'wbcr_cyrlitera_set_plugin_meta', 10, 2);
120
+ }
121
+
122
+
123
+
components/cyrlitera/admin/options.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Options for additionally form
4
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
5
+ * @copyright (c) 21.01.2018, Webcraftic
6
+ * @version 1.0
7
+ */
8
+
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
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_transliterations',
30
+ 'title' => __('Use transliteration', 'cyrlitera'),
31
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
32
+ 'hint' => __('If you enable this option, the permanent URLs of all previously published posts and pages will be converted into URLs with Latin characters. All new pages and posts will also have a URL in the Latin alphabet.', 'cyrlitera'),
33
+ 'default' => false
34
+ );
35
+ $options[] = array(
36
+ 'type' => 'checkbox',
37
+ 'way' => 'buttons',
38
+ 'name' => 'use_transliterations_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
+
45
+ return $options;
46
+ }
47
+
48
+ /**
49
+ * @param $form
50
+ * @param $page Wbcr_FactoryPages400_ImpressiveThemplate
51
+ * @return mixed
52
+ */
53
+ function wbcr_cyrlitera_seo_form_options($form, $page)
54
+ {
55
+ if( empty($form) ) {
56
+ return $form;
57
+ }
58
+
59
+ $options = wbcr_cyrlitera_get_plugin_options();
60
+
61
+ foreach(array_reverse($options) as $option) {
62
+ array_unshift($form[0]['items'], $option);
63
+ }
64
+
65
+ return $form;
66
+ }
67
+
68
+ add_filter('wbcr_clr_seo_form_options', 'wbcr_cyrlitera_seo_form_options', 10, 2);
components/cyrlitera/admin/pages/cyrlitera.php ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 WCTR_CyrliteraPage extends Wbcr_FactoryPages400_ImpressiveThemplate {
15
+
16
+ /**
17
+ * The id of the page in the admin menu.
18
+ *
19
+ * Mainly used to navigate between pages.
20
+ * @see FactoryPages400_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_Factory400_Plugin $plugin
30
+ */
31
+ public function __construct(Wbcr_Factory400_Plugin $plugin)
32
+ {
33
+ $this->menu_title = __('Transliteration', 'cyrlitera');
34
+
35
+ if( !defined('LOADING_CYRLITERA_AS_ADDON') ) {
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);
42
+
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
+ protected function afterFormSave()
54
+ {
55
+ $use_transliterations = $this->plugin->getOption('use_transliterations');
56
+ $transliterate_existing_slugs = $this->plugin->getOption('transliterate_existing_slugs');
57
+
58
+ if( !$use_transliterations || $transliterate_existing_slugs ) {
59
+ return;
60
+ }
61
+ WCTR_Helper::convertExistingSlugs();
62
+ $this->plugin->updateOption('transliterate_existing_slugs', 1);
63
+ }
64
+
65
+ /**
66
+ * Permalinks options.
67
+ *
68
+ * @since 1.0.0
69
+ * @return mixed[]
70
+ */
71
+ public function getOptions()
72
+ {
73
+ $options = wbcr_cyrlitera_get_plugin_options();
74
+
75
+ $formOptions = array();
76
+
77
+ $formOptions[] = array(
78
+ 'type' => 'form-group',
79
+ 'items' => $options,
80
+ //'cssClass' => 'postbox'
81
+ );
82
+
83
+ return apply_filters('wbcr_cyrlitera_general_form_options', $formOptions, $this);
84
+ }
85
+ }
components/cyrlitera/admin/pages/index.php ADDED
File without changes
components/cyrlitera/admin/pages/more-features.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 WCTR_MoreFeaturesPage extends Wbcr_FactoryClearfy200_MoreFeaturesPage {
15
+
16
+ }
components/cyrlitera/cyrlitera.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Plugin Name: Webcraftic cyrilic transliteration
4
+ * Plugin URI: https://wordpress.org/plugins/cyrlitera/
5
+ * Description: Disable admin notices plugin gives you the option to hide updates warnings and inline notices in the admin panel.
6
+ * Author: Webcraftic <wordpress.webraftic@gmail.com>
7
+ * Version: 1.0.0
8
+ * Text Domain: cyrlitera
9
+ * Domain Path: /languages/
10
+ */
11
+
12
+ // Exit if accessed directly
13
+ if( !defined('ABSPATH') ) {
14
+ exit;
15
+ }
16
+
17
+ if( defined('WCTR_PLUGIN_ACTIVE') || (defined('WCL_PLUGIN_ACTIVE') && !defined('LOADING_CYRLITERA_AS_ADDON')) ) {
18
+ function wbcr_cyrlitera_admin_notice_error()
19
+ {
20
+ ?>
21
+ <div class="notice notice-error">
22
+ <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 "Cyrilic transliteration"!', 'cyrlitera'); ?></p>
23
+ </div>
24
+ <?php
25
+ }
26
+
27
+ add_action('admin_notices', 'wbcr_cyrlitera_admin_notice_error');
28
+
29
+ return;
30
+ } else {
31
+
32
+ define('WCTR_PLUGIN_ACTIVE', true);
33
+ define('WCTR_PLUGIN_DIR', dirname(__FILE__));
34
+ define('WCTR_PLUGIN_BASE', plugin_basename(__FILE__));
35
+ define('WCTR_PLUGIN_URL', plugins_url(null, __FILE__));
36
+
37
+
38
+
39
+ if( !defined('LOADING_CYRLITERA_AS_ADDON') ) {
40
+ require_once(WCTR_PLUGIN_DIR . '/libs/factory/core/boot.php');
41
+ }
42
+
43
+ require_once(WCTR_PLUGIN_DIR . '/includes/class.helpers.php');
44
+ require_once(WCTR_PLUGIN_DIR . '/includes/class.plugin.php');
45
+
46
+ if( !defined('LOADING_CYRLITERA_AS_ADDON') ) {
47
+
48
+ new WCTR_Plugin(__FILE__, array(
49
+ 'prefix' => 'wbcr_cyrlitera_',
50
+ 'plugin_name' => 'cyrlitera',
51
+ 'plugin_title' => __('Webcraftic cyrilic transliteration', 'cyrlitera'),
52
+ 'plugin_version' => '1.0.0',
53
+ 'required_php_version' => '5.2',
54
+ 'required_wp_version' => '4.2',
55
+ 'plugin_build' => 'free',
56
+ 'updates' => WCTR_PLUGIN_DIR . '/updates/'
57
+ ));
58
+ }
59
+ }
components/cyrlitera/includes/class.helpers.php ADDED
@@ -0,0 +1,218 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Helpers functions
5
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
6
+ * @copyright (c) 2017 Webraftic Ltd
7
+ * @version 1.0
8
+ */
9
+
10
+ // Exit if accessed directly
11
+ if( !defined('ABSPATH') ) {
12
+ exit;
13
+ }
14
+
15
+ class WCTR_Helper {
16
+
17
+ public static function sanitizeTitle($title)
18
+ {
19
+ global $wpdb;
20
+
21
+ $iso9_table = array(
22
+ 'А' => 'A',
23
+ 'Б' => 'B',
24
+ 'В' => 'V',
25
+ 'Г' => 'G',
26
+ 'Ѓ' => 'G',
27
+ 'Ґ' => 'G',
28
+ 'Д' => 'D',
29
+ 'Е' => 'E',
30
+ 'Ё' => 'YO',
31
+ 'Є' => 'YE',
32
+ 'Ж' => 'ZH',
33
+ 'З' => 'Z',
34
+ 'Ѕ' => 'Z',
35
+ 'И' => 'I',
36
+ 'Й' => 'J',
37
+ 'Ј' => 'J',
38
+ 'І' => 'I',
39
+ 'Ї' => 'YI',
40
+ 'К' => 'K',
41
+ 'Ќ' => 'K',
42
+ 'Л' => 'L',
43
+ 'Љ' => 'L',
44
+ 'М' => 'M',
45
+ 'Н' => 'N',
46
+ 'Њ' => 'N',
47
+ 'О' => 'O',
48
+ 'П' => 'P',
49
+ 'Р' => 'R',
50
+ 'С' => 'S',
51
+ 'Т' => 'T',
52
+ 'У' => 'U',
53
+ 'Ў' => 'U',
54
+ 'Ф' => 'F',
55
+ 'Х' => 'H',
56
+ 'Ц' => 'TS',
57
+ 'Ч' => 'CH',
58
+ 'Џ' => 'DH',
59
+ 'Ш' => 'SH',
60
+ 'Щ' => 'SHH',
61
+ 'Ъ' => '',
62
+ 'Ы' => 'Y',
63
+ 'Ь' => '',
64
+ 'Э' => 'E',
65
+ 'Ю' => 'YU',
66
+ 'Я' => 'YA',
67
+ 'а' => 'a',
68
+ 'б' => 'b',
69
+ 'в' => 'v',
70
+ 'г' => 'g',
71
+ 'ѓ' => 'g',
72
+ 'ґ' => 'g',
73
+ 'д' => 'd',
74
+ 'е' => 'e',
75
+ 'ё' => 'yo',
76
+ 'є' => 'ye',
77
+ 'ж' => 'zh',
78
+ 'з' => 'z',
79
+ 'ѕ' => 'z',
80
+ 'и' => 'i',
81
+ 'й' => 'j',
82
+ 'ј' => 'j',
83
+ 'і' => 'i',
84
+ 'ї' => 'yi',
85
+ 'к' => 'k',
86
+ 'ќ' => 'k',
87
+ 'л' => 'l',
88
+ 'љ' => 'l',
89
+ 'м' => 'm',
90
+ 'н' => 'n',
91
+ 'њ' => 'n',
92
+ 'о' => 'o',
93
+ 'п' => 'p',
94
+ 'р' => 'r',
95
+ 'с' => 's',
96
+ 'т' => 't',
97
+ 'у' => 'u',
98
+ 'ў' => 'u',
99
+ 'ф' => 'f',
100
+ 'х' => 'h',
101
+ 'ц' => 'ts',
102
+ 'ч' => 'ch',
103
+ 'џ' => 'dh',
104
+ 'ш' => 'sh',
105
+ 'щ' => 'shh',
106
+ 'ъ' => '',
107
+ 'ы' => 'y',
108
+ 'ь' => '',
109
+ 'э' => 'e',
110
+ 'ю' => 'yu',
111
+ 'я' => 'ya',
112
+ );
113
+ $geo2lat = array(
114
+ 'ა' => 'a',
115
+ 'ბ' => 'b',
116
+ 'გ' => 'g',
117
+ 'დ' => 'd',
118
+ 'ე' => 'e',
119
+ 'ვ' => 'v',
120
+ 'ზ' => 'z',
121
+ 'თ' => 'th',
122
+ 'ი' => 'i',
123
+ 'კ' => 'k',
124
+ 'ლ' => 'l',
125
+ 'მ' => 'm',
126
+ 'ნ' => 'n',
127
+ 'ო' => 'o',
128
+ 'პ' => 'p',
129
+ 'ჟ' => 'zh',
130
+ 'რ' => 'r',
131
+ 'ს' => 's',
132
+ 'ტ' => 't',
133
+ 'უ' => 'u',
134
+ 'ფ' => 'ph',
135
+ 'ქ' => 'q',
136
+ 'ღ' => 'gh',
137
+ 'ყ' => 'qh',
138
+ 'შ' => 'sh',
139
+ 'ჩ' => 'ch',
140
+ 'ც' => 'ts',
141
+ 'ძ' => 'dz',
142
+ 'წ' => 'ts',
143
+ 'ჭ' => 'tch',
144
+ 'ხ' => 'kh',
145
+ 'ჯ' => 'j',
146
+ 'ჰ' => 'h'
147
+ );
148
+
149
+ $iso9_table = array_merge($iso9_table, $geo2lat);
150
+
151
+ $locale = get_locale();
152
+ switch( $locale ) {
153
+ case 'bg_BG':
154
+ $iso9_table['Щ'] = 'SHT';
155
+ $iso9_table['щ'] = 'sht';
156
+ $iso9_table['Ъ'] = 'A';
157
+ $iso9_table['ъ'] = 'a';
158
+ break;
159
+ case 'uk':
160
+ case 'uk_ua':
161
+ case 'uk_UA':
162
+ $iso9_table['И'] = 'Y';
163
+ $iso9_table['и'] = 'y';
164
+ break;
165
+ }
166
+
167
+ $is_term = false;
168
+ $backtrace = debug_backtrace();
169
+ foreach($backtrace as $backtrace_entry) {
170
+ if( $backtrace_entry['function'] == 'wp_insert_term' ) {
171
+ $is_term = true;
172
+ break;
173
+ }
174
+ }
175
+
176
+ $term = $is_term
177
+ ? $wpdb->get_var("SELECT slug FROM {$wpdb->terms} WHERE name = '$title'")
178
+ : '';
179
+
180
+ if( empty($term) ) {
181
+ $title = strtr($title, $iso9_table);
182
+ if( function_exists('iconv') ) {
183
+ $title = iconv('UTF-8', 'UTF-8//TRANSLIT//IGNORE', $title);
184
+ }
185
+ $title = preg_replace("/[^A-Za-z0-9'_\-\.]/", '-', $title);
186
+ $title = preg_replace('/\-+/', '-', $title);
187
+ $title = preg_replace('/^-+/', '', $title);
188
+ $title = preg_replace('/-+$/', '', $title);
189
+ } else {
190
+ $title = $term;
191
+ }
192
+
193
+ return $title;
194
+ }
195
+
196
+
197
+ public static function convertExistingSlugs()
198
+ {
199
+ global $wpdb;
200
+
201
+ $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')");
202
+ foreach((array)$posts as $post) {
203
+ $sanitized_name = self::sanitizeTitle(urldecode($post->post_name));
204
+ if( $post->post_name != $sanitized_name ) {
205
+ add_post_meta($post->ID, '_wp_old_slug', $post->post_name);
206
+ $wpdb->update($wpdb->posts, array('post_name' => $sanitized_name), array('ID' => $post->ID));
207
+ }
208
+ }
209
+
210
+ $terms = $wpdb->get_results("SELECT term_id, slug FROM {$wpdb->terms} WHERE slug REGEXP('[^A-Za-z0-9\-]+') ");
211
+ foreach((array)$terms as $term) {
212
+ $sanitized_slug = self::sanitizeTitle(urldecode($term->slug));
213
+ if( $term->slug != $sanitized_slug ) {
214
+ $wpdb->update($wpdb->terms, array('slug' => $sanitized_slug), array('term_id' => $term->term_id));
215
+ }
216
+ }
217
+ }
218
+ }
components/cyrlitera/includes/class.plugin.php ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
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
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+ if( !class_exists('WCTR_Plugin') ) {
15
+
16
+ if( !class_exists('WCTR_PluginFactory') ) {
17
+ if( defined('LOADING_CYRLITERA_AS_ADDON') ) {
18
+ class WCTR_PluginFactory {
19
+
20
+ }
21
+ } else {
22
+ class WCTR_PluginFactory extends Wbcr_Factory400_Plugin {
23
+
24
+ }
25
+ }
26
+ }
27
+
28
+ class WCTR_Plugin extends WCTR_PluginFactory {
29
+
30
+ /**
31
+ * @var Wbcr_Factory400_Plugin
32
+ */
33
+ private static $app;
34
+
35
+ /**
36
+ * @var bool
37
+ */
38
+ private $as_addon;
39
+
40
+ /**
41
+ * @param string $plugin_path
42
+ * @param array $data
43
+ * @throws Exception
44
+ */
45
+ public function __construct($plugin_path, $data)
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_Factory400_Plugin) ) {
55
+ throw new Exception('An invalid instance of the class was passed.');
56
+ }
57
+
58
+ self::$app = $plugin_parent;
59
+ } else {
60
+ self::$app = $this;
61
+ }
62
+
63
+ if( !$this->as_addon ) {
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
+ }
76
+
77
+ /**
78
+ * @return Wbcr_Factory400_Plugin
79
+ */
80
+ public static function app()
81
+ {
82
+ return self::$app;
83
+ }
84
+
85
+ protected function setTextDomain()
86
+ {
87
+ // Localization plugin
88
+ load_plugin_textdomain('cyrlitera', false, dirname(WCTR_PLUGIN_BASE) . '/languages/');
89
+ }
90
+
91
+ protected function setModules()
92
+ {
93
+ if( !$this->as_addon ) {
94
+ self::app()->load(array(
95
+ array('libs/factory/bootstrap', 'factory_bootstrap_400', 'admin'),
96
+ array('libs/factory/forms', 'factory_forms_400', 'admin'),
97
+ array('libs/factory/pages', 'factory_pages_400', 'admin'),
98
+ array('libs/factory/clearfy', 'factory_clearfy_200', 'all')
99
+ ));
100
+ }
101
+ }
102
+
103
+ private function registerPages()
104
+ {
105
+ if( $this->as_addon ) {
106
+ return;
107
+ }
108
+
109
+ self::app()->registerPage('WCTR_CyrliteraPage', WCTR_PLUGIN_DIR . '/admin/pages/cyrlitera.php');
110
+ self::app()->registerPage('WCTR_MoreFeaturesPage', WCTR_PLUGIN_DIR . '/admin/pages/more-features.php');
111
+ }
112
+
113
+ private function adminScripts()
114
+ {
115
+ require_once(WCTR_PLUGIN_DIR . '/admin/boot.php');
116
+ require_once(WCTR_PLUGIN_DIR . '/admin/options.php');
117
+
118
+ //$this->initActivation();
119
+ $this->registerPages();
120
+ }
121
+
122
+ private function globalScripts()
123
+ {
124
+ require_once(WCTR_PLUGIN_DIR . '/includes/classes/class.configurate-cyrlitera.php');
125
+ new WCTR_ConfigСyrlitera(self::$app);
126
+ }
127
+ }
128
+ }
components/cyrlitera/includes/classes/class.configurate-cyrlitera.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * This class configures hide admin notices
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
+ class WCTR_ConfigСyrlitera extends Wbcr_FactoryClearfy200_Configurate {
15
+
16
+ public function registerActionsAndFilters()
17
+ {
18
+ if( is_admin() || (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) ) {
19
+ if( $this->getOption('use_transliterations') ) {
20
+ add_filter('sanitize_title', 'WCTR_Helper::sanitizeTitle', 9);
21
+ }
22
+ if( $this->getOption('use_transliterations_filename') ) {
23
+ add_filter('sanitize_file_name', 'WCTR_Helper::sanitizeTitle');
24
+ }
25
+ }
26
+ }
27
+ }
components/cyrlitera/includes/classes/index.php ADDED
File without changes
components/cyrlitera/includes/index.php ADDED
File without changes
components/cyrlitera/languages/cyrlitera-ru_RU.mo ADDED
Binary file
components/cyrlitera/languages/cyrlitera-ru_RU.po ADDED
@@ -0,0 +1,480 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: clearfy\n"
4
+ "POT-Creation-Date: 2018-03-14 17:03+0300\n"
5
+ "PO-Revision-Date: 2018-03-14 17:07+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:22
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:23
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:93 admin/options.php:30
43
+ msgid "Use transliteration"
44
+ msgstr "Использовать транслитерацию"
45
+
46
+ #: admin/boot.php:100 admin/options.php:39
47
+ msgid "Convert file names"
48
+ msgstr "Конвертировать имена файлов"
49
+
50
+ #: admin/boot.php:112
51
+ msgid "Get ultimate plugin free"
52
+ msgstr "Получите полную версию плагина бесплатно"
53
+
54
+ #: admin/options.php:23
55
+ msgid "Transliteration of Cyrillic alphabet."
56
+ msgstr "Транслитерация кириллицы."
57
+
58
+ #: admin/options.php:23
59
+ msgid ""
60
+ "Converts Cyrillic permalinks of post, pages, taxonomies and media files to "
61
+ "the Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian "
62
+ "languages. Example: http://site.dev/последние-новости -> http://site.dev/"
63
+ "poslednie-novosti"
64
+ msgstr ""
65
+ "Конвертирует кириллические постоянные ссылки записей, страниц, таксономий и "
66
+ "медиафайлов в латиницу. Поддерживает Русский, Украинский, Грузинский, "
67
+ "Болгарский языки. Пример: http://site.dev/последние-новости -> http://site."
68
+ "dev/poslednie-novosti"
69
+
70
+ #: admin/options.php:32
71
+ msgid ""
72
+ "If you enable this option, the permanent URLs of all previously published "
73
+ "posts and pages will be converted into URLs with Latin characters. All new "
74
+ "pages and posts will also have a URL in the Latin alphabet."
75
+ msgstr ""
76
+ "Если включить эту опцию, постоянные URL всех ранее опубликованных записей и "
77
+ "страниц будут преобразованы в URL с латинскими символами. Все новые страницы "
78
+ "и записи, также будут иметь URL на латинице."
79
+
80
+ #: admin/options.php:41
81
+ msgid ""
82
+ "This option works only for new media library files. All Cyrillic names of "
83
+ "the downloaded files will be converted to names with Latin characters."
84
+ msgstr ""
85
+ "Эта опция работает только для новых файлов медиа библиотеки. Все "
86
+ "кириллические имена загружаемых файлов, будут преобразованы в имена с "
87
+ "латинскими символами."
88
+
89
+ #: admin/pages/cyrlitera.php:33 admin/pages/cyrlitera.php:49
90
+ msgid "Transliteration"
91
+ msgstr "Транслитерация"
92
+
93
+ #: admin/pages/cyrlitera.php:50
94
+ msgid "General"
95
+ msgstr "Основные"
96
+
97
+ #: cyrlitera.php:22
98
+ msgid ""
99
+ "We found that you have the \"Clearfy - disable unused features\" plugin "
100
+ "installed, this plugin already has disable comments functions, so you can "
101
+ "deactivate plugin \"Cyrilic transliteration\"!"
102
+ msgstr ""
103
+ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
104
+ "неиспользуемые функции», этот плагин уже имеет функции отключения "
105
+ "комментариев, поэтому вы можете отключить плагин «Транслитерация кириллицы»!"
106
+
107
+ #: cyrlitera.php:80
108
+ msgid "Webcraftic cyrilic transliteration"
109
+ msgstr "Webcraftic транслитерация кириллицы"
110
+
111
+ #~ msgid "You don't have enough capability to edit this information."
112
+ #~ msgstr "Вы не имеете разрешения на редактирование этого!"
113
+
114
+ #~ msgid "Undefinded notice id."
115
+ #~ msgstr "Не передан notice id."
116
+
117
+ #~ msgid "Success"
118
+ #~ msgstr "Успешно"
119
+
120
+ #~ msgid "Hide admin notices"
121
+ #~ msgstr "Скрыть уведомления"
122
+
123
+ #~ msgid "Enable hidden notices in adminbar"
124
+ #~ msgstr "Включить уведомления в админбаре"
125
+
126
+ #~ msgid "Admin notifications, Update nags"
127
+ #~ msgstr "Уведомления администратора, уведомления об обновлении Wordpress"
128
+
129
+ #~ msgid ""
130
+ #~ "Do you know the situation, when some plugin offers you to update to "
131
+ #~ "premium, to collect technical data and shows many annoying notices? You "
132
+ #~ "are close these notices every now and again but they newly appears and "
133
+ #~ "interfere your work with WordPress. Even worse, some plugin’s authors "
134
+ #~ "delete “close” button from notices and they shows in your admin panel "
135
+ #~ "forever."
136
+ #~ msgstr ""
137
+ #~ "Вам знакома ситуация, когда какой-то плагин просит вас обновиться до "
138
+ #~ "премиум-версии, получить права на сбор данных о вашем сайте и создает "
139
+ #~ "много раздражающих уведомлений? Вы закрываете эти уведомления раз за "
140
+ #~ "разом, но они вновь появляются и мешают вашей работе с WordPress. Хуже "
141
+ #~ "того, некоторые авторы и вовсе удаляют кнопку “закрыть” из уведомлений, и "
142
+ #~ "они висят в шапке вашей панели администратора целую вечность."
143
+
144
+ #~ msgid "All notices"
145
+ #~ msgstr "Все уведомления"
146
+
147
+ #~ msgid "Hide all notices globally."
148
+ #~ msgstr "Скрыть все уведомления глобально."
149
+
150
+ #~ msgid "Only selected"
151
+ #~ msgstr "Только выбранные"
152
+
153
+ #~ msgid ""
154
+ #~ "Hide selected notices only. You will see the link \"Hide notification "
155
+ #~ "forever\" in each notice. Push it and they will not bother you anymore."
156
+ #~ msgstr ""
157
+ #~ "Скрывать только выбранные уведомления. В каждом уведомлении вы увидите "
158
+ #~ "ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление "
159
+ #~ "будет скрыто навсегда и перестанет вас беспокоить."
160
+
161
+ #~ msgid "Don't nide"
162
+ #~ msgstr "Не скрывать"
163
+
164
+ #~ msgid ""
165
+ #~ "Do not hide notices and do not show “Hide notification forever” link for "
166
+ #~ "admin."
167
+ #~ msgstr ""
168
+ #~ "Не скрывать уведомления и не показывать ссылку \"Скрыть уведомление "
169
+ #~ "навсегда\" в уведомлениях администратора."
170
+
171
+ #~ msgid ""
172
+ #~ "Some plugins shows notifications about premium version, data collecting "
173
+ #~ "or promote their services. Even if you push close button (that sometimes "
174
+ #~ "are impossible), notices are shows again in some time. This option allows "
175
+ #~ "you to control notices. Hide them all or each individually. Some plugins "
176
+ #~ "shows notifications about premium version, data collecting or promote "
177
+ #~ "their services. Even if you push close button (that sometimes are "
178
+ #~ "impossible), notices are shows again in some time. This option allows you "
179
+ #~ "to control notices. Hide them all or each individually."
180
+ #~ msgstr ""
181
+ #~ "Зачастую, плагины отображают уведомления о возможности перехода на "
182
+ #~ "премиум версию, просят разрешение на сбор данных, рекламируют свои "
183
+ #~ "услуги. Даже если вы нажмете кнопку закрыть (что не всегда возможно), "
184
+ #~ "уведомления всё равно отобразятся через какое-то время. С помощью этой "
185
+ #~ "настройки, вы можете контролировать эти уведомления. Скройте их все сразу "
186
+ #~ "или каждое по отдельности."
187
+
188
+ #~ msgid ""
189
+ #~ "By default, the plugin hides all notices, which you specified. If you "
190
+ #~ "enable this option, the plugin will collect all hidden notices and show "
191
+ #~ "them into the top admin toolbar. It will not disturb you but will allow "
192
+ #~ "to look notices at your convenience."
193
+ #~ msgstr ""
194
+ #~ "По умолчанию, плагин полностью скрывает отключенные вами уведомления. "
195
+ #~ "Если включить эту опцию, то плагин будет собирать все скрытые вами "
196
+ #~ "уведомления и выводить в верхней панели администратора. Это не будет вас "
197
+ #~ "раздражать, но и позволит просматривать уведомления, когда вам это удобно."
198
+
199
+ #~ msgid "Push reset hidden notices if you need to show hidden notices again."
200
+ #~ msgstr "Нажмите кнопку \\\"Сбросить скрытые уведомления\\\""
201
+
202
+ #~ msgid "Reset hidden notices (%s)"
203
+ #~ msgstr "Сбросить скрытые уведомления (%s)"
204
+
205
+ #~ msgid "Hidden notices are successfully reset, now you can see them again!"
206
+ #~ msgstr ""
207
+ #~ "Скрытые уведомления успешно восстановлены, теперь вы можете снова видеть "
208
+ #~ "их!"
209
+
210
+ #~ msgid "Notices"
211
+ #~ msgstr "Уведомления"
212
+
213
+ #~ msgid ""
214
+ #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
215
+ #~ "installed, this plugin already has disable comments functions, so you can "
216
+ #~ "deactivate plugin \"Disable admin notices\"!"
217
+ #~ msgstr ""
218
+ #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
219
+ #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
220
+ #~ "комментариев, поэтому вы можете отключить плагин «Скрыть уведомления "
221
+ #~ "администратора»!"
222
+
223
+ #~ msgid "Webcraftic disable admin notices"
224
+ #~ msgstr "Webcraftic отключить уведомления администратора"
225
+
226
+ #~ msgid "Notifications %s"
227
+ #~ msgstr "Уведомления %s"
228
+
229
+ #~ msgid "Restore notice"
230
+ #~ msgstr "Восстановить уведомление"
231
+
232
+ #~ msgid "Hide notification forever"
233
+ #~ msgstr "Скрыть уведомление навсегда"
234
+
235
+ #~ msgid "Hidden notices"
236
+ #~ msgstr "Скрытые уведомления"
237
+
238
+ #~ msgid "Disable comments on the entire site"
239
+ #~ msgstr "Отключить комментарии на всем сайте"
240
+
241
+ #~ msgid "Select post types"
242
+ #~ msgstr "Выбрать тип записи"
243
+
244
+ #~ msgid "Replace external links in comments on the JavaScript code"
245
+ #~ msgstr "Заменить внешние ссылки в комментариях на JavaScript код"
246
+
247
+ #~ msgid "Replace external links from comment authors on the JavaScript code"
248
+ #~ msgstr "Заменить внешние ссылки от авторов комментариев на код JavaScript"
249
+
250
+ #~ msgid "Disable X-Pingback"
251
+ #~ msgstr "Убрать ссылку на X-Pingback и возможность спамить pingback-ами"
252
+
253
+ #~ msgid "Remove field \"site\" in comment form"
254
+ #~ msgstr "Удаляет поле \"Сайт\" в форме комментариев"
255
+
256
+ #~ msgid "Disable all comments"
257
+ #~ msgstr "Отключить все комментарии"
258
+
259
+ #~ msgid "Comments"
260
+ #~ msgstr "Комментарии"
261
+
262
+ #~ msgid ""
263
+ #~ "Hide selected notices only. You will see the link \"Hide notification "
264
+ #~ "forever\" in each notice. Push it and they will not bother you anymore. "
265
+ #~ "Push <a href=\"%s\">reset hidden notices (%d)</a> if you need to show "
266
+ #~ "hidden notices again."
267
+ #~ msgstr ""
268
+ #~ "Скрывать только выбранные уведомления. В каждом уведомлении вы увидите "
269
+ #~ "ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление "
270
+ #~ "будет скрыто навсегда и перестанет вас беспокоить. Нажмите <a href=\"%s"
271
+ #~ "\">сбросить скрытые уведомления (%d)</a>, если вам нужно восстановить "
272
+ #~ "показ скрытых ранее уведомлений."
273
+
274
+ #~ msgid "Webcraftic hide admin notices"
275
+ #~ msgstr "Webcraftic скрыть уведомления администратора"
276
+
277
+ #~ msgid "Comments tweaks"
278
+ #~ msgstr "Инструменты комментариев"
279
+
280
+ #~ msgid "All comments have been deleted."
281
+ #~ msgstr "Все комментарии были удалены."
282
+
283
+ #~ msgid ""
284
+ #~ "An error occurred while trying to delete comments. Internal error "
285
+ #~ "occured. Please try again later."
286
+ #~ msgstr ""
287
+ #~ "При попытке удалить комментарии произошла ошибка. Пожалуйста, повторите "
288
+ #~ "попытку позже."
289
+
290
+ #~ msgid "You are not allowed to view this page."
291
+ #~ msgstr "Вам не разрешено просматривать эту страницу."
292
+
293
+ #~ msgid "You do not have the selected post types!"
294
+ #~ msgstr "Вы не выбрали еще ни одного типа записей!"
295
+
296
+ #~ msgid "No comments available for deletion."
297
+ #~ msgstr "Нет комментариев для удаления."
298
+
299
+ #~ msgid ""
300
+ #~ "Are you sure that you desire to delete all comments from the database?"
301
+ #~ msgstr "Вы уверены, что хотите удалить все комментарии из базы данных?"
302
+
303
+ #~ msgid ""
304
+ #~ "Deleting comments will remove existing comment entries in the database "
305
+ #~ "and cannot be reverted without a database backup."
306
+ #~ msgstr ""
307
+ #~ "При удалении комментариев удаляются существующие записи комментариев в "
308
+ #~ "базе данных, они не могут быть восстановлены без резервного копирования "
309
+ #~ "базы данных."
310
+
311
+ #~ msgid "You have %s comments"
312
+ #~ msgstr "У вас есть %s комментариев"
313
+
314
+ #~ msgid "Yes, I'm sure"
315
+ #~ msgstr "Да, я уверен"
316
+
317
+ #~ msgid "No, return back"
318
+ #~ msgstr "Нет, вернуться"
319
+
320
+ #~ msgid ""
321
+ #~ "Are you sure that you desire to delete all comments from the database for "
322
+ #~ "the selected post types (%s)?"
323
+ #~ msgstr ""
324
+ #~ "Вы уверены, что хотите удалить все комментарии из базы данных для "
325
+ #~ "выбранных типов записей (%s)?"
326
+
327
+ #~ msgid "Disable comments"
328
+ #~ msgstr "Отключить комментарии"
329
+
330
+ #~ msgid "Not disable"
331
+ #~ msgstr "Не отключать"
332
+
333
+ #~ msgid "Everywhere"
334
+ #~ msgstr "Повсюду"
335
+
336
+ #~ msgid ""
337
+ #~ "You can delete all comments in the database by clicking on this link (<a "
338
+ #~ "href=\"%s\">cleaning comments in database</a>)."
339
+ #~ msgstr ""
340
+ #~ "Вы можете удалить все комментарии в базе данных, нажав на эту ссылку ( <a "
341
+ #~ "href=\"%s\">очистка комментариев в базе данных</a> )."
342
+
343
+ #~ msgid "On certain post types"
344
+ #~ msgstr "Только выбранные типы записей"
345
+
346
+ #~ msgid ""
347
+ #~ "You can delete all comments for the selected post types. Select the post "
348
+ #~ "types below and save the settings. After that, click the link (<a href="
349
+ #~ "\"%s\">delete all comments for the selected post types in database</a>)."
350
+ #~ msgstr ""
351
+ #~ "Вы можете удалить все комментарии для выбранных типов записей. Выберите "
352
+ #~ "типы записей ниже и сохраните настройки. После этого нажмите ссылку ( <a "
353
+ #~ "href=\"%s\">удалите все комментарии для выбранных типов записей в базе "
354
+ #~ "данных</a> )."
355
+
356
+ #~ msgid ""
357
+ #~ "Everywhere - Warning: This option is global and will affect your entire "
358
+ #~ "site. Use it only if you want to disable comments everywhere. A complete "
359
+ #~ "description of what this option does is available here"
360
+ #~ msgstr ""
361
+ #~ "Повсюду - предупреждение: этот параметр является глобальным и повлияет на "
362
+ #~ "весь ваш сайт. Используйте его только в том случае, если вы хотите "
363
+ #~ "отключить комментарии повсюду. "
364
+
365
+ #~ msgid ""
366
+ #~ "On certain post types - Disabling comments will also disable trackbacks "
367
+ #~ "and pingbacks. All comment-related fields will also be hidden from the "
368
+ #~ "edit/quick-edit screens of the affected posts. These settings cannot be "
369
+ #~ "overridden for individual posts."
370
+ #~ msgstr ""
371
+ #~ "В некоторых типах сообщений - отключение комментариев также отключает "
372
+ #~ "трекбэки и pingback. Все поля, связанные с комментариями, также будут "
373
+ #~ "скрыты от экранов редактирования / быстрого редактирования затронутых "
374
+ #~ "сообщений. Эти настройки нельзя переопределять для отдельных сообщений."
375
+
376
+ #~ msgid "Select the post types for which comments will be disabled"
377
+ #~ msgstr "Выберите типы записей, для которых комментарии будут отключены."
378
+
379
+ #~ msgid ""
380
+ #~ "Tired of spam in the comments? Do visitors leave \"blank\" comments for "
381
+ #~ "the sake of a link to their site?"
382
+ #~ msgstr ""
383
+ #~ "Надоел спам в комментариях? Посетители оставляют «пустые» комментарии "
384
+ #~ "ради ссылки на свой сайт?"
385
+
386
+ #~ msgid "Removes the \"Site\" field from the comment form."
387
+ #~ msgstr "Убирает поле «Сайт» из формы комментирования."
388
+
389
+ #~ msgid ""
390
+ #~ "Works with the standard comment form, if the form is manually written in "
391
+ #~ "your theme-it probably will not work!"
392
+ #~ msgstr ""
393
+ #~ "Работает со стандартной формой комментирования, если в Вашей теме форма "
394
+ #~ "прописана вручную - скорей всего не сработает!"
395
+
396
+ #~ msgid "Recommended"
397
+ #~ msgstr "Рекомендовано"
398
+
399
+ #~ msgid ""
400
+ #~ "Superfluous external links from comments, which can be typed from a dozen "
401
+ #~ "and more for one article, do not bring anything good for promotion."
402
+ #~ msgstr ""
403
+ #~ "Внешние ссылки в комментариях, которых может быть десятки или больше на "
404
+ #~ "одной странице, могут ухудшить продвижение вашего сайта."
405
+
406
+ #~ msgid "Replaces the links of this kind of %s, on links of this kind %s"
407
+ #~ msgstr ""
408
+ #~ "Заменяет ссылки %s, на span тег и устанавливает переход с помощью "
409
+ #~ "JavaScript %s"
410
+
411
+ #~ msgid ""
412
+ #~ "Up to 90 percent of comments in the blog can be left for the sake of an "
413
+ #~ "external link. Even nofollow from page weight loss here does not help."
414
+ #~ msgstr ""
415
+ #~ "До 90 процентов комментариев в блоге оставляют ради внешней ссылки. Не "
416
+ #~ "поможет даже nofollow от потери веса страницы."
417
+
418
+ #~ msgid ""
419
+ #~ "Replaces the links of the authors of comments on the JavaScript code, it "
420
+ #~ "is impossible to distinguish it from usual links."
421
+ #~ msgstr ""
422
+ #~ "Заменяет ссылки авторов комментариев на JavaScript код, его невозможно "
423
+ #~ "отличить от обычной ссылки."
424
+
425
+ #~ msgid "In some Wordpress topics this may not work."
426
+ #~ msgstr "В некоторых темах Wordpress это может не сработать."
427
+
428
+ #~ msgid "Disable XML-RPC"
429
+ #~ msgstr "Отключить XML-RPC"
430
+
431
+ #~ msgid ""
432
+ #~ "A pingback is basically an automated comment that gets created when "
433
+ #~ "another blog links to you. A self-pingback is created when you link to an "
434
+ #~ "article within your own blog. Pingbacks are essentially nothing more than "
435
+ #~ "spam and simply waste resources."
436
+ #~ msgstr ""
437
+ #~ "Pingback по-существу автоматизированных комментарий, который создается, "
438
+ #~ "когда другой блог ссылается на вас. Self-pingback создается, когда вы "
439
+ #~ "оставили ссылку на статью в своем блоге. Pingbacks по существу являются "
440
+ #~ "не более чем спам и пустая трата ресурсов вашего сайта."
441
+
442
+ #~ msgid "Removes the server responses a reference to the xmlrpc file."
443
+ #~ msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
444
+
445
+ #~ msgid ""
446
+ #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
447
+ #~ "installed, this plugin already has disable comments functions, so you can "
448
+ #~ "deactivate plugin \"Comments tweaks\"!"
449
+ #~ msgstr ""
450
+ #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
451
+ #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
452
+ #~ "комментариев, поэтому вы можете отключить плагин «Инструменты "
453
+ #~ "комментариев»!"
454
+
455
+ #~ msgid "Webcraftic comments tweaks"
456
+ #~ msgstr "Webcraftic инструменты комментариев"
457
+
458
+ #~ msgid "Comments are closed."
459
+ #~ msgstr "Комментарии Закрыты."
460
+
461
+ #~ msgid ""
462
+ #~ "Note: The <em>%s</em> plugin is currently active, and comments are "
463
+ #~ "completely disabled on: %s. Many of the settings below will not be "
464
+ #~ "applicable for those post types."
465
+ #~ msgstr ""
466
+ #~ "Примечание. Плагин <em>%s</em> в настоящий момент активен, и комментарии "
467
+ #~ "полностью отключены: %s. Многие из приведенных ниже настроек не будут "
468
+ #~ "применяться для этих типов сообщений."
469
+
470
+ #~ msgid ""
471
+ #~ "We found that you have the \"Clearfy - disable unused features\" plugin "
472
+ #~ "installed, this plugin already has disable comments functions, so you can "
473
+ #~ "deactivate plugin \"Disable comments\"!"
474
+ #~ msgstr ""
475
+ #~ "Мы обнаружили, что у вас установлен плагин «Clearfy - отключить "
476
+ #~ "неиспользуемые функции», этот плагин уже имеет функции отключения "
477
+ #~ "комментариев, поэтому вы можете отключить плагин «Отключить комментарии»!"
478
+
479
+ #~ msgid "Webcraftic Disable comments"
480
+ #~ msgstr "Webcraftic отключить комментарии"
components/cyrlitera/languages/index.php ADDED
File without changes
components/cyrlitera/libs/index.php ADDED
File without changes
components/cyrlitera/readme.txt ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Disable admin notices individually ===
2
+ Tags: hide admin notices, hide updates nags, hide nags, disable notices, disable update nags, disable nags, disable admin notices
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
10
+
11
+ Disable admin notices plugin gives you the option to hide updates warnings and inline notices in the admin panel.
12
+
13
+ == Description ==
14
+
15
+ Do you know the situation, when some plugin offers you to update to premium, to collect technical data and shows many annoying notices? You are close these notices every now and again but they newly appears and interfere your work with WordPress. Even worse, some plugin’s authors delete “close” button from notices and they shows in your admin panel forever.
16
+
17
+ Our team was tired of this, and we developed a small plugin that solves problems with annoying notices. With this plugin, you can turn off notices forever individually for themes, plugins and the WordPress itself.
18
+
19
+ The Hide admin notices plugin adds “Hide notification forever” link for each admin notice. Click this link and plugin will filter this notice and you will never see it. This method will help you to disable only annoying notices from plugins and themes, but important error notifications will continue to work.
20
+
21
+ In addition, you can disable all notices globally simply change plugin options. In this case, the plugin hides all admin notices, except of updates notices in the list of installed plug-ins.
22
+
23
+ And still, that you could see which notices are shows, we made the special item in the top admin bar that will collect all notices in one place. It is disabled by default to freeing space in the admin menu but you can enable it in plugin options.
24
+
25
+ We used some useful functions from plugins <strong>Clearfy – disable unused features</strong>, <strong>WP Hide Plugin Updates and Warnings</strong>, <strong>Hide All Notices</strong>, <strong>WP Nag Hide</strong>, <strong>WP Notification Center</strong>
26
+
27
+ #### Recommended separate modules ####
28
+
29
+ We invite you to check out a few other related free plugins that our team has also produced that you may find especially useful:
30
+
31
+ * [Clearfy – disable unused features](https://wordpress.org/plugins/gonzales/)
32
+ * [WP Asset manager](https://wordpress.org/plugins/gonzales/)
33
+ * [Disable Comments for Any Post Types (Disable XML-RPC, Disable Self Pingbacks, Remove Comments)](https://wordpress.org/plugins/comments-plus/)
34
+ * [Disable updates, Disable automatic updates, Updates manager](https://wordpress.org/plugins/webcraftic-updates-manager/)
35
+
36
+ == Translations ==
37
+
38
+ * English - default, always included
39
+ * Russian
40
+
41
+ If you want to help with the translation, please contact me through this site or through the contacts inside the plugin.
42
+
43
+ == Installation ==
44
+
45
+ 1. Upload the plugin folder to the `/wp-content/plugins/` directory
46
+ 2. Activate the plugin through the 'Plugins' menu in WordPress
47
+ 3. The plugin settings can be accessed via the 'Settings' menu in the administration area (either your site administration for single-site installs).
48
+
49
+ == Screenshots ==
50
+ 1. Shows an example of use
51
+ 2. Control panel
52
+ 3. Notifications panel (optional)
53
+
54
+ == Changelog ==
55
+ = 1.0.3 =
56
+ * Added a new feature: To restore hidden admin notices individually
57
+ * Fixed: Core bugs
58
+
59
+ = 1.0.2 =
60
+ * Updated styles for the “Hide notification forever” link
61
+ * Compatibility with plugins from webcraftic is updated
62
+
63
+ = 1.0.0 =
64
+ * Plugin release
components/cyrlitera/uninstall.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // if uninstall.php is not called by WordPress, die
4
+ if( !defined('WP_UNINSTALL_PLUGIN') ) {
5
+ die;
6
+ }
7
+
8
+ // remove plugin options
9
+ global $wpdb;
10
+
11
+ $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_cyrlitera_%';");
12
+
13
+
components/disable-admin-notices/admin/ajax/hide-notice.php CHANGED
@@ -6,13 +6,16 @@
6
  * @version 1.0
7
  */
8
 
9
- function wbcr_clearfy_ajax_hide_notices()
10
- {
11
- global $wbcr_dan_plugin;
 
12
 
13
- check_ajax_referer($wbcr_dan_plugin->pluginName . '_ajax_hide_notices_nonce', 'security');
 
 
14
 
15
- if( !current_user_can('manage_options') ) {
16
  echo json_encode(array('error' => __('You don\'t have enough capability to edit this information.', 'disable-admin-notices')));
17
  exit;
18
  }
@@ -22,11 +25,7 @@
22
  : null;
23
 
24
  $notice_html = isset($_POST['notice_html'])
25
- ? wp_kses($_POST['notice_html'], array(
26
- 'a' => array(
27
- 'href' => array()
28
- )
29
- ))
30
  : null;
31
 
32
  if( empty($notice_id) ) {
@@ -34,7 +33,7 @@
34
  exit;
35
  }
36
 
37
- $get_hidden_notices = get_option($wbcr_dan_plugin->pluginName . '_hidden_notices');
38
 
39
  if( !is_array($get_hidden_notices) ) {
40
  $get_hidden_notices = array();
@@ -42,10 +41,10 @@
42
 
43
  $get_hidden_notices[$notice_id] = rtrim(trim($notice_html));
44
 
45
- update_option($wbcr_dan_plugin->pluginName . '_hidden_notices', $get_hidden_notices);
46
 
47
  echo json_encode(array('success' => __('Success', 'disable-admin-notices')));
48
  exit;
49
  }
50
 
51
- add_action('wp_ajax_wbcr_clearfy_hide_notices', 'wbcr_clearfy_ajax_hide_notices');
6
  * @version 1.0
7
  */
8
 
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
 
14
+ function 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('update_plugins') ) {
19
  echo json_encode(array('error' => __('You don\'t have enough capability to edit this information.', 'disable-admin-notices')));
20
  exit;
21
  }
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) ) {
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();
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');
components/disable-admin-notices/admin/ajax/index.php ADDED
File without changes
components/disable-admin-notices/admin/ajax/restore-notice.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Restore notice
4
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
5
+ * @copyright (c) 12.01.2018, Webcraftic
6
+ * @version 1.0
7
+ */
8
+
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+ function 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('update_plugins') ) {
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');
components/disable-admin-notices/admin/assets/css/index.php ADDED
File without changes
components/disable-admin-notices/admin/assets/css/notifications-panel.css CHANGED
@@ -21,7 +21,7 @@
21
  padding: 0;
22
  }
23
  #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li {
24
- border-left: 4px solid #32373c;
25
  padding: 0;
26
  }
27
  #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li.wpnc-updated {
@@ -33,11 +33,23 @@
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 .ab-item {
37
  height: 100% !important;
38
  white-space: normal !important;
39
  padding: .5em 1em;
40
  border-bottom: 1px solid #4a4f55;
 
41
  line-height: .5em;
42
  }
43
  #wp-admin-bar-wbcr-han-notify-panel .ab-sub-wrapper ul.ab-submenu > li .ab-item a {
@@ -46,4 +58,8 @@
46
  margin: 0;
47
  text-decoration: underline;
48
  line-height: .5em;
 
 
 
 
49
  }
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 {
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 {
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/css/notifications-panel.less CHANGED
@@ -5,6 +5,7 @@
5
  */
6
 
7
  #wp-admin-bar-wbcr-han-notify-panel {
 
8
  .wbcr-han-adminbar-counter {
9
  background-color: #0073aa;
10
  border-radius: 50%;
@@ -25,24 +26,37 @@
25
  padding: 0;
26
 
27
  & > li {
28
- border-left: 4px solid #32373c;
29
  padding: 0;
30
 
31
  &.wpnc-updated {
32
  border-left-color: #7ad03a;
33
  }
34
  &.wpnc-update-nag {
35
- border-left-color: #ffba00;;
36
  }
37
  &.wpnc-error {
38
  border-left-color: #dd3d36;
39
  }
40
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  .ab-item {
42
  height: 100% !important;
43
  white-space: normal !important;
44
  padding: .5em 1em;
45
  border-bottom: 1px solid #4a4f55;
 
46
  line-height: .5em;
47
  a {
48
  display: inline;
@@ -50,9 +64,13 @@
50
  margin: 0;
51
  text-decoration: underline;
52
  line-height: .5em;
 
53
  }
54
  }
 
55
 
 
 
56
  }
57
  }
58
  }
5
  */
6
 
7
  #wp-admin-bar-wbcr-han-notify-panel {
8
+
9
  .wbcr-han-adminbar-counter {
10
  background-color: #0073aa;
11
  border-radius: 50%;
26
  padding: 0;
27
 
28
  & > li {
29
+ border-left: 4px solid #26292b;
30
  padding: 0;
31
 
32
  &.wpnc-updated {
33
  border-left-color: #7ad03a;
34
  }
35
  &.wpnc-update-nag {
36
+ border-left-color: #ffba00;
37
  }
38
  &.wpnc-error {
39
  border-left-color: #dd3d36;
40
  }
41
 
42
+ .wbcr-han-panel-restore-notify-line {
43
+ text-align: right;
44
+ a {
45
+ color: #ffba00 !important;
46
+ text-decoration: none !important;
47
+ &:hover {
48
+ text-decoration: underline !important;
49
+ color: lighten(#ffba00, 5%) !important;
50
+ }
51
+ }
52
+ }
53
+
54
  .ab-item {
55
  height: 100% !important;
56
  white-space: normal !important;
57
  padding: .5em 1em;
58
  border-bottom: 1px solid #4a4f55;
59
+ color: #949494;
60
  line-height: .5em;
61
  a {
62
  display: inline;
64
  margin: 0;
65
  text-decoration: underline;
66
  line-height: .5em;
67
+ color: #949494;
68
  }
69
  }
70
+ }
71
 
72
+ li:nth-child(2n) {
73
+ background: #26292b;
74
  }
75
  }
76
  }
components/disable-admin-notices/admin/assets/index.php ADDED
File without changes
components/disable-admin-notices/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/disable-admin-notices/admin/assets/js/index.php ADDED
File without changes
components/disable-admin-notices/admin/assets/js/notifications-panel.js ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Notification panel
3
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
4
+ * @copyright (c) 10.09.2017, Webcraftic
5
+ * @version 1.0
6
+ */
7
+
8
+ (function($) {
9
+ 'use strict';
10
+
11
+ $(document).ready(function() {
12
+ $(document).on('click', '.wbcr-han-panel-restore-notify-link', function() {
13
+ var self = $(this),
14
+ noticeID = $(this).data('notice-id'),
15
+ counterEl = $('.wbcr-han-adminbar-counter');
16
+
17
+ if( !noticeID ) {
18
+ alert('Undefinded error. Please report the bug to our support forum.');
19
+ }
20
+
21
+ self.closest('li').hide();
22
+
23
+ $.ajax(ajaxurl, {
24
+ type: 'post',
25
+ dataType: 'json',
26
+ data: {
27
+ action: 'wbcr_dan_restore_notice',
28
+ security: wbcr_dan_ajax_restore_nonce,
29
+ notice_id: noticeID
30
+ },
31
+ success: function(data, textStatus, jqXHR) {
32
+ if( data == 'error' && data.error ) {
33
+ alert(data.error);
34
+ self.closest('li').show();
35
+ return;
36
+ }
37
+
38
+ counterEl.text(counterEl.text() - 1);
39
+ self.closest('li').remove();
40
+ }
41
+ });
42
+ });
43
+ });
44
+ })(jQuery);
components/disable-admin-notices/admin/boot.php CHANGED
@@ -6,20 +6,14 @@
6
  * @version 1.0
7
  */
8
 
9
- require(WBCR_DAN_PLUGIN_DIR . '/admin/options.php');
10
-
11
- if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
12
- require(WBCR_DAN_PLUGIN_DIR . '/admin/pages/more-features.php');
13
- require(WBCR_DAN_PLUGIN_DIR . '/admin/pages/notices.php');
14
- }
15
-
16
- if( isset($_REQUEST['action']) && $_REQUEST['action'] == 'wbcr_clearfy_hide_notices' ) {
17
- require(WBCR_DAN_PLUGIN_DIR . '/admin/ajax/hide-notice.php');
18
  }
19
 
20
  function wbcr_dan_rating_widget_url($page_url, $plugin_name)
21
  {
22
- if( $plugin_name == 'wbcr_dan' ) {
23
  return 'https://goo.gl/68ucHp';
24
  }
25
 
@@ -41,18 +35,19 @@
41
  'title' => __('Enable hidden notices in adminbar', 'disable-admin-notices'),
42
  'tags' => array()
43
  );
44
- $options[] = array(
 
45
  'name' => 'hidden_notices',
46
  'title' => __('Hidden notices', 'disable-admin-notices'),
47
  'tags' => array()
48
- );
49
 
50
  return $options;
51
  }
52
 
53
  function wbcr_dan_set_plugin_meta($links, $file)
54
  {
55
- if( $file == WBCR_DAN_PLUGIN_BASE ) {
56
  $links[] = '<a href="https://goo.gl/TcMcS4" style="color: #FF5722;font-weight: bold;" target="_blank">' . __('Get ultimate plugin free', 'disable-admin-notices') . '</a>';
57
  }
58
 
6
  * @version 1.0
7
  */
8
 
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
 
 
 
 
 
 
12
  }
13
 
14
  function wbcr_dan_rating_widget_url($page_url, $plugin_name)
15
  {
16
+ if( $plugin_name == WDN_Plugin::app()->getPluginName() ) {
17
  return 'https://goo.gl/68ucHp';
18
  }
19
 
35
  'title' => __('Enable hidden notices in adminbar', 'disable-admin-notices'),
36
  'tags' => array()
37
  );
38
+
39
+ /*$options[] = array(
40
  'name' => 'hidden_notices',
41
  'title' => __('Hidden notices', 'disable-admin-notices'),
42
  'tags' => array()
43
+ );*/
44
 
45
  return $options;
46
  }
47
 
48
  function wbcr_dan_set_plugin_meta($links, $file)
49
  {
50
+ if( $file == WDN_PLUGIN_BASE ) {
51
  $links[] = '<a href="https://goo.gl/TcMcS4" style="color: #FF5722;font-weight: bold;" target="_blank">' . __('Get ultimate plugin free', 'disable-admin-notices') . '</a>';
52
  }
53
 
components/disable-admin-notices/admin/options.php CHANGED
@@ -6,6 +6,11 @@
6
  * @version 1.0
7
  */
8
 
 
 
 
 
 
9
  /**
10
  * @return array
11
  */
@@ -16,7 +21,7 @@
16
  if( defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
17
  $options[] = array(
18
  'type' => 'html',
19
- 'html' => '<div class="wbcr-clearfy-group-header">' . '<strong>' . __('Admin notifications, Update nags', 'disable-admin-notices') . '</strong>' . '<p>' . __('Do you know the situation, when some plugin offers you to update to premium, to collect technical data and shows many annoying notices? You are close these notices every now and again but they newly appears and interfere your work with WordPress. Even worse, some plugin’s authors delete “close” button from notices and they shows in your admin panel forever.', 'disable-admin-notices') . '</p>' . '</div>'
20
  );
21
  }
22
 
@@ -42,7 +47,7 @@
42
  __('Do not hide notices and do not show “Hide notification forever” link for admin.', 'disable-admin-notices')
43
  )
44
  ),
45
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
46
  'hint' => __('Some plugins shows notifications about premium version, data collecting or promote their services. Even if you push close button (that sometimes are impossible), notices are shows again in some time. This option allows you to control notices. Hide them all or each individually. Some plugins shows notifications about premium version, data collecting or promote their services. Even if you push close button (that sometimes are impossible), notices are shows again in some time. This option allows you to control notices. Hide them all or each individually.', 'disable-admin-notices'),
47
  'default' => 'only_selected',
48
  'events' => array(
@@ -65,7 +70,7 @@
65
  'way' => 'buttons',
66
  'name' => 'show_notices_in_adminbar',
67
  'title' => __('Enable hidden notices in adminbar', 'disable-admin-notices'),
68
- 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'grey'),
69
  'hint' => __('By default, the plugin hides all notices, which you specified. If you enable this option, the plugin will collect all hidden notices and show them into the top admin toolbar. It will not disturb you but will allow to look notices at your convenience.', 'disable-admin-notices'),
70
  'default' => false
71
  );
@@ -84,7 +89,7 @@
84
 
85
  /**
86
  * @param $form
87
- * @param $page FactoryPages324_ImpressiveThemplate
88
  * @return mixed
89
  */
90
  function wbcr_dan_additionally_form_options($form, $page)
@@ -105,25 +110,23 @@
105
  add_filter('wbcr_clr_additionally_form_options', 'wbcr_dan_additionally_form_options', 10, 2);
106
 
107
  /**
108
- * @param $html_builder FactoryForms329_Html
109
  */
110
  function wbcr_dan_reset_notices_button($html_builder)
111
  {
112
- global $wbcr_dan_plugin;
113
-
114
  $form_name = $html_builder->getFormName();
115
  $reseted = false;
116
 
117
  if( isset($_POST['wbcr_dan_reset_action']) ) {
118
  check_admin_referer($form_name, 'wbcr_dan_reset_nonce');
119
 
120
- delete_option($wbcr_dan_plugin->pluginName . '_hidden_notices');
121
 
122
  $reseted = true;
123
  }
124
 
125
  $count_hidden_notices = 0;
126
- $hidden_notices = get_option($wbcr_dan_plugin->pluginName . '_hidden_notices');
127
 
128
  if( !empty($hidden_notices) ) {
129
  $count_hidden_notices = sizeof($hidden_notices);
6
  * @version 1.0
7
  */
8
 
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
  /**
15
  * @return array
16
  */
21
  if( defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
22
  $options[] = array(
23
  'type' => 'html',
24
+ 'html' => '<div class="wbcr-factory-page-group-header">' . '<strong>' . __('Admin notifications, Update nags', 'disable-admin-notices') . '</strong>' . '<p>' . __('Do you know the situation, when some plugin offers you to update to premium, to collect technical data and shows many annoying notices? You are close these notices every now and again but they newly appears and interfere your work with WordPress. Even worse, some plugin’s authors delete “close” button from notices and they shows in your admin panel forever.', 'disable-admin-notices') . '</p>' . '</div>'
25
  );
26
  }
27
 
47
  __('Do not hide notices and do not show “Hide notification forever” link for admin.', 'disable-admin-notices')
48
  )
49
  ),
50
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
51
  'hint' => __('Some plugins shows notifications about premium version, data collecting or promote their services. Even if you push close button (that sometimes are impossible), notices are shows again in some time. This option allows you to control notices. Hide them all or each individually. Some plugins shows notifications about premium version, data collecting or promote their services. Even if you push close button (that sometimes are impossible), notices are shows again in some time. This option allows you to control notices. Hide them all or each individually.', 'disable-admin-notices'),
52
  'default' => 'only_selected',
53
  'events' => array(
70
  'way' => 'buttons',
71
  'name' => 'show_notices_in_adminbar',
72
  'title' => __('Enable hidden notices in adminbar', 'disable-admin-notices'),
73
+ 'layout' => array('hint-type' => 'icon', 'hint-icon-color' => 'green'),
74
  'hint' => __('By default, the plugin hides all notices, which you specified. If you enable this option, the plugin will collect all hidden notices and show them into the top admin toolbar. It will not disturb you but will allow to look notices at your convenience.', 'disable-admin-notices'),
75
  'default' => false
76
  );
89
 
90
  /**
91
  * @param $form
92
+ * @param $page FactoryPages400_ImpressiveThemplate
93
  * @return mixed
94
  */
95
  function wbcr_dan_additionally_form_options($form, $page)
110
  add_filter('wbcr_clr_additionally_form_options', 'wbcr_dan_additionally_form_options', 10, 2);
111
 
112
  /**
113
+ * @param $html_builder FactoryForms400_Html
114
  */
115
  function wbcr_dan_reset_notices_button($html_builder)
116
  {
 
 
117
  $form_name = $html_builder->getFormName();
118
  $reseted = false;
119
 
120
  if( isset($_POST['wbcr_dan_reset_action']) ) {
121
  check_admin_referer($form_name, 'wbcr_dan_reset_nonce');
122
 
123
+ WDN_Plugin::app()->deleteOption('hidden_notices');
124
 
125
  $reseted = true;
126
  }
127
 
128
  $count_hidden_notices = 0;
129
+ $hidden_notices = WDN_Plugin::app()->getOption('hidden_notices');
130
 
131
  if( !empty($hidden_notices) ) {
132
  $count_hidden_notices = sizeof($hidden_notices);
components/disable-admin-notices/admin/pages/index.php ADDED
File without changes
components/disable-admin-notices/admin/pages/more-features.php CHANGED
@@ -5,8 +5,12 @@
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrHan_MoreFeaturesPage extends FactoryClearfy102_MoreFeaturesPage {
9
 
 
 
 
10
  }
11
 
12
- FactoryPages324::register($wbcr_dan_plugin, 'WbcrHan_MoreFeaturesPage');
 
 
5
  *
6
  * @since 1.0.0
7
  */
 
8
 
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
  }
13
 
14
+ class WDN_MoreFeaturesPage extends Wbcr_FactoryClearfy200_MoreFeaturesPage {
15
+
16
+ }
components/disable-admin-notices/admin/pages/notices.php CHANGED
@@ -5,13 +5,19 @@
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrHan_NoticesPage extends FactoryPages324_ImpressiveThemplate {
 
 
 
 
 
 
9
 
10
  /**
11
  * The id of the page in the admin menu.
12
  *
13
  * Mainly used to navigate between pages.
14
- * @see FactoryPages324_AdminPage
15
  *
16
  * @since 1.0.0
17
  * @var string
@@ -19,19 +25,22 @@
19
  public $id = "notices";
20
  public $page_menu_dashicon = 'dashicons-testimonial';
21
 
22
- public function __construct(Factory326_Plugin $plugin)
 
 
 
23
  {
24
- $this->menuTitle = __('Hide admin notices', 'disable-admin-notices');
25
 
26
  if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
27
  $this->internal = false;
28
- $this->menuTarget = 'options-general.php';
29
- $this->addLinkToPluginActions = true;
30
  }
31
 
32
- add_filter('wbcr_factory_imppage_actions_notice', array($this, 'actionsNotice'), 10, 2);
33
-
34
  parent::__construct($plugin);
 
 
35
  }
36
 
37
  public function getMenuTitle()
@@ -44,18 +53,12 @@
44
 
45
  /**
46
  * We register notifications for some actions
47
- * @param $notices
48
- * @param $plugin
49
  * @return array
50
  */
51
- public function actionsNotice($notices, $plugin)
52
  {
53
- global $wbcr_dan_plugin;
54
-
55
- if( $wbcr_dan_plugin->pluginName != $plugin->pluginName ) {
56
- return $notices;
57
- }
58
-
59
  $notices[] = array(
60
  'conditions' => array(
61
  'wbcr_dan_reseted_notices' => 1
@@ -70,7 +73,7 @@
70
  'wbcr_dan_code' => 'interal_error'
71
  ),
72
  'type' => 'danger',
73
- 'message' => __('An error occurred while trying to delete comments. Internal error occured. Please try again later.', 'factory_pages_324')
74
  );*/
75
 
76
  return $notices;
@@ -96,6 +99,4 @@
96
 
97
  return apply_filters('wbcr_dan_notices_form_options', $formOptions, $this);
98
  }
99
- }
100
-
101
- FactoryPages324::register($wbcr_dan_plugin, 'WbcrHan_NoticesPage');
5
  *
6
  * @since 1.0.0
7
  */
8
+
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+ class WDN_NoticesPage extends Wbcr_FactoryPages400_ImpressiveThemplate {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages400_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
25
  public $id = "notices";
26
  public $page_menu_dashicon = 'dashicons-testimonial';
27
 
28
+ /**
29
+ * @param Wbcr_Factory400_Plugin $plugin
30
+ */
31
+ public function __construct(Wbcr_Factory400_Plugin $plugin)
32
  {
33
+ $this->menu_title = __('Hide admin notices', 'disable-admin-notices');
34
 
35
  if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
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);
42
+
43
+ $this->plugin = $plugin;
44
  }
45
 
46
  public function getMenuTitle()
53
 
54
  /**
55
  * We register notifications for some actions
56
+ * @param array $notices
57
+ * @param Wbcr_Factory400_Plugin $plugin
58
  * @return array
59
  */
60
+ public function actionsNotice($notices)
61
  {
 
 
 
 
 
 
62
  $notices[] = array(
63
  'conditions' => array(
64
  'wbcr_dan_reseted_notices' => 1
73
  'wbcr_dan_code' => 'interal_error'
74
  ),
75
  'type' => 'danger',
76
+ 'message' => __('An error occurred while trying to delete comments. Internal error occured. Please try again later.', 'factory_pages_400')
77
  );*/
78
 
79
  return $notices;
99
 
100
  return apply_filters('wbcr_dan_notices_form_options', $formOptions, $this);
101
  }
102
+ }
 
 
components/disable-admin-notices/disable-admin-notices.php CHANGED
@@ -4,12 +4,17 @@
4
  * Plugin URI: https://wordpress.org/plugins/disable-admin-notices/
5
  * Description: Disable admin notices plugin gives you the option to hide updates warnings and inline notices in the admin panel.
6
  * Author: Webcraftic <wordpress.webraftic@gmail.com>
7
- * Version: 1.0.2
8
  * Text Domain: disable-admin-notices
9
  * Domain Path: /languages/
10
  */
11
 
12
- if( defined('WBCR_DAN_PLUGIN_ACTIVE') || (defined('WBCR_CLEARFY_PLUGIN_ACTIVE') && !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON')) ) {
 
 
 
 
 
13
  function wbcr_dan_admin_notice_error()
14
  {
15
  ?>
@@ -24,62 +29,30 @@
24
  return;
25
  } else {
26
 
27
- define('WBCR_DAN_PLUGIN_ACTIVE', true);
28
-
29
- define('WBCR_DAN_PLUGIN_DIR', dirname(__FILE__));
30
- define('WBCR_DAN_PLUGIN_BASE', plugin_basename(__FILE__));
31
- define('WBCR_DAN_PLUGIN_URL', plugins_url(null, __FILE__));
32
 
33
 
34
-
35
  if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
36
- require_once(WBCR_DAN_PLUGIN_DIR . '/libs/factory/core/boot.php');
37
  }
38
 
39
- function wbcr_dan_plugin_init()
40
- {
41
- global $wbcr_dan_plugin;
42
-
43
- // Localization plugin
44
- load_plugin_textdomain('disable-admin-notices', false, dirname(WBCR_DAN_PLUGIN_BASE) . '/languages/');
45
 
46
- if( defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
47
- //return;
48
- global $wbcr_clearfy_plugin;
49
- $wbcr_dan_plugin = $wbcr_clearfy_plugin;
50
- } else {
51
-
52
- $wbcr_dan_plugin = new Factory326_Plugin(__FILE__, array(
53
- 'name' => 'wbcr_dan',
54
- 'title' => __('Webcraftic disable admin notices', 'disable-admin-notices'),
55
- 'version' => '1.0.0',
56
- 'host' => 'wordpress.org',
57
- 'url' => 'https://wordpress.org/plugins/disable-admin-notices/',
58
- 'assembly' => 'free',
59
- 'updates' => WBCR_DAN_PLUGIN_DIR . '/updates/'
60
- ));
61
-
62
- // requires factory modules
63
- $wbcr_dan_plugin->load(array(
64
- array('libs/factory/bootstrap', 'factory_bootstrap_330', 'admin'),
65
- array('libs/factory/forms', 'factory_forms_329', 'admin'),
66
- array('libs/factory/pages', 'factory_pages_324', 'admin'),
67
- array('libs/factory/clearfy', 'factory_clearfy_102', 'all')
68
- ));
69
- }
70
-
71
- // loading other files
72
- if( is_admin() ) {
73
- require(WBCR_DAN_PLUGIN_DIR . '/admin/boot.php');
74
- }
75
-
76
- require(WBCR_DAN_PLUGIN_DIR . '/includes/classes/class.configurate-notices.php');
77
- new WbcrHan_ConfigHideNotices($wbcr_dan_plugin);
78
- }
79
 
80
- if( defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
81
- wbcr_dan_plugin_init();
82
- } else {
83
- add_action('plugins_loaded', 'wbcr_dan_plugin_init');
 
 
 
 
 
 
84
  }
85
  }
4
  * Plugin URI: https://wordpress.org/plugins/disable-admin-notices/
5
  * Description: Disable admin notices plugin gives you the option to hide updates warnings and inline notices in the admin panel.
6
  * Author: Webcraftic <wordpress.webraftic@gmail.com>
7
+ * Version: 1.0.4
8
  * Text Domain: disable-admin-notices
9
  * Domain Path: /languages/
10
  */
11
 
12
+ // Exit if accessed directly
13
+ if( !defined('ABSPATH') ) {
14
+ exit;
15
+ }
16
+
17
+ if( defined('WDN_PLUGIN_ACTIVE') || (defined('WCL_PLUGIN_ACTIVE') && !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON')) ) {
18
  function wbcr_dan_admin_notice_error()
19
  {
20
  ?>
29
  return;
30
  } else {
31
 
32
+ define('WDN_PLUGIN_ACTIVE', true);
33
+ define('WDN_PLUGIN_DIR', dirname(__FILE__));
34
+ define('WDN_PLUGIN_BASE', plugin_basename(__FILE__));
35
+ define('WDN_PLUGIN_URL', plugins_url(null, __FILE__));
 
36
 
37
 
38
+
39
  if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
40
+ require_once(WDN_PLUGIN_DIR . '/libs/factory/core/boot.php');
41
  }
42
 
43
+ require_once(WDN_PLUGIN_DIR . '/includes/class.plugin.php');
 
 
 
 
 
44
 
45
+ if( !defined('LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON') ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
 
47
+ new WDN_Plugin(__FILE__, array(
48
+ 'prefix' => 'wbcr_dan_',
49
+ 'plugin_name' => 'wbcr_dan',
50
+ 'plugin_title' => __('Webcraftic disable admin notices', 'disable-admin-notices'),
51
+ 'plugin_version' => '1.0.4',
52
+ 'required_php_version' => '5.2',
53
+ 'required_wp_version' => '4.2',
54
+ 'plugin_build' => 'free',
55
+ 'updates' => WDN_PLUGIN_DIR . '/updates/'
56
+ ));
57
  }
58
  }
components/disable-admin-notices/includes/class.plugin.php ADDED
@@ -0,0 +1,135 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Hide my wp 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
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+ if( !class_exists('WDN_Plugin') ) {
15
+
16
+ if( !class_exists('WDN_PluginFactory') ) {
17
+ if( defined('LOADING_CYRLITERA_AS_ADDON') ) {
18
+ class WDN_PluginFactory {
19
+
20
+ }
21
+ } else {
22
+ class WDN_PluginFactory extends Wbcr_Factory400_Plugin {
23
+
24
+ }
25
+ }
26
+ }
27
+
28
+ class WDN_Plugin extends WDN_PluginFactory {
29
+
30
+ /**
31
+ * @var Wbcr_Factory400_Plugin
32
+ */
33
+ private static $app;
34
+
35
+ /**
36
+ * @var bool
37
+ */
38
+ private $as_addon;
39
+
40
+ /**
41
+ * @param string $plugin_path
42
+ * @param array $data
43
+ * @throws Exception
44
+ */
45
+ public function __construct($plugin_path, $data)
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_Factory400_Plugin) ) {
55
+ throw new Exception('An invalid instance of the class was passed.');
56
+ }
57
+
58
+ self::$app = $plugin_parent;
59
+ } else {
60
+ self::$app = $this;
61
+ }
62
+
63
+ if( !$this->as_addon ) {
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
+ }
76
+
77
+ /**
78
+ * @return Wbcr_Factory400_Plugin
79
+ */
80
+ public static function app()
81
+ {
82
+ return self::$app;
83
+ }
84
+
85
+ protected function setTextDomain()
86
+ {
87
+ // Localization plugin
88
+ load_plugin_textdomain('disable-admin-notices', false, dirname(WDN_PLUGIN_BASE) . '/languages/');
89
+ }
90
+
91
+ protected function setModules()
92
+ {
93
+ if( !$this->as_addon ) {
94
+ self::app()->load(array(
95
+ array('libs/factory/bootstrap', 'factory_bootstrap_400', 'admin'),
96
+ array('libs/factory/forms', 'factory_forms_400', 'admin'),
97
+ array('libs/factory/pages', 'factory_pages_400', 'admin'),
98
+ array('libs/factory/clearfy', 'factory_clearfy_200', 'all')
99
+ ));
100
+ }
101
+ }
102
+
103
+ private function registerPages()
104
+ {
105
+ if( $this->as_addon ) {
106
+ return;
107
+ }
108
+ self::app()->registerPage('WDN_NoticesPage', WDN_PLUGIN_DIR . '/admin/pages/notices.php');
109
+ self::app()->registerPage('WDN_MoreFeaturesPage', WDN_PLUGIN_DIR . '/admin/pages/more-features.php');
110
+ }
111
+
112
+ private function adminScripts()
113
+ {
114
+ require(WDN_PLUGIN_DIR . '/admin/options.php');
115
+
116
+ if( defined('DOING_AJAX') && DOING_AJAX && isset($_REQUEST['action']) && $_REQUEST['action'] == 'wbcr_dan_hide_notices' ) {
117
+ require(WDN_PLUGIN_DIR . '/admin/ajax/hide-notice.php');
118
+ }
119
+
120
+ if( defined('DOING_AJAX') && DOING_AJAX && isset($_REQUEST['action']) && $_REQUEST['action'] == 'wbcr_dan_restore_notice' ) {
121
+ require(WDN_PLUGIN_DIR . '/admin/ajax/restore-notice.php');
122
+ }
123
+
124
+ require(WDN_PLUGIN_DIR . '/admin/boot.php');
125
+
126
+ $this->registerPages();
127
+ }
128
+
129
+ private function globalScripts()
130
+ {
131
+ require(WDN_PLUGIN_DIR . '/includes/classes/class.configurate-notices.php');
132
+ new WDN_ConfigHideNotices(self::$app);
133
+ }
134
+ }
135
+ }
components/disable-admin-notices/includes/classes/class.configurate-notices.php CHANGED
@@ -6,7 +6,13 @@
6
  * @copyright (c) 2017 Webraftic Ltd
7
  * @version 1.0
8
  */
9
- class WbcrHan_ConfigHideNotices extends WbcrFactoryClearfy_Configurate {
 
 
 
 
 
 
10
 
11
  public function registerActionsAndFilters()
12
  {
@@ -23,19 +29,40 @@
23
  add_action('admin_bar_menu', array($this, 'notificationsPanel'), 999);
24
  add_action('admin_enqueue_scripts', array($this, 'notificationsPanelStyles'));
25
  }
 
 
26
  }
27
  }
28
  }
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  public function notificationsPanelStyles()
31
  {
32
- global $wbcr_dan_plugin;
33
- wp_enqueue_style('wpcm_admin', WBCR_DAN_PLUGIN_URL . '/admin/assets/css/notifications-panel.css', array(), $wbcr_dan_plugin->version);
34
  }
35
 
36
  public function notificationsPanel(&$wp_admin_bar)
37
  {
38
- global $wbcr_dan_plugin;
 
 
39
 
40
  $notifications = $this->getOption('hidden_notices');
41
 
@@ -56,11 +83,14 @@
56
  // loop
57
  if( !empty($notifications) ) {
58
  $i = 0;
59
- foreach($notifications as $notification) {
 
 
 
60
  $wp_admin_bar->add_menu(array(
61
  'id' => 'wbcr-han-notify-panel-item-' . $i,
62
  'parent' => 'wbcr-han-notify-panel',
63
- 'title' => $notification,
64
  'href' => false,
65
  'meta' => array(
66
  'class' => ''
@@ -72,11 +102,6 @@
72
  }
73
  }
74
 
75
- public function printNotices()
76
- {
77
- add_action('admin_notices', array($this, 'noticesCollection'));
78
- }
79
-
80
  public function noticesCollection()
81
  {
82
  global $wbcr_dan_plugin_all_notices;
@@ -85,18 +110,19 @@
85
  return;
86
  }
87
  ?>
 
88
  <style>
89
- .wbcr-clearfy-hide-notices {
90
  position: relative;
91
  padding: 5px 5px 0;
92
  background: #fff;
93
  }
94
 
95
- .wbcr-clearfy-hide-notices > div {
96
  margin: 0 !important;
97
  }
98
 
99
- .wbcr-clearfy-hide-notice-link {
100
  display: block;
101
  text-align: right;
102
  margin: 5px 0 5px 5px;
@@ -104,47 +130,51 @@
104
  color: #F44336;
105
  }
106
 
107
- .is-dismissible .wbcr-clearfy-hide-notice-link {
108
  margin-right: -30px;
109
  }
110
 
111
- .wbcr-clearfy-hide-notice-link:active, .wbcr-clearfy-hide-notice-link:focus {
112
  box-shadow: none;
113
  outline: none;
114
  }
115
  </style>
116
- <script>
117
- var wbcr_clearfy_ajax_nonce = "<?=wp_create_nonce($this->plugin->pluginName . '_ajax_hide_notices_nonce')?>";
118
- var wbcr_clearfy_ajax_url = "<?=admin_url('admin-ajax.php')?>";
119
 
120
- jQuery(function() {
121
- jQuery(document).on('click', '.wbcr-clearfy-hide-notice-link', function() {
122
- var self = jQuery(this),
123
- noticeID = jQuery(this).data('notice-id'),
124
- noticeHtml = jQuery(this).closest('.wbcr-clearfy-hide-notices').clone();
 
 
 
125
 
126
- noticeHtml.find('.wbcr-clearfy-hide-notice-link').remove();
127
 
128
  if( !noticeID ) {
129
  alert('Undefinded error. Please report the bug to our support forum.');
130
  }
131
 
132
- jQuery.ajax(wbcr_clearfy_ajax_url, {
 
 
133
  type: 'post',
134
  dataType: 'json',
135
  data: {
136
- action: 'wbcr_clearfy_hide_notices',
137
- security: wbcr_clearfy_ajax_nonce,
138
  notice_id: noticeID,
139
  notice_html: noticeHtml.html()
140
  },
141
  success: function(data, textStatus, jqXHR) {
142
  if( data == 'error' && data.error ) {
143
  alert(data.error);
 
 
144
  return;
145
  }
146
 
147
- self.closest('.wbcr-clearfy-hide-notices').parent().hide();
148
  }
149
  });
150
  });
@@ -166,7 +196,7 @@
166
  $get_hidden_notices = $this->getOption('hidden_notices');
167
 
168
  $content = array();
169
- foreach($wp_filter['admin_notices']->callbacks as $filters) {
170
  foreach($filters as $callback_name => $callback) {
171
 
172
  if( 'usof_hide_admin_notices_start' == $callback_name || 'usof_hide_admin_notices_end' == $callback_name ) {
@@ -174,7 +204,22 @@
174
  }
175
 
176
  ob_start();
177
- call_user_func_array($callback['function'], array());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  $cont = ob_get_clean();
179
 
180
  if( empty($cont) ) {
@@ -192,7 +237,8 @@
192
  $uniq_id2 = md5($class_name . ':' . $method_name);
193
  }
194
  }
195
-
 
196
  if( !empty($get_hidden_notices) ) {
197
 
198
  $skip_notice = true;
@@ -214,11 +260,11 @@
214
  }
215
  }
216
 
217
- $hide_link = '<a href="#" data-notice-id="' . $uniq_id1 . '_' . $uniq_id2 . '" class="wbcr-clearfy-hide-notice-link">[' . __('Hide notification forever', 'disable-admin-notices') . ']</a>';
218
 
219
  $cont = preg_replace('/<(script|style)([^>]+)?>(.*?)<\/(script|style)>/is', '', $cont);
220
  $cont = rtrim(trim($cont));
221
- $cont = preg_replace('/^(<div[^>]+>)(.*?)(<\/div>)$/is', '$1<div class="wbcr-clearfy-hide-notices">$2' . $hide_link . '</div>$3', $cont);
222
 
223
  if( empty($cont) ) {
224
  continue;
@@ -241,4 +287,26 @@
241
  unset($wp_filter['all_admin_notices']);
242
  }
243
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
244
  }
6
  * @copyright (c) 2017 Webraftic Ltd
7
  * @version 1.0
8
  */
9
+
10
+ // Exit if accessed directly
11
+ if( !defined('ABSPATH') ) {
12
+ exit;
13
+ }
14
+
15
+ class WDN_ConfigHideNotices extends Wbcr_FactoryClearfy200_Configurate {
16
 
17
  public function registerActionsAndFilters()
18
  {
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
 
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' => ''
102
  }
103
  }
104
 
 
 
 
 
 
105
  public function noticesCollection()
106
  {
107
  global $wbcr_dan_plugin_all_notices;
110
  return;
111
  }
112
  ?>
113
+ <!-- Disable admin notices plugin (Clearfy tools) -->
114
  <style>
115
+ .wbcr-dan-hide-notices {
116
  position: relative;
117
  padding: 5px 5px 0;
118
  background: #fff;
119
  }
120
 
121
+ .wbcr-dan-hide-notices > div {
122
  margin: 0 !important;
123
  }
124
 
125
+ .wbcr-dan-hide-notice-link {
126
  display: block;
127
  text-align: right;
128
  margin: 5px 0 5px 5px;
130
  color: #F44336;
131
  }
132
 
133
+ .is-dismissible .wbcr-dan-hide-notice-link {
134
  margin-right: -30px;
135
  }
136
 
137
+ .wbcr-dan-hide-notice-link:active, .wbcr-dan-hide-notice-link:focus {
138
  box-shadow: none;
139
  outline: none;
140
  }
141
  </style>
 
 
 
142
 
143
+ <!-- Disable admin notices plugin (Clearfy tools) -->
144
+ <script>
145
+ jQuery(document).ready(function($) {
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
 
152
+ noticeHtml.find('.wbcr-dan-hide-notice-link').remove();
153
 
154
  if( !noticeID ) {
155
  alert('Undefinded error. Please report the bug to our support forum.');
156
  }
157
 
158
+ contanierEl.hide();
159
+
160
+ $.ajax(ajaxurl, {
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
  });
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 ) {
204
  }
205
 
206
  ob_start();
207
+
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++) {
217
+ $args[] = null;
218
+ }
219
+ }
220
+ //===========
221
+
222
+ call_user_func_array($callback['function'], $args);
223
  $cont = ob_get_clean();
224
 
225
  if( empty($cont) ) {
237
  $uniq_id2 = md5($class_name . ':' . $method_name);
238
  }
239
  }
240
+ //838339d1a188e17fec838c2df3058603
241
+ //838339d1a188e17fec838c2df3058603
242
  if( !empty($get_hidden_notices) ) {
243
 
244
  $skip_notice = true;
260
  }
261
  }
262
 
263
+ $hide_link = '<a href="#" data-notice-id="' . $uniq_id1 . '_' . $uniq_id2 . '" class="wbcr-dan-hide-notice-link">[' . __('Hide notification forever', 'disable-admin-notices') . ']</a>';
264
 
265
  $cont = preg_replace('/<(script|style)([^>]+)?>(.*?)<\/(script|style)>/is', '', $cont);
266
  $cont = rtrim(trim($cont));
267
+ $cont = preg_replace('/^(<div[^>]+>)(.*?)(<\/div>)$/is', '$1<div class="wbcr-dan-hide-notices">$2' . $hide_link . '</div>$3', $cont);
268
 
269
  if( empty($cont) ) {
270
  continue;
287
  unset($wp_filter['all_admin_notices']);
288
  }
289
  }
290
+
291
+ /**
292
+ * Get excerpt from string
293
+ *
294
+ * @param String $str String to get an excerpt from
295
+ * @param Integer $startPos Position int string to start excerpt from
296
+ * @param Integer $maxLength Maximum length the excerpt may be
297
+ * @return String excerpt
298
+ */
299
+ function getExcerpt($str, $startPos = 0, $maxLength = 100)
300
+ {
301
+ if( strlen($str) > $maxLength ) {
302
+ $excerpt = substr($str, $startPos, $maxLength - 3);
303
+ $lastSpace = strrpos($excerpt, ' ');
304
+ $excerpt = substr($excerpt, 0, $lastSpace);
305
+ $excerpt .= '...';
306
+ } else {
307
+ $excerpt = $str;
308
+ }
309
+
310
+ return $excerpt;
311
+ }
312
  }
components/disable-admin-notices/includes/classes/index.php ADDED
File without changes
components/disable-admin-notices/includes/index.php ADDED
File without changes
components/disable-admin-notices/languages/disable-admin-notices-ru_RU.mo CHANGED
Binary file
components/disable-admin-notices/languages/disable-admin-notices-ru_RU.po CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-01-21 23:48+0300\n"
5
- "PO-Revision-Date: 2018-01-21 23:55+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"
@@ -18,39 +18,35 @@ msgstr ""
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPathExcluded-0: libs\n"
20
 
21
- #: admin/ajax/hide-notice.php:16
22
  msgid "You don't have enough capability to edit this information."
23
  msgstr "Вы не имеете разрешения на редактирование этого!"
24
 
25
- #: admin/ajax/hide-notice.php:33
26
  msgid "Undefinded notice id."
27
  msgstr "Не передан notice id."
28
 
29
- #: admin/ajax/hide-notice.php:47
30
  msgid "Success"
31
  msgstr "Успешно"
32
 
33
- #: admin/boot.php:37 admin/options.php:27 admin/pages/notices.php:24
34
  msgid "Hide admin notices"
35
  msgstr "Скрыть уведомления"
36
 
37
- #: admin/boot.php:43 admin/options.php:67
38
  msgid "Enable hidden notices in adminbar"
39
  msgstr "Включить уведомления в админбаре"
40
 
41
- #: admin/boot.php:48
42
- msgid "Hidden notices"
43
- msgstr "Скрытые уведомления"
44
-
45
- #: admin/boot.php:58
46
  msgid "Get ultimate plugin free"
47
  msgstr "Получите полную версию плагина бесплатно"
48
 
49
- #: admin/options.php:19
50
  msgid "Admin notifications, Update nags"
51
  msgstr "Уведомления администратора, уведомления об обновлении Wordpress"
52
 
53
- #: admin/options.php:19
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 "
@@ -65,19 +61,19 @@ msgstr ""
65
  "авторы и вовсе удаляют кнопку “закрыть” из уведомлений, и они висят в шапке "
66
  "вашей панели администратора целую вечность."
67
 
68
- #: admin/options.php:31
69
  msgid "All notices"
70
  msgstr "Все уведомления"
71
 
72
- #: admin/options.php:32
73
  msgid "Hide all notices globally."
74
  msgstr "Скрыть все уведомления глобально."
75
 
76
- #: admin/options.php:36
77
  msgid "Only selected"
78
  msgstr "Только выбранные"
79
 
80
- #: admin/options.php:37
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."
@@ -86,11 +82,11 @@ msgstr ""
86
  "ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление будет "
87
  "скрыто навсегда и перестанет вас беспокоить."
88
 
89
- #: admin/options.php:41
90
  msgid "Don't nide"
91
  msgstr "Не скрывать"
92
 
93
- #: admin/options.php:42
94
  msgid ""
95
  "Do not hide notices and do not show “Hide notification forever” link for "
96
  "admin."
@@ -98,7 +94,7 @@ msgstr ""
98
  "Не скрывать уведомления и не показывать ссылку \"Скрыть уведомление навсегда"
99
  "\" в уведомлениях администратора."
100
 
101
- #: admin/options.php:46
102
  msgid ""
103
  "Some plugins shows notifications about premium version, data collecting or "
104
  "promote their services. Even if you push close button (that sometimes are "
@@ -116,7 +112,7 @@ msgstr ""
116
  "контролировать эти уведомления. Скройте их все сразу или каждое по "
117
  "отдельности."
118
 
119
- #: admin/options.php:69
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 "
@@ -128,29 +124,29 @@ msgstr ""
128
  "выводить в верхней панели администратора. Это не будет вас раздражать, но и "
129
  "позволит просматривать уведомления, когда вам это удобно."
130
 
131
- #: admin/options.php:135
132
  msgid "Push reset hidden notices if you need to show hidden notices again."
133
  msgstr "Нажмите кнопку \\\"Сбросить скрытые уведомления\\\""
134
 
135
- #: admin/options.php:144
136
  #, php-format
137
  msgid "Reset hidden notices (%s)"
138
  msgstr "Сбросить скрытые уведомления (%s)"
139
 
140
- #: admin/options.php:146 admin/pages/notices.php:64
141
  msgid "Hidden notices are successfully reset, now you can see them again!"
142
  msgstr ""
143
  "Скрытые уведомления успешно восстановлены, теперь вы можете снова видеть их!"
144
 
145
- #: admin/pages/notices.php:40
146
  msgid "Notices"
147
  msgstr "Уведомления"
148
 
149
- #: admin/pages/notices.php:41
150
  msgid "General"
151
  msgstr "Основные"
152
 
153
- #: disable-admin-notices.php:17
154
  msgid ""
155
  "We found that you have the \"Clearfy - disable unused features\" plugin "
156
  "installed, this plugin already has disable comments functions, so you can "
@@ -161,19 +157,26 @@ msgstr ""
161
  "комментариев, поэтому вы можете отключить плагин «Скрыть уведомления "
162
  "администратора»!"
163
 
164
- #: disable-admin-notices.php:82
165
  msgid "Webcraftic disable admin notices"
166
  msgstr "Webcraftic отключить уведомления администратора"
167
 
168
- #: includes/classes/class.configurate-notices.php:52
169
  #, php-format
170
  msgid "Notifications %s"
171
  msgstr "Уведомления %s"
172
 
173
- #: includes/classes/class.configurate-notices.php:217
 
 
 
 
174
  msgid "Hide notification forever"
175
  msgstr "Скрыть уведомление навсегда"
176
 
 
 
 
177
  #~ msgid "Disable comments on the entire site"
178
  #~ msgstr "Отключить комментарии на всем сайте"
179
 
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: clearfy\n"
4
+ "POT-Creation-Date: 2018-03-14 17:34+0300\n"
5
+ "PO-Revision-Date: 2018-03-14 17:34+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"
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPathExcluded-0: libs\n"
20
 
21
+ #: admin/ajax/hide-notice.php:19 admin/ajax/restore-notice.php:19
22
  msgid "You don't have enough capability to edit this information."
23
  msgstr "Вы не имеете разрешения на редактирование этого!"
24
 
25
+ #: admin/ajax/hide-notice.php:32 admin/ajax/restore-notice.php:28
26
  msgid "Undefinded notice id."
27
  msgstr "Не передан notice id."
28
 
29
+ #: admin/ajax/hide-notice.php:46 admin/ajax/restore-notice.php:40
30
  msgid "Success"
31
  msgstr "Успешно"
32
 
33
+ #: admin/boot.php:29 admin/options.php:32 admin/pages/notices.php:33
34
  msgid "Hide admin notices"
35
  msgstr "Скрыть уведомления"
36
 
37
+ #: admin/boot.php:35 admin/options.php:72
38
  msgid "Enable hidden notices in adminbar"
39
  msgstr "Включить уведомления в админбаре"
40
 
41
+ #: admin/boot.php:51
 
 
 
 
42
  msgid "Get ultimate plugin free"
43
  msgstr "Получите полную версию плагина бесплатно"
44
 
45
+ #: admin/options.php:24
46
  msgid "Admin notifications, Update nags"
47
  msgstr "Уведомления администратора, уведомления об обновлении Wordpress"
48
 
49
+ #: admin/options.php:24
50
  msgid ""
51
  "Do you know the situation, when some plugin offers you to update to premium, "
52
  "to collect technical data and shows many annoying notices? You are close "
61
  "авторы и вовсе удаляют кнопку “закрыть” из уведомлений, и они висят в шапке "
62
  "вашей панели администратора целую вечность."
63
 
64
+ #: admin/options.php:36
65
  msgid "All notices"
66
  msgstr "Все уведомления"
67
 
68
+ #: admin/options.php:37
69
  msgid "Hide all notices globally."
70
  msgstr "Скрыть все уведомления глобально."
71
 
72
+ #: admin/options.php:41
73
  msgid "Only selected"
74
  msgstr "Только выбранные"
75
 
76
+ #: admin/options.php:42
77
  msgid ""
78
  "Hide selected notices only. You will see the link \"Hide notification forever"
79
  "\" in each notice. Push it and they will not bother you anymore."
82
  "ссылку \"Скрыть уведомление навсегда\". Нажмите на неё и уведомление будет "
83
  "скрыто навсегда и перестанет вас беспокоить."
84
 
85
+ #: admin/options.php:46
86
  msgid "Don't nide"
87
  msgstr "Не скрывать"
88
 
89
+ #: admin/options.php:47
90
  msgid ""
91
  "Do not hide notices and do not show “Hide notification forever” link for "
92
  "admin."
94
  "Не скрывать уведомления и не показывать ссылку \"Скрыть уведомление навсегда"
95
  "\" в уведомлениях администратора."
96
 
97
+ #: admin/options.php:51
98
  msgid ""
99
  "Some plugins shows notifications about premium version, data collecting or "
100
  "promote their services. Even if you push close button (that sometimes are "
112
  "контролировать эти уведомления. Скройте их все сразу или каждое по "
113
  "отдельности."
114
 
115
+ #: admin/options.php:74
116
  msgid ""
117
  "By default, the plugin hides all notices, which you specified. If you enable "
118
  "this option, the plugin will collect all hidden notices and show them into "
124
  "выводить в верхней панели администратора. Это не будет вас раздражать, но и "
125
  "позволит просматривать уведомления, когда вам это удобно."
126
 
127
+ #: admin/options.php:138
128
  msgid "Push reset hidden notices if you need to show hidden notices again."
129
  msgstr "Нажмите кнопку \\\"Сбросить скрытые уведомления\\\""
130
 
131
+ #: admin/options.php:147
132
  #, php-format
133
  msgid "Reset hidden notices (%s)"
134
  msgstr "Сбросить скрытые уведомления (%s)"
135
 
136
+ #: admin/options.php:149 admin/pages/notices.php:67
137
  msgid "Hidden notices are successfully reset, now you can see them again!"
138
  msgstr ""
139
  "Скрытые уведомления успешно восстановлены, теперь вы можете снова видеть их!"
140
 
141
+ #: admin/pages/notices.php:49
142
  msgid "Notices"
143
  msgstr "Уведомления"
144
 
145
+ #: admin/pages/notices.php:50
146
  msgid "General"
147
  msgstr "Основные"
148
 
149
+ #: disable-admin-notices.php:22
150
  msgid ""
151
  "We found that you have the \"Clearfy - disable unused features\" plugin "
152
  "installed, this plugin already has disable comments functions, so you can "
157
  "комментариев, поэтому вы можете отключить плагин «Скрыть уведомления "
158
  "администратора»!"
159
 
160
+ #: disable-admin-notices.php:79
161
  msgid "Webcraftic disable admin notices"
162
  msgstr "Webcraftic отключить уведомления администратора"
163
 
164
+ #: includes/classes/class.configurate-notices.php:79
165
  #, php-format
166
  msgid "Notifications %s"
167
  msgstr "Уведомления %s"
168
 
169
+ #: includes/classes/class.configurate-notices.php:88
170
+ msgid "Restore notice"
171
+ msgstr "Восстановить уведомление"
172
+
173
+ #: includes/classes/class.configurate-notices.php:263
174
  msgid "Hide notification forever"
175
  msgstr "Скрыть уведомление навсегда"
176
 
177
+ #~ msgid "Hidden notices"
178
+ #~ msgstr "Скрытые уведомления"
179
+
180
  #~ msgid "Disable comments on the entire site"
181
  #~ msgstr "Отключить комментарии на всем сайте"
182
 
components/disable-admin-notices/languages/index.php ADDED
File without changes
components/disable-admin-notices/libs/index.php ADDED
File without changes
components/disable-admin-notices/readme.txt CHANGED
@@ -52,5 +52,13 @@ If you want to help with the translation, please contact me through this site or
52
  3. Notifications panel (optional)
53
 
54
  == Changelog ==
 
 
 
 
 
 
 
 
55
  = 1.0.0 =
56
  * Plugin release
52
  3. Notifications panel (optional)
53
 
54
  == Changelog ==
55
+ = 1.0.3 =
56
+ * Added a new feature: To restore hidden admin notices individually
57
+ * Fixed: Core bugs
58
+
59
+ = 1.0.2 =
60
+ * Updated styles for the “Hide notification forever” link
61
+ * Compatibility with plugins from webcraftic is updated
62
+
63
  = 1.0.0 =
64
  * Plugin release
components/disable-admin-notices/uninstall.php CHANGED
@@ -10,3 +10,4 @@
10
 
11
  $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_dan_%';");
12
 
 
10
 
11
  $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_dan_%';");
12
 
13
+
components/index.php ADDED
File without changes
components/updates-manager/admin/assets/css/index.php ADDED
File without changes
components/updates-manager/admin/assets/index.php ADDED
File without changes
components/updates-manager/admin/assets/js/index.php ADDED
File without changes
components/updates-manager/admin/boot.php CHANGED
@@ -6,17 +6,57 @@
6
  * @version 1.0
7
  */
8
 
9
- require_once(WBCR_UPM_PLUGIN_DIR . '/admin/pages/updates.php');
10
- require_once(WBCR_UPM_PLUGIN_DIR . '/admin/pages/plugins.php');
11
- require_once(WBCR_UPM_PLUGIN_DIR . '/admin/pages/advanced.php');
 
 
 
12
 
13
- if( !defined('LOADING_UPDATES_MANAGER_AS_ADDON') ) {
14
- require_once(WBCR_UPM_PLUGIN_DIR . '/admin/pages/more-features.php');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  }
16
 
 
 
17
  function wbcr_upm_rating_widget_url($page_url, $plugin_name)
18
  {
19
- if( $plugin_name == 'wbcr_updates_manager' ) {
20
  return 'https://goo.gl/Be2hQU';
21
  }
22
 
@@ -85,7 +125,7 @@
85
 
86
  function wbcr_ump_set_plugin_meta($links, $file)
87
  {
88
- if( $file == WBCR_UPM_PLUGIN_BASE ) {
89
  $links[] = '<a href="https://goo.gl/TcMcS4" style="color: #FF5722;font-weight: bold;" target="_blank">' . __('Get ultimate plugin free', 'webcraftic-updates-manager') . '</a>';
90
  }
91
 
6
  * @version 1.0
7
  */
8
 
9
+ /**
10
+ * Ошибки совместимости с похожими плагинами
11
+ */
12
+ function wbcr_upm_admin_conflict_notices_error()
13
+ {
14
+ $notices = array();
15
 
16
+ $default_notice = WUP_Plugin::app()
17
+ ->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.', 'webcraftic-updates-manager');
18
+ $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!', 'webcraftic-updates-manager');
19
+
20
+ if( is_plugin_active('companion-auto-update/companion-auto-update.php') ) {
21
+ $notices[] = sprintf($default_notice, 'Companion Auto Update', WUP_Plugin::app()
22
+ ->getPluginTitle(), 'Companion Auto Update', 'Companion Auto Update');
23
+ }
24
+
25
+ if( is_plugin_active('disable-updates/disable-updates.php') ) {
26
+ $notices[] = sprintf($default_notice, 'Disable Updates', WUP_Plugin::app()
27
+ ->getPluginTitle(), 'Disable Updates', 'Disable Updates');
28
+ }
29
+
30
+ if( is_plugin_active('disable-wordpress-updates/disable-updates.php') ) {
31
+ $notices[] = sprintf($default_notice, 'Disable All WordPress Updates', WUP_Plugin::app()
32
+ ->getPluginTitle(), 'Disable All WordPress Updates', 'Disable All WordPress Updates');
33
+ }
34
+
35
+ if( is_plugin_active('stops-core-theme-and-plugin-updates/main.php') ) {
36
+ $notices[] = sprintf($default_notice, 'Easy Updates Manager', WUP_Plugin::app()
37
+ ->getPluginTitle(), 'Easy Updates Manager', 'Easy Updates Manager');
38
+ }
39
+
40
+ if( empty($notices) ) {
41
+ return;
42
+ }
43
+
44
+ ?>
45
+ <div id="wbcr-update-manager-conflict-error" class="notice notice-error is-dismissible">
46
+ <?php foreach((array)$notices as $notice): ?>
47
+ <p>
48
+ <?= $notice ?>
49
+ </p>
50
+ <?php endforeach; ?>
51
+ </div>
52
+ <?php
53
  }
54
 
55
+ add_action('admin_notices', 'wbcr_upm_admin_conflict_notices_error');
56
+
57
  function wbcr_upm_rating_widget_url($page_url, $plugin_name)
58
  {
59
+ if( $plugin_name == WUP_Plugin::app()->getPluginName() ) {
60
  return 'https://goo.gl/Be2hQU';
61
  }
62
 
125
 
126
  function wbcr_ump_set_plugin_meta($links, $file)
127
  {
128
+ if( $file == WUP_PLUGIN_BASE ) {
129
  $links[] = '<a href="https://goo.gl/TcMcS4" style="color: #FF5722;font-weight: bold;" target="_blank">' . __('Get ultimate plugin free', 'webcraftic-updates-manager') . '</a>';
130
  }
131
 
components/updates-manager/admin/index.php ADDED
File without changes
components/updates-manager/admin/pages/advanced.php CHANGED
@@ -1,75 +1,85 @@
1
  <?php
2
-
3
  /**
4
  * The page Settings.
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrUpm_AdvancedPage extends FactoryPages324_ImpressiveThemplate {
9
-
 
 
 
 
 
 
10
  /**
11
  * The id of the page in the admin menu.
12
  *
13
  * Mainly used to navigate between pages.
14
- * @see FactoryPages324_AdminPage
15
  *
16
  * @since 1.0.0
17
  * @var string
18
  */
19
- public $id = "advanced";
20
-
21
  public $type = "page";
22
-
23
  public $page_parent_page = 'updates';
24
-
25
  public $page_menu_dashicon = 'dashicons-cloud';
26
-
27
- public function __construct(Factory326_Plugin $plugin)
 
 
 
28
  {
29
- $this->menuTitle = __('Advanced', 'webcraftic-updates-manager');
30
-
31
  parent::__construct($plugin);
32
  }
33
-
34
-
35
  public function warningNotice()
36
  {
37
  parent::warningNotice();
38
-
39
  if( isset($_GET['wbcr_force_update']) ) {
40
  $concat = __('Please, wait 90 sec. to see the forced automatic update result.', 'webcraftic-updates-manager') . '<br>';
41
-
42
  $this->printWarningNotice($concat);
43
  }
44
  }
45
-
46
  public function showPageContent()
47
  {
48
  $this->warningNotice();
49
  ?>
50
- <h4><?php _e('Force Automatic Updates', 'webcraftic-updates-manager'); ?></h4>
51
- <p><?php _e('This will attempt to force automatic updates. This is useful for debugging.', 'webcraftic-updates-manager'); ?></p>
52
- <a href="<?php $this->actionUrl('force-plugins-update') ?>" class="button button-default"><?php _e('Force update', 'webcraftic-updates-manager'); ?></a>
 
 
 
 
53
  <?php
54
  }
55
-
56
  public function forcePluginsUpdateAction()
57
  {
58
  if( !current_user_can('install_plugins') ) {
59
  return;
60
  }
61
-
62
  wp_schedule_single_event(time() + 10, 'wp_update_plugins');
63
  wp_schedule_single_event(time() + 10, 'wp_version_check');
64
  wp_schedule_single_event(time() + 10, 'wp_update_themes');
65
  wp_schedule_single_event(time() + 45, 'wp_maybe_auto_update');
66
-
67
  if( get_option('auto_updater.lock', false) ) {
68
  update_option('auto_updater.lock', time() - HOUR_IN_SECONDS * 2);
69
  }
70
-
71
  $this->redirectToAction('index', array('wbcr_force_update' => 1));
72
  }
73
  }
74
 
75
- FactoryPages324::register($wbcr_update_services_plugin, 'WbcrUpm_AdvancedPage');
1
  <?php
 
2
  /**
3
  * The page Settings.
4
  *
5
  * @since 1.0.0
6
  */
7
+
8
+ // Exit if accessed directly
9
+ if( !defined('ABSPATH') ) {
10
+ exit;
11
+ }
12
+
13
+ class WbcrUpm_AdvancedPage extends Wbcr_FactoryPages400_ImpressiveThemplate {
14
+
15
  /**
16
  * The id of the page in the admin menu.
17
  *
18
  * Mainly used to navigate between pages.
19
+ * @see FactoryPages400_AdminPage
20
  *
21
  * @since 1.0.0
22
  * @var string
23
  */
24
+ public $id = "updates_advanced";
25
+
26
  public $type = "page";
27
+
28
  public $page_parent_page = 'updates';
29
+
30
  public $page_menu_dashicon = 'dashicons-cloud';
31
+
32
+ /**
33
+ * @param Wbcr_Factory400_Plugin $plugin
34
+ */
35
+ public function __construct(Wbcr_Factory400_Plugin $plugin)
36
  {
37
+ $this->menu_title = __('Advanced', 'webcraftic-updates-manager');
38
+
39
  parent::__construct($plugin);
40
  }
41
+
 
42
  public function warningNotice()
43
  {
44
  parent::warningNotice();
45
+
46
  if( isset($_GET['wbcr_force_update']) ) {
47
  $concat = __('Please, wait 90 sec. to see the forced automatic update result.', 'webcraftic-updates-manager') . '<br>';
48
+
49
  $this->printWarningNotice($concat);
50
  }
51
  }
52
+
53
  public function showPageContent()
54
  {
55
  $this->warningNotice();
56
  ?>
57
+ <div style="padding: 20px;">
58
+ <h4><?php _e('Force Automatic Updates', 'webcraftic-updates-manager'); ?></h4>
59
+
60
+ <p><?php _e('This will attempt to force automatic updates. This is useful for debugging.', 'webcraftic-updates-manager'); ?></p>
61
+ <a href="<?php $this->actionUrl('force-plugins-update') ?>" class="button button-default"><?php _e('Force update', 'webcraftic-updates-manager'); ?></a>
62
+ </div>
63
+
64
  <?php
65
  }
66
+
67
  public function forcePluginsUpdateAction()
68
  {
69
  if( !current_user_can('install_plugins') ) {
70
  return;
71
  }
72
+
73
  wp_schedule_single_event(time() + 10, 'wp_update_plugins');
74
  wp_schedule_single_event(time() + 10, 'wp_version_check');
75
  wp_schedule_single_event(time() + 10, 'wp_update_themes');
76
  wp_schedule_single_event(time() + 45, 'wp_maybe_auto_update');
77
+
78
  if( get_option('auto_updater.lock', false) ) {
79
  update_option('auto_updater.lock', time() - HOUR_IN_SECONDS * 2);
80
  }
81
+
82
  $this->redirectToAction('index', array('wbcr_force_update' => 1));
83
  }
84
  }
85
 
 
components/updates-manager/admin/pages/index.php ADDED
File without changes
components/updates-manager/admin/pages/more-features.php CHANGED
@@ -5,8 +5,12 @@
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrUpm_MoreFeaturesPage extends FactoryClearfy102_MoreFeaturesPage {
9
 
 
 
 
10
  }
11
 
12
- FactoryPages324::register($wbcr_update_services_plugin, 'WbcrUpm_MoreFeaturesPage');
 
 
5
  *
6
  * @since 1.0.0
7
  */
 
8
 
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
  }
13
 
14
+ class WbcrUpm_MoreFeaturesPage extends Wbcr_FactoryClearfy200_MoreFeaturesPage {
15
+
16
+ }
components/updates-manager/admin/pages/plugins.php CHANGED
@@ -5,32 +5,62 @@
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrUpm_PluginsPage extends FactoryPages324_ImpressiveThemplate {
 
 
 
 
 
 
 
9
 
10
  /**
11
  * The id of the page in the admin menu.
12
  *
13
  * Mainly used to navigate between pages.
14
- * @see FactoryPages324_AdminPage
15
  *
16
  * @since 1.0.0
17
  * @var string
18
  */
19
  public $id = "plugins";
20
 
 
 
 
21
  public $type = "page";
22
 
 
 
 
23
  public $page_parent_page = 'updates';
24
 
 
 
 
25
  public $page_menu_dashicon = 'dashicons-cloud';
26
 
 
 
 
27
  private $is_disable_updates;
 
 
 
 
28
  private $is_auto_updates;
 
 
 
 
29
  private $plugins_update_filters = array();
30
 
31
- public function __construct(Factory326_Plugin $plugin)
 
 
 
32
  {
33
- $this->menuTitle = __('Plugins', 'webcraftic-updates-manager');
34
 
35
  parent::__construct($plugin);
36
 
@@ -45,7 +75,7 @@
45
  {
46
  parent::warningNotice();
47
 
48
- $concat = __('This page you can individually disable plugin updates and auto updates.', 'webcraftic-updates-manager') . '<br>';
49
 
50
  if( $this->is_disable_updates ) {
51
  $concat .= __('- To disable updates individually choose the “Manual or automatic plugin updates” option then save settings and comeback to this page.', 'webcraftic-updates-manager') . '<br>';
@@ -55,27 +85,28 @@
55
  $concat .= __('- To configure plugin auto updates individually, choose the “Enable auto updates” option then save settings and comeback to this page.', 'webcraftic-updates-manager');
56
  }
57
 
58
- $this->printWarningNotice($concat);
 
 
59
  }
60
 
61
  /**
62
  * Requests assets (js and css) for the page.
63
  *
64
- * @see FactoryPages324_AdminPage
65
  *
66
  * @since 1.0.0
67
  * @return void
68
  */
69
  public function assets($scripts, $styles)
70
  {
71
-
72
  parent::assets($scripts, $styles);
73
- $this->styles->add(WBCR_UPM_PLUGIN_URL . '/admin/assets/css/general.css');
74
  }
75
 
76
  public function savePluginsUpdateFilters()
77
  {
78
- update_option($this->plugin->pluginName . '_plugins_update_filters', $this->plugins_update_filters);
79
  }
80
 
81
  public function disablePluginUpdatesAction()
@@ -197,6 +228,15 @@
197
  }
198
 
199
  ?>
 
 
 
 
 
 
 
 
 
200
  <style>
201
  #the-list tr.inactive .check-column {
202
  border-left: 3px solid #D54E21;
@@ -206,9 +246,7 @@
206
  background: #FEF7F1;
207
  }
208
  </style>
209
-
210
- <?php $this->warningNotice(); ?>
211
- <form method="post">
212
  <?php wp_nonce_field($this->getResultId() . '_form') ?>
213
  <p>
214
  <select name="wbcr_upm_bulk_actions" id="wbcr_upm_bulk_actions">
@@ -323,6 +361,4 @@
323
  </form>
324
  <?php
325
  }
326
- }
327
-
328
- FactoryPages324::register($wbcr_update_services_plugin, 'WbcrUpm_PluginsPage');
5
  *
6
  * @since 1.0.0
7
  */
8
+
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+
15
+ class WbcrUpm_PluginsPage extends Wbcr_FactoryPages400_ImpressiveThemplate {
16
 
17
  /**
18
  * The id of the page in the admin menu.
19
  *
20
  * Mainly used to navigate between pages.
21
+ * @see FactoryPages400_AdminPage
22
  *
23
  * @since 1.0.0
24
  * @var string
25
  */
26
  public $id = "plugins";
27
 
28
+ /**
29
+ * @var string
30
+ */
31
  public $type = "page";
32
 
33
+ /**
34
+ * @var string
35
+ */
36
  public $page_parent_page = 'updates';
37
 
38
+ /**
39
+ * @var string
40
+ */
41
  public $page_menu_dashicon = 'dashicons-cloud';
42
 
43
+ /**
44
+ * @var
45
+ */
46
  private $is_disable_updates;
47
+
48
+ /**
49
+ * @var
50
+ */
51
  private $is_auto_updates;
52
+
53
+ /**
54
+ * @var array
55
+ */
56
  private $plugins_update_filters = array();
57
 
58
+ /**
59
+ * @param Wbcr_Factory400_Plugin $plugin
60
+ */
61
+ public function __construct(Wbcr_Factory400_Plugin $plugin)
62
  {
63
+ $this->menu_title = __('Plugins', 'webcraftic-updates-manager');
64
 
65
  parent::__construct($plugin);
66
 
75
  {
76
  parent::warningNotice();
77
 
78
+ $concat = '';
79
 
80
  if( $this->is_disable_updates ) {
81
  $concat .= __('- To disable updates individually choose the “Manual or automatic plugin updates” option then save settings and comeback to this page.', 'webcraftic-updates-manager') . '<br>';
85
  $concat .= __('- To configure plugin auto updates individually, choose the “Enable auto updates” option then save settings and comeback to this page.', 'webcraftic-updates-manager');
86
  }
87
 
88
+ if( !empty($concat) ) {
89
+ $this->printWarningNotice($concat);
90
+ }
91
  }
92
 
93
  /**
94
  * Requests assets (js and css) for the page.
95
  *
96
+ * @see FactoryPages400_AdminPage
97
  *
98
  * @since 1.0.0
99
  * @return void
100
  */
101
  public function assets($scripts, $styles)
102
  {
 
103
  parent::assets($scripts, $styles);
104
+ $this->styles->add(WUP_PLUGIN_URL . '/admin/assets/css/general.css');
105
  }
106
 
107
  public function savePluginsUpdateFilters()
108
  {
109
+ $this->plugin->updateOption('plugins_update_filters', $this->plugins_update_filters);
110
  }
111
 
112
  public function disablePluginUpdatesAction()
228
  }
229
 
230
  ?>
231
+
232
+ <?php $this->warningNotice(); ?>
233
+ <div class="wbcr-factory-page-group-header">
234
+ <strong><?php _e('Plugins list', 'webcraftic-updates-manager') ?></strong>
235
+
236
+ <p>
237
+ <?php _e('This page you can individually disable plugin updates and auto updates.', 'webcraftic-updates-manager') ?>
238
+ </p>
239
+ </div>
240
  <style>
241
  #the-list tr.inactive .check-column {
242
  border-left: 3px solid #D54E21;
246
  background: #FEF7F1;
247
  }
248
  </style>
249
+ <form method="post" style="padding: 20px;">
 
 
250
  <?php wp_nonce_field($this->getResultId() . '_form') ?>
251
  <p>
252
  <select name="wbcr_upm_bulk_actions" id="wbcr_upm_bulk_actions">
361
  </form>
362
  <?php
363
  }
364
+ }
 
 
components/updates-manager/admin/pages/updates.php CHANGED
@@ -5,29 +5,41 @@
5
  *
6
  * @since 1.0.0
7
  */
8
- class WbcrUpm_UpdatesPage extends FactoryPages324_ImpressiveThemplate {
 
 
 
 
 
 
9
 
10
  /**
11
  * The id of the page in the admin menu.
12
  *
13
  * Mainly used to navigate between pages.
14
- * @see FactoryPages324_AdminPage
15
  *
16
  * @since 1.0.0
17
  * @var string
18
  */
19
  public $id = "updates";
20
 
 
 
 
21
  public $page_menu_dashicon = 'dashicons-cloud';
22
 
23
- public function __construct(Factory326_Plugin $plugin)
 
 
 
24
  {
25
- $this->menuTitle = __('Updates manager', 'webcraftic-updates-manager');
26
 
27
  if( !defined('LOADING_UPDATES_MANAGER_AS_ADDON') ) {
28
  $this->internal = false;
29
- $this->menuTarget = 'options-general.php';
30
- $this->addLinkToPluginActions = true;
31
  }
32
 
33
  parent::__construct($plugin);
@@ -50,6 +62,11 @@
50
  {
51
  $options = array();
52
 
 
 
 
 
 
53
  $options[] = array(
54
  'type' => 'dropdown',
55
  'name' => 'plugin_updates',
@@ -158,4 +175,3 @@ If you have multiple users then this means those who are not admins don’t need
158
  }
159
  }
160
 
161
- FactoryPages324::register($wbcr_update_services_plugin, 'WbcrUpm_UpdatesPage');
5
  *
6
  * @since 1.0.0
7
  */
8
+
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+ class WbcrUpm_UpdatesPage extends Wbcr_FactoryPages400_ImpressiveThemplate {
15
 
16
  /**
17
  * The id of the page in the admin menu.
18
  *
19
  * Mainly used to navigate between pages.
20
+ * @see FactoryPages400_AdminPage
21
  *
22
  * @since 1.0.0
23
  * @var string
24
  */
25
  public $id = "updates";
26
 
27
+ /**
28
+ * @var string
29
+ */
30
  public $page_menu_dashicon = 'dashicons-cloud';
31
 
32
+ /**
33
+ * @param Wbcr_Factory400_Plugin $plugin
34
+ */
35
+ public function __construct(Wbcr_Factory400_Plugin $plugin)
36
  {
37
+ $this->menu_title = __('Updates manager', 'webcraftic-updates-manager');
38
 
39
  if( !defined('LOADING_UPDATES_MANAGER_AS_ADDON') ) {
40
  $this->internal = false;
41
+ $this->menu_target = 'options-general.php';
42
+ $this->add_link_to_plugin_actions = true;
43
  }
44
 
45
  parent::__construct($plugin);
62
  {
63
  $options = array();
64
 
65
+ $options[] = array(
66
+ 'type' => 'html',
67
+ 'html' => '<div class="wbcr-factory-page-group-header"><strong>' . __('General settings for WordPress, plugins and themes updates', 'webcraftic-updates-manager') . '</strong><p>' . __('This page, you can enable or disable automatic updates. To test the automatic updates, click the "Advanced" tab.', 'webcraftic-updates-manager') . '</p></div>'
68
+ );
69
+
70
  $options[] = array(
71
  'type' => 'dropdown',
72
  'name' => 'plugin_updates',
175
  }
176
  }
177
 
 
components/updates-manager/includes/class.plugin.php ADDED
@@ -0,0 +1,135 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Hide my wp 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
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+ if( !class_exists('WUP_Plugin') ) {
15
+
16
+ if( !class_exists('WUP_PluginFactory') ) {
17
+ if( defined('LOADING_UPDATES_MANAGER_AS_ADDON') ) {
18
+ class WUP_PluginFactory {
19
+
20
+ }
21
+ } else {
22
+ class WUP_PluginFactory extends Wbcr_Factory400_Plugin {
23
+
24
+ }
25
+ }
26
+ }
27
+
28
+ class WUP_Plugin extends WUP_PluginFactory {
29
+
30
+ /**
31
+ * @var Wbcr_Factory400_Plugin
32
+ */
33
+ private static $app;
34
+
35
+ /**
36
+ * @var bool
37
+ */
38
+ private $as_addon;
39
+
40
+ /**
41
+ * @param string $plugin_path
42
+ * @param array $data
43
+ * @throws Exception
44
+ */
45
+ public function __construct($plugin_path, $data)
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_Factory400_Plugin) ) {
55
+ throw new Exception('An invalid instance of the class was passed.');
56
+ }
57
+
58
+ self::$app = $plugin_parent;
59
+ } else {
60
+ self::$app = $this;
61
+ }
62
+
63
+ if( !$this->as_addon ) {
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
+
76
+ add_action('plugins_loaded', array($this, 'pluginsLoaded'));
77
+ }
78
+
79
+ /**
80
+ * @return Wbcr_Factory400_Plugin
81
+ */
82
+ public static function app()
83
+ {
84
+ return self::$app;
85
+ }
86
+
87
+ protected function setTextDomain()
88
+ {
89
+ // Localization plugin
90
+ load_plugin_textdomain('webcraftic-updates-manager', false, dirname(WUP_PLUGIN_BASE) . '/languages/');
91
+ }
92
+
93
+ protected function setModules()
94
+ {
95
+ if( !$this->as_addon ) {
96
+ self::app()->load(array(
97
+ array('libs/factory/bootstrap', 'factory_bootstrap_400', 'admin'),
98
+ array('libs/factory/forms', 'factory_forms_400', 'admin'),
99
+ array('libs/factory/pages', 'factory_pages_400', 'admin'),
100
+ array('libs/factory/clearfy', 'factory_clearfy_200', 'all')
101
+ ));
102
+ }
103
+ }
104
+
105
+ private function registerPages()
106
+ {
107
+
108
+ $admin_path = WUP_PLUGIN_DIR . '/admin/pages';
109
+
110
+ self::app()->registerPage('WbcrUpm_UpdatesPage', $admin_path . '/updates.php');
111
+ self::app()->registerPage('WbcrUpm_PluginsPage', $admin_path . '/plugins.php');
112
+ self::app()->registerPage('WbcrUpm_AdvancedPage', $admin_path . '/advanced.php');
113
+
114
+ if( !$this->as_addon ) {
115
+ self::app()->registerPage('WbcrUpm_MoreFeaturesPage', $admin_path . '/more-features.php');
116
+ }
117
+ }
118
+
119
+ private function adminScripts()
120
+ {
121
+ require_once(WUP_PLUGIN_DIR . '/admin/boot.php');
122
+ $this->registerPages();
123
+ }
124
+
125
+ private function globalScripts()
126
+ {
127
+ }
128
+
129
+ public function pluginsLoaded()
130
+ {
131
+ require(WUP_PLUGIN_DIR . '/includes/classes/class.configurate-updates.php');
132
+ new WbcrUpm_ConfigUpdates(self::$app);
133
+ }
134
+ }
135
+ }
components/updates-manager/includes/classes/class.configurate-updates.php CHANGED
@@ -6,8 +6,13 @@
6
  * @copyright (c) 2017 Webraftic Ltd
7
  * @version 1.0
8
  */
9
- class WbcrUpm_ConfigUpdates extends WbcrFactoryClearfy_Configurate {
10
 
 
 
 
 
 
 
11
 
12
  public function registerActionsAndFilters()
13
  {
@@ -18,7 +23,7 @@
18
 
19
  switch( $this->getOption('plugin_updates') ) {
20
  case 'disable_plugin_updates':
21
- add_filter('site_transient_update_plugins', '__return_false', 50);
22
  add_action('admin_init', array($this, 'adminInitForPlugins'));
23
  add_filter('auto_update_plugin', '__return_false');
24
  break;
@@ -35,10 +40,9 @@
35
  /**
36
  * Theme updates
37
  */
38
-
39
  switch( $this->getOption('theme_updates') ) {
40
  case 'disable_theme_updates':
41
- add_filter('site_transient_update_themes', '__return_false', 50);
42
  add_action('admin_init', array($this, 'adminInitForThemes'));
43
  add_filter('auto_update_theme', '__return_false');
44
  break;
@@ -92,6 +96,45 @@
92
  if( $this->getOption('updates_nags_only_for_admin') && !current_user_can('update_core') ) {
93
  remove_action('admin_notices', 'update_nag', 3);
94
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  }
96
 
97
  /**
@@ -103,7 +146,7 @@
103
  */
104
  public function pluginsAutoUpdate($update, $item)
105
  {
106
- $filters = get_option($this->plugin->pluginName . '_plugins_update_filters');
107
 
108
  $slug_parts = explode('/', $item->plugin);
109
  $actual_slug = array_shift($slug_parts);
@@ -163,7 +206,7 @@
163
 
164
  if( isset($r['body']['plugins']) ) {
165
  $r_plugins = json_decode($r['body']['plugins'], true);
166
- $filters = get_option($this->plugin->pluginName . '_plugins_update_filters');
167
 
168
  if( isset($r_plugins['plugins']) && !empty($r_plugins['plugins']) ) {
169
  foreach($r_plugins['plugins'] as $slug => $plugin) {
@@ -207,34 +250,66 @@
207
  add_filter('send_core_update_notification_email', '__return_false');
208
  add_filter('automatic_updates_send_debug_email', '__return_false');
209
  add_filter('automatic_updates_is_vcs_checkout', '__return_true');
 
 
210
  }
211
 
212
  /**
213
  * Initialize and load the plugin stuff
214
- *
215
- * @since 1.3
216
- * @author scripts@schloebe.de
217
  */
218
  function adminInitForPlugins()
219
  {
 
 
 
 
 
 
 
 
 
 
 
 
220
  remove_action('load-update-core.php', 'wp_update_plugins');
221
  wp_clear_scheduled_hook('wp_update_plugins');
222
  }
223
 
224
  function adminInitForThemes()
225
  {
 
 
 
 
 
 
 
 
 
 
 
 
226
  remove_action('load-update-core.php', 'wp_update_themes');
227
  wp_clear_scheduled_hook('wp_update_themes');
228
  }
229
 
230
  /**
231
  * Initialize and load the plugin stuff
232
- *
233
- * @since 1.3
234
- * @author scripts@schloebe.de
235
  */
236
  function adminInitForCore()
237
  {
 
 
 
 
 
 
 
 
 
 
238
  remove_action('wp_maybe_auto_update', 'wp_maybe_auto_update');
239
  remove_action('admin_init', 'wp_maybe_auto_update');
240
  remove_action('admin_init', 'wp_auto_update_core');
6
  * @copyright (c) 2017 Webraftic Ltd
7
  * @version 1.0
8
  */
 
9
 
10
+ // Exit if accessed directly
11
+ if( !defined('ABSPATH') ) {
12
+ exit;
13
+ }
14
+
15
+ class WbcrUpm_ConfigUpdates extends Wbcr_FactoryClearfy200_Configurate {
16
 
17
  public function registerActionsAndFilters()
18
  {
23
 
24
  switch( $this->getOption('plugin_updates') ) {
25
  case 'disable_plugin_updates':
26
+ add_filter('site_transient_update_plugins', array($this, 'lastCheckedNow'), 50);
27
  add_action('admin_init', array($this, 'adminInitForPlugins'));
28
  add_filter('auto_update_plugin', '__return_false');
29
  break;
40
  /**
41
  * Theme updates
42
  */
 
43
  switch( $this->getOption('theme_updates') ) {
44
  case 'disable_theme_updates':
45
+ add_filter('site_transient_update_themes', array($this, 'lastCheckedNow'), 50);
46
  add_action('admin_init', array($this, 'adminInitForThemes'));
47
  add_filter('auto_update_theme', '__return_false');
48
  break;
96
  if( $this->getOption('updates_nags_only_for_admin') && !current_user_can('update_core') ) {
97
  remove_action('admin_notices', 'update_nag', 3);
98
  }
99
+
100
+ add_action('schedule_event', array($this, 'filterCronEvents'));
101
+ }
102
+
103
+ /**
104
+ * Filter cron events
105
+ * @param $event
106
+ * @return bool
107
+ */
108
+ public function filterCronEvents($event)
109
+ {
110
+ $core_updates = $this->getOption('wp_update_core') == 'disable_core_updates';
111
+ $plugins_updates = $this->getOption('plugin_updates') == 'disable_plugin_updates';
112
+ $themes_updates = $this->getOption('theme_updates') == 'disable_theme_updates';
113
+
114
+ switch( $event->hook ) {
115
+ case 'wp_version_check':
116
+ $event = $core_updates
117
+ ? false
118
+ : $event;
119
+ break;
120
+ case 'wp_update_plugins':
121
+ $event = $plugins_updates
122
+ ? false
123
+ : $event;
124
+ break;
125
+ case 'wp_update_themes':
126
+ $event = $themes_updates
127
+ ? false
128
+ : $event;
129
+ break;
130
+ case 'wp_maybe_auto_update':
131
+ $event = $core_updates
132
+ ? false
133
+ : $event;
134
+ break;
135
+ }
136
+
137
+ return $event;
138
  }
139
 
140
  /**
146
  */
147
  public function pluginsAutoUpdate($update, $item)
148
  {
149
+ $filters = $this->getOption('plugins_update_filters');
150
 
151
  $slug_parts = explode('/', $item->plugin);
152
  $actual_slug = array_shift($slug_parts);
206
 
207
  if( isset($r['body']['plugins']) ) {
208
  $r_plugins = json_decode($r['body']['plugins'], true);
209
+ $filters = $this->getOption('plugins_update_filters');
210
 
211
  if( isset($r_plugins['plugins']) && !empty($r_plugins['plugins']) ) {
212
  foreach($r_plugins['plugins'] as $slug => $plugin) {
250
  add_filter('send_core_update_notification_email', '__return_false');
251
  add_filter('automatic_updates_send_debug_email', '__return_false');
252
  add_filter('automatic_updates_is_vcs_checkout', '__return_true');
253
+ remove_action('admin_notices', 'update_nag', 3);
254
+ remove_action('admin_notices', 'maintenance_nag');
255
  }
256
 
257
  /**
258
  * Initialize and load the plugin stuff
259
+ * @author scripts@schloebe.de
 
 
260
  */
261
  function adminInitForPlugins()
262
  {
263
+ /*
264
+ * 2.8 to 3.0
265
+ */
266
+ remove_action('load-plugins.php', 'wp_update_plugins');
267
+ remove_action('load-update.php', 'wp_update_plugins');
268
+ remove_action('admin_init', '_maybe_update_plugins');
269
+ remove_action('wp_update_plugins', 'wp_update_plugins');
270
+ wp_clear_scheduled_hook('wp_update_plugins');
271
+
272
+ /*
273
+ * 3.0
274
+ */
275
  remove_action('load-update-core.php', 'wp_update_plugins');
276
  wp_clear_scheduled_hook('wp_update_plugins');
277
  }
278
 
279
  function adminInitForThemes()
280
  {
281
+ /*
282
+ * 2.8 to 3.0
283
+ */
284
+ remove_action('load-themes.php', 'wp_update_themes');
285
+ remove_action('load-update.php', 'wp_update_themes');
286
+ remove_action('admin_init', '_maybe_update_themes');
287
+ remove_action('wp_update_themes', 'wp_update_themes');
288
+ wp_clear_scheduled_hook('wp_update_themes');
289
+
290
+ /*
291
+ * 3.0
292
+ */
293
  remove_action('load-update-core.php', 'wp_update_themes');
294
  wp_clear_scheduled_hook('wp_update_themes');
295
  }
296
 
297
  /**
298
  * Initialize and load the plugin stuff
299
+ * @author scripts@schloebe.de
 
 
300
  */
301
  function adminInitForCore()
302
  {
303
+ /*
304
+ * 2.8 to 3.0
305
+ */
306
+ remove_action('wp_version_check', 'wp_version_check');
307
+ remove_action('admin_init', '_maybe_update_core');
308
+ wp_clear_scheduled_hook('wp_version_check');
309
+
310
+ /*
311
+ * 3.7+
312
+ */
313
  remove_action('wp_maybe_auto_update', 'wp_maybe_auto_update');
314
  remove_action('admin_init', 'wp_maybe_auto_update');
315
  remove_action('admin_init', 'wp_auto_update_core');
components/updates-manager/includes/classes/index.php ADDED
File without changes
components/updates-manager/includes/index.php ADDED
File without changes
components/updates-manager/index.php ADDED
File without changes
components/updates-manager/languages/index.php ADDED
File without changes
components/updates-manager/languages/webcraftic-updates-manager-fr_FR.mo DELETED
Binary file
components/updates-manager/languages/webcraftic-updates-manager-fr_FR.po DELETED
@@ -1,247 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-01-22 00:12+0300\n"
5
- "PO-Revision-Date: 2018-01-22 00:12+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: fr_FR\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:32
22
- msgid "Disable plugin updates"
23
- msgstr "Désactiver les mises à jour du plugin"
24
-
25
- #: admin/boot.php:38
26
- msgid "Disable theme updates"
27
- msgstr "Désactiver les mises à jour de thème"
28
-
29
- #: admin/boot.php:44 admin/pages/updates.php:87
30
- msgid "Disable Automatic Translation Updates"
31
- msgstr "Désactiver les mises à jour automatiques de traduction"
32
-
33
- #: admin/boot.php:49
34
- msgid "Disable wordPress core updates"
35
- msgstr "Désactiver les mises à jour de base de WordPress"
36
-
37
- #: admin/boot.php:55 admin/pages/updates.php:121
38
- msgid "Enable updates for VCS Installations"
39
- msgstr "Activer les mises à jour pour les installations VCS"
40
-
41
- #: admin/boot.php:60
42
- msgid "Plugin filters"
43
- msgstr ""
44
-
45
- #: admin/boot.php:72
46
- msgid "One click disable all updates"
47
- msgstr ""
48
-
49
- #: admin/boot.php:84
50
- msgid "Get ultimate plugin free"
51
- msgstr "Obtenez le plugin ultime gratuitement"
52
-
53
- #: admin/pages/advanced.php:29
54
- msgid "Advanced"
55
- msgstr ""
56
-
57
- #: admin/pages/advanced.php:40
58
- msgid "Please, wait 90 sec. to see the forced automatic update result."
59
- msgstr ""
60
-
61
- #: admin/pages/advanced.php:50
62
- msgid "Force Automatic Updates"
63
- msgstr ""
64
-
65
- #: admin/pages/advanced.php:51
66
- msgid ""
67
- "This will attempt to force automatic updates. This is useful for debugging."
68
- msgstr ""
69
-
70
- #: admin/pages/advanced.php:52
71
- msgid "Force update"
72
- msgstr ""
73
-
74
- #: admin/pages/plugins.php:33
75
- msgid "Plugins"
76
- msgstr ""
77
-
78
- #: admin/pages/plugins.php:48
79
- msgid "This page you can individually disable plugin updates and auto updates."
80
- msgstr ""
81
-
82
- #: admin/pages/plugins.php:51
83
- msgid ""
84
- "- To disable updates individually choose the “Manual or automatic plugin "
85
- "updates” option then save settings and comeback to this page."
86
- msgstr ""
87
-
88
- #: admin/pages/plugins.php:55
89
- msgid ""
90
- "- To configure plugin auto updates individually, choose the “Enable auto "
91
- "updates” option then save settings and comeback to this page."
92
- msgstr ""
93
-
94
- #: admin/pages/plugins.php:211
95
- msgid "Bulk actions"
96
- msgstr ""
97
-
98
- #: admin/pages/plugins.php:212 admin/pages/plugins.php:287
99
- #: admin/pages/plugins.php:292 admin/pages/updates.php:61
100
- #: admin/pages/updates.php:76 admin/pages/updates.php:97
101
- msgid "Disable updates"
102
- msgstr "Désactiver les mises à jour"
103
-
104
- #: admin/pages/plugins.php:213 admin/pages/plugins.php:289
105
- msgid "Enable updates"
106
- msgstr ""
107
-
108
- #: admin/pages/plugins.php:214 admin/pages/plugins.php:299
109
- #: admin/pages/plugins.php:305
110
- msgid "Enable auto-updates"
111
- msgstr ""
112
-
113
- #: admin/pages/plugins.php:215 admin/pages/plugins.php:297
114
- #: admin/pages/plugins.php:303
115
- msgid "Disable auto-updates"
116
- msgstr ""
117
-
118
- #: admin/pages/plugins.php:217
119
- msgid "Apply"
120
- msgstr ""
121
-
122
- #: admin/pages/plugins.php:224
123
- msgid "Plugin"
124
- msgstr ""
125
-
126
- #: admin/pages/plugins.php:226
127
- msgid "Description"
128
- msgstr ""
129
-
130
- #: admin/pages/plugins.php:273
131
- msgid "Select"
132
- msgstr ""
133
-
134
- #: admin/pages/updates.php:25
135
- msgid "Updates manager"
136
- msgstr "Gestionnaire des mises à jour"
137
-
138
- #: admin/pages/updates.php:39
139
- msgid "Updates"
140
- msgstr "Mises à jour"
141
-
142
- #: admin/pages/updates.php:40
143
- msgid "General"
144
- msgstr "Général"
145
-
146
- #: admin/pages/updates.php:57
147
- msgid "Plugin Updates"
148
- msgstr "Mises à jour plugin"
149
-
150
- #: admin/pages/updates.php:59 admin/pages/updates.php:74
151
- msgid "Manual updates"
152
- msgstr "Mise à jour manuelle"
153
-
154
- #: admin/pages/updates.php:60 admin/pages/updates.php:75
155
- msgid "Enable auto updates"
156
- msgstr "Activer les mises à jour automatiques"
157
-
158
- #: admin/pages/updates.php:64
159
- msgid ""
160
- "You can disable all plugin updates or choose manual or automatic update mode."
161
- msgstr ""
162
- "Vous pouvez désactiver toutes les mises à jour du plugin ou choisir le mode "
163
- "de mise à jour manuelle ou automatique."
164
-
165
- #: admin/pages/updates.php:72
166
- msgid "Theme Updates"
167
- msgstr "Mises à jour thème"
168
-
169
- #: admin/pages/updates.php:79
170
- msgid ""
171
- "You can disable all themes updates or choose manual or automatic update mode."
172
- msgstr ""
173
- "Vous pouvez désactiver toutes les mises à jour de thèmes ou choisir le mode "
174
- "de mise à jour manuel ou automatique."
175
-
176
- #: admin/pages/updates.php:95
177
- msgid "WordPress Core Updates"
178
- msgstr "Mises à jour de base de WordPress"
179
-
180
- #: admin/pages/updates.php:98
181
- msgid "Disable auto updates"
182
- msgstr "Désactiver les mises à jour automatiques"
183
-
184
- #: admin/pages/updates.php:101
185
- msgid "Allow minor auto updates"
186
- msgstr "Autoriser les mises à jour mineures"
187
-
188
- #: admin/pages/updates.php:105
189
- msgid "Allow major auto updates"
190
- msgstr "Autoriser les mises à jour automatiques majeures"
191
-
192
- #: admin/pages/updates.php:109
193
- msgid "Allow development auto updates"
194
- msgstr "Autoriser les mises à jour automatiques de développement"
195
-
196
- #: admin/pages/updates.php:113
197
- msgid ""
198
- "You can disable all core WordPress updates, or disable only automatic "
199
- "updates. Also you can select the update mode. By default (minor)"
200
- msgstr ""
201
- "Vous pouvez désactiver toutes les mises à jour de base de WordPress, ou "
202
- "désactiver uniquement les mises à jour automatiques. Vous pouvez également "
203
- "sélectionner le mode mise à jour. Par défaut (mineur)"
204
-
205
- #: admin/pages/updates.php:113
206
- msgid "Major - automatically update to major releases (e.g., 4.1, 4.2, 4.3)."
207
- msgstr ""
208
- "Majeure: mise à jour automatique des versions majeures (par exemple, 4.1, "
209
- "4.2, 4.3)."
210
-
211
- #: admin/pages/updates.php:113
212
- msgid ""
213
- "Minor - automatically update to minor releases (e.g., 4.1.1, 4.1.2, 4.1.3).."
214
- msgstr ""
215
- "Mineure - mise à jour automatique des versions mineures (par exemple, 4.1.1, "
216
- "4.1.2, 4.1.3)."
217
-
218
- #: admin/pages/updates.php:113
219
- msgid "Development - update automatically to Bleeding Edge releases."
220
- msgstr ""
221
- "Développement - mise à jour automatique vers les versions Bleeding Edge."
222
-
223
- #: admin/pages/updates.php:123
224
- msgid ""
225
- "Enable Automatic Updates even if a VCS folder (.git, .hg, .svn) was found in "
226
- "the WordPress directory"
227
- msgstr ""
228
- "Activer les mises à jour automatiques même si un dossier VCF (.git, .hg, ."
229
- "svn) a été trouvé dans le répertoire WordPress"
230
-
231
- #: webcraftic-updates-manager.php:17
232
- msgid ""
233
- "We found that you have the \"Clearfy - disable unused features\" plugin "
234
- "installed, this plugin already has update manager functions, so you can "
235
- "deactivate plugin \"Update manager\"!"
236
- msgstr ""
237
- "Nous avons constaté que vous avez installé le plugin \"Clarifier - "
238
- "désactiver les fonctionnalités inutilisées\", ce plugin a déjà des fonctions "
239
- "de gestionnaire de mise à jour, vous pouvez donc désactiver le plugin "
240
- "\"Gestionnaire de mise à jour\"!"
241
-
242
- #: webcraftic-updates-manager.php:82
243
- msgid "Webcraftic Updates Manager"
244
- msgstr "Gestionnaire de mises à jour Webcraft"
245
-
246
- #~ msgid "Disable all updates"
247
- #~ msgstr "Désactiver toutes les mises à jour"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
components/updates-manager/languages/webcraftic-updates-manager-it-IT.mo DELETED
Binary file
components/updates-manager/languages/webcraftic-updates-manager-it-IT.po DELETED
@@ -1,184 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-01-14 20:56+0300\n"
5
- "PO-Revision-Date: 2018-01-14 20:57+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: it\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:21
22
- msgid "Disable plugin updates"
23
- msgstr ""
24
-
25
- #: admin/boot.php:27
26
- msgid "Disable theme updates"
27
- msgstr ""
28
-
29
- #: admin/boot.php:33 admin/pages/themes.php:76 admin/pages/updates.php:87
30
- msgid "Disable Automatic Translation Updates"
31
- msgstr ""
32
-
33
- #: admin/boot.php:38
34
- msgid "Disable wordPress core updates"
35
- msgstr ""
36
-
37
- #: admin/boot.php:44 admin/pages/themes.php:110 admin/pages/updates.php:121
38
- msgid "Enable updates for VCS Installations"
39
- msgstr ""
40
-
41
- #: admin/boot.php:56
42
- msgid "Disable all updates"
43
- msgstr ""
44
-
45
- #: admin/boot.php:68
46
- msgid "Get ultimate plugin free"
47
- msgstr ""
48
-
49
- #: admin/pages/plugins.php:29
50
- msgid "Plugins"
51
- msgstr ""
52
-
53
- #: admin/pages/plugins.php:61
54
- msgid "Apply"
55
- msgstr ""
56
-
57
- #: admin/pages/plugins.php:68
58
- msgid "Plugin"
59
- msgstr ""
60
-
61
- #: admin/pages/plugins.php:70
62
- msgid "Description"
63
- msgstr ""
64
-
65
- #: admin/pages/plugins.php:107
66
- msgid "Select"
67
- msgstr ""
68
-
69
- #: admin/pages/plugins.php:119 admin/pages/themes.php:50
70
- #: admin/pages/themes.php:65 admin/pages/themes.php:86
71
- #: admin/pages/updates.php:61 admin/pages/updates.php:76
72
- #: admin/pages/updates.php:97
73
- msgid "Disable updates"
74
- msgstr ""
75
-
76
- #: admin/pages/plugins.php:121
77
- msgid "Enable auto-updates"
78
- msgstr ""
79
-
80
- #: admin/pages/plugins.php:123
81
- msgid "Enable manual updates"
82
- msgstr ""
83
-
84
- #: admin/pages/themes.php:27
85
- msgid "Themes"
86
- msgstr ""
87
-
88
- #: admin/pages/themes.php:46 admin/pages/updates.php:57
89
- msgid "Plugin Updates"
90
- msgstr ""
91
-
92
- #: admin/pages/themes.php:48 admin/pages/themes.php:63
93
- #: admin/pages/updates.php:59 admin/pages/updates.php:74
94
- msgid "Manual updates"
95
- msgstr ""
96
-
97
- #: admin/pages/themes.php:49 admin/pages/themes.php:64
98
- #: admin/pages/updates.php:60 admin/pages/updates.php:75
99
- msgid "Enable auto updates"
100
- msgstr ""
101
-
102
- #: admin/pages/themes.php:53 admin/pages/updates.php:64
103
- msgid ""
104
- "You can disable all plugin updates or choose manual or automatic update mode."
105
- msgstr ""
106
- "Puoi disattivare tutti gli aggiornamenti dei plugins o scegliere le modalità "
107
- "di aggiornamento automatico e manuale."
108
-
109
- #: admin/pages/themes.php:61 admin/pages/updates.php:72
110
- msgid "Theme Updates"
111
- msgstr ""
112
-
113
- #: admin/pages/themes.php:68 admin/pages/updates.php:79
114
- msgid ""
115
- "You can disable all themes updates or choose manual or automatic update mode."
116
- msgstr ""
117
-
118
- #: admin/pages/themes.php:84 admin/pages/updates.php:95
119
- msgid "WordPress Core Updates"
120
- msgstr ""
121
-
122
- #: admin/pages/themes.php:87 admin/pages/updates.php:98
123
- msgid "Disable auto updates"
124
- msgstr ""
125
-
126
- #: admin/pages/themes.php:90 admin/pages/updates.php:101
127
- msgid "Allow minor auto updates"
128
- msgstr ""
129
-
130
- #: admin/pages/themes.php:94 admin/pages/updates.php:105
131
- msgid "Allow major auto updates"
132
- msgstr ""
133
-
134
- #: admin/pages/themes.php:98 admin/pages/updates.php:109
135
- msgid "Allow development auto updates"
136
- msgstr ""
137
-
138
- #: admin/pages/themes.php:102 admin/pages/updates.php:113
139
- msgid ""
140
- "You can disable all core WordPress updates, or disable only automatic "
141
- "updates. Also you can select the update mode. By default (minor)"
142
- msgstr ""
143
-
144
- #: admin/pages/themes.php:102 admin/pages/updates.php:113
145
- msgid "Major - automatically update to major releases (e.g., 4.1, 4.2, 4.3)."
146
- msgstr ""
147
-
148
- #: admin/pages/themes.php:102 admin/pages/updates.php:113
149
- msgid ""
150
- "Minor - automatically update to minor releases (e.g., 4.1.1, 4.1.2, 4.1.3).."
151
- msgstr ""
152
-
153
- #: admin/pages/themes.php:102 admin/pages/updates.php:113
154
- msgid "Development - update automatically to Bleeding Edge releases."
155
- msgstr ""
156
-
157
- #: admin/pages/themes.php:112 admin/pages/updates.php:123
158
- msgid ""
159
- "Enable Automatic Updates even if a VCS folder (.git, .hg, .svn) was found in "
160
- "the WordPress directory"
161
- msgstr ""
162
-
163
- #: admin/pages/updates.php:25
164
- msgid "Updates manager"
165
- msgstr ""
166
-
167
- #: admin/pages/updates.php:39
168
- msgid "Updates"
169
- msgstr ""
170
-
171
- #: admin/pages/updates.php:40
172
- msgid "General"
173
- msgstr ""
174
-
175
- #: webcraftic-updates-manager.php:17
176
- msgid ""
177
- "We found that you have the \"Clearfy - disable unused features\" plugin "
178
- "installed, this plugin already has update manager functions, so you can "
179
- "deactivate plugin \"Update manager\"!"
180
- msgstr ""
181
-
182
- #: webcraftic-updates-manager.php:82
183
- msgid "Webcraftic Updates Manager"
184
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
components/updates-manager/languages/webcraftic-updates-manager-ru_RU.mo CHANGED
Binary file
components/updates-manager/languages/webcraftic-updates-manager-ru_RU.po CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-01-22 00:02+0300\n"
5
- "PO-Revision-Date: 2018-01-22 00:11+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"
@@ -18,53 +18,78 @@ msgstr ""
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPathExcluded-0: libs\n"
20
 
21
- #: admin/boot.php:32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  msgid "Disable plugin updates"
23
  msgstr "Отключить обновления плагинов"
24
 
25
- #: admin/boot.php:38
26
  msgid "Disable theme updates"
27
  msgstr "Отключить обновления тем"
28
 
29
- #: admin/boot.php:44 admin/pages/updates.php:87
30
  msgid "Disable Automatic Translation Updates"
31
  msgstr "Отключить автоматические обновления переводов"
32
 
33
- #: admin/boot.php:49
34
  msgid "Disable wordPress core updates"
35
  msgstr "Отключить обновления ядра Wordpress"
36
 
37
- #: admin/boot.php:55 admin/pages/updates.php:121
38
  msgid "Enable updates for VCS Installations"
39
  msgstr "Включить обновления для установок VCS"
40
 
41
- #: admin/boot.php:60
42
  msgid "Plugin filters"
43
  msgstr "Фильтры плагинов"
44
 
45
- #: admin/boot.php:72
 
 
 
 
46
  msgid "One click disable all updates"
47
  msgstr "Отключить все обновления в один клик"
48
 
49
- #: admin/boot.php:84
50
  msgid "Get ultimate plugin free"
51
  msgstr "Получите полную версию плагина бесплатно"
52
 
53
- #: admin/pages/advanced.php:29
54
  msgid "Advanced"
55
  msgstr "Дополнительно"
56
 
57
- #: admin/pages/advanced.php:40
58
  msgid "Please, wait 90 sec. to see the forced automatic update result."
59
  msgstr ""
60
  "Пожалуйста, подождите 90 сек., чтобы увидеть результат принудительного "
61
  "автоматического обновления."
62
 
63
- #: admin/pages/advanced.php:50
64
  msgid "Force Automatic Updates"
65
  msgstr "Принудительное автоматическое обновление"
66
 
67
- #: admin/pages/advanced.php:51
68
  msgid ""
69
  "This will attempt to force automatic updates. This is useful for debugging."
70
  msgstr ""
@@ -72,21 +97,15 @@ msgstr ""
72
  "Настройте автоматические обновления и нажмите на эту кнопку, чтобы проверить "
73
  "работают они или нет."
74
 
75
- #: admin/pages/advanced.php:52
76
  msgid "Force update"
77
  msgstr "Запустить обновление"
78
 
79
- #: admin/pages/plugins.php:33
80
  msgid "Plugins"
81
  msgstr "Плагины"
82
 
83
- #: admin/pages/plugins.php:48
84
- msgid "This page you can individually disable plugin updates and auto updates."
85
- msgstr ""
86
- "На этой странице вы можете индивидуально отключить обновления и "
87
- "автообновления плагинов."
88
-
89
- #: admin/pages/plugins.php:51
90
  msgid ""
91
  "- To disable updates individually choose the “Manual or automatic plugin "
92
  "updates” option then save settings and comeback to this page."
@@ -95,7 +114,7 @@ msgstr ""
95
  "автоматические обновления плагинов”, сохраните настройки и вернитесь на эту "
96
  "страницу."
97
 
98
- #: admin/pages/plugins.php:55
99
  msgid ""
100
  "- To configure plugin auto updates individually, choose the “Enable auto "
101
  "updates” option then save settings and comeback to this page."
@@ -104,109 +123,132 @@ msgstr ""
104
  "опцию “Автоматические обновления”, сохраните настройки и вернитесь на эту "
105
  "страницу."
106
 
107
- #: admin/pages/plugins.php:211
 
 
 
 
 
 
 
 
 
 
108
  msgid "Bulk actions"
109
  msgstr "Массовые действия"
110
 
111
- #: admin/pages/plugins.php:212 admin/pages/plugins.php:287
112
- #: admin/pages/plugins.php:292 admin/pages/updates.php:61
113
- #: admin/pages/updates.php:76 admin/pages/updates.php:97
114
  msgid "Disable updates"
115
  msgstr "Отключить все обновления"
116
 
117
- #: admin/pages/plugins.php:213 admin/pages/plugins.php:289
118
  msgid "Enable updates"
119
  msgstr "Включить обновления"
120
 
121
- #: admin/pages/plugins.php:214 admin/pages/plugins.php:299
122
- #: admin/pages/plugins.php:305
123
  msgid "Enable auto-updates"
124
  msgstr "Включить авто-обновления"
125
 
126
- #: admin/pages/plugins.php:215 admin/pages/plugins.php:297
127
- #: admin/pages/plugins.php:303
128
  msgid "Disable auto-updates"
129
  msgstr "Отключить авто-обновления"
130
 
131
- #: admin/pages/plugins.php:217
132
  msgid "Apply"
133
  msgstr "Применить"
134
 
135
- #: admin/pages/plugins.php:224
136
  msgid "Plugin"
137
  msgstr "Плагин"
138
 
139
- #: admin/pages/plugins.php:226
140
  msgid "Description"
141
  msgstr "Описание"
142
 
143
- #: admin/pages/plugins.php:273
144
  msgid "Select"
145
  msgstr "Выбор"
146
 
147
- #: admin/pages/updates.php:25
148
  msgid "Updates manager"
149
  msgstr "Менеджер обновлений"
150
 
151
- #: admin/pages/updates.php:39
152
  msgid "Updates"
153
  msgstr "Обновления"
154
 
155
- #: admin/pages/updates.php:40
156
  msgid "General"
157
  msgstr "Основные"
158
 
159
- #: admin/pages/updates.php:57
 
 
 
 
 
 
 
 
 
 
 
 
 
160
  msgid "Plugin Updates"
161
  msgstr "Обновления плагина"
162
 
163
- #: admin/pages/updates.php:59 admin/pages/updates.php:74
164
  msgid "Manual updates"
165
  msgstr "Ручные"
166
 
167
- #: admin/pages/updates.php:60 admin/pages/updates.php:75
168
  msgid "Enable auto updates"
169
  msgstr "Автоматические"
170
 
171
- #: admin/pages/updates.php:64
172
  msgid ""
173
  "You can disable all plugin updates or choose manual or automatic update mode."
174
  msgstr ""
175
  "Вы можете отключить все обновления плагинов или выбрать режим ручного или "
176
  "автоматического обновления."
177
 
178
- #: admin/pages/updates.php:72
179
  msgid "Theme Updates"
180
  msgstr "Обновления тем"
181
 
182
- #: admin/pages/updates.php:79
183
  msgid ""
184
  "You can disable all themes updates or choose manual or automatic update mode."
185
  msgstr ""
186
  "Вы можете отключить все обновления тем или выбрать режим ручного или "
187
  "автоматического обновления."
188
 
189
- #: admin/pages/updates.php:95
190
  msgid "WordPress Core Updates"
191
  msgstr "Базовые обновления Wordpress"
192
 
193
- #: admin/pages/updates.php:98
194
  msgid "Disable auto updates"
195
  msgstr "Отключить автоматические обновления"
196
 
197
- #: admin/pages/updates.php:101
198
  msgid "Allow minor auto updates"
199
  msgstr "Разрешить незначительные автоматические обновления"
200
 
201
- #: admin/pages/updates.php:105
202
  msgid "Allow major auto updates"
203
  msgstr "Разрешить основные автоматические обновления"
204
 
205
- #: admin/pages/updates.php:109
206
  msgid "Allow development auto updates"
207
  msgstr "Разрешить разрабатываемые автоматические обновления"
208
 
209
- #: admin/pages/updates.php:113
210
  msgid ""
211
  "You can disable all core WordPress updates, or disable only automatic "
212
  "updates. Also you can select the update mode. By default (minor)"
@@ -215,23 +257,23 @@ msgstr ""
215
  "автоматические обновления. Также вы можете выбрать режим обновления. По "
216
  "умолчанию (младший)"
217
 
218
- #: admin/pages/updates.php:113
219
  msgid "Major - automatically update to major releases (e.g., 4.1, 4.2, 4.3)."
220
  msgstr ""
221
  "Основные - автоматически обновления основных версий (4.1, 4.2, 4.3 и т.д)."
222
 
223
- #: admin/pages/updates.php:113
224
  msgid ""
225
  "Minor - automatically update to minor releases (e.g., 4.1.1, 4.1.2, 4.1.3).."
226
  msgstr ""
227
  "Незначительные - автоматически обновления промежуточных версий (4.1.1, "
228
  "4.1.2, 4.1.3 и т.д)."
229
 
230
- #: admin/pages/updates.php:113
231
  msgid "Development - update automatically to Bleeding Edge releases."
232
  msgstr "Разрабатываемые - автоматические обновления до финальных выпусков."
233
 
234
- #: admin/pages/updates.php:123
235
  msgid ""
236
  "Enable Automatic Updates even if a VCS folder (.git, .hg, .svn) was found in "
237
  "the WordPress directory"
@@ -239,6 +281,22 @@ msgstr ""
239
  "Включить автоматическое обновление, даже если папка VCS (.git, .hg, .svn) "
240
  "была найдена в каталоге WordPress"
241
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
242
  #: webcraftic-updates-manager.php:17
243
  msgid ""
244
  "We found that you have the \"Clearfy - disable unused features\" plugin "
@@ -249,6 +307,6 @@ msgstr ""
249
  "неиспользуемые функции», этот плагин уже имеет функции менеджера обновлений, "
250
  "поэтому вы можете отключить плагин «Менеджер обновлений»!"
251
 
252
- #: webcraftic-updates-manager.php:82
253
  msgid "Webcraftic Updates Manager"
254
  msgstr "Webcraftic менеджер обновлений"
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: clearfy\n"
4
+ "POT-Creation-Date: 2018-03-14 17:40+0300\n"
5
+ "PO-Revision-Date: 2018-03-14 17:44+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"
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPathExcluded-0: libs\n"
20
 
21
+ #: admin/boot.php:17
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:18
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:72
43
  msgid "Disable plugin updates"
44
  msgstr "Отключить обновления плагинов"
45
 
46
+ #: admin/boot.php:78
47
  msgid "Disable theme updates"
48
  msgstr "Отключить обновления тем"
49
 
50
+ #: admin/boot.php:84 admin/pages/updates.php:104
51
  msgid "Disable Automatic Translation Updates"
52
  msgstr "Отключить автоматические обновления переводов"
53
 
54
+ #: admin/boot.php:89
55
  msgid "Disable wordPress core updates"
56
  msgstr "Отключить обновления ядра Wordpress"
57
 
58
+ #: admin/boot.php:95 admin/pages/updates.php:138
59
  msgid "Enable updates for VCS Installations"
60
  msgstr "Включить обновления для установок VCS"
61
 
62
+ #: admin/boot.php:100
63
  msgid "Plugin filters"
64
  msgstr "Фильтры плагинов"
65
 
66
+ #: admin/boot.php:105 admin/pages/updates.php:148
67
+ msgid "Updates nags only for Admin"
68
+ msgstr "Показывать уведомления об обновлении Wordpress только для админа"
69
+
70
+ #: admin/boot.php:117
71
  msgid "One click disable all updates"
72
  msgstr "Отключить все обновления в один клик"
73
 
74
+ #: admin/boot.php:129
75
  msgid "Get ultimate plugin free"
76
  msgstr "Получите полную версию плагина бесплатно"
77
 
78
+ #: admin/pages/advanced.php:37
79
  msgid "Advanced"
80
  msgstr "Дополнительно"
81
 
82
+ #: admin/pages/advanced.php:47
83
  msgid "Please, wait 90 sec. to see the forced automatic update result."
84
  msgstr ""
85
  "Пожалуйста, подождите 90 сек., чтобы увидеть результат принудительного "
86
  "автоматического обновления."
87
 
88
+ #: admin/pages/advanced.php:58
89
  msgid "Force Automatic Updates"
90
  msgstr "Принудительное автоматическое обновление"
91
 
92
+ #: admin/pages/advanced.php:60
93
  msgid ""
94
  "This will attempt to force automatic updates. This is useful for debugging."
95
  msgstr ""
97
  "Настройте автоматические обновления и нажмите на эту кнопку, чтобы проверить "
98
  "работают они или нет."
99
 
100
+ #: admin/pages/advanced.php:61
101
  msgid "Force update"
102
  msgstr "Запустить обновление"
103
 
104
+ #: admin/pages/plugins.php:63
105
  msgid "Plugins"
106
  msgstr "Плагины"
107
 
108
+ #: admin/pages/plugins.php:81
 
 
 
 
 
 
109
  msgid ""
110
  "- To disable updates individually choose the “Manual or automatic plugin "
111
  "updates” option then save settings and comeback to this page."
114
  "автоматические обновления плагинов”, сохраните настройки и вернитесь на эту "
115
  "страницу."
116
 
117
+ #: admin/pages/plugins.php:85
118
  msgid ""
119
  "- To configure plugin auto updates individually, choose the “Enable auto "
120
  "updates” option then save settings and comeback to this page."
123
  "опцию “Автоматические обновления”, сохраните настройки и вернитесь на эту "
124
  "страницу."
125
 
126
+ #: admin/pages/plugins.php:234
127
+ msgid "Plugins list"
128
+ msgstr "Ваш список плагинов"
129
+
130
+ #: admin/pages/plugins.php:237
131
+ msgid "This page you can individually disable plugin updates and auto updates."
132
+ msgstr ""
133
+ "На этой странице вы можете индивидуально отключить обновления и "
134
+ "автообновления плагинов."
135
+
136
+ #: admin/pages/plugins.php:253
137
  msgid "Bulk actions"
138
  msgstr "Массовые действия"
139
 
140
+ #: admin/pages/plugins.php:254 admin/pages/plugins.php:329
141
+ #: admin/pages/plugins.php:334 admin/pages/updates.php:78
142
+ #: admin/pages/updates.php:93 admin/pages/updates.php:114
143
  msgid "Disable updates"
144
  msgstr "Отключить все обновления"
145
 
146
+ #: admin/pages/plugins.php:255 admin/pages/plugins.php:331
147
  msgid "Enable updates"
148
  msgstr "Включить обновления"
149
 
150
+ #: admin/pages/plugins.php:256 admin/pages/plugins.php:341
151
+ #: admin/pages/plugins.php:347
152
  msgid "Enable auto-updates"
153
  msgstr "Включить авто-обновления"
154
 
155
+ #: admin/pages/plugins.php:257 admin/pages/plugins.php:339
156
+ #: admin/pages/plugins.php:345
157
  msgid "Disable auto-updates"
158
  msgstr "Отключить авто-обновления"
159
 
160
+ #: admin/pages/plugins.php:259
161
  msgid "Apply"
162
  msgstr "Применить"
163
 
164
+ #: admin/pages/plugins.php:266
165
  msgid "Plugin"
166
  msgstr "Плагин"
167
 
168
+ #: admin/pages/plugins.php:268
169
  msgid "Description"
170
  msgstr "Описание"
171
 
172
+ #: admin/pages/plugins.php:315
173
  msgid "Select"
174
  msgstr "Выбор"
175
 
176
+ #: admin/pages/updates.php:37
177
  msgid "Updates manager"
178
  msgstr "Менеджер обновлений"
179
 
180
+ #: admin/pages/updates.php:51
181
  msgid "Updates"
182
  msgstr "Обновления"
183
 
184
+ #: admin/pages/updates.php:52
185
  msgid "General"
186
  msgstr "Основные"
187
 
188
+ #: admin/pages/updates.php:67
189
+ msgid "General settings for WordPress, plugins and themes updates"
190
+ msgstr "Общие настройки для обновлений WordPress, плагинов и тем"
191
+
192
+ #: admin/pages/updates.php:67
193
+ msgid ""
194
+ "This page, you can enable or disable automatic updates. To test the "
195
+ "automatic updates, click the \"Advanced\" tab."
196
+ msgstr ""
197
+ "На этой странице можете включить или отключить автоматические обновления. "
198
+ "Чтобы протестировать работу автоматических обновлений, перейдите на вкладку "
199
+ "\"Дополнительно\"."
200
+
201
+ #: admin/pages/updates.php:74
202
  msgid "Plugin Updates"
203
  msgstr "Обновления плагина"
204
 
205
+ #: admin/pages/updates.php:76 admin/pages/updates.php:91
206
  msgid "Manual updates"
207
  msgstr "Ручные"
208
 
209
+ #: admin/pages/updates.php:77 admin/pages/updates.php:92
210
  msgid "Enable auto updates"
211
  msgstr "Автоматические"
212
 
213
+ #: admin/pages/updates.php:81
214
  msgid ""
215
  "You can disable all plugin updates or choose manual or automatic update mode."
216
  msgstr ""
217
  "Вы можете отключить все обновления плагинов или выбрать режим ручного или "
218
  "автоматического обновления."
219
 
220
+ #: admin/pages/updates.php:89
221
  msgid "Theme Updates"
222
  msgstr "Обновления тем"
223
 
224
+ #: admin/pages/updates.php:96
225
  msgid ""
226
  "You can disable all themes updates or choose manual or automatic update mode."
227
  msgstr ""
228
  "Вы можете отключить все обновления тем или выбрать режим ручного или "
229
  "автоматического обновления."
230
 
231
+ #: admin/pages/updates.php:112
232
  msgid "WordPress Core Updates"
233
  msgstr "Базовые обновления Wordpress"
234
 
235
+ #: admin/pages/updates.php:115
236
  msgid "Disable auto updates"
237
  msgstr "Отключить автоматические обновления"
238
 
239
+ #: admin/pages/updates.php:118
240
  msgid "Allow minor auto updates"
241
  msgstr "Разрешить незначительные автоматические обновления"
242
 
243
+ #: admin/pages/updates.php:122
244
  msgid "Allow major auto updates"
245
  msgstr "Разрешить основные автоматические обновления"
246
 
247
+ #: admin/pages/updates.php:126
248
  msgid "Allow development auto updates"
249
  msgstr "Разрешить разрабатываемые автоматические обновления"
250
 
251
+ #: admin/pages/updates.php:130
252
  msgid ""
253
  "You can disable all core WordPress updates, or disable only automatic "
254
  "updates. Also you can select the update mode. By default (minor)"
257
  "автоматические обновления. Также вы можете выбрать режим обновления. По "
258
  "умолчанию (младший)"
259
 
260
+ #: admin/pages/updates.php:130
261
  msgid "Major - automatically update to major releases (e.g., 4.1, 4.2, 4.3)."
262
  msgstr ""
263
  "Основные - автоматически обновления основных версий (4.1, 4.2, 4.3 и т.д)."
264
 
265
+ #: admin/pages/updates.php:130
266
  msgid ""
267
  "Minor - automatically update to minor releases (e.g., 4.1.1, 4.1.2, 4.1.3).."
268
  msgstr ""
269
  "Незначительные - автоматически обновления промежуточных версий (4.1.1, "
270
  "4.1.2, 4.1.3 и т.д)."
271
 
272
+ #: admin/pages/updates.php:130
273
  msgid "Development - update automatically to Bleeding Edge releases."
274
  msgstr "Разрабатываемые - автоматические обновления до финальных выпусков."
275
 
276
+ #: admin/pages/updates.php:140
277
  msgid ""
278
  "Enable Automatic Updates even if a VCS folder (.git, .hg, .svn) was found in "
279
  "the WordPress directory"
281
  "Включить автоматическое обновление, даже если папка VCS (.git, .hg, .svn) "
282
  "была найдена в каталоге WordPress"
283
 
284
+ #: admin/pages/updates.php:150
285
+ msgid ""
286
+ "This plugin allows you to hide the update WordPress reminder from all users "
287
+ "that are not assumed Administrators (cannot upgrade plugins).\n"
288
+ "\n"
289
+ "If you have multiple users then this means those who are not admins don’t "
290
+ "need to see the message. Useful for CMS based sites, so the client doesn’t "
291
+ "see the notice."
292
+ msgstr ""
293
+ "Этот опция позволяет вам скрыть напоминание о обновлении WordPress для всех "
294
+ "пользователей, которые не являются администраторами (не могут обновлять "
295
+ "плагины).\n"
296
+ "\n"
297
+ "Если у вас несколько пользователей, это означает, что те, кто не являются "
298
+ "админами, не должны видеть уведомления об обновлениях."
299
+
300
  #: webcraftic-updates-manager.php:17
301
  msgid ""
302
  "We found that you have the \"Clearfy - disable unused features\" plugin "
307
  "неиспользуемые функции», этот плагин уже имеет функции менеджера обновлений, "
308
  "поэтому вы можете отключить плагин «Менеджер обновлений»!"
309
 
310
+ #: webcraftic-updates-manager.php:74
311
  msgid "Webcraftic Updates Manager"
312
  msgstr "Webcraftic менеджер обновлений"
components/updates-manager/libs/index.php ADDED
File without changes
components/updates-manager/uninstall.php CHANGED
@@ -9,4 +9,4 @@
9
  global $wpdb;
10
 
11
  $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_updates_manager%';");
12
-
9
  global $wpdb;
10
 
11
  $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_updates_manager%';");
12
+ $wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_upm_%';");
components/updates-manager/updates/010005.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 WUPUpdate010005 extends Wbcr_Factory400_Update {
8
+
9
+ public function install()
10
+ {
11
+ global $wpdb;
12
+
13
+ $request = $wpdb->get_results("SELECT option_id, option_name, option_value FROM {$wpdb->prefix}options WHERE option_name LIKE 'wbcr_updates_manager%'");
14
+
15
+ if( !empty($request) ) {
16
+ foreach($request as $option) {
17
+ $option_new_name = str_replace('wbcr_updates_manager', WUP_Plugin::app()
18
+ ->getPrefix(), $option->option_name);
19
+ if( !get_option($option_new_name, false) ) {
20
+ $wpdb->query("UPDATE {$wpdb->prefix}options SET option_name='$option_new_name' WHERE option_id='{$option->option_id}'");
21
+ } else {
22
+ delete_option($option->option_name);
23
+ }
24
+ }
25
+ }
26
+ }
27
+ }
components/updates-manager/updates/index.php ADDED
File without changes
components/updates-manager/webcraftic-updates-manager.php CHANGED
@@ -4,12 +4,12 @@
4
  * Plugin URI: https://wordpress.org/plugins/webcraftic-updates-manager/
5
  * Description: Manage all your WordPress updates, automatic updates, logs, and loads more.
6
  * Author: Webcraftic <wordpress.webraftic@gmail.com>
7
- * Version: 1.0.1
8
  * Text Domain: webcraftic-updates-manager
9
  * Domain Path: /languages/
10
  */
11
 
12
- if( defined('WBCR_UPM_PLUGIN_ACTIVE') || (defined('WBCR_CLEARFY_PLUGIN_ACTIVE') && !defined('LOADING_UPDATES_MANAGER_AS_ADDON')) ) {
13
  function wbcr_upm_admin_notice_error()
14
  {
15
  ?>
@@ -24,62 +24,31 @@
24
  return;
25
  } else {
26
 
27
- define('WBCR_UPM_PLUGIN_ACTIVE', true);
28
 
29
- define('WBCR_UPM_PLUGIN_DIR', dirname(__FILE__));
30
- define('WBCR_UPM_PLUGIN_BASE', plugin_basename(__FILE__));
31
- define('WBCR_UPM_PLUGIN_URL', plugins_url(null, __FILE__));
32
 
33
 
34
 
35
  if( !defined('LOADING_UPDATES_MANAGER_AS_ADDON') ) {
36
- require_once(WBCR_UPM_PLUGIN_DIR . '/libs/factory/core/boot.php');
37
  }
38
 
39
- function wbcr_upm_plugin_init()
40
- {
41
- global $wbcr_update_services_plugin;
42
-
43
- // Localization plugin
44
- load_plugin_textdomain('webcraftic-updates-manager', false, dirname(WBCR_UPM_PLUGIN_BASE) . '/languages/');
45
-
46
- if( defined('LOADING_UPDATES_MANAGER_AS_ADDON') ) {
47
- //return;
48
- global $wbcr_clearfy_plugin;
49
- $wbcr_update_services_plugin = $wbcr_clearfy_plugin;
50
- } else {
51
-
52
- $wbcr_update_services_plugin = new Factory326_Plugin(__FILE__, array(
53
- 'name' => 'wbcr_updates_manager',
54
- 'title' => __('Webcraftic Updates Manager', 'webcraftic-updates-manager'),
55
- 'version' => '1.0.1',
56
- 'host' => 'wordpress.org',
57
- 'url' => 'https://wordpress.org/plugins/webcraftic-updates-manager/',
58
- 'assembly' => 'free',
59
- 'updates' => WBCR_UPM_PLUGIN_DIR . '/updates/'
60
- ));
61
-
62
- // requires factory modules
63
- $wbcr_update_services_plugin->load(array(
64
- array('libs/factory/bootstrap', 'factory_bootstrap_330', 'admin'),
65
- array('libs/factory/forms', 'factory_forms_329', 'admin'),
66
- array('libs/factory/pages', 'factory_pages_324', 'admin'),
67
- array('libs/factory/clearfy', 'factory_clearfy_102', 'all')
68
- ));
69
- }
70
 
71
- // loading other files
72
- if( is_admin() ) {
73
- require_once(WBCR_UPM_PLUGIN_DIR . '/admin/boot.php');
74
- }
75
-
76
- require(WBCR_UPM_PLUGIN_DIR . '/includes/classes/class.configurate-updates.php');
77
- new WbcrUpm_ConfigUpdates($wbcr_update_services_plugin);
78
- }
79
-
80
- if( defined('LOADING_UPDATES_MANAGER_AS_ADDON') ) {
81
- wbcr_upm_plugin_init();
82
- } else {
83
- add_action('plugins_loaded', 'wbcr_upm_plugin_init');
84
  }
85
  }
4
  * Plugin URI: https://wordpress.org/plugins/webcraftic-updates-manager/
5
  * Description: Manage all your WordPress updates, automatic updates, logs, and loads more.
6
  * Author: Webcraftic <wordpress.webraftic@gmail.com>
7
+ * Version: 1.0.5
8
  * Text Domain: webcraftic-updates-manager
9
  * Domain Path: /languages/
10
  */
11
 
12
+ if( defined('WUP_PLUGIN_ACTIVE') || (defined('WCL_PLUGIN_ACTIVE') && !defined('LOADING_UPDATES_MANAGER_AS_ADDON')) ) {
13
  function wbcr_upm_admin_notice_error()
14
  {
15
  ?>
24
  return;
25
  } else {
26
 
27
+ define('WUP_PLUGIN_ACTIVE', true);
28
 
29
+ define('WUP_PLUGIN_DIR', dirname(__FILE__));
30
+ define('WUP_PLUGIN_BASE', plugin_basename(__FILE__));
31
+ define('WUP_PLUGIN_URL', plugins_url(null, __FILE__));
32
 
33
 
34
 
35
  if( !defined('LOADING_UPDATES_MANAGER_AS_ADDON') ) {
36
+ require_once(WUP_PLUGIN_DIR . '/libs/factory/core/boot.php');
37
  }
38
 
39
+ require_once(WUP_PLUGIN_DIR . '/includes/class.plugin.php');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
 
41
+ if( !defined('LOADING_UPDATES_MANAGER_AS_ADDON') ) {
42
+ //todo: обновить опции в старом плагине на новый префикс
43
+ new WUP_Plugin(__FILE__, array(
44
+ 'prefix' => 'wbcr_upm_',
45
+ 'plugin_name' => 'wbcr_updates_manager',
46
+ 'plugin_title' => __('Webcraftic Updates Manager', 'webcraftic-updates-manager'),
47
+ 'plugin_version' => '1.0.5',
48
+ 'required_php_version' => '5.2',
49
+ 'required_wp_version' => '4.2',
50
+ 'plugin_build' => BUILD_TYPE,
51
+ 'updates' => WUP_PLUGIN_DIR . '/updates/'
52
+ ));
 
53
  }
54
  }
includes/class.plugin.php ADDED
@@ -0,0 +1,250 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Clearfy 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
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
+ class WCL_Plugin extends Wbcr_Factory400_Plugin {
15
+
16
+ /**
17
+ * @var WCL_Plugin
18
+ */
19
+ private static $app;
20
+
21
+ public function __construct($plugin_path, $data)
22
+ {
23
+ self::$app = $this;
24
+
25
+ parent::__construct($plugin_path, $data);
26
+
27
+ $this->setTextDomain();
28
+ $this->setModules();
29
+ $this->setAddons();
30
+
31
+ $this->globalScripts();
32
+
33
+ if( is_admin() ) {
34
+ $this->adminScripts();
35
+ }
36
+
37
+ add_action('plugins_loaded', array($this, 'pluginsLoaded'));
38
+ }
39
+
40
+ public static function app()
41
+ {
42
+ return self::$app;
43
+ }
44
+
45
+ protected function setTextDomain()
46
+ {
47
+ // Localization plugin
48
+ load_plugin_textdomain('clearfy', false, dirname(WCL_PLUGIN_BASE) . '/languages/');
49
+ }
50
+
51
+ protected function initActivation()
52
+ {
53
+ include_once(WCL_PLUGIN_DIR . '/admin/activation.php');
54
+ $this->registerActivation('WCL_Activation');
55
+ }
56
+
57
+ protected function setModules()
58
+ {
59
+ $this->load(array(
60
+ array('libs/factory/bootstrap', 'factory_bootstrap_400', 'admin'),
61
+ array('libs/factory/forms', 'factory_forms_400', 'admin'),
62
+ array('libs/factory/pages', 'factory_pages_400', 'admin'),
63
+ array('libs/factory/clearfy', 'factory_clearfy_200', 'all')
64
+ ));
65
+ }
66
+
67
+ public function setAddons()
68
+ {
69
+ $addons = array();
70
+
71
+ $is_cyrilic = in_array(get_locale(), array('ru_RU', 'bel', 'kk', 'uk', 'bg', 'bg_BG', 'ka_GE'));
72
+
73
+ // This module is for Cyrillic users only, for other users it should be disabled
74
+ if( $this->isActivateComponent('cyrlitera') && $is_cyrilic ) {
75
+ $addons['cyrlitera'] = array(
76
+ 'WCTR_Plugin',
77
+ WCL_PLUGIN_DIR . '/components/cyrlitera/cyrlitera.php'
78
+ );
79
+ }
80
+
81
+ if( $this->isActivateComponent('disable_notices') ) {
82
+ $addons['disable_admin_notices'] = array(
83
+ 'WDN_Plugin',
84
+ WCL_PLUGIN_DIR . '/components/disable-admin-notices/disable-admin-notices.php'
85
+ );
86
+ }
87
+
88
+ if( $this->isActivateComponent('updates_manager') ) {
89
+ $addons['updates_manager'] = array(
90
+ 'WUP_Plugin',
91
+ WCL_PLUGIN_DIR . '/components/updates-manager/webcraftic-updates-manager.php'
92
+ );
93
+ }
94
+
95
+ if( $this->isActivateComponent('comments_tools') ) {
96
+ $addons['comments_plus'] = array(
97
+ 'WCM_Plugin',
98
+ WCL_PLUGIN_DIR . '/components/comments-plus/comments-plus.php'
99
+ );
100
+ }
101
+
102
+ if( $this->isActivateComponent('asset_manager') ) {
103
+ $addons['gonzales'] = array(
104
+ 'WGZ_Plugin',
105
+ WCL_PLUGIN_DIR . '/components/assets-manager/gonzales.php'
106
+ );
107
+ }
108
+
109
+ /**
110
+ * Include plugin components
111
+ */
112
+ $this->loadAddons($addons);
113
+ }
114
+
115
+ private function adminScripts()
116
+ {
117
+
118
+ require_once(WCL_PLUGIN_DIR . '/admin/includes/classes/class.pages.php');
119
+ require_once(WCL_PLUGIN_DIR . '/admin/includes/classes/class.option.php');
120
+ require_once(WCL_PLUGIN_DIR . '/admin/includes/classes/class.group.php');
121
+
122
+ require_once(WCL_PLUGIN_DIR . '/admin/activation.php');
123
+
124
+ if( defined('DOING_AJAX') && DOING_AJAX && isset($_REQUEST['action']) && $_REQUEST['action'] == 'wbcr_clearfy_configurate' ) {
125
+ require(WCL_PLUGIN_DIR . '/admin/ajax/configurate.php');
126
+ }
127
+
128
+ if( defined('DOING_AJAX') && DOING_AJAX && isset($_REQUEST['action']) && $_REQUEST['action'] == 'wbcr_clearfy_import_settings' ) {
129
+ require(WCL_PLUGIN_DIR . '/admin/ajax/import-settings.php');
130
+ }
131
+
132
+ require_once(WCL_PLUGIN_DIR . '/admin/boot.php');
133
+
134
+ $this->initActivation();
135
+ $this->registerPages();
136
+ }
137
+
138
+ private function registerPages()
139
+ {
140
+ $this->registerPage('WCL_QuickStartPage', WCL_PLUGIN_DIR . '/admin/pages/quick-start.php');
141
+ $this->registerPage('WCL_AdvancedPage', WCL_PLUGIN_DIR . '/admin/pages/advanced.php');
142
+ $this->registerPage('WCL_PerformancePage', WCL_PLUGIN_DIR . '/admin/pages/performance.php');
143
+ $this->registerPage('WCL_PerformanceGooglePage', WCL_PLUGIN_DIR . '/admin/pages/performance-google.php');
144
+ $this->registerPage('WCL_PerformanceHtmlMinifyPage', WCL_PLUGIN_DIR . '/admin/pages/performance-html-minify.php');
145
+ $this->registerPage('WCL_ComponentsPage', WCL_PLUGIN_DIR . '/admin/pages/components.php');
146
+ $this->registerPage('WCL_SeoPage', WCL_PLUGIN_DIR . '/admin/pages/seo.php');
147
+ $this->registerPage('WCL_DoublePagesPage', WCL_PLUGIN_DIR . '/admin/pages/seo-double-pages.php');
148
+ $this->registerPage('WCL_DefencePage', WCL_PLUGIN_DIR . '/admin/pages/defence.php');
149
+ $this->registerPage('WCL_PrivacyContentPage', WCL_PLUGIN_DIR . '/admin/pages/defence-privacy-code.php');
150
+
151
+ if( $this->isActivateComponent('widget_tools') ) {
152
+ $this->registerPage('WCL_WidgetsPage', WCL_PLUGIN_DIR . '/admin/pages/widgets.php');
153
+ }
154
+ }
155
+
156
+ private function globalScripts()
157
+ {
158
+ require_once(WCL_PLUGIN_DIR . '/includes/classes/class.configurate-performance.php');
159
+ require_once(WCL_PLUGIN_DIR . '/includes/classes/class.configurate-google-performance.php');
160
+ require_once(WCL_PLUGIN_DIR . '/includes/classes/class.configurate-privacy.php');
161
+ require_once(WCL_PLUGIN_DIR . '/includes/classes/class.configurate-security.php');
162
+ require_once(WCL_PLUGIN_DIR . '/includes/classes/class.configurate-seo.php');
163
+
164
+ new WCL_ConfigPerformance($this);
165
+ new WCL_ConfigGooglePerformance($this);
166
+ new WCL_ConfigPrivacy($this);
167
+ new WCL_ConfigSecurity($this);
168
+ new WCL_ConfigSeo($this);
169
+ }
170
+
171
+ public function pluginsLoaded()
172
+ {
173
+ require_once(WCL_PLUGIN_DIR . '/includes/classes/class.configurate-advanced.php');
174
+ new WCL_ConfigAdvanced($this);
175
+ }
176
+
177
+ /**
178
+ * @param string $component_name
179
+ * @return bool
180
+ * @throws Exception
181
+ */
182
+ public function isActivateComponent($component_name)
183
+ {
184
+ if( !is_string($component_name) ) {
185
+ throw new Exception('Attribute component_name must be is string');
186
+ }
187
+
188
+ $deactivate_components = $this->getOption('deactive_preinstall_components', array());
189
+
190
+ if( $deactivate_components && in_array($component_name, $deactivate_components) ) {
191
+ return false;
192
+ }
193
+
194
+ return true;
195
+ }
196
+
197
+ /**
198
+ * @param string $component_name
199
+ * @return bool
200
+ * @throws Exception
201
+ */
202
+ public function deactivateComponent($component_name)
203
+ {
204
+ if( !$this->isActivateComponent($component_name) ) {
205
+ return true;
206
+ }
207
+
208
+ $deactivate_components = $this->getOption('deactive_preinstall_components', array());
209
+
210
+ if( !empty($deactivate_components) && is_array($deactivate_components) ) {
211
+ $deactivate_components[] = $component_name;
212
+ } else {
213
+ $deactivate_components = array();
214
+ $deactivate_components[] = $component_name;
215
+ }
216
+
217
+ $this->updateOption('deactive_preinstall_components', $deactivate_components);
218
+
219
+ return true;
220
+ }
221
+
222
+ /**
223
+ * @param string $component_name
224
+ * @return bool
225
+ * @throws Exception
226
+ */
227
+ public function activateComponent($component_name)
228
+ {
229
+ if( $this->isActivateComponent($component_name) ) {
230
+ return true;
231
+ }
232
+
233
+ $deactivate_components = $this->getOption('deactive_preinstall_components', array());
234
+
235
+ if( !empty($deactivate_components) && is_array($deactivate_components) ) {
236
+ $index = array_search($component_name, $deactivate_components);
237
+ unset($deactivate_components[$index]);
238
+ }
239
+
240
+ if( empty($deactivate_components) ) {
241
+ $this->deleteOption('deactive_preinstall_components');
242
+
243
+ return true;
244
+ }
245
+
246
+ $this->updateOption('deactive_preinstall_components', $deactivate_components);
247
+
248
+ return true;
249
+ }
250
+ }
includes/classes/class.configurate-advanced.php CHANGED
@@ -1,19 +1,30 @@
1
  <?php
2
-
3
  /**
4
  * This class configures the parameters advanced
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 2017 Webraftic Ltd
7
  * @version 1.0
8
  */
9
- class WbcrClearfy_ConfigAdvanced extends WbcrFactoryClearfy_Configurate {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
  public function registerActionsAndFilters()
12
  {
13
- if( $this->getOption('revision_limit') || $this->getOption('revisions_disable') ) {
14
- add_filter('wp_revisions_to_keep', array($this, 'clearfyRevisionsToKeep'), 10, 2);
15
- }
16
-
17
  if( $this->getOption('disable_heartbeat') && $this->getOption('disable_heartbeat') != 'default' ) {
18
  add_action('init', array($this, 'disableHeartbeat'), 1);
19
  }
@@ -22,66 +33,67 @@
22
  add_filter('heartbeat_settings', array($this, 'clearfyHeartbeatFrequency'));
23
  }
24
 
25
- if( $this->getOption('disable_post_autosave') ) {
26
- add_action('wp_print_scripts', array($this, 'disableAutoSave'));
27
- }
28
 
29
- if( $this->getOption('enable_wordpres_sanitize') ) {
30
- require_once(WBCR_CLR_PLUGIN_DIR . '/includes/classes/class.wordpress-sanitize.php');
 
 
31
 
32
- if( is_admin() || (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) ) {
33
- remove_filter('sanitize_title', 'sanitize_title_with_dashes', 11);
34
- add_filter('sanitize_title', array('Wbcr_Germanizer', 'sanitize_title_filter'), 10, 2);
35
- add_filter('sanitize_file_name', array('Wbcr_Germanizer', 'sanitize_filename_filter'), 10, 1);
36
  }
37
- }
38
 
39
- if( $this->getOption('disable_texturization') ) {
40
- remove_filter('comment_text', 'wptexturize');
41
- remove_filter('the_content', 'wptexturize');
42
- remove_filter('the_excerpt', 'wptexturize');
43
- remove_filter('the_title', 'wptexturize');
44
- remove_filter('the_content_feed', 'wptexturize');
45
- }
46
 
47
- if( $this->getOption('disable_auto_correct_dangit') ) {
48
- remove_filter('the_content', 'capital_P_dangit');
49
- remove_filter('the_title', 'capital_P_dangit');
50
- remove_filter('comment_text', 'capital_P_dangit');
51
- }
52
 
53
- if( $this->getOption('disable_auto_paragraph') ) {
54
- remove_filter('the_content', 'wpautop');
 
55
  }
56
 
57
- if( $this->getOption('replace_howdy_welcome') ) {
58
- add_filter('admin_bar_menu', array($this, 'replaceHowdyText'), 25);
59
- }
60
 
61
- if( $this->getOption('disable_admin_bar') == 'for_all_users' ) {
62
- add_filter('show_admin_bar', '__return_false');
63
- }
 
64
 
65
- if( $this->getOption('disable_admin_bar') == 'for_all_users_except_administrator' ) {
66
- add_filter('show_admin_bar', array($this, 'removeFunctionAdminBar'));
67
- }
68
 
69
- if( $this->getOption('disable_admin_bar_logo') ) {
70
- add_action('wp_before_admin_bar_render', array($this, 'removeWpLogo'));
71
- }
72
 
73
- /*if( $this->getOption('enable_categoty_tree') ) {
74
- add_filter('wp_terms_checklist_args', array($this, 'categotyTree'));
 
75
  }
76
 
77
- if( $this->getOption('disable_selection_patent') ) {
78
- // https://wordpress.stackexchange.com/questions/22836/make-parent-categories-not-selectable/58525#58525
 
79
 
80
- add_action('admin_footer-post.php', array($this, 'removeTopCategoriesCheckbox'));
81
- add_action('admin_footer-post-new.php', array($this, 'removeTopCategoriesCheckbox'));
82
- }*/
83
-
84
- add_action('widgets_init', array($this, 'unregisterDefaultWidgets'), 11);
85
  }
86
 
87
  // unregister all widgets
@@ -117,7 +129,7 @@
117
  if( $this->getOption('remove_unneeded_widget_recent_posts') ) {
118
  unregister_widget('WP_Widget_Recent_Posts');
119
  }
120
- if( $this->getOption('remove_unneeded_widget_text') ) {
121
  unregister_widget('WP_Widget_Recent_Comments');
122
  }
123
  if( $this->getOption('remove_unneeded_widget_rss') ) {
@@ -167,7 +179,6 @@
167
 
168
  public function disableHeartbeat()
169
  {
170
-
171
  switch( $this->getOption('disable_heartbeat') ) {
172
  case 'everywhere':
173
  wp_deregister_script('heartbeat');
@@ -192,55 +203,9 @@
192
  wp_deregister_script('autosave');
193
  }
194
 
195
-
196
- /*public function removeTopCategoriesCheckbox()
197
- {
198
- global $post_type;
199
-
200
- if( 'post' != $post_type ) {
201
- return;
202
- }
203
- ?>
204
- <script type="text/javascript">
205
- jQuery("#categorychecklist>li>label input").each(function() {
206
- jQuery(this).remove();
207
- });
208
- </script>
209
- <?php
210
- }
211
-
212
- public function categotyTree()
213
- {
214
- add_action('admin_footer', array($this, 'printCategotyTreeScripts'));
215
-
216
- $args['checked_ontop'] = false;
217
-
218
- return $args;
219
- }
220
-
221
- public function printCategotyTreeScripts()
222
- {
223
- ?>
224
- <script type="text/javascript">
225
- jQuery(function() {
226
- jQuery('[id$="-all"] > ul.categorychecklist').each(function() {
227
- var $list = jQuery(this);
228
- var $firstChecked = $list.find(':checkbox:checked').first();
229
-
230
- if( !$firstChecked.length ) {
231
- return;
232
- }
233
-
234
- var pos_first = $list.find(':checkbox').position().top;
235
- var pos_checked = $firstChecked.position().top;
236
-
237
- $list.closest('.tabs-panel').scrollTop(pos_checked - pos_first + 5);
238
- });
239
- });
240
- </script>
241
- <?php
242
- }*/
243
-
244
  public function replaceHowdyText($wp_admin_bar)
245
  {
246
  $my_account = $wp_admin_bar->get_node('my-account');
@@ -251,6 +216,10 @@
251
  ));
252
  }
253
 
 
 
 
 
254
  public function removeFunctionAdminBar($content)
255
  {
256
  return (current_user_can('administrator'))
@@ -258,6 +227,9 @@
258
  : false;
259
  }
260
 
 
 
 
261
  public function removeWpLogo()
262
  {
263
  global $wp_admin_bar;
1
  <?php
 
2
  /**
3
  * This class configures the parameters advanced
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
+ class WCL_ConfigAdvanced extends Wbcr_FactoryClearfy200_Configurate {
15
+
16
+ /**
17
+ * @param WCL_Plugin $plugin
18
+ */
19
+ public function __construct(WCL_Plugin $plugin)
20
+ {
21
+ parent::__construct($plugin);
22
+
23
+ $this->plugin = $plugin;
24
+ }
25
 
26
  public function registerActionsAndFilters()
27
  {
 
 
 
 
28
  if( $this->getOption('disable_heartbeat') && $this->getOption('disable_heartbeat') != 'default' ) {
29
  add_action('init', array($this, 'disableHeartbeat'), 1);
30
  }
33
  add_filter('heartbeat_settings', array($this, 'clearfyHeartbeatFrequency'));
34
  }
35
 
36
+ //============================================================
37
+ // POST TOOLS COMPONENT
38
+ //============================================================
39
 
40
+ if( $this->plugin->isActivateComponent('post_tools') ) {
41
+ if( ($this->getOption('revision_limit') || $this->getOption('revisions_disable')) && is_admin() ) {
42
+ add_filter('wp_revisions_to_keep', array($this, 'clearfyRevisionsToKeep'), 10, 2);
43
+ }
44
 
45
+ if( $this->getOption('disable_post_autosave') && is_admin() ) {
46
+ add_action('wp_print_scripts', array($this, 'disableAutoSave'));
 
 
47
  }
 
48
 
49
+ if( $this->getOption('disable_texturization') ) {
50
+ remove_filter('comment_text', 'wptexturize');
51
+ remove_filter('the_content', 'wptexturize');
52
+ remove_filter('the_excerpt', 'wptexturize');
53
+ remove_filter('the_title', 'wptexturize');
54
+ remove_filter('the_content_feed', 'wptexturize');
55
+ }
56
 
57
+ if( $this->getOption('disable_auto_correct_dangit') ) {
58
+ remove_filter('the_content', 'capital_P_dangit');
59
+ remove_filter('the_title', 'capital_P_dangit');
60
+ remove_filter('comment_text', 'capital_P_dangit');
61
+ }
62
 
63
+ if( $this->getOption('disable_auto_paragraph') ) {
64
+ remove_filter('the_content', 'wpautop');
65
+ }
66
  }
67
 
68
+ //============================================================
69
+ // ADMINBAR MANAGER COMPONENT
70
+ //============================================================
71
 
72
+ if( $this->plugin->isActivateComponent('adminbar_manager') && is_user_logged_in() ) {
73
+ if( $this->getOption('replace_howdy_welcome') ) {
74
+ add_filter('admin_bar_menu', array($this, 'replaceHowdyText'), 25);
75
+ }
76
 
77
+ if( $this->getOption('disable_admin_bar') == 'for_all_users' ) {
78
+ add_filter('show_admin_bar', '__return_false', 999999);
79
+ }
80
 
81
+ if( $this->getOption('disable_admin_bar') == 'for_all_users_except_administrator' ) {
82
+ add_filter('show_admin_bar', array($this, 'removeFunctionAdminBar'));
83
+ }
84
 
85
+ if( $this->getOption('disable_admin_bar_logo') ) {
86
+ add_action('wp_before_admin_bar_render', array($this, 'removeWpLogo'));
87
+ }
88
  }
89
 
90
+ //============================================================
91
+ // WIDGETS TOOLS COMPONENT
92
+ //============================================================
93
 
94
+ if( $this->plugin->isActivateComponent('widget_tools') ) {
95
+ add_action('widgets_init', array($this, 'unregisterDefaultWidgets'), 11);
96
+ }
 
 
97
  }
98
 
99
  // unregister all widgets
129
  if( $this->getOption('remove_unneeded_widget_recent_posts') ) {
130
  unregister_widget('WP_Widget_Recent_Posts');
131
  }
132
+ if( $this->getOption('remove_unneeded_widget_recent_comments') ) {
133
  unregister_widget('WP_Widget_Recent_Comments');
134
  }
135
  if( $this->getOption('remove_unneeded_widget_rss') ) {
179
 
180
  public function disableHeartbeat()
181
  {
 
182
  switch( $this->getOption('disable_heartbeat') ) {
183
  case 'everywhere':
184
  wp_deregister_script('heartbeat');
203
  wp_deregister_script('autosave');
204
  }
205
 
206
+ /**
207
+ * @param WP_Admin_Bar $wp_admin_bar
208
+ */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
209
  public function replaceHowdyText($wp_admin_bar)
210
  {
211
  $my_account = $wp_admin_bar->get_node('my-account');
216
  ));
217
  }
218
 
219
+ /**
220
+ * @param $content
221
+ * @return bool
222
+ */
223
  public function removeFunctionAdminBar($content)
224
  {
225
  return (current_user_can('administrator'))
227
  : false;
228
  }
229
 
230
+ /**
231
+ * @global WP_Admin_Bar $wp_admin_bar
232
+ */
233
  public function removeWpLogo()
234
  {
235
  global $wp_admin_bar;
includes/classes/class.configurate-google-performance.php ADDED
@@ -0,0 +1,490 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * This class configures the google performance settings
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
+ class WCL_ConfigGooglePerformance extends Wbcr_FactoryClearfy200_Configurate {
15
+
16
+ /**
17
+ * @param WCL_Plugin $plugin
18
+ */
19
+ public function __construct(WCL_Plugin $plugin)
20
+ {
21
+ parent::__construct($plugin);
22
+
23
+ $this->plugin = $plugin;
24
+ }
25
+
26
+ public function registerActionsAndFilters()
27
+ {
28
+ if( $this->getOption('disable_google_fonts') ) {
29
+ add_action('wp_enqueue_scripts', array($this, 'disableAllGoogleFonts'), 999);
30
+ }
31
+
32
+ if( !is_admin() ) {
33
+ $load_google_fonts = $this->getOption('lazy_load_google_fonts');
34
+ $load_font_awesome = $this->getOption('lazy_load_font_awesome');
35
+
36
+ if( $load_google_fonts || $load_font_awesome ) {
37
+ add_action('wp_print_styles', array($this, 'enqueueScripts'), -1);
38
+ }
39
+
40
+ if( $this->getOption('disable_google_maps') ) {
41
+ add_action("wp_loaded", array($this, 'disableGoogleMapsObStart'));
42
+ }
43
+ }
44
+
45
+ if( $this->getOption('ga_cache') ) {
46
+ add_filter('cron_schedules', array($this, 'cronAdditions'));
47
+
48
+ // Load update script to schedule in wp_cron.
49
+ add_action('wbcr_clearfy_update_local_ga', array($this, 'updateLocalGoogleAnaliticScript'));
50
+
51
+ if( !is_admin() ) {
52
+ $this->addGoogleAnaliticsScript();
53
+ }
54
+ }
55
+ }
56
+
57
+ /** ======================================================================== */
58
+ // Disable google maps
59
+ /** ======================================================================== */
60
+
61
+ function disableGoogleMapsObStart()
62
+ {
63
+ ob_start(array($this, 'disableGoogleMapsObEnd'));
64
+ }
65
+
66
+ /**
67
+ * @param string $html
68
+ * @return mixed
69
+ */
70
+ function disableGoogleMapsObEnd($html)
71
+ {
72
+ global $post;
73
+
74
+ $exclude_ids = array();
75
+ $exclude_from_disable_google_maps = $this->getOption('exclude_from_disable_google_maps');
76
+
77
+ if( '' !== $exclude_from_disable_google_maps ) {
78
+ $exclude_ids = array_map('intval', explode(',', $exclude_from_disable_google_maps));
79
+ }
80
+ if( $post && !in_array($post->ID, $exclude_ids, true) ) {
81
+ $html = preg_replace('/<script[^<>]*\/\/maps.(googleapis|google|gstatic).com\/[^<>]*><\/script>/i', '', $html);
82
+
83
+ if( $this->getOption('remove_iframe_google_maps') ) {
84
+ $html = preg_replace('/<iframe[^<>]*\/\/(www\.)?google\.com(\.\w*)?\/maps\/[^<>]*><\/iframe>/i', '', $html);
85
+ }
86
+ }
87
+
88
+ return $html;
89
+ }
90
+
91
+ /** ======================================================================== */
92
+ // End disable google maps
93
+ /** ======================================================================== */
94
+
95
+ function disableAllGoogleFonts()
96
+ {
97
+ global $wp_styles;
98
+
99
+ // multiple patterns hook
100
+ $regex = '/fonts\.googleapis\.com\/css\?family/i';
101
+
102
+ foreach($wp_styles->registered as $registered) {
103
+
104
+ if( preg_match($regex, $registered->src) ) {
105
+ wp_dequeue_style($registered->handle);
106
+ }
107
+ }
108
+ }
109
+
110
+ /** ======================================================================== */
111
+ // Lazy load fonts
112
+ /** ======================================================================== */
113
+
114
+ public function enqueueScripts()
115
+ {
116
+ $async_links = $this->checkGooglefontsFontawesomeStyles();
117
+
118
+ if( !empty($async_links) ) {
119
+ wp_enqueue_script($this->plugin->getPluginName() . '-css-lazy-load', WCL_PLUGIN_URL . '/assets/js/css-lazy-load.min.js', array('jquery'), $this->plugin->getPluginVersion());
120
+ wp_localize_script($this->plugin->getPluginName() . '-css-lazy-load', 'wbcr_clearfy_async_links', $async_links);
121
+ }
122
+ }
123
+
124
+ private function checkGooglefontsFontawesomeStyles()
125
+ {
126
+ global $wp_styles;
127
+ $ret = array();
128
+ if( isset($wp_styles) && !empty($wp_styles) ) {
129
+
130
+ $load_google_fonts = $this->getOption('lazy_load_google_fonts');
131
+ $load_font_awesome = $this->getOption('lazy_load_font_awesome');
132
+
133
+ if( $load_google_fonts || $load_font_awesome ) {
134
+
135
+ $gfonts_base_url = 'fonts.googleapis.com/css';
136
+ $gfonts_links = array();
137
+
138
+ $font_awesome_slug = 'font-awesome';
139
+ $font_awesome_slug_alt = 'fontawesome';
140
+ $font_awesome_links = array(
141
+ 'external' => array(),
142
+ 'internal' => array(),
143
+ );
144
+
145
+ foreach($wp_styles->queue as $handle) {
146
+ if( $load_google_fonts && false !== strpos($wp_styles->registered[$handle]->src, $gfonts_base_url) ) {
147
+ $gfonts_links[] = urldecode(str_replace(array('&amp;'), array('&'), $wp_styles->registered[$handle]->src));
148
+ wp_dequeue_style($handle);
149
+ } elseif( $load_font_awesome && false !== strpos($wp_styles->registered[$handle]->src, $font_awesome_slug) || false !== strpos($wp_styles->registered[$handle]->src, $font_awesome_slug_alt) ) {
150
+
151
+ wp_dequeue_style($handle);
152
+
153
+ $font_awesome_links[false !== strpos($wp_styles->registered[$handle]->src, site_url())
154
+ ? 'internal'
155
+ : 'external'][] = array(
156
+ 'ver' => $wp_styles->registered[$handle]->ver
157
+ ? $wp_styles->registered[$handle]->ver
158
+ : false,
159
+ 'link' => $wp_styles->registered[$handle]->src,
160
+ );
161
+ }
162
+ }
163
+
164
+ $saved_font_awesome_requests = 0;
165
+ $saved_google_fonts_requests = 0;
166
+
167
+ if( $load_font_awesome && (!empty($font_awesome_links['internal']) || !empty($font_awesome_links['external'])) ) {
168
+
169
+ // @note: Prioritize external links.
170
+ $fa_links = !empty($font_awesome_links['external'])
171
+ ? $font_awesome_links['external']
172
+ : $font_awesome_links['internal'];
173
+
174
+ $selected_fa_link = $fa_links[0];
175
+
176
+ $links_count = count($fa_links);
177
+ if( 1 < $links_count ) {
178
+ for($i = 1; $i < $links_count; $i++) {
179
+ if( false !== $fa_links[$i]['ver'] && (false === $selected_fa_link['ver'] || version_compare($selected_fa_link['ver'], $fa_links[$i]['ver'], '<'))
180
+ ) {
181
+ $selected_fa_link = $fa_links[$i];
182
+ }
183
+ }
184
+ }
185
+
186
+ $ret[$this->plugin->getPluginName() . '-font-awesome'] = esc_url($selected_fa_link['link']);
187
+
188
+ $this->updateSavedFontAwesomeRequests(count($font_awesome_links['internal']) + count($font_awesome_links['external']));
189
+ } else {
190
+ $this->updateSavedFontAwesomeRequests(0);
191
+ }
192
+
193
+ if( $load_google_fonts && !empty($gfonts_links) ) {
194
+
195
+ $ret[$this->plugin->getPluginName() . '-google-fonts'] = esc_url($this->combineGoogleFontsLinks($gfonts_links));
196
+
197
+ $this->updateSavedGoogleFontsRequest(count($gfonts_links));
198
+ } else {
199
+ $this->updateSavedGoogleFontsRequest(0);
200
+ }
201
+ } else {
202
+ $this->updateSavedFontAwesomeRequests(0);
203
+ $this->updateSavedGoogleFontsRequest(0);
204
+ }
205
+ }
206
+
207
+ return $ret;
208
+ }
209
+
210
+ private function updateSavedGoogleFontsRequest($count)
211
+ {
212
+ $count = !isset($count)
213
+ ? 0
214
+ : (int)$count;
215
+
216
+ $old_val = $this->getOption('combined_font_awesome_requests_number');
217
+
218
+ if( false === $old_val || (false !== $old_val && $count > (int)$old_val) ) {
219
+ $this->updateOption('combined_font_awesome_requests_number', $count);
220
+ }
221
+ }
222
+
223
+ private function updateSavedFontAwesomeRequests($count)
224
+ {
225
+ $count = !isset($count)
226
+ ? 0
227
+ : (int)$count;
228
+
229
+ $old_val = $this->getOption('combined_google_fonts_requests_number');
230
+
231
+ if( false === $old_val || (false !== $old_val && $count > (int)$old_val) ) {
232
+ $this->updateOption('combined_google_fonts_requests_number', $count);
233
+ }
234
+ }
235
+
236
+ public static function saved_external_requests()
237
+ {
238
+ $google_fonts = (int)WCL_Plugin::app()->getOption('combined_google_fonts_requests_number');
239
+ $font_awesome = (int)WCL_Plugin::app()->getOption('combined_font_awesome_requests_number');
240
+
241
+ $google_fonts_saved = 1 < $google_fonts
242
+ ? $google_fonts - 1
243
+ : 0;
244
+ $font_awesome_saved = 1 < $font_awesome
245
+ ? $font_awesome - 1
246
+ : 0;
247
+
248
+ return $google_fonts_saved + $font_awesome_saved;
249
+ }
250
+
251
+ /**
252
+ * Combine multiple Google Fonts links into one.
253
+ *
254
+ * @param array $links An array of the different Google Fonts links. Default array().
255
+ * @return string The compined Google Fonts link.
256
+ */
257
+ private function combineGoogleFontsLinks($links = array())
258
+ {
259
+
260
+ if( !is_array($links) ) {
261
+ return $links;
262
+ }
263
+
264
+ $links = array_unique($links);
265
+
266
+ if( 1 === count($links) ) {
267
+ return $links[0];
268
+ }
269
+
270
+ $protocol = 'https';
271
+ $base_url = '//fonts.googleapis.com/css';
272
+ $family_arg = 'family';
273
+ $subset_arg = 'subset';
274
+
275
+ $base_url_len = strlen($base_url);
276
+ $family_arg_len = strlen($family_arg);
277
+
278
+ $fonts = array();
279
+ $cnt = 0;
280
+
281
+ $clean_links = array();
282
+ foreach($links as $k => $v) {
283
+
284
+ $base_url_pos = strrpos($v, $base_url);
285
+
286
+ $args_str = trim(substr($v, ($base_url_len + $base_url_pos), strlen($v)));
287
+
288
+ if( substr($args_str, 0, $family_arg_len + 2) === '?' . $family_arg . '=' ) {
289
+ $args_str = substr($args_str, $family_arg_len + 2, strlen($args_str));
290
+ }
291
+
292
+ $tmp = explode('|', $args_str);
293
+ $tmp_count = count($tmp);
294
+ for($i = 0; $i < $tmp_count; $i++) {
295
+ $clean_links[] = $tmp[$i];
296
+ }
297
+ }
298
+
299
+ foreach($clean_links as $k => $v) {
300
+
301
+ $expl = explode('&' . $subset_arg, $v);
302
+
303
+ if( isset($expl[0]) && !empty($expl[0]) ) {
304
+
305
+ $tmp = explode(':', $expl[0]);
306
+
307
+ if( isset($tmp[0]) && !empty($tmp[0]) ) {
308
+
309
+ // Has font family name.
310
+ $font_name = str_replace(' ', '+', $tmp[0]);
311
+
312
+ if( !isset($fonts[$font_name]) ) {
313
+ $fonts[$font_name] = array(
314
+ 'sizes' => array(),
315
+ 'subsets' => array(),
316
+ );
317
+ }
318
+
319
+ if( isset($tmp[1]) && !empty($tmp[1]) ) {
320
+
321
+ // Has font sizes.
322
+ $x = explode(',', $tmp[1]);
323
+ $xc = count($x);
324
+
325
+ foreach($x as $xk => $xv) {
326
+ if( !in_array($xv, $fonts[$font_name]['sizes'], true) && (400 !== (int)$xv || $xc > 1) ) {
327
+ $fonts[$font_name]['sizes'][] = $xv;
328
+ }
329
+ }
330
+ }
331
+
332
+ if( isset($expl[1]) && !empty($expl[1]) ) {
333
+
334
+ // Has subsets.
335
+ $y = explode(',', $expl[1]);
336
+ $yc = count($y);
337
+
338
+ foreach($y as $yk => $yv) {
339
+
340
+ if( '=' === substr($yv, 0, 1) ) {
341
+ $yv = substr($yv, 1, strlen($yv));
342
+ }
343
+
344
+ if( !in_array($yv, $fonts[$font_name]['subsets'], true) && ('latin' !== $yv || $yc > 1) ) {
345
+ $fonts[$font_name]['subsets'][] = $yv;
346
+ }
347
+ }
348
+ }
349
+ }// End if().
350
+ }// End if().
351
+ }// End foreach().
352
+
353
+ $ret = '';
354
+
355
+ if( !empty($fonts) ) {
356
+
357
+ $ret .= $protocol . ':' . $base_url;
358
+ $i = 0;
359
+ $subsets = array();
360
+
361
+ foreach($fonts as $key => $val) {
362
+
363
+ if( 0 === $i ) {
364
+ $ret .= '?' . $family_arg . '=';
365
+ } else {
366
+ $ret .= '|';
367
+ }
368
+
369
+ $ret .= $key;
370
+
371
+ if( !empty($val['sizes']) ) {
372
+ $ret .= ':' . implode(',', $val['sizes']);
373
+ }
374
+
375
+ if( !empty($val['subsets']) ) {
376
+ $subsets = array_merge($subsets, $val['subsets']);
377
+ }
378
+
379
+ $i++;
380
+ }
381
+
382
+ if( !empty($subsets) ) {
383
+ $ret .= '&' . $subset_arg . '=' . implode(',', $subsets);
384
+ }
385
+ }
386
+
387
+ return $ret;
388
+ }
389
+
390
+ /** ======================================================================== */
391
+ // End Lazy load fonts
392
+ /** ======================================================================== */
393
+
394
+ public function cronAdditions($schedules)
395
+ {
396
+ $schedules['weekly'] = array(
397
+ 'interval' => DAY_IN_SECONDS * 7,
398
+ 'display' => __('Once Weekly'),
399
+ );
400
+
401
+ $schedules['twicemonthly'] = array(
402
+ 'interval' => DAY_IN_SECONDS * 14,
403
+ 'display' => __('Twice Monthly'),
404
+ );
405
+
406
+ $schedules['monthly'] = array(
407
+ 'interval' => DAY_IN_SECONDS * 30,
408
+ 'display' => __('Once Monthly'),
409
+ );
410
+
411
+ return $schedules;
412
+ }
413
+
414
+ public function updateLocalGoogleAnaliticScript()
415
+ {
416
+ include(WCL_PLUGIN_DIR . '/includes/update-local-ga.php');
417
+ }
418
+
419
+ private function addGoogleAnaliticsScript()
420
+ {
421
+ $ga_tracking_id = $this->getOption('ga_tracking_id');
422
+
423
+ if( !empty($ga_tracking_id) ) {
424
+ $local_ga_file = WCL_PLUGIN_DIR . '/cache/local-ga.js';
425
+ // If file is not created yet, create now!
426
+ if( !file_exists($local_ga_file) ) {
427
+ ob_start();
428
+ do_action('wbcr_clearfy_update_local_ga');
429
+ ob_end_clean();
430
+ }
431
+
432
+ $ga_script_position = $this->getOption('ga_script_position', 'footer');
433
+ $ga_enqueue_order = $this->getOption('ga_enqueue_order', 0);
434
+
435
+ switch( $ga_script_position ) {
436
+ case 'header':
437
+ add_action('wp_head', array($this, 'printGoogleAnalitics'), $ga_enqueue_order);
438
+ break;
439
+ default:
440
+ add_action('wp_footer', array($this, 'printGoogleAnalitics'), $ga_enqueue_order);
441
+ }
442
+ }
443
+ }
444
+
445
+ /**
446
+ * Generate tracking code and add to header/footer (default is header).
447
+ */
448
+ public function printGoogleAnalitics()
449
+ {
450
+ $ga_tracking_id = $this->getOption('ga_tracking_id');
451
+ $ga_track_admin = $this->getOption('ga_track_admin');
452
+
453
+ // If user is admin we don't want to render the tracking code, when option is disabled.
454
+ if( empty($ga_tracking_id) || (current_user_can('manage_options') && (!$ga_track_admin)) ) {
455
+ return;
456
+ }
457
+
458
+ $ga_adjusted_bounce_rate = $this->getOption('ga_adjusted_bounce_rate', 0);
459
+ $ga_anonymize_ip = $this->getOption('ga_anonymize_ip');
460
+ $ga_caos_disable_display_features = $this->getOption('ga_caos_disable_display_features');
461
+
462
+ echo "<!-- Google Analytics Local by Clearfy -->" . PHP_EOL;
463
+
464
+ echo "<script>" . PHP_EOL;
465
+ echo "(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
466
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
467
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
468
+ })(window,document,'script','" . WCL_PLUGIN_URL . "/cache/local-ga.js','ga');" . PHP_EOL;
469
+
470
+ echo "ga('create', '" . $ga_tracking_id . "', 'auto');" . PHP_EOL;
471
+
472
+ echo 'on' === $ga_caos_disable_display_features
473
+ ? "ga('set', 'displayFeaturesTask', null);" . PHP_EOL
474
+ : '';
475
+
476
+ echo 'on' === $ga_anonymize_ip
477
+ ? "ga('set', 'anonymizeIp', true);" . PHP_EOL
478
+ : '';
479
+
480
+ echo "ga('send', 'pageview');";
481
+
482
+ echo $ga_adjusted_bounce_rate
483
+ ? 'setTimeout("ga(' . "'send','event','adjusted bounce rate','" . $ga_adjusted_bounce_rate . " seconds')" . '"' . ',' . $ga_adjusted_bounce_rate * 1000 . ');' . PHP_EOL
484
+ : '';
485
+
486
+ echo PHP_EOL . '</script>' . PHP_EOL;
487
+
488
+ echo "<!-- end Google Analytics Local by Clearfy -->" . PHP_EOL;
489
+ }
490
+ }
includes/classes/{class.configurate-code-clean.php → class.configurate-performance.php} RENAMED
@@ -1,57 +1,109 @@
1
  <?php
2
-
3
  /**
4
  * This class configures the code cleanup settings
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 2017 Webraftic Ltd
7
  * @version 1.0
8
  */
9
- class WbcrClearfy_ConfigCodeClean extends WbcrFactoryClearfy_Configurate {
10
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  public function registerActionsAndFilters()
12
  {
13
  if( $this->getOption('disable_emoji') ) {
14
  add_action('init', array($this, 'disableEmojis'));
15
  }
16
-
17
- if( $this->getOption('remove_jquery_migrate') ) {
18
  add_filter('wp_default_scripts', array($this, 'removeJqueryMigrate'));
19
  }
 
20
  if( $this->getOption('disable_embeds') ) {
21
  add_action('init', array($this, 'disableEmbeds'));
22
  }
23
-
24
  if( $this->getOption('disable_json_rest_api') ) {
25
  add_action('init', array($this, 'removeRestApi'));
26
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
- if( $this->getOption('disable_feed') ) {
29
- $this->disableFeed();
30
- }
 
31
 
32
- if( $this->getOption('html_minify') && !is_admin() ) {
33
- add_action('init', array($this, 'htmlCompressor'));
34
- }
35
 
36
- if( $this->getOption('remove_recent_comments_style') ) {
37
- add_action('widgets_init', array($this, 'removeRecentCommentsStyle'));
38
- }
39
 
40
- if( !is_admin() && $this->getOption('remove_html_comments') ) {
41
- add_action('init', array($this, 'removeHtmlComments'));
 
 
 
42
  }
43
-
44
- $this->remove_tags_from_head();
45
  }
46
 
 
47
  /**
48
- * Disable Emojis
49
- * URI: https://geek.hellyer.kiwi/plugins/disable-emojis/
50
- * Version: 1.5.1
51
- * Author: Ryan Hellyer
52
- * Author URI: https://geek.hellyer.kiwi/
53
- * License: GPL2
54
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
 
56
  public function disableEmojis()
57
  {
@@ -63,11 +115,11 @@
63
  remove_filter('comment_text_rss', 'wp_staticize_emoji');
64
  remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
65
  add_filter('tiny_mce_plugins', array($this, 'disableEmojisTinymce'));
 
66
  }
67
 
68
  /**
69
  * Filter function used to remove the tinymce emoji plugin.
70
- *
71
  * @param array $plugins
72
  * @return array Difference betwen the two arrays
73
  */
@@ -83,17 +135,11 @@
83
  }
84
  }
85
 
86
- /**
87
- * Disable JSON API
88
- * http://wp-kama.ru/question/kak-polnostyu-otklyuchit-rest-api-vvedennyj-v-wp-4-4
89
- */
90
-
91
  public function removeRestApi()
92
  {
93
-
94
  // Disabled REST API
95
  add_filter('rest_enabled', '__return_false');
96
-
97
  // Add redirect except contact form and post request
98
  if( (preg_match('#^/wp-json/(oembed|)#i', $_SERVER['REQUEST_URI']) || preg_match('#^/wp-json$#i', $_SERVER['REQUEST_URI'])) && (!preg_match('#^/wp-json/contact-form-7/#', $_SERVER['REQUEST_URI']) || $_SERVER['REQUEST_METHOD'] !== 'POST') ) {
99
  wp_redirect(get_option('siteurl'), 301);
@@ -120,22 +166,16 @@
120
  remove_filter('rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4);
121
  remove_action('wp_head', 'wp_oembed_add_discovery_links');
122
  }
123
-
124
- /**
125
- * Remove styles for .recentcomments a
126
- * .recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}
127
- * https://github.com/nickyurov/
128
- */
129
-
130
  public function removeRecentCommentsStyle()
131
  {
132
-
133
  global $wp_widget_factory;
134
-
135
  $widget_recent_comments = isset($wp_widget_factory->widgets['WP_Widget_Recent_Comments'])
136
  ? $wp_widget_factory->widgets['WP_Widget_Recent_Comments']
137
  : null;
138
-
139
  if( !empty($widget_recent_comments) ) {
140
  remove_action('wp_head', array(
141
  $wp_widget_factory->widgets['WP_Widget_Recent_Comments'],
@@ -143,88 +183,171 @@
143
  ));
144
  }
145
  }
146
-
147
  /**
148
  * Disable feeds
149
-
150
  */
151
-
152
  public function disableFeed()
153
  {
154
- //Remove feed links from the <head> section
155
-
156
- remove_action('wp_head', 'feed_links_extra', 3);
 
 
 
 
 
157
  remove_action('wp_head', 'feed_links', 2);
158
-
159
- //Redirect feed URLs to home page
160
-
161
- add_action('do_feed', array($this, 'disableFeedRedirect'), 1);
162
- add_action('do_feed_rdf', array($this, 'disableFeedRedirect'), 1);
163
- add_action('do_feed_rss', array($this, 'disableFeedRedirect'), 1);
164
- add_action('do_feed_rss2', array($this, 'disableFeedRedirect'), 1);
165
- add_action('do_feed_atom', array($this, 'disableFeedRedirect'), 1);
166
  }
167
-
168
- public function disableFeedRedirect()
169
  {
170
- // if GET param - remove and redirect
171
- if( isset($_GET['feed']) ) {
172
- wp_redirect(esc_url_raw(remove_query_arg('feed')), 301);
173
-
174
- exit;
175
  }
 
 
 
176
 
177
- // if beauty permalink - remove and redirect
178
- if( get_query_var('feed') !== 'old' ) {
179
-
180
- set_query_var('feed', '');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
181
  }
182
-
183
- redirect_canonical();
184
-
185
- wp_redirect(get_option('siteurl'), 301);
186
-
187
- die();
188
  }
189
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
190
  /**
191
  * Remove unnecessary tags from head
192
-
193
  */
194
-
195
  public function remove_tags_from_head()
196
  {
197
- if( $this->getOption('remove_dns_prefetch') ) {
198
  remove_action('wp_head', 'wp_resource_hints', 2);
199
- }
200
-
201
  if( $this->getOption('remove_rsd_link') ) {
202
  remove_action('wp_head', 'rsd_link');
203
  }
204
-
205
  if( $this->getOption('remove_wlw_link') ) {
206
  remove_action('wp_head', 'wlwmanifest_link');
207
  }
208
-
209
  if( $this->getOption('remove_adjacent_posts_link') ) {
210
  remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);
211
  remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
212
- /*add_filter('previous_post_link', array($this, 'removeNextPrevioslinks'));
213
- add_filter('next_post_link', array($this, 'removeNextPrevioslinks'));*/
214
  }
215
-
216
  if( $this->getOption('remove_shortlink_link') ) {
217
  remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);
218
  remove_action('template_redirect', 'wp_shortlink_header', 11, 0);
219
  }
220
- }
221
 
 
 
 
 
 
 
 
 
 
 
222
  /*public function removeNextPrevioslinks($format, $link)
223
  {
224
  return false;
225
  }*/
226
-
227
  // Remove jQuery Migrate
 
 
 
228
  public function removeJqueryMigrate(&$scripts)
229
  {
230
  if( !is_admin() ) {
@@ -232,35 +355,35 @@
232
  $scripts->add('jquery', false, array('jquery-core'), '1.12.4');
233
  }
234
  }
235
-
236
  // Disable Embeds
237
  public function disableEmbeds()
238
  {
239
  global $wp, $wp_embed;
240
-
241
  $wp->public_query_vars = array_diff($wp->public_query_vars, array('embed'));
242
  remove_filter('the_content', array($wp_embed, 'autoembed'), 8);
243
-
244
  // Remove content feed filter
245
  remove_filter('the_content_feed', '_oembed_filter_feed_content');
246
-
247
  // Abort embed libraries loading
248
  remove_action('plugins_loaded', 'wp_maybe_load_embeds', 0);
249
-
250
  // No auto-embedding support
251
  add_filter('pre_option_embed_autourls', '__return_false');
252
-
253
  // Avoid oEmbed auto discovery
254
  add_filter('embed_oembed_discover', '__return_false');
255
-
256
  // Remove REST API related hooks
257
  remove_action('rest_api_init', 'wp_oembed_register_route');
258
  remove_filter('rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10);
259
-
260
  // Remove header actions
261
  remove_action('wp_head', 'wp_oembed_add_discovery_links');
262
  remove_action('wp_head', 'wp_oembed_add_host_js');
263
-
264
  remove_action('embed_head', 'enqueue_embed_scripts', 1);
265
  remove_action('embed_head', 'print_emoji_detection_script');
266
  remove_action('embed_head', 'print_embed_styles');
@@ -269,40 +392,40 @@
269
  remove_action('embed_head', 'wp_no_robots');
270
  remove_action('embed_head', 'rel_canonical');
271
  remove_action('embed_head', 'locale_stylesheet', 30);
272
-
273
  remove_action('embed_content_meta', 'print_embed_comments_button');
274
  remove_action('embed_content_meta', 'print_embed_sharing_button');
275
-
276
  remove_action('embed_footer', 'print_embed_sharing_dialog');
277
  remove_action('embed_footer', 'print_embed_scripts');
278
  remove_action('embed_footer', 'wp_print_footer_scripts', 20);
279
-
280
  remove_filter('excerpt_more', 'wp_embed_excerpt_more', 20);
281
  remove_filter('the_excerpt_embed', 'wptexturize');
282
  remove_filter('the_excerpt_embed', 'convert_chars');
283
  remove_filter('the_excerpt_embed', 'wpautop');
284
  remove_filter('the_excerpt_embed', 'shortcode_unautop');
285
  remove_filter('the_excerpt_embed', 'wp_embed_excerpt_attachment');
286
-
287
  // Remove data and results filters
288
  remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);
289
  remove_filter('oembed_response_data', 'get_oembed_response_data_rich', 10);
290
  remove_filter('pre_oembed_result', 'wp_filter_pre_oembed_result', 10);
291
-
292
  // WooCommerce embeds in short description
293
  remove_filter('woocommerce_short_description', 'wc_do_oembeds');
294
-
295
  add_filter('tiny_mce_plugins', array($this, 'disableEmbedsTinyMcePlugin'));
296
  add_filter('rewrite_rules_array', array($this, 'disableEmbedsRewrites'));
297
-
298
  wp_deregister_script('wp-embed');
299
  }
300
-
301
  public function disableEmbedsTinyMcePlugin($plugins)
302
  {
303
  return array_diff($plugins, array('wpembed', 'wpview'));
304
  }
305
-
306
  public function disableEmbedsRewrites($rules)
307
  {
308
  $new_rules = array();
@@ -315,27 +438,24 @@
315
  }
316
  $new_rules[$rule] = $rewrite;
317
  }
318
-
319
  return $new_rules;
320
  }
321
-
322
  public function htmlCompressor()
323
  {
324
  ob_start(array($this, 'htmlCompressorMain'));
325
  }
326
 
327
- public function htmlCompressorMain($data)
328
  {
329
- return wbcr_clearfy_minify_html_output($data);
330
- }
331
-
332
- public function removeHtmlComments()
333
- {
334
- ob_start(array($this, 'removeHtmlCommentsMain'));
335
- }
336
 
337
- public function removeHtmlCommentsMain($data)
338
- {
339
- return preg_replace('#<!--(?!<!)[^\[>].*?-->#s', '', $data);
340
  }
341
  }
1
  <?php
 
2
  /**
3
  * This class configures the code cleanup settings
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
+ class WCL_ConfigPerformance extends Wbcr_FactoryClearfy200_Configurate {
15
+
16
+ /**
17
+ * @param WCL_Plugin $plugin
18
+ */
19
+ public function __construct(WCL_Plugin $plugin)
20
+ {
21
+ parent::__construct($plugin);
22
+
23
+ $this->plugin = $plugin;
24
+ }
25
+
26
  public function registerActionsAndFilters()
27
  {
28
  if( $this->getOption('disable_emoji') ) {
29
  add_action('init', array($this, 'disableEmojis'));
30
  }
31
+
32
+ if( $this->getOption('remove_jquery_migrate') && !is_admin() ) {
33
  add_filter('wp_default_scripts', array($this, 'removeJqueryMigrate'));
34
  }
35
+
36
  if( $this->getOption('disable_embeds') ) {
37
  add_action('init', array($this, 'disableEmbeds'));
38
  }
39
+
40
  if( $this->getOption('disable_json_rest_api') ) {
41
  add_action('init', array($this, 'removeRestApi'));
42
  }
43
+
44
+ if( !is_admin() ) {
45
+ if( $this->getOption('disable_feed') ) {
46
+ $this->disableFeed();
47
+ }
48
+
49
+ if( $this->getOption('disable_dashicons') ) {
50
+ add_action('wp_print_styles', array($this, 'disableDashicons'), -1);
51
+ }
52
+
53
+ if( $this->getOption('html_minify') || $this->getOption('remove_xfn_link') ) {
54
+ add_action('wp_loaded', array($this, 'htmlCompressor'));
55
+ }
56
+
57
+ if( $this->getOption('remove_recent_comments_style') ) {
58
+ add_action('widgets_init', array($this, 'removeRecentCommentsStyle'));
59
+ }
60
 
61
+ /**
62
+ * Priority set to 9999. Higher numbers correspond with later execution.
63
+ * Hook into the style loader and remove the version information.
64
+ */
65
 
66
+ if( $this->getOption('remove_style_version') ) {
67
+ add_filter('style_loader_src', array($this, 'hideWordpressVersionInScript'), 9999, 2);
68
+ }
69
 
70
+ /**
71
+ * Hook into the script loader and remove the version information.
72
+ */
73
 
74
+ if( $this->getOption('remove_js_version') ) {
75
+ add_filter('script_loader_src', array($this, 'hideWordpressVersionInScript'), 9999, 2);
76
+ }
77
+
78
+ $this->remove_tags_from_head();
79
  }
 
 
80
  }
81
 
82
+
83
  /**
84
+ * Remove wp version from any enqueued scripts
85
+ * @param string $target_url
86
+ * @return string
 
 
 
87
  */
88
+ public function hideWordpressVersionInScript($src, $handle)
89
+ {
90
+ $filename_arr = explode('?', basename($src));
91
+ $exclude_file_list = $this->getOption('remove_version_exclude', '');
92
+ $exclude_files_arr = array_map('trim', explode(PHP_EOL, $exclude_file_list));
93
+
94
+ if( strpos($src, 'ver=') && !in_array(str_replace('?' . $filename_arr[1], '', $src), $exclude_files_arr, true) ) {
95
+ $src = remove_query_arg('ver', $src);
96
+ }
97
+
98
+ return $src;
99
+ }
100
+
101
+ public function disableDashicons()
102
+ {
103
+ if( !is_admin_bar_showing() && !is_customize_preview() ) {
104
+ wp_deregister_style('dashicons');
105
+ }
106
+ }
107
 
108
  public function disableEmojis()
109
  {
115
  remove_filter('comment_text_rss', 'wp_staticize_emoji');
116
  remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
117
  add_filter('tiny_mce_plugins', array($this, 'disableEmojisTinymce'));
118
+ add_filter('emoji_svg_url', '__return_false');
119
  }
120
 
121
  /**
122
  * Filter function used to remove the tinymce emoji plugin.
 
123
  * @param array $plugins
124
  * @return array Difference betwen the two arrays
125
  */
135
  }
136
  }
137
 
 
 
 
 
 
138
  public function removeRestApi()
139
  {
 
140
  // Disabled REST API
141
  add_filter('rest_enabled', '__return_false');
142
+
143
  // Add redirect except contact form and post request
144
  if( (preg_match('#^/wp-json/(oembed|)#i', $_SERVER['REQUEST_URI']) || preg_match('#^/wp-json$#i', $_SERVER['REQUEST_URI'])) && (!preg_match('#^/wp-json/contact-form-7/#', $_SERVER['REQUEST_URI']) || $_SERVER['REQUEST_METHOD'] !== 'POST') ) {
145
  wp_redirect(get_option('siteurl'), 301);
166
  remove_filter('rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4);
167
  remove_action('wp_head', 'wp_oembed_add_discovery_links');
168
  }
169
+
170
+ // todo: не работает должным образом, проверить
 
 
 
 
 
171
  public function removeRecentCommentsStyle()
172
  {
 
173
  global $wp_widget_factory;
174
+
175
  $widget_recent_comments = isset($wp_widget_factory->widgets['WP_Widget_Recent_Comments'])
176
  ? $wp_widget_factory->widgets['WP_Widget_Recent_Comments']
177
  : null;
178
+
179
  if( !empty($widget_recent_comments) ) {
180
  remove_action('wp_head', array(
181
  $wp_widget_factory->widgets['WP_Widget_Recent_Comments'],
183
  ));
184
  }
185
  }
186
+
187
  /**
188
  * Disable feeds
 
189
  */
 
190
  public function disableFeed()
191
  {
192
+ add_action('wp_loaded', array($this, 'removeFeedLinks'));
193
+ add_action('template_redirect', array($this, 'filterFeeds'), 1);
194
+ add_filter('bbp_request', array($this, 'filterBbpFeeds'), 9);
195
+ }
196
+
197
+
198
+ public function removeFeedLinks()
199
+ {
200
  remove_action('wp_head', 'feed_links', 2);
201
+ remove_action('wp_head', 'feed_links_extra', 3);
 
 
 
 
 
 
 
202
  }
203
+
204
+ public function filterFeeds()
205
  {
206
+ if( !is_feed() || is_404() ) {
207
+ return;
 
 
 
208
  }
209
+
210
+ $this->disabled_feed_behaviour();
211
+ }
212
 
213
+ public function disabled_feed_behaviour()
214
+ {
215
+ global $wp_rewrite, $wp_query;
216
+
217
+ if( $this->getOption('disabled_feed_behaviour', 'redirect_301') == 'redirect_404' ) {
218
+ $wp_query->is_feed = false;
219
+ $wp_query->set_404();
220
+ status_header(404);
221
+ // Override the xml+rss header set by WP in send_headers
222
+ header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
223
+ } else {
224
+ if( isset($_GET['feed']) ) {
225
+ wp_redirect(esc_url_raw(remove_query_arg('feed')), 301);
226
+ exit;
227
+ }
228
+
229
+ if( 'old' !== get_query_var('feed') ) { // WP redirects these anyway, and removing the query var will confuse it thoroughly
230
+ set_query_var('feed', '');
231
+ }
232
+
233
+ redirect_canonical(); // Let WP figure out the appropriate redirect URL.
234
+
235
+ // Still here? redirect_canonical failed to redirect, probably because of a filter. Try the hard way.
236
+ $struct = (!is_singular() && is_comment_feed())
237
+ ? $wp_rewrite->get_comment_feed_permastruct()
238
+ : $wp_rewrite->get_feed_permastruct();
239
+
240
+ $struct = preg_quote($struct, '#');
241
+ $struct = str_replace('%feed%', '(\w+)?', $struct);
242
+ $struct = preg_replace('#/+#', '/', $struct);
243
+ $requested_url = (is_ssl()
244
+ ? 'https://'
245
+ : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
246
+
247
+ $new_url = preg_replace('#' . $struct . '/?$#', '', $requested_url);
248
+
249
+ if( $new_url !== $requested_url ) {
250
+ wp_redirect($new_url, 301);
251
+ exit;
252
+ }
253
  }
 
 
 
 
 
 
254
  }
255
+
256
+ /**
257
+ * BBPress feed detection sourced from bbp_request_feed_trap() in BBPress Core.
258
+ *
259
+ * @param array $query_vars
260
+ * @return array
261
+ */
262
+ public function filterBbpFeeds($query_vars)
263
+ {
264
+ // Looking at a feed
265
+ if( isset($query_vars['feed']) ) {
266
+
267
+ // Forum/Topic/Reply Feed
268
+ if( isset($query_vars['post_type']) ) {
269
+
270
+ // Matched post type
271
+ $post_type = false;
272
+ $post_types = array();
273
+
274
+ if( function_exists('bbp_get_forum_post_type') && function_exists('bbp_get_topic_post_type') && function_exists('bbp_get_reply_post_type') ) // Post types to check
275
+ {
276
+ $post_types = array(
277
+ bbp_get_forum_post_type(),
278
+ bbp_get_topic_post_type(),
279
+ bbp_get_reply_post_type(),
280
+ );
281
+ }
282
+
283
+ // Cast query vars as array outside of foreach loop
284
+ $qv_array = (array)$query_vars['post_type'];
285
+
286
+ // Check if this query is for a bbPress post type
287
+ foreach($post_types as $bbp_pt) {
288
+ if( in_array($bbp_pt, $qv_array, true) ) {
289
+ $post_type = $bbp_pt;
290
+ break;
291
+ }
292
+ }
293
+
294
+ // Looking at a bbPress post type
295
+ if( !empty($post_type) ) {
296
+ $this->disabled_feed_behaviour();
297
+ }
298
+ }
299
+ }
300
+
301
+ // No feed so continue on
302
+ return $query_vars;
303
+ }
304
+
305
  /**
306
  * Remove unnecessary tags from head
 
307
  */
 
308
  public function remove_tags_from_head()
309
  {
310
+ /*if( $this->getOption('remove_dns_prefetch') ) {
311
  remove_action('wp_head', 'wp_resource_hints', 2);
312
+ }*/
313
+
314
  if( $this->getOption('remove_rsd_link') ) {
315
  remove_action('wp_head', 'rsd_link');
316
  }
317
+
318
  if( $this->getOption('remove_wlw_link') ) {
319
  remove_action('wp_head', 'wlwmanifest_link');
320
  }
321
+
322
  if( $this->getOption('remove_adjacent_posts_link') ) {
323
  remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);
324
  remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
 
 
325
  }
326
+
327
  if( $this->getOption('remove_shortlink_link') ) {
328
  remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);
329
  remove_action('template_redirect', 'wp_shortlink_header', 11, 0);
330
  }
 
331
 
332
+ if( $this->getOption('remove_xfn_link') ) {
333
+ add_filter('avf_profile_head_tag', array($this, 'removeXfnLink'));
334
+ }
335
+ }
336
+
337
+ public function removeXfnLink()
338
+ {
339
+ return false;
340
+ }
341
+
342
  /*public function removeNextPrevioslinks($format, $link)
343
  {
344
  return false;
345
  }*/
346
+
347
  // Remove jQuery Migrate
348
+ /**
349
+ * @param WP_Scripts $scripts
350
+ */
351
  public function removeJqueryMigrate(&$scripts)
352
  {
353
  if( !is_admin() ) {
355
  $scripts->add('jquery', false, array('jquery-core'), '1.12.4');
356
  }
357
  }
358
+
359
  // Disable Embeds
360
  public function disableEmbeds()
361
  {
362
  global $wp, $wp_embed;
363
+
364
  $wp->public_query_vars = array_diff($wp->public_query_vars, array('embed'));
365
  remove_filter('the_content', array($wp_embed, 'autoembed'), 8);
366
+
367
  // Remove content feed filter
368
  remove_filter('the_content_feed', '_oembed_filter_feed_content');
369
+
370
  // Abort embed libraries loading
371
  remove_action('plugins_loaded', 'wp_maybe_load_embeds', 0);
372
+
373
  // No auto-embedding support
374
  add_filter('pre_option_embed_autourls', '__return_false');
375
+
376
  // Avoid oEmbed auto discovery
377
  add_filter('embed_oembed_discover', '__return_false');
378
+
379
  // Remove REST API related hooks
380
  remove_action('rest_api_init', 'wp_oembed_register_route');
381
  remove_filter('rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10);
382
+
383
  // Remove header actions
384
  remove_action('wp_head', 'wp_oembed_add_discovery_links');
385
  remove_action('wp_head', 'wp_oembed_add_host_js');
386
+
387
  remove_action('embed_head', 'enqueue_embed_scripts', 1);
388
  remove_action('embed_head', 'print_emoji_detection_script');
389
  remove_action('embed_head', 'print_embed_styles');
392
  remove_action('embed_head', 'wp_no_robots');
393
  remove_action('embed_head', 'rel_canonical');
394
  remove_action('embed_head', 'locale_stylesheet', 30);
395
+
396
  remove_action('embed_content_meta', 'print_embed_comments_button');
397
  remove_action('embed_content_meta', 'print_embed_sharing_button');
398
+
399
  remove_action('embed_footer', 'print_embed_sharing_dialog');
400
  remove_action('embed_footer', 'print_embed_scripts');
401
  remove_action('embed_footer', 'wp_print_footer_scripts', 20);
402
+
403
  remove_filter('excerpt_more', 'wp_embed_excerpt_more', 20);
404
  remove_filter('the_excerpt_embed', 'wptexturize');
405
  remove_filter('the_excerpt_embed', 'convert_chars');
406
  remove_filter('the_excerpt_embed', 'wpautop');
407
  remove_filter('the_excerpt_embed', 'shortcode_unautop');
408
  remove_filter('the_excerpt_embed', 'wp_embed_excerpt_attachment');
409
+
410
  // Remove data and results filters
411
  remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);
412
  remove_filter('oembed_response_data', 'get_oembed_response_data_rich', 10);
413
  remove_filter('pre_oembed_result', 'wp_filter_pre_oembed_result', 10);
414
+
415
  // WooCommerce embeds in short description
416
  remove_filter('woocommerce_short_description', 'wc_do_oembeds');
417
+
418
  add_filter('tiny_mce_plugins', array($this, 'disableEmbedsTinyMcePlugin'));
419
  add_filter('rewrite_rules_array', array($this, 'disableEmbedsRewrites'));
420
+
421
  wp_deregister_script('wp-embed');
422
  }
423
+
424
  public function disableEmbedsTinyMcePlugin($plugins)
425
  {
426
  return array_diff($plugins, array('wpembed', 'wpview'));
427
  }
428
+
429
  public function disableEmbedsRewrites($rules)
430
  {
431
  $new_rules = array();
438
  }
439
  $new_rules[$rule] = $rewrite;
440
  }
441
+
442
  return $new_rules;
443
  }
444
+
445
  public function htmlCompressor()
446
  {
447
  ob_start(array($this, 'htmlCompressorMain'));
448
  }
449
 
450
+ public function htmlCompressorMain($content)
451
  {
452
+ if( $this->getOption('remove_xfn_link') ) {
453
+ $content = str_replace('<link rel="profile" href="http://gmpg.org/xfn/11">', '', $content);
454
+ }
455
+ if( $this->getOption('html_minify') ) {
456
+ $content = WCL_Helper::minifyHtml($content);
457
+ }
 
458
 
459
+ return $content;
 
 
460
  }
461
  }
includes/classes/class.configurate-privacy.php CHANGED
@@ -6,52 +6,51 @@
6
  * @copyright (c) 2017 Webraftic Ltd
7
  * @version 1.0
8
  */
9
- class WbcrClearfy_ConfigPrivacy extends WbcrFactoryClearfy_Configurate {
10
 
11
- public function registerActionsAndFilters()
 
 
 
 
 
 
 
 
 
 
12
  {
13
- if( $this->getOption('remove_meta_generator') ) {
14
- remove_action('wp_head', 'wp_generator');
15
- add_filter('the_generator', '__return_empty_string');
16
- }
17
 
18
- /**
19
- * Priority set to 9999. Higher numbers correspond with later execution.
20
- * Hook into the style loader and remove the version information.
21
- */
22
 
23
- if( $this->getOption('remove_style_version') ) {
24
- add_filter('style_loader_src', array($this, 'hideWordpressVersionInScript'), 9999, 2);
 
 
 
 
 
 
 
 
 
25
  }
 
26
 
27
- /**
28
- * Hook into the script loader and remove the version information.
29
- */
30
 
31
- if( $this->getOption('remove_js_version') ) {
32
- add_filter('script_loader_src', array($this, 'hideWordpressVersionInScript'), 9999, 2);
33
- }
34
  }
35
 
36
  /**
37
- * Remove wp version from any enqueued scripts
38
- * @param string $target_url
39
- * @return string
40
  */
41
- public function hideWordpressVersionInScript($src, $handle)
42
  {
43
- if( is_admin() ) {
44
- return $src;
45
- }
46
-
47
- $filename_arr = explode('?', basename($src));
48
- $exclude_file_list = $this->getOption('remove_version_exclude', '');
49
- $exclude_files_arr = array_map('trim', explode(PHP_EOL, $exclude_file_list));
50
-
51
- if( strpos($src, 'ver=') && !in_array(str_replace('?' . $filename_arr[1], '', $src), $exclude_files_arr, true) ) {
52
- $src = remove_query_arg('ver', $src);
53
- }
54
-
55
- return $src;
56
  }
57
  }
6
  * @copyright (c) 2017 Webraftic Ltd
7
  * @version 1.0
8
  */
 
9
 
10
+ // Exit if accessed directly
11
+ if( !defined('ABSPATH') ) {
12
+ exit;
13
+ }
14
+
15
+ class WCL_ConfigPrivacy extends Wbcr_FactoryClearfy200_Configurate {
16
+
17
+ /**
18
+ * @param WCL_Plugin $plugin
19
+ */
20
+ public function __construct(WCL_Plugin $plugin)
21
  {
22
+ parent::__construct($plugin);
 
 
 
23
 
24
+ $this->plugin = $plugin;
25
+ }
 
 
26
 
27
+ public function registerActionsAndFilters()
28
+ {
29
+ if( !is_admin() ) {
30
+ if( $this->getOption('remove_meta_generator') ) {
31
+ remove_action('wp_head', 'wp_generator');
32
+ add_filter('the_generator', '__return_empty_string');
33
+ }
34
+
35
+ if( $this->getOption('remove_html_comments') ) {
36
+ add_action('wp_loaded', array($this, 'removeHtmlComments'));
37
+ }
38
  }
39
+ }
40
 
 
 
 
41
 
42
+ public function removeHtmlComments()
43
+ {
44
+ ob_start(array($this, 'removeHtmlCommentsMain'));
45
  }
46
 
47
  /**
48
+ * !ngg_resource - can not be deleted, otherwise the plugin nextgen gallery will not work
49
+ * @param string $data
50
+ * @return mixed
51
  */
52
+ public function removeHtmlCommentsMain($data)
53
  {
54
+ return preg_replace('#<!--(?!<!|\s?ngg_resource)[^\[>].*?-->#s', '', $data);
 
 
 
 
 
 
 
 
 
 
 
 
55
  }
56
  }
includes/classes/class.configurate-security.php CHANGED
@@ -1,21 +1,270 @@
1
  <?php
2
-
3
  /**
4
  * This class configures security settings
5
  * @author Webcraftic <wordpress.webraftic@gmail.com>
6
  * @copyright (c) 2017 Webraftic Ltd
7
  * @version 1.0
8
  */
9
- class WbcrClearfy_ConfigSecurity extends WbcrFactoryClearfy_Configurate {
10
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  public function registerActionsAndFilters()
12
  {
13
- if( $this->getOption('change_login_errors') ) {
14
- add_filter('login_errors', array($this, 'changeLoginErrors'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
 
17
- if( $this->getOption('protect_author_get') ) {
18
- add_action('wp', array($this, 'protectAuthorGet'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  }
20
  }
21
 
@@ -36,7 +285,7 @@
36
 
37
  public function protectAuthorGet()
38
  {
39
- if( isset($_GET['author']) && !is_admin() ) {
40
  wp_redirect(home_url(), 301);
41
 
42
  die();
1
  <?php
 
2
  /**
3
  * This class configures security settings
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
+ class WCL_ConfigSecurity extends Wbcr_FactoryClearfy200_Configurate {
15
+
16
+ /**
17
+ * @var bool
18
+ */
19
+ private $wp_login_php;
20
+
21
+ /**
22
+ * @var bool
23
+ */
24
+ private $disable_wp_admin;
25
+
26
+ /**
27
+ * @var bool
28
+ */
29
+ private $disable_wp_login;
30
+
31
+ /**
32
+ * @var string
33
+ */
34
+ private $login_path;
35
+
36
+ /**
37
+ * @var
38
+ */
39
+ private $login_recovery;
40
+
41
+ /**
42
+ * @param WCL_Plugin $plugin
43
+ */
44
+ public function __construct(WCL_Plugin $plugin)
45
+ {
46
+ parent::__construct($plugin);
47
+
48
+ $this->plugin = $plugin;
49
+ }
50
+
51
  public function registerActionsAndFilters()
52
  {
53
+ if( !is_admin() ) {
54
+ if( $this->getOption('change_login_errors') ) {
55
+ add_filter('login_errors', array($this, 'changeLoginErrors'));
56
+ }
57
+
58
+ if( $this->getOption('protect_author_get') ) {
59
+ add_action('wp', array($this, 'protectAuthorGet'));
60
+ }
61
+ }
62
+
63
+ $this->disable_wp_admin = WCL_Plugin::app()->getOption('hide_wp_admin');
64
+ $this->disable_wp_login = WCL_Plugin::app()->getOption('hide_login_path');
65
+ $this->login_path = WCL_Plugin::app()->getOption('login_path');
66
+
67
+ add_filter('init', array($this, 'init'));
68
+
69
+ if( $this->disable_wp_admin ) {
70
+ add_filter('auth_redirect_scheme', array($this, 'stopRedirect'), 9999);
71
+ }
72
+
73
+ if( $this->login_path ) {
74
+ add_action('plugins_loaded', array($this, 'pluginsLoaded'), 9999);
75
+ add_action('wp_loaded', array($this, 'wpLoaded'));
76
+ add_filter('site_url', array($this, 'siteUrl'), 10, 4);
77
+ add_filter('wp_redirect', array($this, 'wpRedirect'), 10, 2);
78
+ add_filter('site_option_welcome_email', array($this, 'welcomeEmail'));
79
+ }
80
+ }
81
+
82
+ public function init()
83
+ {
84
+ if( $this->disable_wp_admin ) {
85
+ remove_action('template_redirect', 'wp_redirect_admin_locations', 9999);
86
+ }
87
+
88
+ //check for recovery link run
89
+ if( !empty($this->login_path) && isset($_GET['wbcr_clearfy_login_recovery']) ) {
90
+ $user_recovery_code = sanitize_text_field($_GET['wbcr_clearfy_login_recovery']);
91
+ $plugin_recovery_code = $this->getOption('login_recovery_code');
92
+
93
+ if( empty($plugin_recovery_code) || empty($user_recovery_code) || $user_recovery_code !== $plugin_recovery_code ) {
94
+ return;
95
+ }
96
+
97
+ $this->plugin->deleteOption('hide_wp_admin');
98
+ $this->plugin->deleteOption('login_path');
99
+ $this->plugin->deleteOption('hide_login_path');
100
+ $this->plugin->deleteOption('old_login_path');
101
+ $this->plugin->deleteOption('login_recovery_code');
102
+
103
+ $this->login_path = null;
104
+ $this->disable_wp_login = null;
105
+ $this->disable_wp_admin = null;
106
+ $this->wp_login_php = false;
107
+
108
+ wp_safe_redirect(admin_url());
109
+ exit;
110
+ }
111
+ }
112
+
113
+
114
+ function stopRedirect($scheme)
115
+ {
116
+ if( $user_id = wp_validate_auth_cookie('', $scheme) ) {
117
+ return $scheme;
118
+ }
119
+
120
+ WbcrFactoryClearfy200_Helpers::setError404();
121
+ }
122
+
123
+ public function pluginsLoaded()
124
+ {
125
+ global $pagenow;
126
+
127
+ $request = parse_url($_SERVER['REQUEST_URI']);
128
+
129
+ $is_login = WbcrFactoryClearfy200_Helpers::strContains(rawurldecode($_SERVER['REQUEST_URI']), 'wp-login.php') || untrailingslashit($request['path']) === site_url('wp-login', 'relative');
130
+ $is_signup = WbcrFactoryClearfy200_Helpers::strContains(rawurldecode($_SERVER['REQUEST_URI']), 'wp-signup');
131
+ $is_activate = WbcrFactoryClearfy200_Helpers::strContains(rawurldecode($_SERVER['REQUEST_URI']), 'wp-activate');
132
+
133
+ if( ($is_login || $is_signup || $is_activate) && !is_admin() ) {
134
+ $this->wp_login_php = true;
135
+ $pagenow = 'index.php';
136
+ } elseif( (untrailingslashit($request['path']) === home_url($this->login_path, 'relative')) || (!get_option('permalink_structure') && isset($_GET[$this->login_path]) && empty($_GET[$this->login_path])) ) {
137
+ $pagenow = 'wp-login.php';
138
  }
139
+ }
140
+
141
+ public function wpLoaded()
142
+ {
143
+ global $pagenow;
144
+
145
+ if( is_admin() && !is_user_logged_in() && !defined('DOING_AJAX') && $pagenow !== 'admin-post.php' ) {
146
+ $ddisable_wp_admin = WCL_Plugin::app()->getOption('hide_wp_admin');
147
+
148
+ if( !$ddisable_wp_admin ) {
149
+ $redirect_uri = untrailingslashit(home_url($this->login_path));
150
+
151
+ if( !get_option('permalink_structure') ) {
152
+ $redirect_uri = add_query_arg(array(
153
+ $this->login_path => ''
154
+ ), home_url());
155
+ }
156
+
157
+ wp_safe_redirect($redirect_uri);
158
+ die();
159
+ }
160
+
161
+ return;
162
+ }
163
+
164
+ $request = parse_url($_SERVER['REQUEST_URI']);
165
+
166
+ if( $pagenow === 'wp-login.php' && $request['path'] !== WbcrFactoryClearfy200_Helpers::userTrailingslashit($request['path']) && get_option('permalink_structure') ) {
167
+ $query_string = !empty($_SERVER['QUERY_STRING'])
168
+ ? '?' . $_SERVER['QUERY_STRING']
169
+ : '';
170
+
171
+ wp_safe_redirect(WbcrFactoryClearfy200_Helpers::userTrailingslashit($this->login_path) . $query_string);
172
+ die();
173
+ } elseif( $this->wp_login_php ) {
174
+ $new_login_redirect = false;
175
+ $referer = wp_get_referer();
176
+ $parse_referer = parse_url($referer);
177
+
178
+ if( $referer && WbcrFactoryClearfy200_Helpers::strContains($referer, 'wp-activate.php') && $parse_referer && !empty($parse_referer['query']) ) {
179
+
180
+ parse_str($parse_referer['query'], $parse_referer);
181
+
182
+ if( !empty($parse_referer['key']) && ($result = wpmu_activate_signup($parse_referer['key'])) && is_wp_error($result) && ($result->get_error_code() === 'already_active' || $result->get_error_code() === 'blog_taken') ) {
183
+ $new_login_redirect = true;
184
+ }
185
+ }
186
+
187
+ if( !$this->disable_wp_login || $new_login_redirect ) {
188
+ $query_string = !empty($_SERVER['QUERY_STRING'])
189
+ ? '?' . $_SERVER['QUERY_STRING']
190
+ : '';
191
+
192
+ if( WCL_Helper::isPermalink() ) {
193
+ $redirect_uri = $this->login_path . $query_string;
194
+ } else {
195
+ $redirect_uri = home_url() . '/' . add_query_arg(array(
196
+ $this->login_path => ''
197
+ ), $query_string);
198
+ }
199
+
200
+ if( WbcrFactoryClearfy200_Helpers::strContains($_SERVER['REQUEST_URI'], 'wp-signup') ) {
201
+ $redirect_uri = add_query_arg(array(
202
+ 'action' => 'register'
203
+ ), $redirect_uri);
204
+ }
205
+
206
+ wp_safe_redirect($redirect_uri);
207
+ die();
208
+ }
209
 
210
+ WbcrFactoryClearfy200_Helpers::setError404();
211
+ } elseif( $pagenow === 'wp-login.php' ) {
212
+ if( is_user_logged_in() && !isset($_REQUEST['action']) ) {
213
+ wp_safe_redirect(admin_url());
214
+ die();
215
+ }
216
+
217
+ if( !defined('DONOTCACHEPAGE') ) {
218
+ define('DONOTCACHEPAGE', true);
219
+ }
220
+
221
+ @require_once ABSPATH . 'wp-login.php';
222
+
223
+ die();
224
+ }
225
+ }
226
+
227
+ public function siteUrl($url, $path, $scheme, $blog_id)
228
+ {
229
+ return $this->filterWpLoginPhp($url, $scheme);
230
+ }
231
+
232
+ public function wpRedirect($location, $status)
233
+ {
234
+ return $this->filterWpLoginPhp($location);
235
+ }
236
+
237
+ public function filterWpLoginPhp($url, $scheme = null)
238
+ {
239
+ if( strpos($url, 'wp-login.php') !== false ) {
240
+ if( is_ssl() ) {
241
+ $scheme = 'https';
242
+ }
243
+
244
+ $args = explode('?', $url);
245
+
246
+ if( isset($args[1]) ) {
247
+ parse_str($args[1], $args);
248
+ $url = add_query_arg($args, $this->newLoginUrl($scheme));
249
+ } else {
250
+ $url = $this->newLoginUrl($scheme);
251
+ }
252
+ }
253
+
254
+ return $url;
255
+ }
256
+
257
+ public function welcomeEmail($value)
258
+ {
259
+ return $value = str_replace('wp-login.php', WbcrFactoryClearfy200_Helpers::userTrailingslashit($this->login_path), $value);
260
+ }
261
+
262
+ public function newLoginUrl($scheme = null)
263
+ {
264
+ if( WCL_Helper::isPermalink() ) {
265
+ return WbcrFactoryClearfy200_Helpers::userTrailingslashit(home_url('/', $scheme) . $this->login_path);
266
+ } else {
267
+ return home_url('/', $scheme) . '?' . $this->login_path;
268
  }
269
  }
270
 
285
 
286
  public function protectAuthorGet()
287
  {
288
+ if( isset($_GET['author']) ) {
289
  wp_redirect(home_url(), 301);
290
 
291
  die();
includes/classes/class.configurate-seo.php CHANGED
@@ -6,64 +6,89 @@
6
  * @copyright (c) 2017 Webraftic Ltd
7
  * @version 1.0
8
  */
9
- class WbcrClearfy_ConfigSeo extends WbcrFactoryClearfy_Configurate {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
  public function registerActionsAndFilters()
12
  {
 
 
 
 
 
 
 
 
13
 
14
- if( $this->getOption('content_image_auto_alt') ) {
15
- add_filter('the_content', array($this, 'contentImageAutoAlt'));
16
- }
17
-
18
- if( $this->getOption('right_robots_txt') ) {
19
- add_filter('robots_txt', array($this, 'rightRobotsTxt'));
20
- }
21
 
22
- if( $this->getOption('remove_last_item_breadcrumb_yoast') ) {
23
- add_filter('wpseo_breadcrumb_single_link', array($this, 'removeLastItemBreadcrumbYoast'));
24
- }
25
-
26
- if( $this->getOption('attachment_pages_redirect') ) {
27
- add_action('template_redirect', array($this, 'attachmentPagesRedirect'));
28
- }
29
-
30
- if( $this->getOption('remove_single_pagination_duplicate') ) {
31
- add_action('template_redirect', array($this, 'removeSinglePaginationDuplicate'));
32
- }
33
-
34
- if( $this->getOption('set_last_modified_headers') ) {
35
- add_action('template_redirect', array($this, 'setLastModifiedHeaders'));
36
- add_action('wp_logout', array($this, 'lastModifedFlushCookie'));
37
- }
38
 
39
- if( $this->getOption('yoast_remove_image_from_xml_sitemap') ) {
40
- $this->yoastRemoveImageFromXmlSitemap();
41
- }
42
-
43
- if( $this->getOption('yoast_remove_head_comment') ) {
44
- add_action('init', array($this, 'yoastRemoveHeadComment'));
45
- }
46
 
47
- if( $this->getOption('remove_replytocom') ) {
48
- add_action('template_redirect', array($this, 'removeReplytocomRedirect'), 1);
49
- add_filter('comment_reply_link', array($this, 'removeReplytocomLink'));
50
- }
51
 
52
- //if( $this->getOption('redirect_from_http_to_https') ) {
53
- //add_action('init', array($this, 'redirectFromHttpToHttps'));
54
- //}
 
55
 
56
- if( $this->getOption('yoast_remove_json_ld_search') ) {
57
- add_filter('disable_wpseo_json_ld_search', '__return_true');
58
  }
59
 
60
- if( $this->getOption('yoast_remove_json_ld_output') ) {
61
- add_filter('wpseo_json_ld_output', array($this, 'removeYoastJson'), 10, 1);
 
 
 
62
  }
63
 
64
- add_action('wp', array($this, 'redirectArchives'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  }
66
 
 
 
 
 
67
  public function removeYoastJson($data)
68
  {
69
  $data = array();
@@ -77,44 +102,87 @@
77
  * @param $content
78
  * @return mixed
79
  */
80
-
81
  public function contentImageAutoAlt($content)
82
  {
83
-
84
  global $post;
85
-
86
- $pattern = array(' alt=""', ' alt=\'\'');
87
-
88
- $replacement = array(
89
- ' alt="' . esc_attr($post->post_title) . '"',
90
- ' alt=\'' . esc_attr($post->post_title) . '\''
91
- );
92
-
93
- $content = str_replace($pattern, $replacement, $content);
94
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  return $content;
96
  }
97
 
98
  /**
99
- * Add directories to virtual robots.txt file
100
-
 
 
 
101
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
 
 
 
 
 
 
 
103
  public function rightRobotsTxt($output)
104
  {
105
  if( $this->getOption('robots_txt_text') ) {
106
  return $this->getOption('robots_txt_text');
107
  }
108
 
109
- return wbcr_clearfy_get_right_robot_txt();
110
  }
111
 
112
  /**
113
  * Remove last item from breadcrumbs SEO by YOAST
114
- * http://www.wpdiv.com/remove-post-title-yoast-seo-plugin-breadcrumb/
115
-
 
116
  */
117
-
118
  public function removeLastItemBreadcrumbYoast($link_output)
119
  {
120
 
@@ -131,8 +199,8 @@
131
 
132
  public function attachmentPagesRedirect()
133
  {
134
-
135
  global $post;
 
136
  if( is_attachment() ) {
137
  if( isset($post->post_parent) && ($post->post_parent != 0) ) {
138
  wp_redirect(get_permalink($post->post_parent), 301);
@@ -168,13 +236,10 @@
168
  /**
169
  * Remove yoast comment
170
  */
171
-
172
  public function yoastRemoveHeadComment()
173
  {
174
- if( defined('WPSEO_VERSION') && !is_admin() ) {
175
- add_action('get_header', array($this, 'yoastRemoveHeadCommentStart'));
176
- add_action('wp_head', array($this, 'yoastRemoveHeadCommentEnd'), 999);
177
- }
178
  }
179
 
180
  public function yoastRemoveHeadCommentStart()
@@ -198,9 +263,8 @@
198
 
199
  public function redirectArchives()
200
  {
201
-
202
  if( $this->getOption('redirect_archives_author') ) {
203
- if( is_author() && !is_admin() ) {
204
  wp_redirect(home_url(), 301);
205
 
206
  die();
@@ -208,7 +272,7 @@
208
  }
209
 
210
  if( $this->getOption('redirect_archives_date') ) {
211
- if( is_date() && !is_admin() ) {
212
  wp_redirect(home_url(), 301);
213
 
214
  die();
@@ -216,7 +280,7 @@
216
  }
217
 
218
  if( $this->getOption('redirect_archives_tag') ) {
219
- if( is_tag() && !is_admin() ) {
220
  wp_redirect(home_url(), 301);
221
 
222
  die();
@@ -229,8 +293,10 @@
229
  */
230
  public function removeReplytocomRedirect()
231
  {
232
- if( isset($_GET['replytocom']) && is_singular() ) {
233
- $post_url = get_permalink($GLOBALS['post']->ID);
 
 
234
  $comment_id = sanitize_text_field($_GET['replytocom']);
235
  $query_string = remove_query_arg('replytocom', sanitize_text_field($_SERVER['QUERY_STRING']));
236
 
@@ -239,7 +305,7 @@
239
  }
240
  $post_url .= '#comment-' . $comment_id;
241
 
242
- wp_redirect($post_url, 301);
243
  die();
244
  }
245
 
@@ -267,23 +333,10 @@
267
  return $output;
268
  }
269
 
270
- public function redirectFromHttpToHttps()
271
- {
272
- if( is_ssl() ) {
273
- return;
274
- }
275
- if( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
276
- wp_redirect(set_url_scheme($_SERVER['REQUEST_URI'], 'https'), 301);
277
- } else {
278
- wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301);
279
- }
280
- die();
281
- }
282
-
283
  public function setLastModifiedHeaders()
284
  {
285
- //todo: Fix bug, stop last modidifed headers for logged users
286
- if( is_user_logged_in() && (defined('DOING_AJAX') && DOING_AJAX) || (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) || (defined('REST_REQUEST') && REST_REQUEST) || (is_admin()) ) {
287
  return;
288
  }
289
 
@@ -291,7 +344,6 @@
291
  return;
292
  }
293
 
294
- //todo: Fix bug, admin bar is not hidden after logout
295
  $last_modified_flush = isset($_COOKIE['wbcr_lastmodifed_flush']);
296
 
297
  global $wp;
6
  * @copyright (c) 2017 Webraftic Ltd
7
  * @version 1.0
8
  */
9
+
10
+ // Exit if accessed directly
11
+ if( !defined('ABSPATH') ) {
12
+ exit;
13
+ }
14
+
15
+ class WCL_ConfigSeo extends Wbcr_FactoryClearfy200_Configurate {
16
+
17
+ /**
18
+ * @param WCL_Plugin $plugin
19
+ */
20
+ public function __construct(WCL_Plugin $plugin)
21
+ {
22
+ parent::__construct($plugin);
23
+
24
+ $this->plugin = $plugin;
25
+ }
26
 
27
  public function registerActionsAndFilters()
28
  {
29
+ if( !is_admin() ) {
30
+ if( $this->getOption('content_image_auto_alt') ) {
31
+ add_filter('the_content', array($this, 'contentImageAutoAlt'));
32
+ add_filter('wp_get_attachment_image_attributes', array(
33
+ $this,
34
+ 'changeAttachementImageAttributes'
35
+ ), 20, 2);
36
+ }
37
 
38
+ if( $this->getOption('right_robots_txt') ) {
39
+ add_filter('robots_txt', array($this, 'rightRobotsTxt'), 9999);
40
+ }
 
 
 
 
41
 
42
+ if( $this->getOption('remove_last_item_breadcrumb_yoast') ) {
43
+ add_filter('wpseo_breadcrumb_single_link', array($this, 'removeLastItemBreadcrumbYoast'));
44
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
+ if( $this->getOption('attachment_pages_redirect') ) {
47
+ add_action('template_redirect', array($this, 'attachmentPagesRedirect'));
48
+ }
 
 
 
 
49
 
50
+ if( $this->getOption('remove_single_pagination_duplicate') ) {
51
+ add_action('template_redirect', array($this, 'removeSinglePaginationDuplicate'));
52
+ }
 
53
 
54
+ if( $this->getOption('remove_replytocom') ) {
55
+ add_action('template_redirect', array($this, 'removeReplytocomRedirect'), 1);
56
+ add_filter('comment_reply_link', array($this, 'removeReplytocomLink'));
57
+ }
58
 
59
+ add_action('wp', array($this, 'redirectArchives'));
 
60
  }
61
 
62
+ if( $this->getOption('set_last_modified_headers') ) {
63
+ if( !is_admin() ) {
64
+ add_action('template_redirect', array($this, 'setLastModifiedHeaders'));
65
+ }
66
+ add_action('wp_logout', array($this, 'lastModifedFlushCookie'));
67
  }
68
 
69
+ if( $this->plugin->isActivateComponent('yoast_seo') && defined('WPSEO_VERSION') ) {
70
+ if( !is_admin() ) {
71
+ if( $this->getOption('yoast_remove_json_ld_search') ) {
72
+ add_filter('disable_wpseo_json_ld_search', '__return_true');
73
+ }
74
+
75
+ if( $this->getOption('yoast_remove_json_ld_output') ) {
76
+ add_filter('wpseo_json_ld_output', array($this, 'removeYoastJson'), 10, 1);
77
+ }
78
+ if( $this->getOption('yoast_remove_head_comment') ) {
79
+ add_action('init', array($this, 'yoastRemoveHeadComment'));
80
+ }
81
+ }
82
+ if( $this->getOption('yoast_remove_image_from_xml_sitemap') ) {
83
+ $this->yoastRemoveImageFromXmlSitemap();
84
+ }
85
+ }
86
  }
87
 
88
+ /**
89
+ * @param $data
90
+ * @return array
91
+ */
92
  public function removeYoastJson($data)
93
  {
94
  $data = array();
102
  * @param $content
103
  * @return mixed
104
  */
105
+
106
  public function contentImageAutoAlt($content)
107
  {
 
108
  global $post;
109
+
110
+ if( empty($post) ) {
111
+ return $content;
112
+ }
113
+
114
+ $old_content = $content;
115
+
116
+ preg_match_all('/<img[^>]+>/', $content, $images);
117
+
118
+ if( !is_null($images) ) {
119
+ foreach($images[0] as $index => $value) {
120
+ if( !preg_match('/alt=/', $value) ) {
121
+ $new_img = str_replace('<img', '<img alt="' . esc_attr($post->post_title) . '"', $images[0][$index]);
122
+ $content = str_replace($images[0][$index], $new_img, $content);
123
+ } else if( preg_match('/alt=[\s"\']{2,3}/', $value) ) {
124
+ $new_img = preg_replace('/alt=[\s"\']{2,3}/', 'alt="' . esc_attr($post->post_title) . '"', $images[0][$index]);
125
+ $content = str_replace($images[0][$index], $new_img, $content);
126
+ }
127
+ }
128
+ }
129
+
130
+ if( empty($content) ) {
131
+ return $old_content;
132
+ }
133
+
134
  return $content;
135
  }
136
 
137
  /**
138
+ * Setting attributes for post thumnails
139
+ *
140
+ * @param $attr
141
+ * @param $attachment
142
+ * @return mixed
143
  */
144
+ public function changeAttachementImageAttributes($attr, $attachment)
145
+ {
146
+ // Get post parent
147
+ $parent = get_post_field('post_parent', $attachment);
148
+
149
+ // Get post type to check if it's product
150
+ //$type = get_post_field('post_type', $parent);
151
+
152
+ /*if( $type != 'product' ) {
153
+ return $attr;
154
+ }*/
155
+
156
+ /// Get title
157
+ $title = get_post_field('post_title', $parent);
158
+
159
+ $attr['alt'] = $title;
160
+ $attr['title'] = $title;
161
+
162
+ return $attr;
163
+ }
164
 
165
+ /**
166
+ * Add directories to virtual robots.txt file
167
+ *
168
+ * @param string $output
169
+ * @return mixed|string|void
170
+ */
171
  public function rightRobotsTxt($output)
172
  {
173
  if( $this->getOption('robots_txt_text') ) {
174
  return $this->getOption('robots_txt_text');
175
  }
176
 
177
+ return WCL_Helper::getRightRobotTxt();
178
  }
179
 
180
  /**
181
  * Remove last item from breadcrumbs SEO by YOAST
182
+ *
183
+ * @param $link_output
184
+ * @return string
185
  */
 
186
  public function removeLastItemBreadcrumbYoast($link_output)
187
  {
188
 
199
 
200
  public function attachmentPagesRedirect()
201
  {
 
202
  global $post;
203
+
204
  if( is_attachment() ) {
205
  if( isset($post->post_parent) && ($post->post_parent != 0) ) {
206
  wp_redirect(get_permalink($post->post_parent), 301);
236
  /**
237
  * Remove yoast comment
238
  */
 
239
  public function yoastRemoveHeadComment()
240
  {
241
+ add_action('get_header', array($this, 'yoastRemoveHeadCommentStart'));
242
+ add_action('wp_head', array($this, 'yoastRemoveHeadCommentEnd'), 999);
 
 
243
  }
244
 
245
  public function yoastRemoveHeadCommentStart()
263
 
264
  public function redirectArchives()
265
  {
 
266
  if( $this->getOption('redirect_archives_author') ) {
267
+ if( is_author() ) {
268
  wp_redirect(home_url(), 301);
269
 
270
  die();
272
  }
273
 
274
  if( $this->getOption('redirect_archives_date') ) {
275
+ if( is_date() ) {
276
  wp_redirect(home_url(), 301);
277
 
278
  die();
280
  }
281
 
282
  if( $this->getOption('redirect_archives_tag') ) {
283
+ if( is_tag() ) {
284
  wp_redirect(home_url(), 301);
285
 
286
  die();
293
  */
294
  public function removeReplytocomRedirect()
295
  {
296
+ global $post;
297
+
298
+ if( !empty($post) && isset($_GET['replytocom']) && is_singular() ) {
299
+ $post_url = get_permalink($post->ID);
300
  $comment_id = sanitize_text_field($_GET['replytocom']);
301
  $query_string = remove_query_arg('replytocom', sanitize_text_field($_SERVER['QUERY_STRING']));
302
 
305
  }
306
  $post_url .= '#comment-' . $comment_id;
307
 
308
+ wp_safe_redirect($post_url, 301);
309
  die();
310
  }
311
 
333
  return $output;
334
  }
335
 
336
+ //todo: Доработать функцию для главной страницы сайта. Страница должно обновляться по последней добавленной статье.
 
 
 
 
 
 
 
 
 
 
 
 
337
  public function setLastModifiedHeaders()
338
  {
339
+ if( is_user_logged_in() && (defined('DOING_AJAX') && DOING_AJAX) || (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) || (defined('REST_REQUEST') && REST_REQUEST) ) {
 
340
  return;
341
  }
342
 
344
  return;
345
  }
346
 
 
347
  $last_modified_flush = isset($_COOKIE['wbcr_lastmodifed_flush']);
348
 
349
  global $wp;
includes/classes/class.wordpress-sanitize.php DELETED
@@ -1,320 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * @package name: Germanix URL
5
- * @author URI - http://toscho.de/2010/wordpress-plugin-germanix/
6
- * @author - Thomas Scholz
7
- */
8
- class Wbcr_Germanizer {
9
-
10
- /**
11
- * Fixes names of uploaded files.
12
- * »häßliches bild.jpg« => haessliches-bild.jpg
13
- *
14
- * @param string $filename
15
- * @return string
16
- */
17
- static function sanitize_filename_filter($filename)
18
- {
19
- // Windows LiveWriter sends escaped strings.
20
- $filename = html_entity_decode($filename, ENT_QUOTES, 'utf-8');
21
- $filename = self::translit($filename);
22
- $filename = self::lower_ascii($filename);
23
- $filename = self::remove_doubles($filename);
24
-
25
- return $filename;
26
- }
27
-
28
- /**
29
- * Fixes URI slugs.
30
- *
31
- * If you don't have any latin characters in your title you may end up
32
- * with an empty title. WordPress will use the post ID then.
33
- *
34
- * @param string $title
35
- * @param string $raw_title
36
- * @return string
37
- */
38
- static function sanitize_title_filter($title, $raw_title = null)
39
- {
40
- !is_null($raw_title) and $title = $raw_title;
41
-
42
- $title = self::sanitize_filename_filter($title);
43
- $title = str_replace('.', '-', $title);
44
- // Avoid double minus. WordPress cannot resolve such URLs.
45
- $title = preg_replace('~--+~', '-', $title);
46
-
47
- // For %postname%-%post_id% permalinks.
48
- return rtrim($title, '-');
49
- }
50
-
51
- /**
52
- * Reduces repeated meta characters (-=+.) to one.
53
- *
54
- * @uses apply_filters( 'germanix_remove_doubles_regex' )
55
- * @param string $str Input string
56
- * @return string
57
- */
58
- static function remove_doubles($str)
59
- {
60
- $regex = apply_filters('germanix_remove_doubles_regex', array(
61
- 'pattern' => '~([=+.-])\\1+~',
62
- 'replacement' => "\\1"
63
- ));
64
-
65
- return preg_replace($regex['pattern'], $regex['replacement'], $str);
66
- }
67
-
68
- /**
69
- * Converts uppercase characters to lowercase and removes the rest.
70
- *
71
- * @uses apply_filters( 'germanix_lower_ascii_regex' )
72
- * @param string $str Input string
73
- * @return string
74
- */
75
- static function lower_ascii($str)
76
- {
77
- $str = strtolower($str);
78
- $regex = apply_filters('germanix_lower_ascii_regex', array(
79
- 'pattern' => '~([^a-z\d_.-])~',
80
- 'replacement' => ''
81
- ));
82
- // Leave underscores, otherwise the taxonomy tag cloud in the
83
- // backend won’t work anymore.
84
- return preg_replace($regex['pattern'], $regex['replacement'], $str);
85
- }
86
-
87
- /**
88
- * Replaces non ASCII chars.
89
- *
90
- * wp-includes/formatting.php#L531 is unfortunately completely inappropriate.
91
- * Modified version of Heiko Rabe’s code.
92
- *
93
- * @author Heiko Rabe http://code-styling.de
94
- * @link http://www.code-styling.de/?p=574
95
- * @param string $str
96
- * @return string
97
- */
98
- static function translit($str)
99
- {
100
- $utf8 = array(
101
- 'Ä' => 'Ae',
102
- 'ä' => 'ae',
103
- 'Æ' => 'Ae',
104
- 'æ' => 'ae',
105
- 'À' => 'A',
106
- 'à' => 'a',
107
- 'Á' => 'A',
108
- 'á' => 'a',
109
- 'Â' => 'A',
110
- 'â' => 'a',
111
- 'Ã' => 'A',
112
- 'ã' => 'a',
113
- 'Å' => 'A',
114
- 'å' => 'a',
115
- 'ª' => 'a',
116
- 'ₐ' => 'a',
117
- 'ā' => 'a',
118
- 'Ć' => 'C',
119
- 'ć' => 'c',
120
- 'Ç' => 'C',
121
- 'ç' => 'c',
122
- 'Ð' => 'D',
123
- 'đ' => 'd',
124
- 'È' => 'E',
125
- 'è' => 'e',
126
- 'É' => 'E',
127
- 'é' => 'e',
128
- 'Ê' => 'E',
129
- 'ê' => 'e',
130
- 'Ë' => 'E',
131
- 'ë' => 'e',
132
- 'ₑ' => 'e',
133
- 'ƒ' => 'f',
134
- 'ğ' => 'g',
135
- 'Ğ' => 'G',
136
- 'Ì' => 'I',
137
- 'ì' => 'i',
138
- 'Í' => 'I',
139
- 'í' => 'i',
140
- 'Î' => 'I',
141
- 'î' => 'i',
142
- 'Ï' => 'Ii',
143
- 'ï' => 'ii',
144
- 'ī' => 'i',
145
- 'ı' => 'i',
146
- 'I' => 'I' // turkish, correct?
147
- ,
148
- 'Ñ' => 'N',
149
- 'ñ' => 'n',
150
- 'ⁿ' => 'n',
151
- 'Ò' => 'O',
152
- 'ò' => 'o',
153
- 'Ó' => 'O',
154
- 'ó' => 'o',
155
- 'Ô' => 'O',
156
- 'ô' => 'o',
157
- 'Õ' => 'O',
158
- 'õ' => 'o',
159
- 'Ø' => 'O',
160
- 'ø' => 'o',
161
- 'ₒ' => 'o',
162
- 'Ö' => 'Oe',
163
- 'ö' => 'oe',
164
- 'Œ' => 'Oe',
165
- 'œ' => 'oe',
166
- 'ß' => 'ss',
167
- 'Š' => 'S',
168
- 'š' => 's',
169
- 'ş' => 's',
170
- 'Ş' => 'S',
171
- '™' => 'TM',
172
- 'Ù' => 'U',
173
- 'ù' => 'u',
174
- 'Ú' => 'U',
175
- 'ú' => 'u',
176
- 'Û' => 'U',
177
- 'û' => 'u',
178
- 'Ü' => 'Ue',
179
- 'ü' => 'ue',
180
- 'Ý' => 'Y',
181
- 'ý' => 'y',
182
- 'ÿ' => 'y',
183
- 'Ž' => 'Z',
184
- 'ž' => 'z'// misc
185
- ,
186
- '¢' => 'Cent',
187
- '€' => 'Euro',
188
- '‰' => 'promille',
189
- '№' => 'Nr',
190
- '$' => 'Dollar',
191
- '℃' => 'Grad Celsius',
192
- '°C' => 'Grad Celsius',
193
- '℉' => 'Grad Fahrenheit',
194
- '°F' => 'Grad Fahrenheit'// Superscripts
195
- ,
196
- '⁰' => '0',
197
- '¹' => '1',
198
- '²' => '2',
199
- '³' => '3',
200
- '⁴' => '4',
201
- '⁵' => '5',
202
- '⁶' => '6',
203
- '⁷' => '7',
204
- '⁸' => '8',
205
- '⁹' => '9'// Subscripts
206
- ,
207
- '₀' => '0',
208
- '₁' => '1',
209
- '₂' => '2',
210
- '₃' => '3',
211
- '₄' => '4',
212
- '₅' => '5',
213
- '₆' => '6',
214
- '₇' => '7',
215
- '₈' => '8',
216
- '₉' => '9'// Operators, punctuation
217
- ,
218
- '±' => 'plusminus',
219
- '×' => 'x',
220
- '₊' => 'plus',
221
- '₌' => '=',
222
- '⁼' => '=',
223
- '⁻' => '-' // sup minus
224
- ,
225
- '₋' => '-' // sub minus
226
- ,
227
- '–' => '-' // ndash
228
- ,
229
- '—' => '-' // mdash
230
- ,
231
- '‑' => '-' // non breaking hyphen
232
- ,
233
- '․' => '.' // one dot leader
234
- ,
235
- '‥' => '..' // two dot leader
236
- ,
237
- '…' => '...' // ellipsis
238
- ,
239
- '‧' => '.' // hyphenation point
240
- ,
241
- ' ' => '-' // nobreak space
242
- ,
243
- ' ' => '-' // normal space
244
- // Russian
245
- ,
246
- 'А' => 'A',
247
- 'Б' => 'B',
248
- 'В' => 'V',
249
- 'Г' => 'G',
250
- 'Д' => 'D',
251
- 'Е' => 'E',
252
- 'Ё' => 'YO',
253
- 'Ж' => 'ZH',
254
- 'З' => 'Z',
255
- 'И' => 'I',
256
- 'Й' => 'Y',
257
- 'К' => 'K',
258
- 'Л' => 'L',
259
- 'М' => 'M',
260
- 'Н' => 'N',
261
- 'О' => 'O',
262
- 'П' => 'P',
263
- 'Р' => 'R',
264
- 'С' => 'S',
265
- 'Т' => 'T',
266
- 'У' => 'U',
267
- 'Ф' => 'F',
268
- 'Х' => 'H',
269
- 'Ц' => 'TS',
270
- 'Ч' => 'CH',
271
- 'Ш' => 'SH',
272
- 'Щ' => 'SCH',
273
- 'Ъ' => '',
274
- 'Ы' => 'YI',
275
- 'Ь' => '',
276
- 'Э' => 'E',
277
- 'Ю' => 'YU',
278
- 'Я' => 'YA',
279
- 'а' => 'a',
280
- 'б' => 'b',
281
- 'в' => 'v',
282
- 'г' => 'g',
283
- 'д' => 'd',
284
- 'е' => 'e',
285
- 'ё' => 'yo',
286
- 'ж' => 'zh',
287
- 'з' => 'z',
288
- 'и' => 'i',
289
- 'й' => 'y',
290
- 'к' => 'k',
291
- 'л' => 'l',
292
- 'м' => 'm',
293
- 'н' => 'n',
294
- 'о' => 'o',
295
- 'п' => 'p',
296
- 'р' => 'r',
297
- 'с' => 's',
298
- 'т' => 't',
299
- 'у' => 'u',
300
- 'ф' => 'f',
301
- 'х' => 'h',
302
- 'ц' => 'ts',
303
- 'ч' => 'ch',
304
- 'ш' => 'sh',
305
- 'щ' => 'sch',
306
- 'ъ' => '',
307
- 'ы' => 'yi',
308
- 'ь' => '',
309
- 'э' => 'e',
310
- 'ю' => 'yu',
311
- 'я' => 'ya'
312
- );
313
-
314
- $utf8 = apply_filters('germanix_translit_list', $utf8);
315
-
316
- $str = strtr($str, $utf8);
317
-
318
- return trim($str, '-');
319
- }
320
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/classes/class.zip-archive.php CHANGED
@@ -6,6 +6,11 @@
6
  * @version 1.0
7
  */
8
 
 
 
 
 
 
9
  if( !class_exists('ZipArchive') ) {
10
  wp_die(__('The ZipArchive class does not exist in this version of php.'));
11
  }
6
  * @version 1.0
7
  */
8
 
9
+ // Exit if accessed directly
10
+ if( !defined('ABSPATH') ) {
11
+ exit;
12
+ }
13
+
14
  if( !class_exists('ZipArchive') ) {
15
  wp_die(__('The ZipArchive class does not exist in this version of php.'));
16
  }
includes/classes/index.php ADDED
File without changes
includes/functions.php DELETED
@@ -1,263 +0,0 @@
1
- <?php
2
- /**
3
- * Helpers functions
4
- * @author Webcraftic <wordpress.webraftic@gmail.com>
5
- * @copyright (c) 2017 Webraftic Ltd
6
- * @version 1.0
7
- */
8
-
9
- /**
10
- * @param string $return
11
- * @return array|string
12
- */
13
- function wbcr_get_export_options($return = 'json')
14
- {
15
- global $wpdb, $wbcr_clearfy_plugin;
16
-
17
- $export_options = array();
18
- $request = $wpdb->get_results("SELECT option_name, option_value FROM {$wpdb->prefix}options WHERE option_name LIKE '" . $wbcr_clearfy_plugin->pluginName . "_%'");
19
-
20
- if( !empty($request) ) {
21
- foreach($request as $option) {
22
- $export_options[$option->option_name] = $option->option_value;
23
- }
24
- }
25
-
26
- if( $return == 'array' ) {
27
- return $export_options;
28
- }
29
-
30
- return wbcr_get_escape_json($export_options);
31
- }
32
-
33
- /**
34
- * Merge arrays, inserting $arr2 into $arr1 before/after certain key
35
- *
36
- * @param array $arr Modifyed array
37
- * @param array $inserted Inserted array
38
- * @param string $position 'before' / 'after' / 'top' / 'bottom'
39
- * @param string $key Associative key of $arr1 for before/after insertion
40
- *
41
- * @return array
42
- */
43
- function wbcr_array_merge_insert(array $arr, array $inserted, $position = 'bottom', $key = null)
44
- {
45
- if( $position == 'top' ) {
46
- return array_merge($inserted, $arr);
47
- }
48
- $key_position = ($key === null)
49
- ? false
50
- : array_search($key, array_keys($arr));
51
- if( $key_position === false OR ($position != 'before' AND $position != 'after') ) {
52
- return array_merge($arr, $inserted);
53
- }
54
- if( $position == 'after' ) {
55
- $key_position++;
56
- }
57
-
58
- return array_merge(array_slice($arr, 0, $key_position, true), $inserted, array_slice($arr, $key_position, null, true));
59
- }
60
-
61
- /**
62
- * Try to get variable from JSON-encoded post variable
63
- *
64
- * Note: we pass some params via json-encoded variables, as via pure post some data (ex empty array) will be absent
65
- *
66
- * @param string $name $_POST's variable name
67
- *
68
- * @return array
69
- */
70
- function wbcr_maybe_get_post_json($name)
71
- {
72
- if( isset($_POST[$name]) AND is_string($_POST[$name]) ) {
73
- $result = json_decode(stripslashes($_POST[$name]), true);
74
- if( !is_array($result) ) {
75
- $result = array();
76
- }
77
-
78
- return $result;
79
- } else {
80
- return array();
81
- }
82
- }
83
-
84
- /**
85
- * Escape json data
86
- * @param array $data
87
- * @return string escaped json string
88
- */
89
- function wbcr_get_escape_json(array $data)
90
- {
91
- return htmlspecialchars(json_encode($data), ENT_QUOTES, 'UTF-8');
92
- }
93
-
94
- /**
95
- * Html minify function by Tim Eckel<tim@leethost.com>
96
- * @param $buffer
97
- * @return mixed
98
- */
99
- function wbcr_clearfy_minify_html_output($buffer)
100
- {
101
- if( substr(ltrim($buffer), 0, 5) == '<?xml' ) {
102
- return ($buffer);
103
- }
104
- $minify_javascript = get_option('minify_javascript');
105
- $minify_html_comments = get_option('minify_html_comments');
106
- $minify_html_utf8 = get_option('minify_html_utf8');
107
- if( $minify_html_utf8 == 'yes' && mb_detect_encoding($buffer, 'UTF-8', true) ) {
108
- $mod = '/u';
109
- } else {
110
- $mod = '/s';
111
- }
112
- $buffer = str_replace(array(chr(13) . chr(10), chr(9)), array(chr(10), ''), $buffer);
113
- $buffer = str_ireplace(array(
114
- '<script',
115
- '/script>',
116
- '<pre',
117
- '/pre>',
118
- '<textarea',
119
- '/textarea>',
120
- '<style',
121
- '/style>'
122
- ), array(
123
- 'M1N1FY-ST4RT<script',
124
- '/script>M1N1FY-3ND',
125
- 'M1N1FY-ST4RT<pre',
126
- '/pre>M1N1FY-3ND',
127
- 'M1N1FY-ST4RT<textarea',
128
- '/textarea>M1N1FY-3ND',
129
- 'M1N1FY-ST4RT<style',
130
- '/style>M1N1FY-3ND'
131
- ), $buffer);
132
- $split = explode('M1N1FY-3ND', $buffer);
133
- $buffer = '';
134
- for($i = 0; $i < count($split); $i++) {
135
- $ii = strpos($split[$i], 'M1N1FY-ST4RT');
136
- if( $ii !== false ) {
137
- $process = substr($split[$i], 0, $ii);
138
- $asis = substr($split[$i], $ii + 12);
139
- if( substr($asis, 0, 7) == '<script' ) {
140
- $split2 = explode(chr(10), $asis);
141
- $asis = '';
142
- for($iii = 0; $iii < count($split2); $iii++) {
143
- if( $split2[$iii] ) {
144
- $asis .= trim($split2[$iii]) . chr(10);
145
- }
146
- if( $minify_javascript != 'no' ) {
147
- if( strpos($split2[$iii], '//') !== false && substr(trim($split2[$iii]), -1) == ';' ) {
148
- $asis .= chr(10);
149
- }
150
- }
151
- }
152
- if( $asis ) {
153
- $asis = substr($asis, 0, -1);
154
- }
155
- if( $minify_html_comments != 'no' ) {
156
- $asis = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $asis);
157
- }
158
- if( $minify_javascript != 'no' ) {
159
- $asis = str_replace(array(
160
- ';' . chr(10),
161
- '>' . chr(10),
162
- '{' . chr(10),
163
- '}' . chr(10),
164
- ',' . chr(10)
165
- ), array(';', '>', '{', '}', ','), $asis);
166
- }
167
- } else if( substr($asis, 0, 6) == '<style' ) {
168
- $asis = preg_replace(array('/\>[^\S ]+' . $mod, '/[^\S ]+\<' . $mod, '/(\s)+' . $mod), array(
169
- '>',
170
- '<',
171
- '\\1'
172
- ), $asis);
173
- if( $minify_html_comments != 'no' ) {
174
- $asis = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $asis);
175
- }
176
- $asis = str_replace(array(
177
- chr(10),
178
- ' {',
179
- '{ ',
180
- ' }',
181
- '} ',
182
- '( ',
183
- ' )',
184
- ' :',
185
- ': ',
186
- ' ;',
187
- '; ',
188
- ' ,',
189
- ', ',
190
- ';}'
191
- ), array('', '{', '{', '}', '}', '(', ')', ':', ':', ';', ';', ',', ',', '}'), $asis);
192
- }
193
- } else {
194
- $process = $split[$i];
195
- $asis = '';
196
- }
197
- $process = preg_replace(array('/\>[^\S ]+' . $mod, '/[^\S ]+\<' . $mod, '/(\s)+' . $mod), array(
198
- '>',
199
- '<',
200
- '\\1'
201
- ), $process);
202
- if( $minify_html_comments != 'no' ) {
203
- $process = preg_replace('/<!--(?!\s*(?:\[if [^\]]+]|<!|>))(?:(?!-->).)*-->' . $mod, '', $process);
204
- }
205
- $buffer .= $process . $asis;
206
- }
207
- $buffer = str_replace(array(
208
- chr(10) . '<script',
209
- chr(10) . '<style',
210
- '*/' . chr(10),
211
- 'M1N1FY-ST4RT'
212
- ), array('<script', '<style', '*/', ''), $buffer);
213
- $minify_html_xhtml = get_option('minify_html_xhtml');
214
- $minify_html_relative = get_option('minify_html_relative');
215
- $minify_html_scheme = get_option('minify_html_scheme');
216
- if( $minify_html_xhtml == 'yes' && strtolower(substr(ltrim($buffer), 0, 15)) == '<!doctype html>' ) {
217
- $buffer = str_replace(' />', '>', $buffer);
218
- }
219
- if( $minify_html_relative == 'yes' ) {
220
- $buffer = str_replace(array(
221
- 'https://' . $_SERVER['HTTP_HOST'] . '/',
222
- 'http://' . $_SERVER['HTTP_HOST'] . '/',
223
- '//' . $_SERVER['HTTP_HOST'] . '/'
224
- ), array('/', '/', '/'), $buffer);
225
- }
226
- if( $minify_html_scheme == 'yes' ) {
227
- $buffer = str_replace(array('http://', 'https://'), '//', $buffer);
228
- }
229
-
230
- return ($buffer);
231
- }
232
-
233
- /**
234
- * Componate content for robot.txt
235
- * @return string
236
- */
237
- function wbcr_clearfy_get_right_robot_txt()
238
- {
239
- $site_url = get_home_url();
240
- $dir_host = preg_replace("(^https?://)", "", $site_url);
241
-
242
- if( is_ssl() ) {
243
- $dir_host = 'https://' . $dir_host;
244
- }
245
-
246
- $file_path = WBCR_CLR_PLUGIN_DIR . '/templates/robots.txt';
247
- $file = fopen($file_path, 'r');
248
- $robot_default_content = fread($file, filesize($file_path));
249
- fclose($file);
250
-
251
- $output = $robot_default_content;
252
- $output .= 'Host: ' . $dir_host . PHP_EOL;
253
-
254
- $headers = @get_headers($site_url . '/sitemap.xml', 1);
255
-
256
- if( strpos($headers[0], '200 OK') !== false ) {
257
- $output .= 'Sitemap: ' . $site_url . '/sitemap.xml' . PHP_EOL;
258
- } else if( isset($headers['Location']) && !empty($headers['Location']) ) {
259
- $output .= 'Sitemap: ' . $headers['Location'] . PHP_EOL;
260
- }
261
-
262
- return $output;
263
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/helpers.php ADDED
@@ -0,0 +1,320 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Helpers functions
5
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
6
+ * @copyright (c) 2017 Webraftic Ltd
7
+ * @version 1.0
8
+ */
9
+
10
+ // Exit if accessed directly
11
+ if( !defined('ABSPATH') ) {
12
+ exit;
13
+ }
14
+
15
+ class WCL_Helper {
16
+
17
+ /**
18
+ * Is permalink enabled?
19
+ * @global WP_Rewrite $wp_rewrite
20
+ * @since 1.0.0
21
+ * @return bool
22
+ */
23
+ public static function isPermalink()
24
+ {
25
+ global $wp_rewrite;
26
+
27
+ if( !isset($wp_rewrite) || !is_object($wp_rewrite) || !$wp_rewrite->using_permalinks() ) {
28
+ return false;
29
+ }
30
+
31
+ return true;
32
+ }
33
+
34
+ /**
35
+ * Получает и возвращает все опции разрешенные для экспорта
36
+ *
37
+ * @param string $return
38
+ * @return array|string
39
+ */
40
+ public static function getExportOptions($return = 'json')
41
+ {
42
+ global $wpdb;
43
+
44
+ $export_options = array();
45
+
46
+ $options = WCL_Option::getAllOptions();
47
+
48
+ $allow_export_options = array();
49
+
50
+ foreach((array)$options as $option_class) {
51
+ $option_name = $option_class->getName();
52
+ $allow_export_options[] = WCL_Plugin::app()->getOptionName($option_name);
53
+ }
54
+
55
+ $request = $wpdb->get_results($wpdb->prepare("
56
+ SELECT option_name, option_value
57
+ FROM {$wpdb->prefix}options
58
+ WHERE option_name
59
+ LIKE '%s'", WCL_Plugin::app()->getPrefix() . "_%"));
60
+
61
+ if( !empty($request) && !empty($allow_export_options) ) {
62
+ foreach($request as $option) {
63
+ if( in_array($option->option_name, $allow_export_options) ) {
64
+ $export_options[$option->option_name] = $option->option_value;
65
+ }
66
+ }
67
+ }
68
+
69
+ if( $return == 'array' ) {
70
+ return $export_options;
71
+ }
72
+
73
+ return WCL_Helper::getEscapeJson($export_options);
74
+ }
75
+
76
+ /**
77
+ * Merge arrays, inserting $arr2 into $arr1 before/after certain key
78
+ *
79
+ * @param array $arr Modifyed array
80
+ * @param array $inserted Inserted array
81
+ * @param string $position 'before' / 'after' / 'top' / 'bottom'
82
+ * @param string $key Associative key of $arr1 for before/after insertion
83
+ *
84
+ * @return array
85
+ */
86
+ public static function arrayMergeInsert(array $arr, array $inserted, $position = 'bottom', $key = null)
87
+ {
88
+ if( $position == 'top' ) {
89
+ return array_merge($inserted, $arr);
90
+ }
91
+ $key_position = ($key === null)
92
+ ? false
93
+ : array_search($key, array_keys($arr));
94
+ if( $key_position === false OR ($position != 'before' AND $position != 'after') ) {
95
+ return array_merge($arr, $inserted);
96
+ }
97
+ if( $position == 'after' ) {
98
+ $key_position++;
99
+ }
100
+
101
+ return array_merge(array_slice($arr, 0, $key_position, true), $inserted, array_slice($arr, $key_position, null, true));
102
+ }
103
+
104
+ /**
105
+ * Try to get variable from JSON-encoded post variable
106
+ *
107
+ * Note: we pass some params via json-encoded variables, as via pure post some data (ex empty array) will be absent
108
+ *
109
+ * @param string $name $_POST's variable name
110
+ *
111
+ * @return array
112
+ */
113
+ public static function maybeGetPostJson($name)
114
+ {
115
+ if( isset($_POST[$name]) AND is_string($_POST[$name]) ) {
116
+ $result = json_decode(stripslashes($_POST[$name]), true);
117
+ if( !is_array($result) ) {
118
+ $result = array();
119
+ }
120
+
121
+ return $result;
122
+ } else {
123
+ return array();
124
+ }
125
+ }
126
+
127
+ /**
128
+ * Escape json data
129
+ * @param array $data
130
+ * @return string escaped json string
131
+ */
132
+ public static function getEscapeJson(array $data)
133
+ {
134
+ return htmlspecialchars(json_encode($data), ENT_QUOTES, 'UTF-8');
135
+ }
136
+
137
+ /**
138
+ * Html minify function by Tim Eckel<tim@leethost.com>
139
+ * @param $buffer
140
+ * @return mixed
141
+ */
142
+
143
+ public static function minifyHtml($buffer)
144
+ {
145
+ if( substr(ltrim($buffer), 0, 5) == '<?xml' ) {
146
+ return ($buffer);
147
+ }
148
+
149
+ $minify_javascript = WCL_Plugin::app()->getOption('minify_javascript');
150
+ $minify_html_comments = WCL_Plugin::app()->getOption('minify_html_comments');
151
+ $minify_html_utf8 = WCL_Plugin::app()->getOption('minify_html_utf8');
152
+
153
+ if( $minify_html_utf8 && mb_detect_encoding($buffer, 'UTF-8', true) ) {
154
+ $mod = '/u';
155
+ } else {
156
+ $mod = '/s';
157
+ }
158
+ $buffer = str_replace(array(chr(13) . chr(10), chr(9)), array(chr(10), ''), $buffer);
159
+ $buffer = str_ireplace(array(
160
+ '<script',
161
+ '/script>',
162
+ '<pre',
163
+ '/pre>',
164
+ '<textarea',
165
+ '/textarea>',
166
+ '<style',
167
+ '/style>'
168
+ ), array(
169
+ 'M1N1FY-ST4RT<script',
170
+ '/script>M1N1FY-3ND',
171
+ 'M1N1FY-ST4RT<pre',
172
+ '/pre>M1N1FY-3ND',
173
+ 'M1N1FY-ST4RT<textarea',
174
+ '/textarea>M1N1FY-3ND',
175
+ 'M1N1FY-ST4RT<style',
176
+ '/style>M1N1FY-3ND'
177
+ ), $buffer);
178
+ $split = explode('M1N1FY-3ND', $buffer);
179
+ $buffer = '';
180
+ for($i = 0; $i < count($split); $i++) {
181
+ $ii = strpos($split[$i], 'M1N1FY-ST4RT');
182
+ if( $ii !== false ) {
183
+ $process = substr($split[$i], 0, $ii);
184
+ $asis = substr($split[$i], $ii + 12);
185
+ if( substr($asis, 0, 7) == '<script' ) {
186
+ $split2 = explode(chr(10), $asis);
187
+ $asis = '';
188
+ for($iii = 0; $iii < count($split2); $iii++) {
189
+ if( $split2[$iii] ) {
190
+ $asis .= trim($split2[$iii]) . chr(10);
191
+ }
192
+ if( $minify_javascript != 'no' ) {
193
+ if( strpos($split2[$iii], '//') !== false && substr(trim($split2[$iii]), -1) == ';' ) {
194
+ $asis .= chr(10);
195
+ }
196
+ }
197
+ }
198
+ if( $asis ) {
199
+ $asis = substr($asis, 0, -1);
200
+ }
201
+ if( $minify_html_comments ) {
202
+ $asis = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $asis);
203
+ }
204
+ if( $minify_javascript != 'no' ) {
205
+ $asis = str_replace(array(
206
+ ';' . chr(10),
207
+ '>' . chr(10),
208
+ '{' . chr(10),
209
+ '}' . chr(10),
210
+ ',' . chr(10)
211
+ ), array(';', '>', '{', '}', ','), $asis);
212
+ }
213
+ } else if( substr($asis, 0, 6) == '<style' ) {
214
+ $asis = preg_replace(array('/\>[^\S ]+' . $mod, '/[^\S ]+\<' . $mod, '/(\s)+' . $mod), array(
215
+ '>',
216
+ '<',
217
+ '\\1'
218
+ ), $asis);
219
+ if( $minify_html_comments ) {
220
+ $asis = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $asis);
221
+ }
222
+ $asis = str_replace(array(
223
+ chr(10),
224
+ ' {',
225
+ '{ ',
226
+ ' }',
227
+ '} ',
228
+ '( ',
229
+ ' )',
230
+ ' :',
231
+ ': ',
232
+ ' ;',
233
+ '; ',
234
+ ' ,',
235
+ ', ',
236
+ ';}'
237
+ ), array('', '{', '{', '}', '}', '(', ')', ':', ':', ';', ';', ',', ',', '}'), $asis);
238
+ }
239
+ } else {
240
+ $process = $split[$i];
241
+ $asis = '';
242
+ }
243
+ $process = preg_replace(array('/\>[^\S ]+' . $mod, '/[^\S ]+\<' . $mod, '/(\s)+' . $mod), array(
244
+ '>',
245
+ '<',
246
+ '\\1'
247
+ ), $process);
248
+ if( $minify_html_comments ) {
249
+ $process = preg_replace('/<!--(?!\s*(?:\[if [^\]]+]|<!|\s?ngg_resource|>))(?:(?!-->).)*-->' . $mod, '', $process);
250
+ }
251
+ $buffer .= $process . $asis;
252
+ }
253
+ $buffer = str_replace(array(
254
+ chr(10) . '<script',
255
+ chr(10) . '<style',
256
+ '*/' . chr(10),
257
+ 'M1N1FY-ST4RT'
258
+ ), array('<script', '<style', '*/', ''), $buffer);
259
+
260
+ $minify_html_xhtml = WCL_Plugin::app()->getOption('minify_html_xhtml');
261
+ $minify_html_relative = WCL_Plugin::app()->getOption('minify_html_relative');
262
+ $minify_html_scheme = WCL_Plugin::app()->getOption('minify_html_scheme');
263
+
264
+ if( $minify_html_xhtml && strtolower(substr(ltrim($buffer), 0, 15)) == '<!doctype html>' ) {
265
+ $buffer = str_replace(' />', '>', $buffer);
266
+ }
267
+ if( $minify_html_relative ) {
268
+ $buffer = str_replace(array(
269
+ 'https://' . $_SERVER['HTTP_HOST'] . '/',
270
+ 'http://' . $_SERVER['HTTP_HOST'] . '/',
271
+ '//' . $_SERVER['HTTP_HOST'] . '/'
272
+ ), array('/', '/', '/'), $buffer);
273
+ }
274
+ if( $minify_html_scheme ) {
275
+ $buffer = str_replace(array('http://', 'https://'), '//', $buffer);
276
+ }
277
+
278
+ return ($buffer);
279
+ }
280
+
281
+ /**
282
+ * Componate content for robot.txt
283
+ * @return string
284
+ */
285
+ public static function getRightRobotTxt()
286
+ {
287
+ $cache_output = WCL_Plugin::app()->getOption('robots_txt_text_cache');
288
+
289
+ if( $cache_output ) {
290
+ return $cache_output;
291
+ }
292
+
293
+ $site_url = get_home_url();
294
+ $dir_host = preg_replace("(^https?://)", "", $site_url);
295
+
296
+ if( is_ssl() ) {
297
+ $dir_host = 'https://' . $dir_host;
298
+ }
299
+
300
+ $file_path = WCL_PLUGIN_DIR . '/templates/robots.txt';
301
+ $file = fopen($file_path, 'r');
302
+ $robot_default_content = fread($file, filesize($file_path));
303
+ fclose($file);
304
+
305
+ $output = $robot_default_content;
306
+ $output .= 'Host: ' . $dir_host . PHP_EOL;
307
+
308
+ $headers = @get_headers($site_url . '/sitemap.xml', 1);
309
+
310
+ if( strpos($headers[0], '200 OK') !== false ) {
311
+ $output .= 'Sitemap: ' . $site_url . '/sitemap.xml' . PHP_EOL;
312
+ } else if( isset($headers['Location']) && !empty($headers['Location']) ) {
313
+ $output .= 'Sitemap: ' . $headers['Location'] . PHP_EOL;
314
+ }
315
+
316
+ WCL_Plugin::app()->updateOption('robots_txt_text_cache', $output);
317
+
318
+ return $output;
319
+ }
320
+ }
includes/index.php ADDED
File without changes
includes/update-local-ga.php ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Script to update local-ga.js-file
4
+ * Credits go to: Matthew Horne | http://diywpblog.com/leverage-browser-cache-optimize-google-analytics/
5
+ * I adjusted this script to work with wp-cron. It will still run in crontab, though.
6
+ * To run the script in crontab, remove the code on lines 8 and 9.
7
+ */
8
+ // Exit if accessed directly.
9
+ if( !defined('ABSPATH') ) {
10
+ exit;
11
+ }
12
+
13
+ // Remote file to download.
14
+ $remote_file = 'https://www.google-analytics.com/analytics.js';
15
+ $local_file = WCL_PLUGIN_DIR . '/cache/local-ga.js';
16
+
17
+ // Connection time out.
18
+ $conn_timeout = 10;
19
+ $url = wp_parse_url($remote_file);
20
+ $host = $url['host'];
21
+ $path = isset($url['path'])
22
+ ? $url['path']
23
+ : '/';
24
+
25
+ if( isset($url['query']) ) {
26
+ $path .= '?' . $url['query'];
27
+ }
28
+
29
+ $port = isset($url['port'])
30
+ ? $url['port']
31
+ : '80';
32
+ $fp = @fsockopen($host, '80', $errno, $errstr, $conn_timeout);
33
+
34
+ if( !$fp ) {
35
+ // On connection failure return the cached file (if exists).
36
+ if( file_exists($local_file) ) {
37
+ readfile($local_file);
38
+ }
39
+ } else {
40
+ // Send the header information
41
+ $header = "GET $path HTTP/1.0\r\n";
42
+ $header .= "Host: $host\r\n";
43
+ $header .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\r\n";
44
+ $header .= "Accept: */*\r\n";
45
+ $header .= "Accept-Language: en-us,en;q=0.5\r\n";
46
+ $header .= "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n";
47
+ $header .= "Keep-Alive: 300\r\n";
48
+ $header .= "Connection: keep-alive\r\n";
49
+ $header .= "Referer: http://$host\r\n\r\n";
50
+ fputs($fp, $header);
51
+ $response = '';
52
+
53
+ // Get the response from the remote server.
54
+ while( $line = fread($fp, 4096) ) {
55
+ $response .= $line;
56
+ }
57
+
58
+ // Close the connection.
59
+ fclose($fp);
60
+
61
+ // Remove the headers.
62
+ $pos = strpos($response, "\r\n\r\n");
63
+ $response = substr($response, $pos + 4);
64
+
65
+ // Return the processed response.
66
+ echo $response;
67
+
68
+ // Save the response to the local file.
69
+ if( !file_exists($local_file) ) {
70
+ // Try to create the file, if doesn't exist.
71
+ fopen($local_file, 'w');
72
+ }
73
+
74
+ if( is_writable($local_file) ) {
75
+ $fp = fopen($local_file, 'w');
76
+ if( $fp ) {
77
+ fwrite($fp, $response);
78
+ fclose($fp);
79
+ }
80
+ }
81
+ }// End if().
index.php ADDED
File without changes
languages/clearfy-fr_FR.mo DELETED
Binary file
languages/clearfy-fr_FR.po DELETED
@@ -1,1312 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Webcraftic Clearfy - disable unused features\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2017-11-05 21:15+0000\n"
6
- "PO-Revision-Date: 2017-11-09 04:37+0100\n"
7
- "Last-Translator: Robert <soutien@bestgoodeal.eu>\n"
8
- "Language-Team: French (France)\n"
9
- "Language: fr_FR\n"
10
- "Plural-Forms: nplurals=2; plural=n > 1;\n"
11
- "MIME-Version: 1.0\n"
12
- "Content-Type: text/plain; charset=UTF-8\n"
13
- "Content-Transfer-Encoding: 8bit\n"
14
- "X-Generator: Poedit 2.0.4\n"
15
-
16
- #: clearfy.php:37
17
- msgid "Clearfy"
18
- msgstr "Clarifier"
19
-
20
- #: includes/classes/class.configurate-advanced.php:265
21
- msgid "Howdy"
22
- msgstr "Salut"
23
-
24
- #: includes/classes/class.configurate-advanced.php:265
25
- msgid "Welcome"
26
- msgstr "Bienvenue"
27
-
28
- #: includes/classes/class.configurate-security.php:30
29
- msgid "<strong>ERROR</strong>: Wrong login or password"
30
- msgstr "<strong>ERREUR</strong>: Identifiant ou mot de passe incorrect"
31
-
32
- #: admin/includes/options.php:12 admin/pages/code-clean.php:76
33
- msgid "Remove REST API Links"
34
- msgstr "Supprimer les liens API REST"
35
-
36
- #: admin/includes/options.php:17 admin/pages/code-clean.php:86
37
- msgid "Disable Emojis"
38
- msgstr "Désactiver les émoticônes"
39
-
40
- #: admin/includes/options.php:22 admin/pages/code-clean.php:116
41
- msgid "Remove dns-prefetch"
42
- msgstr "Supprimer DNS-prefetch"
43
-
44
- #: admin/includes/options.php:27 admin/pages/code-clean.php:125
45
- msgid "Remove RSD Link"
46
- msgstr "Supprimer le lien RSD"
47
-
48
- #: admin/includes/options.php:32 admin/pages/code-clean.php:135
49
- msgid "Remove wlwmanifest Link"
50
- msgstr "Supprimer le lien wlwmanifest"
51
-
52
- #: admin/includes/options.php:37 admin/pages/code-clean.php:145
53
- msgid "Remove Shortlink"
54
- msgstr "Supprimer Shortlink"
55
-
56
- #: admin/includes/options.php:42 admin/pages/code-clean.php:155
57
- msgid "Remove links to previous, next post"
58
- msgstr "Supprimer les liens vers le précédent, le message suivant"
59
-
60
- #: admin/includes/options.php:47 admin/pages/code-clean.php:165
61
- msgid "Remove .recentcomments styles"
62
- msgstr "Supprimer. styles de commentaires récents"
63
-
64
- #: admin/includes/options.php:52 admin/pages/seo.php:66
65
- msgid "Automatically set the alt attribute"
66
- msgstr "Définir automatiquement l'attribut alt"
67
-
68
- #: admin/includes/options.php:57 admin/pages/seo.php:121
69
- msgid "Automatically insert the Last Modified header"
70
- msgstr "Insérez automatiquement le dernier en-tête modifié"
71
-
72
- #: admin/includes/options.php:62 admin/pages/seo.php:144
73
- msgid "Return an If-Modified-Since responce"
74
- msgstr "Renvoie une réponse If-Modified-Since"
75
-
76
- #: admin/includes/options.php:67 admin/pages/seo.php:167
77
- msgid "Remove duplicate names in breadcrumbs WP SEO by Yoast"
78
- msgstr "Supprimer les noms en double dans le fil d'Ariane WP SEO par Yoast"
79
-
80
- #: admin/includes/options.php:72 admin/pages/seo.php:177
81
- #, php-format
82
- msgid "Remove the tag %s from XML site map"
83
- msgstr "Supprimer la balise %s du plan de site XML"
84
-
85
- #: admin/includes/options.php:77 admin/pages/seo.php:187
86
- #, php-format
87
- msgid "Remove comment from %s section"
88
- msgstr "Supprimer le commentaire de la section %s"
89
-
90
- #: admin/includes/options.php:82 admin/pages/double-pages.php:66
91
- msgid "Remove archives date"
92
- msgstr "Supprimer la date des archives"
93
-
94
- #: admin/includes/options.php:87 admin/pages/double-pages.php:76
95
- msgid "Remove author archives "
96
- msgstr "Supprimer les archives de l'auteur "
97
-
98
- #: admin/includes/options.php:92 admin/pages/double-pages.php:86
99
- msgid "Remove archives tag"
100
- msgstr "Supprimer le tag archives"
101
-
102
- #: admin/includes/options.php:97 admin/pages/double-pages.php:96
103
- msgid "Remove attachment pages"
104
- msgstr "Supprimer les pages de pièce jointe"
105
-
106
- #: admin/includes/options.php:102 admin/pages/double-pages.php:106
107
- msgid "Remove post pagination"
108
- msgstr "Supprimer la pagination de poste"
109
-
110
- #: admin/includes/options.php:107 admin/pages/double-pages.php:116
111
- msgid "Remove ?replytocom"
112
- msgstr "Supprimer ?replytocom"
113
-
114
- #: admin/includes/options.php:112 admin/pages/privacy.php:66
115
- msgid "Remove meta generator"
116
- msgstr "Supprimer le générateur de méta"
117
-
118
- #: admin/includes/options.php:117 admin/pages/defence.php:64
119
- msgid "Hide author login"
120
- msgstr "Masquer la connexion de l'auteur"
121
-
122
- #: admin/includes/options.php:122 admin/pages/defence.php:74
123
- msgid "Hide errors when logging into the site"
124
- msgstr "Masquer les erreurs lors de la connexion au site"
125
-
126
- #: admin/includes/options.php:127 admin/includes/options.php:244
127
- #: admin/pages/privacy.php:76
128
- msgid "Remove Version from Stylesheet"
129
- msgstr "Supprimer la version de la feuille de style"
130
-
131
- #: admin/includes/options.php:132 admin/includes/options.php:249
132
- #: admin/pages/privacy.php:87
133
- msgid "Remove Version from Script"
134
- msgstr "Supprimer la version du script"
135
-
136
- #: admin/includes/options.php:137 admin/pages/widgets.php:44
137
- msgid "Remove the \"Pages\" widget"
138
- msgstr "Supprimer le widget pages"
139
-
140
- #: admin/includes/options.php:142 admin/pages/widgets.php:53
141
- msgid "Remove calendar widget"
142
- msgstr "Supprimer le widget calendrier"
143
-
144
- #: admin/includes/options.php:147 admin/pages/widgets.php:62
145
- msgid "Remove the \"Cloud of tags\" widget"
146
- msgstr "Supprimer le widget nuage de tags"
147
-
148
- #: admin/includes/options.php:152 admin/pages/widgets.php:71
149
- msgid "Remove the \"Archives\" widget"
150
- msgstr "Supprimer le widget archives"
151
-
152
- #: admin/includes/options.php:157 admin/pages/widgets.php:80
153
- msgid "Remove the \"Links\" widget"
154
- msgstr "Supprimer le widget liens"
155
-
156
- #: admin/includes/options.php:162 admin/pages/widgets.php:89
157
- msgid "Remove the \"Meta\" widget"
158
- msgstr "Supprimer le widget meta"
159
-
160
- #: admin/includes/options.php:167 admin/pages/widgets.php:98
161
- msgid "Remove the \"Search\" widget"
162
- msgstr "Supprimer le widget recherche"
163
-
164
- #: admin/includes/options.php:172 admin/includes/options.php:192
165
- #: admin/pages/widgets.php:107
166
- msgid "Remove the \"Text\" widget"
167
- msgstr "Supprimer le widget texte"
168
-
169
- #: admin/includes/options.php:177 admin/pages/widgets.php:116
170
- msgid "Remove the \"Categories\" widget"
171
- msgstr "Supprimer le widget catégories"
172
-
173
- #: admin/includes/options.php:182 admin/pages/widgets.php:125
174
- msgid "Remove the \"Recent Posts\" widget"
175
- msgstr "Supprimer le widget posts récents"
176
-
177
- #: admin/includes/options.php:187 admin/pages/widgets.php:134
178
- msgid "Remove the \"Recent Comments\" widget"
179
- msgstr "Supprimer le widget commentaires récents"
180
-
181
- #: admin/includes/options.php:197 admin/pages/widgets.php:143
182
- msgid "Remove the \"RSS\" widget"
183
- msgstr "Supprimer le widget rss"
184
-
185
- #: admin/includes/options.php:202 admin/pages/widgets.php:152
186
- msgid "Remove the \"Menu\" widget"
187
- msgstr "Supprimer le widget menu"
188
-
189
- #: admin/includes/options.php:207 admin/pages/widgets.php:161
190
- msgid "Remove the \"Twenty Eleven Ephemera\" widget"
191
- msgstr "Supprimer le widget twenty eleven ephemera"
192
-
193
- #: admin/includes/options.php:210 admin/includes/options.php:284
194
- #: admin/pages/additionally.php:137
195
- msgid "Disable revision"
196
- msgstr "Désactiver la révision"
197
-
198
- #: admin/includes/options.php:211 admin/pages/additionally.php:170
199
- msgid "Limit Post Revisions"
200
- msgstr "Limiter les révisions post"
201
-
202
- #: admin/includes/options.php:212 admin/pages/seo.php:135
203
- msgid "Exclude pages:"
204
- msgstr "Exclure les pages:"
205
-
206
- #: admin/includes/options.php:215 admin/pages/seo.php:76
207
- msgid "Create right robots.txt"
208
- msgstr "Créez les bons robots.txt"
209
-
210
- #: admin/includes/options.php:220 admin/pages/seo.php:91
211
- msgid "You can edit the robots.txt file in the box below:"
212
- msgstr "Vous pouvez éditer le fichier robots.txt dans la case ci-dessous:"
213
-
214
- #: admin/includes/options.php:223
215
- msgid "Quick mode"
216
- msgstr "Mode rapide"
217
-
218
- #: admin/includes/options.php:226 admin/pages/code-clean.php:96
219
- msgid "Remove jQuery Migrate"
220
- msgstr "Supprimer jQuery migrer"
221
-
222
- #: admin/includes/options.php:229 admin/pages/code-clean.php:106
223
- msgid "Disable Embeds"
224
- msgstr "Désactiver les insertions"
225
-
226
- #: admin/includes/options.php:230 admin/pages/code-clean.php:66
227
- msgid "Disable RSS feeds"
228
- msgstr "Désactiver les flux rss"
229
-
230
- #: admin/includes/options.php:233
231
- msgid "Removes links to wordpress.org site from the admin bar"
232
- msgstr ""
233
- "Supprime les liens vers le site WordPress.org à partir de la barre "
234
- "d'administration"
235
-
236
- #: admin/includes/options.php:236 admin/pages/code-clean.php:175
237
- msgid "HTML minify"
238
- msgstr "HTML rapetisser"
239
-
240
- #: admin/includes/options.php:239 admin/pages/seo.php:101
241
- msgid "Redirect Http to Https"
242
- msgstr "Rediriger Http vers Https"
243
-
244
- #: admin/includes/options.php:254 admin/pages/privacy.php:98
245
- msgid "Eclude stylesheet/script file names"
246
- msgstr "Exclure feuille de style /noms de fichiers script"
247
-
248
- #: admin/includes/options.php:259 admin/pages/additionally.php:68
249
- msgid "Enable Sanitization of WordPress"
250
- msgstr "Activer la désinfection de WordPress"
251
-
252
- #: admin/includes/options.php:264 admin/pages/additionally.php:78
253
- msgid "Disable admin notice"
254
- msgstr "Désactiver avis admin"
255
-
256
- #: admin/includes/options.php:269 admin/pages/additionally.php:94
257
- msgid "Disable admin top bar"
258
- msgstr "Désactiver la barre d'administration"
259
-
260
- #: admin/includes/options.php:274 admin/pages/additionally.php:112
261
- msgid "Remove admin bar WP logo"
262
- msgstr "Supprimer la barre d'administration WP logo"
263
-
264
- #: admin/includes/options.php:279 admin/pages/additionally.php:122
265
- msgid "Replace \"Howdy\" text with \"Welcome\""
266
- msgstr "Remplacer le texte \"Howdy\" par \"Bienvenue\""
267
-
268
- #: admin/includes/options.php:294 admin/pages/additionally.php:194
269
- msgid "Disable autosave"
270
- msgstr "Désactiver la sauvegarde automatique"
271
-
272
- #: admin/includes/options.php:299 admin/pages/additionally.php:204
273
- msgid "Disable Texturization - Smart Quotes"
274
- msgstr "Désactiver la texturation - Citations intelligentes"
275
-
276
- #: admin/includes/options.php:304 admin/pages/additionally.php:214
277
- msgid "Disable capitalization in Wordpress branding"
278
- msgstr "Désactiver la capitalisation dans l'image de marque Wordpress"
279
-
280
- #: admin/includes/options.php:309 admin/pages/additionally.php:224
281
- msgid "Disable auto inserted paragraphs (i.e. p tags)"
282
- msgstr "Désactiver les paragraphes insérés automatiquement (i.e. p tags)"
283
-
284
- #: admin/includes/options.php:324 admin/pages/code-clean.php:185
285
- #: admin/pages/privacy.php:107
286
- msgid "Remove html comments"
287
- msgstr "Supprimer les commentaires HTML"
288
-
289
- #: admin/pages/code-clean.php:27
290
- msgid "Code cleaning"
291
- msgstr "Nettoyage du code"
292
-
293
- #: admin/pages/code-clean.php:68
294
- msgid ""
295
- "By default, WordPress generates all types of different RSS feeds for your "
296
- "site. While RSS feeds can be useful if you are running a blog, businesses "
297
- "might not always utilize these. Not every site out there has a blog."
298
- msgstr ""
299
- "Par défaut, WordPress génère tous les types de flux RSS différents pour "
300
- "votre site. Bien que les flux RSS peuvent être utiles si vous exécutez un "
301
- "blog, les entreprises ne peuvent pas toujours utiliser ces derniers. Pas "
302
- "tous les sites là-bas a un blog."
303
-
304
- #: admin/pages/code-clean.php:68
305
- #, php-format
306
- msgid ""
307
- "Removes a link to the RSS-feed from the %s section, closes and puts the "
308
- "redirect from all RSS-feeds."
309
- msgstr ""
310
- "Supprime un lien vers le flux RSS à partir de la section %s, ferme et met la "
311
- "redirection de tous les flux RSS."
312
-
313
- #: admin/pages/code-clean.php:78
314
- msgid ""
315
- "The WordPress REST API provides API endpoints for WordPress data types that "
316
- "allow developers to interact with sites remotely by sending and receiving "
317
- "JSON (JavaScript Object Notation) objects. However, a lot of sites don’t use "
318
- "this, and therefore in most cases, it is just unnecessary code."
319
- msgstr ""
320
- "L'API REST WordPress fournit des points de terminaison API pour les types de "
321
- "données WordPress qui permettent aux développeurs d'interagir avec les sites "
322
- "à distance en envoyant et en recevant des objets JSON (JavaScript Object "
323
- "Notation). Cependant, beaucoup de sites ne l'utilisent pas, et donc dans la "
324
- "plupart des cas, c'est juste du code inutile."
325
-
326
- #: admin/pages/code-clean.php:78
327
- msgid ""
328
- "Removes REST API link tag from the front end and the REST API header link "
329
- "from page requests."
330
- msgstr ""
331
- "Supprime la balise de liaison de l'API REST de l'extrémité avant et le lien "
332
- "d'en-tête de l'API REST des requêtes de page."
333
-
334
- #: admin/pages/code-clean.php:86 admin/pages/code-clean.php:116
335
- #: admin/pages/code-clean.php:125 admin/pages/code-clean.php:135
336
- #: admin/pages/code-clean.php:145 admin/pages/code-clean.php:155
337
- #: admin/pages/code-clean.php:165 admin/pages/seo.php:66
338
- #: admin/pages/seo.php:121 admin/pages/seo.php:144 admin/pages/seo.php:167
339
- #: admin/pages/seo.php:177 admin/pages/seo.php:187 admin/pages/privacy.php:66
340
- #: admin/pages/privacy.php:76 admin/pages/privacy.php:87
341
- #: admin/pages/defence.php:64 admin/pages/defence.php:74
342
- #: admin/pages/defence.php:84 admin/pages/double-pages.php:66
343
- #: admin/pages/double-pages.php:76 admin/pages/double-pages.php:96
344
- #: admin/pages/double-pages.php:106 admin/pages/double-pages.php:116
345
- msgid "Recommended"
346
- msgstr "Recommandées"
347
-
348
- #: admin/pages/code-clean.php:88
349
- msgid ""
350
- "Emojis are fun and all, but if you are aren’t using them they actually load "
351
- "a JavaScript file (wp-emoji-release.min.js) on every page of your website. "
352
- "For a lot of businesses, this is not needed and simply adds load time to "
353
- "your site. So we recommend disabling this."
354
- msgstr ""
355
- "Smileys sont amusants et tous, mais si vous êtes ne sont pas en les "
356
- "utilisant, ils chargent effectivement un fichier JavaScript (WP-Emoji-"
357
- "Release. min. js) sur chaque page de votre site Web. Pour beaucoup "
358
- "d'entreprises, ce n'est pas nécessaire et ajoute simplement du temps de "
359
- "chargement à votre site. Donc, nous recommandons de désactiver ce."
360
-
361
- #: admin/pages/code-clean.php:88
362
- msgid "Removes WordPress Emojis JavaScript file (wp-emoji-release.min.js)."
363
- msgstr ""
364
- "Supprime WordPress émoticônes JavaScript fichier (wp-emoji-release.min.js)."
365
-
366
- #: admin/pages/code-clean.php:98
367
- msgid ""
368
- "They started adding jQuery migrate in WordPress 3.6. Most up-to-date "
369
- "frontend code and plugins don’t require jquery-migrate.min.js. In most "
370
- "cases, this simply adds unnecessary load to your site. You can see this "
371
- "running if you launch Chrome Devtools console."
372
- msgstr ""
373
- "Ils ont commencé à ajouter jQuery migrer dans WordPress 3,6. La plupart des "
374
- "up-to-date frontend code et plugins ne nécessitent pas jQuery-Migrate. min. "
375
- "js. Dans la plupart des cas, cela ajoute simplement une charge inutile à "
376
- "votre site. Vous pouvez voir cette exécution si vous lancez chrome devtools "
377
- "console."
378
-
379
- #: admin/pages/code-clean.php:98
380
- msgid "Removes jQuery Migrate JavaScript file (jquery-migrate.min.js)."
381
- msgstr "Supprime le fichier jQuery Migrate JavaScript (jquery-migrate.min.js)."
382
-
383
- #: admin/pages/code-clean.php:98
384
- msgid "Warning! If there is a broke on your site, disable this option!"
385
- msgstr ""
386
- "Attention! S'il y a une rupture sur votre site, désactivez cette option!"
387
-
388
- #: admin/pages/code-clean.php:108
389
- msgid ""
390
- "Embeds were released with WordPress 4.4. This is basically the magic that "
391
- "auto converts your YouTube videos, Tweets, and URLs into pretty previews "
392
- "while you are editing. However, this actually loads a JavaScript file (wp-"
393
- "embed.min.js) on every page of your website. If you don’t care about the "
394
- "auto converting preview (which we don’t), you can disable this across your "
395
- "site."
396
- msgstr ""
397
- "Embeds ont été libérés avec WordPress 4,4. C'est fondamentalement la magie "
398
- "qui convertit vos vidéos YouTube, tweets, et les URL dans de jolies aperçus "
399
- "pendant que vous éditez. Toutefois, cela charge effectivement un fichier "
400
- "JavaScript (WP-embed. min. js) sur chaque page de votre site Web. Si vous ne "
401
- "vous souciez pas de l'aperçu de conversion automatique (ce qui n'est pas le "
402
- "cas), vous pouvez désactiver cette option sur votre site."
403
-
404
- #: admin/pages/code-clean.php:108
405
- msgid "Removes WordPress Embed JavaScript file (wp-embed.min.js)"
406
- msgstr "Supprime WordPress embed JavaScript fichier (WP-embed. min. js)"
407
-
408
- #: admin/pages/code-clean.php:118
409
- #, php-format
410
- msgid ""
411
- "Since version 4.6.1 in WordPress there are new links in the section %s this "
412
- "type of: "
413
- msgstr ""
414
- "Depuis la version, dans WordPress, il ya de nouveaux liens dans la section%s "
415
- "ce type de: "
416
-
417
- #: admin/pages/code-clean.php:118
418
- #, php-format
419
- msgid "Removes dns-prefetch links from the %s section"
420
- msgstr "Supprime les liens DNS-prefetch de la section %s"
421
-
422
- #: admin/pages/code-clean.php:127
423
- msgid ""
424
- "The above link is used by blog clients. If you edit your site from your "
425
- "browser then you don’t need this. It is also used by some 3rd party "
426
- "applications that utilize XML-RPC requests. In most cases, this is just "
427
- "unnecessary code."
428
- msgstr ""
429
- "Le lien ci-dessus est utilisé par les clients de blog. Si vous modifiez "
430
- "votre site à partir de votre navigateur, alors vous n'avez pas besoin de "
431
- "cela. Il est également utilisé par certaines applications tierces qui "
432
- "utilisent des requêtes XML-RPC. Dans la plupart des cas, ce n'est que du "
433
- "code inutile."
434
-
435
- #: admin/pages/code-clean.php:127
436
- msgid "Remove RSD (Real Simple Discovery) link tag."
437
- msgstr "Supprimer la balise de lien RSS (Really Simple Discovery)."
438
-
439
- #: admin/pages/code-clean.php:137
440
- msgid ""
441
- "This link is actually used by Windows Live Writer. If you don’t know use "
442
- "Windows Live Writer, which we are guessing you don’t, this is just "
443
- "unnecessary code."
444
- msgstr ""
445
- "Ce lien est actuellement utilisé par Windows Live Writer. Si vous ne savez "
446
- "pas utiliser Windows Live Writer, ce que nous supposons ne pas, c'est juste "
447
- "du code inutile."
448
-
449
- #: admin/pages/code-clean.php:137
450
- msgid "Remove wlwmanifest (Windows Live Writer) link tag."
451
- msgstr "Supprimez le tag de lien wlwmanifest (Windows Live Writer)."
452
-
453
- #: admin/pages/code-clean.php:147
454
- #, php-format
455
- msgid ""
456
- "By default, the following tag shows up in every WordPress install. %s This "
457
- "is used for a shortlink to your pages and posts. However, if you are already "
458
- "using pretty permalinks, such as domain.com/post, then there is no reason to "
459
- "keep this, it is just unnecessary code."
460
- msgstr ""
461
- "Par défaut, la balise suivante apparaît dans chaque installation de "
462
- "WordPress. %s Ceci est utilisé pour un lien vers vos pages et messages. "
463
- "Cependant, si vous utilisez déjà de jolis permaliens, tels que domain.com/"
464
- "post, alors il n'y a aucune raison de garder ceci, c'est juste du code "
465
- "inutile."
466
-
467
- #: admin/pages/code-clean.php:147
468
- msgid "Remove Shortlink link tag."
469
- msgstr "Supprimer le lien du lien court."
470
-
471
- #: admin/pages/code-clean.php:157
472
- msgid ""
473
- "If you use Wordpress as a CMS, then you can delete these links, they can "
474
- "only come in handy for a blog."
475
- msgstr ""
476
- "Si vous utilisez Wordpress en tant que CMS, vous pouvez supprimer ces liens, "
477
- "ils ne peuvent être utiles que pour un blog."
478
-
479
- #: admin/pages/code-clean.php:157
480
- msgid ""
481
- "Remove the previous and next post links within the wp_head of your wordpress "
482
- "theme."
483
- msgstr ""
484
- "Supprimez les liens post précédent et suivant dans le wp_head de votre thème "
485
- "wordpress."
486
-
487
- #: admin/pages/code-clean.php:167
488
- msgid ""
489
- "WP by default for the widget \"recent comments\" prescribes in the code "
490
- "styles that are almost impossible to change, because to them apply! "
491
- "important."
492
- msgstr ""
493
- "WP par défaut pour le widget \"commentaires récents\" prescrits dans les "
494
- "styles de code qui sont presque impossibles à changer, car à eux "
495
- "s'appliquent! important."
496
-
497
- #: admin/pages/code-clean.php:167
498
- msgid "Removes .recentcomments styles from head section."
499
- msgstr "Supprimez les styles de commentaires .recent de la section head."
500
-
501
- #: admin/pages/code-clean.php:177
502
- msgid ""
503
- "Reduces the weight of the page by removing line breaks, tabs, spaces, etc."
504
- msgstr ""
505
- "Réduit le poids de la page en supprimant les sauts de ligne, les "
506
- "tabulations, les espaces, etc."
507
-
508
- #: admin/pages/code-clean.php:177
509
- msgid "Minify pages."
510
- msgstr "Réduire les pages."
511
-
512
- #: admin/pages/code-clean.php:187 admin/pages/privacy.php:109
513
- msgid ""
514
- "This function will remove all html comments in the source code, except for "
515
- "special and hidden comments. This is necessary to hide the version of "
516
- "installed plugins."
517
- msgstr ""
518
- "Cette fonction va supprimer tous les commentaires HTML dans le code source, "
519
- "sauf pour les commentaires spéciaux et cachés. Ceci est nécessaire pour "
520
- "masquer la version des plugins installés."
521
-
522
- #: admin/pages/code-clean.php:187 admin/pages/privacy.php:109
523
- msgid "Remove html comments in source code."
524
- msgstr "Supprimez les commentaires HTML dans le code source."
525
-
526
- #: admin/pages/seo.php:27
527
- msgid "SEO"
528
- msgstr "SEO"
529
-
530
- #: admin/pages/seo.php:68
531
- msgid ""
532
- "The alt attribute is mandatory, so most SEO experts say. If you missed or "
533
- "did not fill it at all, it will be automatically assigned and will be equal "
534
- "to the title of the article."
535
- msgstr ""
536
- "L'attribut alt est obligatoire, disent la plupart des experts SEO. Si vous "
537
- "l'avez manqué ou que vous ne l'avez pas rempli du tout, il sera "
538
- "automatiquement assigné et sera égal au titre de l'article."
539
-
540
- #: admin/pages/seo.php:68
541
- #, php-format
542
- msgid "Replaces the %s, on attribute with an article name %s"
543
- msgstr "Remplace le %s, sur l'attribut par un nom d'article %s"
544
-
545
- #: admin/pages/seo.php:78
546
- msgid ""
547
- "After installation, WP does not contain a robots.txt file and create it "
548
- "manually. We re-read about 30 different articles, instructions from Yandex "
549
- "and Google to create the perfect robots.txt"
550
- msgstr ""
551
- "Après l'installation, WP ne contient pas un fichier robots.txt et le créer "
552
- "manuellement. Nous re-lire environ 30 articles différents, des instructions "
553
- "de Yandex et Google pour créer le parfait robots.txt"
554
-
555
- #: admin/pages/seo.php:78
556
- msgid "Automatically creates the perfect robots.txt file"
557
- msgstr "Crée automatiquement le fichier robots.txt parfait"
558
-
559
- #: admin/pages/seo.php:103
560
- msgid ""
561
- "If your site uses an SSL certificate, check this box to enable redirection "
562
- "from http to https."
563
- msgstr ""
564
- "Si votre site utilise un certificat SSL, cochez cette case pour activer la "
565
- "redirection de http vers https."
566
-
567
- #: admin/pages/seo.php:103
568
- msgid "Puts the redirect from http to https."
569
- msgstr "Place la redirection de http vers https."
570
-
571
- #: admin/pages/seo.php:103
572
- msgid "Warning! Before activation, make sure your site is open https."
573
- msgstr ""
574
- "Attention! Avant l'activation, assurez-vous que votre site est ouvert https."
575
-
576
- #: admin/pages/seo.php:109
577
- msgid "Server headers and response"
578
- msgstr "En-têtes de serveur et réponse"
579
-
580
- #: admin/pages/seo.php:109
581
- msgid ""
582
- "WordPress does not know how to give the Last Modified header in the server's "
583
- "responses. You can do this using the settings below."
584
- msgstr ""
585
- "WordPress ne sait pas comment donner le dernier en-tête modifié dans les "
586
- "réponses du serveur. Vous pouvez le faire en utilisant les paramètres ci-"
587
- "dessous."
588
-
589
- #: admin/pages/seo.php:137
590
- #, php-format
591
- msgid ""
592
- "You can specify a page mask, for example: %s or %s. All pages that contain "
593
- "the string will be excluded. Each exclude must begin with a new line."
594
- msgstr ""
595
- "Vous pouvez spécifier un masque de page, par exemple: %s ou %s. Toutes les "
596
- "pages contenant la chaîne seront exclues. Chaque exclusion doit commencer "
597
- "par une nouvelle ligne."
598
-
599
- #: admin/pages/seo.php:155
600
- msgid "For the Yoast SEO plugin"
601
- msgstr "Pour le plugin SEO Yoast"
602
-
603
- #: admin/pages/seo.php:155
604
- msgid ""
605
- "These settings will help you eliminate some problems associated with the "
606
- "popular Yoast SEO plugin"
607
- msgstr ""
608
- "Ces paramètres vous aideront à éliminer certains problèmes associés à la "
609
- "populaire Yoast SEO Plugin"
610
-
611
- #: admin/pages/seo.php:169
612
- msgid ""
613
- "The last element in the breadcrumbs in the Yoast SEO plugin duplicates the "
614
- "title of the article. Some SEO-specialists consider this duplication to be "
615
- "superfluous."
616
- msgstr ""
617
- "Le dernier élément dans la chapelure dans le plugin Yoast SEO duplique le "
618
- "titre de l'article. Certains SEO-spécialistes considèrent cette duplication "
619
- "comme superflue."
620
-
621
- #: admin/pages/seo.php:169
622
- msgid ""
623
- "Removes duplication of the name in the breadcrumbs of the WP SEO plugin from "
624
- "Yoast."
625
- msgstr ""
626
- "Supprime la duplication du nom dans la chapelure du plugin WP SEO de Yoast."
627
-
628
- #: admin/pages/seo.php:179
629
- msgid ""
630
- "Yandex.Webmaster swears on a standard XML card from the plugin Yoast, tk. it "
631
- "has a specific tag"
632
- msgstr ""
633
- "Yandex. webmaster jure sur une carte XML standard à partir du plugin Yoast, "
634
- "tk. il a une balise spécifique"
635
-
636
- #: admin/pages/seo.php:179
637
- #, php-format
638
- msgid "Remove the tag %s from XML site map of the plugin Yoast SEO."
639
- msgstr "Supprimer la balise %s de la carte du site XML du plugin Yoast SEO."
640
-
641
- #: admin/pages/seo.php:179
642
- msgid ""
643
- "Attention! After activation, turn off the site map and enable it back to "
644
- "regenerate it."
645
- msgstr ""
646
- "Attention! Après l'activation, désactivez le plan du site et réactivez-le "
647
- "pour le régénérer."
648
-
649
- #: admin/pages/seo.php:179
650
- msgid "In older versions of Yoast SEO may not work - update the plugin Yoast"
651
- msgstr ""
652
- "Dans les anciennes versions de Yoast SEO ne peut pas fonctionner - mettre à "
653
- "jour le plugin Yoast"
654
-
655
- #: admin/pages/seo.php:189
656
- #, php-format
657
- msgid "The Yoast SEO plugin displays a comment of the form %s in %s section"
658
- msgstr ""
659
- "Le plugin Yoast SEO affiche un commentaire du formulaire %s dans %s la "
660
- "section"
661
-
662
- #: admin/pages/seo.php:189
663
- #, php-format
664
- msgid "Removes the Yoast SEO plugin comment of their section %s"
665
- msgstr "Supprime le commentaire du plugin Yoast SEO de leur section %s"
666
-
667
- #: admin/pages/components.php:32
668
- msgid "Components"
669
- msgstr "Composants"
670
-
671
- #: admin/pages/privacy.php:27
672
- msgid "Privacy Settings"
673
- msgstr "Paramètres de confidentialité"
674
-
675
- #: admin/pages/privacy.php:68
676
- msgid ""
677
- "Allows attacker to learn the version of WP installed on the site. This meta "
678
- "tag has no useful function."
679
- msgstr ""
680
- "Permet à l'attaquant d'apprendre la version de WP installée sur le site. "
681
- "Cette balise meta n'a aucune fonction utile."
682
-
683
- #: admin/pages/privacy.php:68
684
- #, php-format
685
- msgid "Removes the meta tag from the %s section"
686
- msgstr "Supprime la balise meta de la section %s"
687
-
688
- #: admin/pages/privacy.php:78 admin/pages/privacy.php:89
689
- msgid ""
690
- "To make it more difficult for others to hack your website you can remove the "
691
- "WordPress version number from your site, your css and js. Without that "
692
- "number it's not possible to see if you run not the current version to "
693
- "exploit bugs from the older versions. <br><br>\n"
694
- "\t\t\t\t\tAdditionally it can improve the loading speed of your site, "
695
- "because without query strings in the URL the css and js files can be cached."
696
- msgstr ""
697
- "Pour rendre plus difficile pour les autres de pirater votre site Web, vous "
698
- "pouvez supprimer le numéro de version WordPress de votre site, votre css et "
699
- "js. Sans ce nombre, il n'est pas possible de voir si vous n'exécutez pas la "
700
- "version actuelle pour exploiter les bogues des anciennes versions. <br><br>\n"
701
- "De plus, il peut améliorer la vitesse de chargement de votre site, car sans "
702
- "les chaînes de requête dans l'URL, les fichiers css et js peuvent être mis "
703
- "en cache."
704
-
705
- #: admin/pages/privacy.php:79
706
- msgid ""
707
- "Removes the wordpress version number from stylesheets (not logged in user "
708
- "only)."
709
- msgstr ""
710
- "Supprimez le numéro de version wordpress des feuilles de style (utilisateur "
711
- "non connecté uniquement)."
712
-
713
- #: admin/pages/privacy.php:90
714
- msgid ""
715
- "Removes wordpress version number from scripts (not logged in user only)."
716
- msgstr ""
717
- "Supprimer le numéro de version wordpress des scripts (utilisateur non "
718
- "connecté uniquement)."
719
-
720
- #: admin/pages/privacy.php:100
721
- msgid ""
722
- "Enter Stylesheet/Script file names to exclude from version removal (each "
723
- "exclude file starts with a new line)"
724
- msgstr ""
725
- "Entrez les noms de fichier de feuille de style / script à exclure de la "
726
- "suppression de version (chaque fichier d'exclusion commence par une nouvelle "
727
- "ligne)"
728
-
729
- #: admin/pages/privacy.php:100
730
- msgid "Example"
731
- msgstr "Example"
732
-
733
- #: admin/pages/defence.php:25
734
- msgid "Defence"
735
- msgstr "Défense"
736
-
737
- #: admin/pages/defence.php:66
738
- msgid ""
739
- "An attacker can find out the author's login, using a similar request to get "
740
- "your site. mysite.com/?author=1"
741
- msgstr ""
742
- "Un attaquant peut trouver la connexion de l'auteur, en utilisant une requête "
743
- "similaire pour obtenir votre site. mysite.com/?author=1"
744
-
745
- #: admin/pages/defence.php:66
746
- msgid "Sets the redirect to exclude the possibility of obtaining a login."
747
- msgstr ""
748
- "Définit la redirection pour exclure la possibilité d'obtenir une connexion."
749
-
750
- #: admin/pages/defence.php:76
751
- msgid ""
752
- "WP by default shows whether you entered a wrong login or incorrect password, "
753
- "which allows attackers to understand if there is a certain user on the site, "
754
- "and then start searching through the passwords."
755
- msgstr ""
756
- "WP par défaut indique si vous avez entré un mauvais identifiant ou mot de "
757
- "passe incorrect, ce qui permet aux pirates de comprendre s'il y a un certain "
758
- "utilisateur sur le site, puis de commencer à chercher dans les mots de passe."
759
-
760
- #: admin/pages/defence.php:76
761
- msgid ""
762
- "Changes in the text of the error so that attackers could not find the login."
763
- msgstr ""
764
- "Modifications dans le texte de l'erreur afin que les attaquants ne pouvaient "
765
- "pas trouver la connexion."
766
-
767
- #: admin/pages/defence.php:84
768
- #: components/comments-plus/admin/pages/comments.php:290
769
- msgid "Disable XML-RPC"
770
- msgstr "Désactiver xml-rpc"
771
-
772
- #: admin/pages/defence.php:86
773
- msgid ""
774
- "A pingback is basically an automated comment that gets created when another "
775
- "blog links to you. A self-pingback is created when you link to an article "
776
- "within your own blog. Pingbacks are essentially nothing more than spam and "
777
- "simply waste resources."
778
- msgstr ""
779
- "Un Pingback est fondamentalement un commentaire automatisé qui obtient créé "
780
- "quand un autre blog lie à vous. Un self-Pingback est créé lorsque vous liez "
781
- "à un article dans votre propre blog. Pingbacks sont essentiellement rien de "
782
- "plus que du spam et simplement des ressources de gaspillage."
783
-
784
- #: admin/pages/defence.php:86
785
- #: components/comments-plus/admin/pages/comments.php:292
786
- msgid "Removes the server responses a reference to the xmlrpc file."
787
- msgstr "Supprime les réponses du serveur une référence au fichier xml-rpc."
788
-
789
- #: admin/pages/quick-start.php:35
790
- msgid "Clearfy menu"
791
- msgstr "Clarifier le menu"
792
-
793
- #: admin/pages/quick-start.php:42
794
- msgid "Quick start"
795
- msgstr "Démarrage rapide"
796
-
797
- #: admin/pages/quick-start.php:76
798
- msgid ""
799
- "On this page you can quickly configure the plug-in without going into "
800
- "details."
801
- msgstr ""
802
- "Sur cette page, vous pouvez configurer rapidement le plugin sans entrer dans "
803
- "les détails."
804
-
805
- #: admin/pages/quick-start.php:169
806
- msgid "Reset all settings"
807
- msgstr "Réinitialiser tous les réglages"
808
-
809
- #: admin/pages/quick-start.php:170
810
- msgid "Recommended Mode"
811
- msgstr "Mode recommandé"
812
-
813
- #: admin/pages/quick-start.php:171
814
- msgid "Code Clearing"
815
- msgstr "Effacement du code"
816
-
817
- #: admin/pages/quick-start.php:172
818
- msgid "Security"
819
- msgstr "Sécurité"
820
-
821
- #: admin/pages/quick-start.php:173
822
- msgid "Seo optimization"
823
- msgstr "Optimisation SEO"
824
-
825
- #: admin/pages/quick-start.php:174
826
- msgid "Remove default Widgets"
827
- msgstr "Supprimer les widgets par défaut"
828
-
829
- #: admin/pages/quick-start.php:179
830
- msgid "Are you sure you want to enable the this options?"
831
- msgstr "Êtes-vous sûr de vouloir activer ces options?"
832
-
833
- #: admin/pages/quick-start.php:182
834
- msgid ""
835
- "After confirmation, all the settings of the plug-in will return to the "
836
- "default state. Make backup settings by copying data from the export field."
837
- msgstr ""
838
- "Après confirmation, tous les paramètres du plug-in reviendront à l'état par "
839
- "défaut. Effectuez les paramètres de sauvegarde en copiant les données du "
840
- "champ exporter."
841
-
842
- #: admin/pages/quick-start.php:186
843
- msgid "Confirm"
844
- msgstr "Confirmer"
845
-
846
- #: admin/pages/quick-start.php:187 admin/pages/quick-start.php:215
847
- msgid "Cancel"
848
- msgstr "Annuler"
849
-
850
- #: admin/pages/quick-start.php:194
851
- msgid ""
852
- "This is the quick plug-in setup mode. Use it if you do not want to "
853
- "understand the settings or do not understand what settings you need to use."
854
- msgstr ""
855
- "C'est le mode de configuration rapide du plug-in. Utilisez-le si vous ne "
856
- "voulez pas comprendre les paramètres ou ne pas comprendre les paramètres que "
857
- "vous devez utiliser."
858
-
859
- #: admin/pages/quick-start.php:195
860
- msgid "Select mode"
861
- msgstr "Sélectionner le mode"
862
-
863
- #: admin/pages/quick-start.php:197
864
- msgid ""
865
- "After selecting the mode, the plug-in automatically activates the necessary "
866
- "settings for the mode."
867
- msgstr ""
868
- "Après avoir sélectionné le mode, le plug-in active automatiquement les "
869
- "réglages nécessaires pour le mode."
870
-
871
- #: admin/pages/quick-start.php:227
872
- msgid "Settings successfully updated!"
873
- msgstr "Paramètres mis à jour avec succès !"
874
-
875
- #: admin/pages/quick-start.php:230
876
- msgid ""
877
- "During the setup, an unknown error occurred, please try again or contact the "
878
- "plug-in support."
879
- msgstr ""
880
- "Pendant la configuration, une erreur inconnue s'est produite. Veuillez "
881
- "réessayer ou contacter le support du plug-in."
882
-
883
- #: admin/pages/quick-start.php:237
884
- msgid "Import/Export settings"
885
- msgstr "Importer/Exporter les paramètres"
886
-
887
- #: admin/pages/quick-start.php:240
888
- msgid "Import options"
889
- msgstr "Options d'importation"
890
-
891
- #: admin/pages/quick-start.php:246
892
- msgid "Support"
893
- msgstr "Soutien"
894
-
895
- #: admin/pages/quick-start.php:248
896
- msgid ""
897
- "If you faced with any issues, please follow the steps below to get quickly "
898
- "quality support:"
899
- msgstr ""
900
- "Si vous rencontrez des problèmes, veuillez suivre les étapes ci-dessous pour "
901
- "obtenir rapidement un soutien de qualité:"
902
-
903
- #: admin/pages/quick-start.php:251
904
- msgid ""
905
- "Generate a debug report which will contains inforamtion about your "
906
- "configuratin and installed plugins"
907
- msgstr ""
908
- "Générer un rapport de débogage qui contiendra des informations sur votre "
909
- "configuration et les plugins installés"
910
-
911
- #: admin/pages/quick-start.php:254
912
- msgid "Generate Debug Report"
913
- msgstr "Générer un rapport de débogage"
914
-
915
- #: admin/pages/quick-start.php:258
916
- msgid ""
917
- "Send a message to <b>wordpress.webraftic@gmail.com</b> include the debug "
918
- "report into the message body."
919
- msgstr ""
920
- "Envoyer un message à <b>wordpress.webraftic@gmail.com</b> inclure le rapport "
921
- "de débogage dans le corps du message."
922
-
923
- #: admin/pages/quick-start.php:261
924
- msgid "We guarantee to respond you within 7 business day."
925
- msgstr "Nous garantissons de vous répondre dans les 7 jours ouvrables."
926
-
927
- #: admin/pages/additionally.php:27
928
- msgid "Advanced"
929
- msgstr "Avancée"
930
-
931
- #: admin/pages/additionally.php:50
932
- msgid ""
933
- "Warning! In the wp-config.php file, a constant WP_POST_REVISIONS is found, "
934
- "it determines the number of revisions. Delete it so you can change this "
935
- "value through the admin panel."
936
- msgstr ""
937
- "Attention! Dans le fichier wp-config.php, une constante WP_POST_REVISIONS "
938
- "est trouvée, elle détermine le nombre de révisions. Supprimez-le pour "
939
- "pouvoir modifier cette valeur via le panneau d'administration."
940
-
941
- #: admin/pages/additionally.php:70
942
- msgid ""
943
- "File names and some titles can have special characters, which can cause "
944
- "problems when creating permalinks."
945
- msgstr ""
946
- "Les noms de fichiers et certains titres peuvent avoir des caractères "
947
- "spéciaux, ce qui peut causer des problèmes lors de la création de liens "
948
- "permanents."
949
-
950
- #: admin/pages/additionally.php:70
951
- msgid ""
952
- "Removes symbols, spaces, latin and other languages characters from uploaded "
953
- "files and gives them \"permalink\" structure (clean characters, only "
954
- "lowercase and dahes)."
955
- msgstr ""
956
- "Supprime les symboles, espaces, caractères latins et autres langues des "
957
- "fichiers téléchargés et leur donne une structure \"permalien\" (caractères "
958
- "propres, seulement minuscules et tirets)."
959
-
960
- #: admin/pages/additionally.php:80
961
- msgid ""
962
- "Whenever there’s a major release available, a notification will display at "
963
- "the top of your admin area, letting you know your version is out-of-date and "
964
- "you need to update the core code.<br>\n"
965
- "For many people, this nag can be annoying. And if you developer websites for "
966
- "clients, you may want to hide it. After all, who wants to let their clients "
967
- "know their software is old?"
968
- msgstr ""
969
- "Chaque fois qu'une version majeure est disponible, une notification "
970
- "s'affiche en haut de la zone d'administration, vous indiquant que votre "
971
- "version est obsolète et que vous devez mettre à jour le code principal. "
972
- "<br>\n"
973
- "Pour beaucoup de gens, ce harceler peut être agaçant. Et si vous développez "
974
- "des sites Web pour les clients, vous pouvez vouloir le cacher. Après tout, "
975
- "qui veut faire savoir à ses clients que leur logiciel est vieux?"
976
-
977
- #: admin/pages/additionally.php:81
978
- msgid "Disable admin notices."
979
- msgstr "Désactiver les notifications d'administration."
980
-
981
- #: admin/pages/additionally.php:87
982
- msgid "Admin bar"
983
- msgstr "Barre d'administration"
984
-
985
- #: admin/pages/additionally.php:87
986
- msgid "In this group of settings, you can manage the adminbar."
987
- msgstr ""
988
- "Dans ce groupe de paramètres, vous pouvez gérer la barre d'administration."
989
-
990
- #: admin/pages/additionally.php:96
991
- msgid "Default enable"
992
- msgstr "Activer par défaut"
993
-
994
- #: admin/pages/additionally.php:97
995
- msgid "For all users"
996
- msgstr "Pour tous les utilisateurs"
997
-
998
- #: admin/pages/additionally.php:100
999
- msgid "For all users except administrator"
1000
- msgstr "Pour tous les utilisateurs excepté l'administrateur"
1001
-
1002
- #: admin/pages/additionally.php:104
1003
- msgid ""
1004
- "In some cases, you need to disable the floating top admin panel. You can "
1005
- "disable this panel."
1006
- msgstr ""
1007
- "Dans certains cas, vous devez désactiver le panneau d'administration "
1008
- "supérieur flottant. Vous pouvez désactiver ce panneau."
1009
-
1010
- #: admin/pages/additionally.php:104
1011
- msgid "Disable admin top bar."
1012
- msgstr "Désactiver la barre supérieure d'administration."
1013
-
1014
- #: admin/pages/additionally.php:114
1015
- msgid "Enable this if you want to remove wp logo from admin bar."
1016
- msgstr ""
1017
- "Activez cette option si vous souhaitez supprimer le logo wp de la barre "
1018
- "d'administration."
1019
-
1020
- #: admin/pages/additionally.php:124
1021
- msgid "Replaces the welcome text in admin bar."
1022
- msgstr "Remplace le texte de bienvenue dans la barre d'administration."
1023
-
1024
- #: admin/pages/additionally.php:130
1025
- msgid "Posts"
1026
- msgstr "Messages"
1027
-
1028
- #: admin/pages/additionally.php:130
1029
- msgid "In this group of options, you can manage revisions and post autosave."
1030
- msgstr ""
1031
- "Dans ce groupe d'options, vous pouvez gérer les révisions et publier la "
1032
- "sauvegarde automatique."
1033
-
1034
- #: admin/pages/additionally.php:172 admin/pages/additionally.php:270
1035
- msgid "Wordpress default"
1036
- msgstr "Wordpress default"
1037
-
1038
- #: admin/pages/additionally.php:173 admin/pages/additionally.php:174
1039
- #: admin/pages/additionally.php:175 admin/pages/additionally.php:176
1040
- #: admin/pages/additionally.php:177 admin/pages/additionally.php:178
1041
- #: admin/pages/additionally.php:179 admin/pages/additionally.php:180
1042
- #: admin/pages/additionally.php:181 admin/pages/additionally.php:182
1043
- msgid "revisions"
1044
- msgstr "révisions"
1045
-
1046
- #: admin/pages/additionally.php:185
1047
- msgid ""
1048
- "WordPress automatically saves revisions when you are working on posts and "
1049
- "pages. These can begin to add up pretty quick. By default, there is no limit "
1050
- "in place. We have seen posts with over 1,000 revisions. Multiply this by 50 "
1051
- "pages and suddenly you have over 50,000 revisions sitting in your database. "
1052
- "The problem with this is that you will most likely never use them and they "
1053
- "can start slowing down your database as well as using disk space.\n"
1054
- "So we recommend either disabling or limiting your revisions. "
1055
- msgstr ""
1056
- "WordPress enregistre automatiquement les révisions lorsque vous travaillez "
1057
- "sur les messages et les pages. Ceux-ci peuvent commencer à s'additionner "
1058
- "assez rapidement. Par défaut, il n'y a pas de limite en place. Nous avons vu "
1059
- "des postes avec plus de 1 000 révisions. Multipliez ce par 50 pages et tout "
1060
- "à coup vous avez plus de 50 000 révisions assis dans votre base de données. "
1061
- "Le problème avec cela est que vous aurez très probablement jamais les "
1062
- "utiliser et ils peuvent commencer à ralentir votre base de données ainsi que "
1063
- "l'utilisation de l'espace disque.\n"
1064
- "Nous recommandons donc soit de désactiver ou de limiter vos révisions. "
1065
-
1066
- #: admin/pages/additionally.php:196
1067
- msgid ""
1068
- "WordPress by default automatically saves a draft every 60 seconds (1 "
1069
- "minute). There are reasons why you might want to change this."
1070
- msgstr ""
1071
- "WordPress par défaut enregistre automatiquement un brouillon toutes les 60 "
1072
- "secondes (1 minute). Il y a des raisons pour lesquelles vous pourriez "
1073
- "vouloir changer cela."
1074
-
1075
- #: admin/pages/additionally.php:196
1076
- msgid "Disables automatic saving of drafts."
1077
- msgstr "Désactive la sauvegarde automatique des brouillons."
1078
-
1079
- #: admin/pages/additionally.php:206
1080
- msgid ""
1081
- "Function of text formatting. This function makes the text more correct, "
1082
- "readable and visually appealing. But sometimes this function may prevent you "
1083
- "from using certain codes and symbols."
1084
- msgstr ""
1085
- "Fonction de mise en forme du texte. Cette fonction rend le texte plus "
1086
- "correct, plus lisible et attrayant. Mais parfois, cette fonction peut vous "
1087
- "empêcher d'utiliser certains codes et symboles."
1088
-
1089
- #: admin/pages/additionally.php:206
1090
- msgid "Disable Texturization - Smart Quotes."
1091
- msgstr "Désactiver la texturation - Citations intelligentes."
1092
-
1093
- #: admin/pages/additionally.php:216
1094
- msgid ""
1095
- "Replaces the incorrectly written letter \"p\" in the middle of WordPress "
1096
- "(you need to write with the capital P in the middle)."
1097
- msgstr ""
1098
- "Remplace la lettre mal écrite \"p\" au milieu de WordPress (vous devez "
1099
- "écrire avec la majuscule p au milieu)."
1100
-
1101
- #: admin/pages/additionally.php:216
1102
- msgid "Disable capitalization in Wordpress branding."
1103
- msgstr "Désactiver la capitalisation dans la marque WordPress."
1104
-
1105
- #: admin/pages/additionally.php:226
1106
- msgid ""
1107
- "Replaces the double shifting of a string to an HTML p ... /p construct, and "
1108
- "a single one on br."
1109
- msgstr ""
1110
- "Remplace le décalage double d'une chaîne en une construction p .../p html, "
1111
- "et une seule sur br."
1112
-
1113
- #: admin/pages/additionally.php:226
1114
- msgid "Disable auto inserted paragraphs."
1115
- msgstr "Désactiver les paragraphes insérés automatiquement."
1116
-
1117
- #: admin/pages/additionally.php:232
1118
- msgid "Heartbeat"
1119
- msgstr "Battement de coeur"
1120
-
1121
- #: admin/pages/additionally.php:232
1122
- msgid ""
1123
- "The WordPress Heartbeat API uses /wp-admin/admin-ajax.php to run AJAX calls "
1124
- "from the web-browser. While this is great and all it can also cause high CPU "
1125
- "usage and crazy amounts of PHP calls. For example, if you leave your "
1126
- "dashboard open it will keep sending POST requests to this file on a regular "
1127
- "interval, every 15 seconds. Here is an example below of it happening."
1128
- msgstr ""
1129
- "Le WordPress Heartbeat API utilise/wp-admin/admin-Ajax.php pour exécuter des "
1130
- "appels AJAX à partir du navigateur Web. Tandis que c'est grand et tout il "
1131
- "peut également causer l'utilisation élevée de CPU et les quantités folles "
1132
- "des appels de php. Par exemple, si vous laissez votre tableau de bord "
1133
- "ouvert, il continuera à envoyer des demandes de poste à ce fichier sur un "
1134
- "intervalle régulier, toutes les 15 secondes. Voici un exemple ci-dessous qui "
1135
- "se passe."
1136
-
1137
- #: admin/pages/additionally.php:239
1138
- msgid "Disable Heartbeat"
1139
- msgstr "Désactiver le battement de coeur"
1140
-
1141
- #: admin/pages/additionally.php:241
1142
- msgid "Default"
1143
- msgstr "Défaut"
1144
-
1145
- #: admin/pages/additionally.php:242
1146
- msgid "Everywhere"
1147
- msgstr "Partout"
1148
-
1149
- #: admin/pages/additionally.php:243
1150
- msgid "On dashboard page"
1151
- msgstr "Sur la page du tableau de bord"
1152
-
1153
- #: admin/pages/additionally.php:244
1154
- msgid "Only allow when editing Posts/Pages"
1155
- msgstr "Autoriser uniquement lors de l'édition de messages/pages"
1156
-
1157
- #: admin/pages/additionally.php:268
1158
- msgid "Heartbeat frequency"
1159
- msgstr "Fréquence de battement de coeur"
1160
-
1161
- #: admin/pages/additionally.php:271 admin/pages/additionally.php:272
1162
- #: admin/pages/additionally.php:273 admin/pages/additionally.php:274
1163
- #: admin/pages/additionally.php:275 admin/pages/additionally.php:276
1164
- #: admin/pages/additionally.php:277 admin/pages/additionally.php:278
1165
- #: admin/pages/additionally.php:279
1166
- msgid "seconds"
1167
- msgstr "seconds"
1168
-
1169
- #: admin/pages/additionally.php:282
1170
- msgid ""
1171
- "You can disable all plugin updates or choose manual or automatic update mode."
1172
- msgstr ""
1173
- "Vous pouvez désactiver toutes les mises à jour du plugin ou choisir le mode "
1174
- "de mise à jour manuelle ou automatique."
1175
-
1176
- #: admin/pages/double-pages.php:27
1177
- msgid "Duplicate pages"
1178
- msgstr "Dupliquer des pages"
1179
-
1180
- #: admin/pages/double-pages.php:68
1181
- #, php-format
1182
- msgid ""
1183
- "Many duplicates in date archives. Imagine, in addition, that your article "
1184
- "will be displayed in the main and in the category, you will still receive at "
1185
- "least 3 duplicates: in archives by year, month and date, for example %s."
1186
- msgstr ""
1187
- "Plusieurs doublons dans les archives de date. Imaginez, en outre, que votre "
1188
- "article sera affiché dans le principal et dans la catégorie, vous recevrez "
1189
- "toujours au moins 3 doublons: dans les archives par année, mois et date, par "
1190
- "exemple %s."
1191
-
1192
- #: admin/pages/double-pages.php:68
1193
- msgid "Removes all pages with the date archives and puts a redirect."
1194
- msgstr ""
1195
- "Supprime toutes les pages avec les archives de date et met une redirection."
1196
-
1197
- #: admin/pages/double-pages.php:78
1198
- #, php-format
1199
- msgid ""
1200
- "If the site is only filled by you - a mandatory item. Allows you to get rid "
1201
- "of duplicates on user archives, for example %s."
1202
- msgstr ""
1203
- "Si le site n'est rempli que par vous - un élément obligatoire. Vous permet "
1204
- "de vous débarrasser des doublons dans les archives utilisateur, par exemple "
1205
- "%s."
1206
-
1207
- #: admin/pages/double-pages.php:78
1208
- msgid "Removes all pages with the author archives and puts a redirect."
1209
- msgstr ""
1210
- "Supprime toutes les pages avec les archives de l'auteur et met une "
1211
- "redirection."
1212
-
1213
- #: admin/pages/double-pages.php:88
1214
- msgid ""
1215
- "If you use tags only for the block Similar records, or do not use them at "
1216
- "all - it will be more correct to close them to avoid duplicates."
1217
- msgstr ""
1218
- "Si vous utilisez des balises uniquement pour le bloc des enregistrements "
1219
- "similaires, ou ne pas les utiliser à tous-il sera plus correct de les fermer "
1220
- "pour éviter les doublons."
1221
-
1222
- #: admin/pages/double-pages.php:88
1223
- msgid "Removes all pages with the tag archives and puts a redirect."
1224
- msgstr ""
1225
- "Supprime toutes les pages avec les archives de balises et met une "
1226
- "redirection."
1227
-
1228
- #: admin/pages/double-pages.php:98
1229
- msgid ""
1230
- "Every of the pictures has its own page on the site. Such pages are "
1231
- "successfully indexed and create duplicates. The site can have thousands of "
1232
- "same-type attachment pages."
1233
- msgstr ""
1234
- "Chaque photo a sa propre page sur le site. Ces pages sont indexées avec "
1235
- "succès et créent des doublons. Le site peut avoir des milliers de pages "
1236
- "d'attachement de même type."
1237
-
1238
- #: admin/pages/double-pages.php:98
1239
- msgid "Removes attachment pages and puts a redirect."
1240
- msgstr "Supprime les pages de pièce jointe et met une redirection."
1241
-
1242
- #: admin/pages/double-pages.php:108
1243
- #, php-format
1244
- msgid ""
1245
- "In WordPress, any post can be divided into parts (pages), each part will "
1246
- "have its own address. But this functionality is rarely used, but it can "
1247
- "create trouble for you. For example, you can add a number to the address of "
1248
- "any entry of your blog, %s - the post itself will open, which will be a "
1249
- "duplicate. You can substitute any number."
1250
- msgstr ""
1251
- "Dans WordPress, n'importe quel poste peut être divisé en parties (pages), "
1252
- "chaque partie aura sa propre adresse. Mais cette fonctionnalité est rarement "
1253
- "utilisée, mais elle peut créer des problèmes pour vous. Par exemple, vous "
1254
- "pouvez ajouter un numéro à l'adresse de toute entrée de votre blog, %s - le "
1255
- "message lui-même s'ouvrira, qui sera un doublon. Vous pouvez remplacer "
1256
- "n'importe quel nombre."
1257
-
1258
- #: admin/pages/double-pages.php:108
1259
- #, php-format
1260
- msgid "Removes the pagination from the post and puts a redirect. Example: %s"
1261
- msgstr ""
1262
- "Supprime la pagination de la publication et met une redirection. Exemple: %s"
1263
-
1264
- #: admin/pages/double-pages.php:118
1265
- #, php-format
1266
- msgid ""
1267
- "WordPress adds %s to the link \"Reply\" in the comments, if you use "
1268
- "hierarchical comments."
1269
- msgstr ""
1270
- "WordPress ajoute %s au lien \"répondre\" dans les commentaires, si vous "
1271
- "utilisez des commentaires hiérarchiques."
1272
-
1273
- #: admin/pages/double-pages.php:118
1274
- msgid "?relpytocom remove and and puts a redirect."
1275
- msgstr "supprimer ?relpytocom et met une redirection."
1276
-
1277
- #: admin/pages/widgets.php:25
1278
- msgid "Widgets"
1279
- msgstr "Widgets"
1280
-
1281
- #: admin/ajax/configurate.php:16 admin/ajax/import-settings.php:16
1282
- msgid "You don't have enough capability to edit this information."
1283
- msgstr "Vous n'avez pas la capacité suffisante pour modifier ces informations."
1284
-
1285
- #: admin/ajax/configurate.php:29 admin/ajax/configurate.php:41
1286
- msgid "Undefinded mode."
1287
- msgstr "Mode non défini."
1288
-
1289
- #: admin/ajax/import-settings.php:23
1290
- msgid "Settings are not defined or do not exist."
1291
- msgstr "Les paramètres ne sont pas définis ou n'existent pas."
1292
-
1293
- #. Name of the plugin
1294
- msgid "Webcraftic Clearfy - disable unused features"
1295
- msgstr "Webcraftic Clearfy - désactiver les fonctionnalités inutilisées"
1296
-
1297
- #. Description of the plugin
1298
- msgid ""
1299
- "Disables unused Wordpress features, improves performance and increases SEO "
1300
- "rankings, using Clearfy, which makes WordPress very easy."
1301
- msgstr ""
1302
- "Désactiver les fonctionnalités de Wordpress inutilisées, améliorer les "
1303
- "performances et augmenter les classements SEO, en utilisant le plugin "
1304
- "Clarify, ce qui rend WordPress très facile. Traduit par kingteandunet."
1305
-
1306
- #. URI of the plugin
1307
- msgid "https://wordpress.org/plugins/clearfy/"
1308
- msgstr "https://wordpress.org/plugins/clearfy/"
1309
-
1310
- #. Author of the plugin
1311
- msgid "Webcraftic <wordpress.webraftic@gmail.com>"
1312
- msgstr "Webcraftic <wordpress.webraftic@gmail.com>"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/clearfy-it_IT.mo DELETED
Binary file
languages/clearfy-it_IT.po DELETED
@@ -1,1324 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-01-14 21:35+0300\n"
5
- "PO-Revision-Date: 2018-01-14 21:36+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: it_IT\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
- "X-Poedit-SearchPathExcluded-1: components\n"
21
-
22
- #: admin/ajax/configurate.php:16 admin/ajax/import-settings.php:16
23
- msgid "You don't have enough capability to edit this information."
24
- msgstr "Non hai capacità sufficienti per modificare questa informazione."
25
-
26
- #: admin/ajax/configurate.php:29 admin/ajax/configurate.php:41
27
- msgid "Undefinded mode."
28
- msgstr "Modalità non definita."
29
-
30
- #: admin/ajax/import-settings.php:23
31
- msgid "Settings are not defined or do not exist."
32
- msgstr "Impostazioni non definite o inesistenti."
33
-
34
- #: admin/includes/options.php:12 admin/pages/code-clean.php:76
35
- msgid "Remove REST API Links"
36
- msgstr "Rimuovi Collegamenti API REST"
37
-
38
- #: admin/includes/options.php:17 admin/pages/code-clean.php:86
39
- msgid "Disable Emojis"
40
- msgstr "Disattiva gli Emoji"
41
-
42
- #: admin/includes/options.php:22 admin/pages/code-clean.php:116
43
- msgid "Remove dns-prefetch"
44
- msgstr "Rimuovi dns-prefetch"
45
-
46
- #: admin/includes/options.php:27 admin/pages/code-clean.php:125
47
- msgid "Remove RSD Link"
48
- msgstr "Rimuovi Collegamento RSD"
49
-
50
- #: admin/includes/options.php:32 admin/pages/code-clean.php:135
51
- msgid "Remove wlwmanifest Link"
52
- msgstr "Rimuovi Collegamento wlwmanifest"
53
-
54
- #: admin/includes/options.php:37 admin/pages/code-clean.php:145
55
- msgid "Remove Shortlink"
56
- msgstr "Rimuovi Shortlink"
57
-
58
- #: admin/includes/options.php:42 admin/pages/code-clean.php:155
59
- msgid "Remove links to previous, next post"
60
- msgstr "Rimuovi collegamenti articolo prec./succ."
61
-
62
- #: admin/includes/options.php:47 admin/pages/code-clean.php:165
63
- msgid "Remove .recentcomments styles"
64
- msgstr "Rimuovi stili .recentcomments"
65
-
66
- #: admin/includes/options.php:52 admin/pages/seo.php:66
67
- msgid "Automatically set the alt attribute"
68
- msgstr "Imposta automaticamente l'attributo alt"
69
-
70
- #: admin/includes/options.php:57 admin/pages/seo.php:121
71
- msgid "Automatically insert the Last Modified header"
72
- msgstr "Inserisci automaticamente l'header Ultima Modifica"
73
-
74
- #: admin/includes/options.php:62 admin/pages/seo.php:144
75
- msgid "Return an If-Modified-Since responce"
76
- msgstr "Ritorna risposta If-Modified-Since"
77
-
78
- #: admin/includes/options.php:67 admin/pages/seo.php:167
79
- msgid "Remove duplicate names in breadcrumbs WP SEO by Yoast"
80
- msgstr "Rimuovi nomi duplicati nel breadcrumb di WP SEO by Yoast"
81
-
82
- #: admin/includes/options.php:72 admin/pages/seo.php:177
83
- #, php-format
84
- msgid "Remove the tag %s from XML site map"
85
- msgstr "Rimuovi il tag %s dalla site map XML"
86
-
87
- #: admin/includes/options.php:77 admin/pages/seo.php:195
88
- msgid "Disable JSON-LD sitelinks searchbox"
89
- msgstr "Disattiva casella di ricerca collegamenti JSON-LD"
90
-
91
- #: admin/includes/options.php:82 admin/pages/seo.php:205
92
- msgid "Disable Yoast Structured Data"
93
- msgstr "Disattiva Yoast Structured Data"
94
-
95
- #: admin/includes/options.php:87 admin/pages/seo.php:217
96
- #, php-format
97
- msgid "Remove comment from %s section"
98
- msgstr "Rimuovi commenti dalla sezione %s"
99
-
100
- #: admin/includes/options.php:92 admin/pages/double-pages.php:66
101
- msgid "Remove archives date"
102
- msgstr "Rimuovi data archivi"
103
-
104
- #: admin/includes/options.php:97 admin/pages/double-pages.php:76
105
- msgid "Remove author archives "
106
- msgstr "Rimuovi archivi autori"
107
-
108
- #: admin/includes/options.php:102 admin/pages/double-pages.php:86
109
- msgid "Remove archives tag"
110
- msgstr "Rimuovi tags archivi"
111
-
112
- #: admin/includes/options.php:107 admin/pages/double-pages.php:96
113
- msgid "Remove attachment pages"
114
- msgstr "Rimuovi pagina allegati"
115
-
116
- #: admin/includes/options.php:112 admin/pages/double-pages.php:106
117
- msgid "Remove post pagination"
118
- msgstr "Rimuovi paginazione articoli"
119
-
120
- #: admin/includes/options.php:117 admin/pages/double-pages.php:116
121
- msgid "Remove ?replytocom"
122
- msgstr "Rimuovi ?replytocom"
123
-
124
- #: admin/includes/options.php:122 admin/pages/privacy.php:66
125
- msgid "Remove meta generator"
126
- msgstr "Rimuovi generatore meta"
127
-
128
- #: admin/includes/options.php:127 admin/pages/defence.php:64
129
- msgid "Hide author login"
130
- msgstr "Nascondi login autore"
131
-
132
- #: admin/includes/options.php:132 admin/pages/defence.php:74
133
- msgid "Hide errors when logging into the site"
134
- msgstr "Nascondi errori all'accesso al sito"
135
-
136
- #: admin/includes/options.php:137 admin/includes/options.php:254
137
- #: admin/pages/privacy.php:76
138
- msgid "Remove Version from Stylesheet"
139
- msgstr "Rimuovi Versione dagli Stylesheets"
140
-
141
- #: admin/includes/options.php:142 admin/includes/options.php:259
142
- #: admin/pages/privacy.php:87
143
- msgid "Remove Version from Script"
144
- msgstr "Rimuovi Versione dagli Scripts"
145
-
146
- #: admin/includes/options.php:147 admin/pages/widgets.php:44
147
- msgid "Remove the \"Pages\" widget"
148
- msgstr "Rimuovi il widget \"Pagine\""
149
-
150
- #: admin/includes/options.php:152 admin/pages/widgets.php:53
151
- msgid "Remove calendar widget"
152
- msgstr "Rimuovi il widget \"Calendario\""
153
-
154
- #: admin/includes/options.php:157 admin/pages/widgets.php:62
155
- msgid "Remove the \"Cloud of tags\" widget"
156
- msgstr "Rimuovi il widget \"Tag Cloud\""
157
-
158
- #: admin/includes/options.php:162 admin/pages/widgets.php:71
159
- msgid "Remove the \"Archives\" widget"
160
- msgstr "Rimuovi il widget \"Archivi\""
161
-
162
- #: admin/includes/options.php:167 admin/pages/widgets.php:80
163
- msgid "Remove the \"Links\" widget"
164
- msgstr "Rimuovi il widget \"Collegamenti\""
165
-
166
- #: admin/includes/options.php:172 admin/pages/widgets.php:89
167
- msgid "Remove the \"Meta\" widget"
168
- msgstr "Rimuovi il widget \"Meta\""
169
-
170
- #: admin/includes/options.php:177 admin/pages/widgets.php:98
171
- msgid "Remove the \"Search\" widget"
172
- msgstr "Rimuovi il widget \"Ricerca\""
173
-
174
- #: admin/includes/options.php:182 admin/includes/options.php:202
175
- #: admin/pages/widgets.php:107
176
- msgid "Remove the \"Text\" widget"
177
- msgstr "Rimuovi il widget \"Testo\""
178
-
179
- #: admin/includes/options.php:187 admin/pages/widgets.php:116
180
- msgid "Remove the \"Categories\" widget"
181
- msgstr "Rimuovi il widget \"Categorie\""
182
-
183
- #: admin/includes/options.php:192 admin/pages/widgets.php:125
184
- msgid "Remove the \"Recent Posts\" widget"
185
- msgstr "Rimuovi il widget \"Articoli Recenti\""
186
-
187
- #: admin/includes/options.php:197 admin/pages/widgets.php:134
188
- msgid "Remove the \"Recent Comments\" widget"
189
- msgstr "Rimuovi il widget \"Commenti Recenti\""
190
-
191
- #: admin/includes/options.php:207 admin/pages/widgets.php:143
192
- msgid "Remove the \"RSS\" widget"
193
- msgstr "Rimuovi il widget \"RSS\""
194
-
195
- #: admin/includes/options.php:212 admin/pages/widgets.php:152
196
- msgid "Remove the \"Menu\" widget"
197
- msgstr "Rimuovi il widget \"Menu\""
198
-
199
- #: admin/includes/options.php:217 admin/pages/widgets.php:161
200
- msgid "Remove the \"Twenty Eleven Ephemera\" widget"
201
- msgstr "Rimuovi il widget \"Twenty Eleven Ephemera\""
202
-
203
- #: admin/includes/options.php:220 admin/includes/options.php:294
204
- #: admin/pages/additionally.php:137
205
- msgid "Disable revision"
206
- msgstr "Disattiva revisioni"
207
-
208
- #: admin/includes/options.php:221 admin/includes/options.php:299
209
- #: admin/pages/additionally.php:170
210
- msgid "Limit Post Revisions"
211
- msgstr "Limita Revisioni Articoli"
212
-
213
- #: admin/includes/options.php:222 admin/pages/seo.php:135
214
- msgid "Exclude pages:"
215
- msgstr "Escludi pagine:"
216
-
217
- #: admin/includes/options.php:225 admin/pages/seo.php:76
218
- msgid "Create right robots.txt"
219
- msgstr "Crea robots.txt corretto"
220
-
221
- #: admin/includes/options.php:230 admin/pages/seo.php:91
222
- msgid "You can edit the robots.txt file in the box below:"
223
- msgstr "Puoi modificare il file robots.txt nella casella sottostante:"
224
-
225
- #: admin/includes/options.php:233
226
- msgid "Quick mode"
227
- msgstr "Modalità veloce"
228
-
229
- #: admin/includes/options.php:236 admin/pages/code-clean.php:96
230
- msgid "Remove jQuery Migrate"
231
- msgstr "Rimuovi jQuery Migrate"
232
-
233
- #: admin/includes/options.php:239 admin/pages/code-clean.php:106
234
- msgid "Disable Embeds"
235
- msgstr "Disattiva Embeds"
236
-
237
- #: admin/includes/options.php:240 admin/pages/code-clean.php:66
238
- msgid "Disable RSS feeds"
239
- msgstr "Disattiva Feeds RSS"
240
-
241
- #: admin/includes/options.php:243
242
- msgid "Removes links to wordpress.org site from the admin bar"
243
- msgstr "Rimuovi collegamenti a wordpress.org dalla barra admin"
244
-
245
- #: admin/includes/options.php:246 admin/pages/code-clean.php:175
246
- msgid "HTML minify"
247
- msgstr "Minimizza HTML"
248
-
249
- #: admin/includes/options.php:249
250
- msgid "Redirect Http to Https"
251
- msgstr "Redirigi HTTP su HTTPS"
252
-
253
- #: admin/includes/options.php:264 admin/pages/privacy.php:98
254
- msgid "Eclude stylesheet/script file names"
255
- msgstr "Escludi nomi di file stylesheet/script"
256
-
257
- #: admin/includes/options.php:269 admin/pages/additionally.php:68
258
- msgid "Enable Sanitization of WordPress"
259
- msgstr "Attiva Sanitizzazione di WordPress"
260
-
261
- #: admin/includes/options.php:274 admin/pages/additionally.php:78
262
- msgid "Disable admin notice"
263
- msgstr "Disattiva notifiche admin"
264
-
265
- #: admin/includes/options.php:279 admin/pages/additionally.php:94
266
- msgid "Disable admin top bar"
267
- msgstr "Disattiva barra superiore admin"
268
-
269
- #: admin/includes/options.php:284 admin/pages/additionally.php:112
270
- msgid "Remove admin bar WP logo"
271
- msgstr "Rimuovi logo WP dalla barra admin"
272
-
273
- #: admin/includes/options.php:289 admin/pages/additionally.php:122
274
- msgid "Replace \"Howdy\" text with \"Welcome\""
275
- msgstr "Sostituisci testo \"Howdy\" con \"Welcome\""
276
-
277
- #: admin/includes/options.php:304 admin/pages/additionally.php:194
278
- msgid "Disable autosave"
279
- msgstr "Disattiva salvataggio automatico"
280
-
281
- #: admin/includes/options.php:309 admin/pages/additionally.php:204
282
- msgid "Disable Texturization - Smart Quotes"
283
- msgstr "Disattiva Texturization - Smart Quotes"
284
-
285
- #: admin/includes/options.php:314 admin/pages/additionally.php:214
286
- msgid "Disable capitalization in Wordpress branding"
287
- msgstr "Disattiva iniziali maiuscole nel branding di WordPress"
288
-
289
- #: admin/includes/options.php:319 admin/pages/additionally.php:224
290
- msgid "Disable auto inserted paragraphs (i.e. p tags)"
291
- msgstr "Disattiva inserimento automatico paragrafi (tags p)"
292
-
293
- #: admin/includes/options.php:324 admin/pages/additionally.php:239
294
- msgid "Disable Heartbeat"
295
- msgstr "Disattiva Heartbeat"
296
-
297
- #: admin/includes/options.php:329 admin/pages/additionally.php:268
298
- msgid "Heartbeat frequency"
299
- msgstr "Frequenza hearbeat"
300
-
301
- #: admin/includes/options.php:334 admin/pages/code-clean.php:185
302
- #: admin/pages/privacy.php:107
303
- msgid "Remove html comments"
304
- msgstr "Rimuovi HTML dai commenti"
305
-
306
- #: admin/pages/additionally.php:27
307
- msgid "Advanced"
308
- msgstr "Avanzate"
309
-
310
- #: admin/pages/additionally.php:50
311
- msgid ""
312
- "Warning! In the wp-config.php file, a constant WP_POST_REVISIONS is found, "
313
- "it determines the number of revisions. Delete it so you can change this "
314
- "value through the admin panel."
315
- msgstr ""
316
- "Attenzione! Nel file wp-config.php, si trova la costante WP_POST_REVISIONS, "
317
- "la quale determina il numero di revisioni. Eliminala per poter cambiare "
318
- "questo valore attraverso il pannello amministrativo."
319
-
320
- #: admin/pages/additionally.php:70
321
- msgid ""
322
- "File names and some titles can have special characters, which can cause "
323
- "problems when creating permalinks."
324
- msgstr ""
325
- "I nomi dei file ed alcuni titoli possono avere caratteri speciali, che "
326
- "possono causare problemi durante la creazione dei permalinks."
327
-
328
- #: admin/pages/additionally.php:70
329
- msgid ""
330
- "Removes symbols, spaces, latin and other languages characters from uploaded "
331
- "files and gives them \"permalink\" structure (clean characters, only "
332
- "lowercase and dahes)."
333
- msgstr ""
334
- "Rimuove simboli, spazi, caratteri latini e di altre lingue dai files "
335
- "caricati e gli dà una struttura da \"permalink\" (caratteri puliti, solo "
336
- "minuscole e trattini)."
337
-
338
- #: admin/pages/additionally.php:80
339
- msgid ""
340
- "Whenever there’s a major release available, a notification will display at "
341
- "the top of your admin area, letting you know your version is out-of-date and "
342
- "you need to update the core code.<br>\n"
343
- "For many people, this nag can be annoying. And if you developer websites for "
344
- "clients, you may want to hide it. After all, who wants to let their clients "
345
- "know their software is old?"
346
- msgstr ""
347
- "Quando viene rilasciata una major release, una notifica compare in cima alla "
348
- "tua area amministrativa, permettendoti di sapere che la tua versione del "
349
- "core non è aggiornata.<br>\n"
350
- "Per molte persone, questo messaggio può essere fastidioso, e se sviluppi "
351
- "siti per i tuoi clienti potresti volerla nascondere. In fin dei conti, chi "
352
- "vuole far sapere ai propri clienti che il loro software è obsoleto?"
353
-
354
- #: admin/pages/additionally.php:81
355
- msgid "Disable admin notices."
356
- msgstr "Disattiva notifiche admin."
357
-
358
- #: admin/pages/additionally.php:87
359
- msgid "Admin bar"
360
- msgstr "Barra admin"
361
-
362
- #: admin/pages/additionally.php:87
363
- msgid "In this group of settings, you can manage the adminbar."
364
- msgstr "In questo gruppo di impostazioni, puoi gestire la barra admin."
365
-
366
- #: admin/pages/additionally.php:96
367
- msgid "Default enable"
368
- msgstr "Attivata"
369
-
370
- #: admin/pages/additionally.php:97
371
- msgid "For all users"
372
- msgstr "Per tutti gli utenti"
373
-
374
- #: admin/pages/additionally.php:100
375
- msgid "For all users except administrator"
376
- msgstr "Per tutti gli utenti, eccetto l'amministratore"
377
-
378
- #: admin/pages/additionally.php:104
379
- msgid ""
380
- "In some cases, you need to disable the floating top admin panel. You can "
381
- "disable this panel."
382
- msgstr ""
383
- "In alcuni casi, può essere utile disattivare la barra admin in cima alla "
384
- "pagina. Questo può essere fatto da qui."
385
-
386
- #: admin/pages/additionally.php:104
387
- msgid "Disable admin top bar."
388
- msgstr "Disattiva barra admin."
389
-
390
- #: admin/pages/additionally.php:114
391
- msgid "Enable this if you want to remove wp logo from admin bar."
392
- msgstr "Attiva questa opzione se vuoi rimuovere il logo WP dalla barra admin."
393
-
394
- #: admin/pages/additionally.php:124
395
- msgid "Replaces the welcome text in admin bar."
396
- msgstr "Sostituisce il testo di benvenuto nella barra admin."
397
-
398
- #: admin/pages/additionally.php:130
399
- msgid "Posts"
400
- msgstr "Articoli"
401
-
402
- #: admin/pages/additionally.php:130
403
- msgid "In this group of options, you can manage revisions and post autosave."
404
- msgstr ""
405
- "In questo gruppo di opzioni, puoi gestire le revisioni ed il salvataggio "
406
- "automatico degli articoli."
407
-
408
- #: admin/pages/additionally.php:172 admin/pages/additionally.php:270
409
- msgid "Wordpress default"
410
- msgstr "Predefinite WordPress"
411
-
412
- #: admin/pages/additionally.php:173 admin/pages/additionally.php:174
413
- #: admin/pages/additionally.php:175 admin/pages/additionally.php:176
414
- #: admin/pages/additionally.php:177 admin/pages/additionally.php:178
415
- #: admin/pages/additionally.php:179 admin/pages/additionally.php:180
416
- #: admin/pages/additionally.php:181 admin/pages/additionally.php:182
417
- msgid "revisions"
418
- msgstr "revisioni"
419
-
420
- #: admin/pages/additionally.php:185
421
- msgid ""
422
- "WordPress automatically saves revisions when you are working on posts and "
423
- "pages. These can begin to add up pretty quick. By default, there is no limit "
424
- "in place. We have seen posts with over 1,000 revisions. Multiply this by 50 "
425
- "pages and suddenly you have over 50,000 revisions sitting in your database. "
426
- "The problem with this is that you will most likely never use them and they "
427
- "can start slowing down your database as well as using disk space.\n"
428
- "So we recommend either disabling or limiting your revisions. "
429
- msgstr ""
430
- "WordPress salva automaticamente le revisioni quando lavori sugli articoli e "
431
- "sulle pagine. Queste possono iniziare ad impilarsi in fretta. Per "
432
- "impostazione predefinita, non esiste nessun limite a ciò. Abbiamo visto "
433
- "articoli con oltre 1'000 revisioni: moltiplica questo valore per 50 pagine e "
434
- "ti ritrovi con 50'000 revisioni inutili nel tuo database. Il problema è che "
435
- "molto probabilmente non ne farai mai uso, e possono iniziare a rallentare il "
436
- "tuo database, oltre a sprecare spazio su disco.\n"
437
- "Per questo motivo, consigliamo di disattivare o limitare il numero di "
438
- "revisioni."
439
-
440
- #: admin/pages/additionally.php:196
441
- msgid ""
442
- "WordPress by default automatically saves a draft every 60 seconds (1 "
443
- "minute). There are reasons why you might want to change this."
444
- msgstr ""
445
- "WordPress per impostazione predefinita salva una bozza ogni 60 secondi (un "
446
- "minuto). Se dovessi voler cambiare questo valore, lo puoi fare."
447
-
448
- #: admin/pages/additionally.php:196
449
- msgid "Disables automatic saving of drafts."
450
- msgstr "Disattiva il salvataggio automatico delle bozze."
451
-
452
- #: admin/pages/additionally.php:206
453
- msgid ""
454
- "Function of text formatting. This function makes the text more correct, "
455
- "readable and visually appealing. But sometimes this function may prevent you "
456
- "from using certain codes and symbols."
457
- msgstr ""
458
- "Funzione di formattazione testo. Questa funzione corregge il testo, "
459
- "rendendolo leggibile ed esteticamente gradevole. Ma a volte questa funzione "
460
- "può impedirti di usare certi simboli e codici durante la scrittura."
461
-
462
- #: admin/pages/additionally.php:206
463
- msgid "Disable Texturization - Smart Quotes."
464
- msgstr "Disattiva Texturization - Smart Quotes."
465
-
466
- #: admin/pages/additionally.php:216
467
- msgid ""
468
- "Replaces the incorrectly written letter \"p\" in the middle of WordPress "
469
- "(you need to write with the capital P in the middle)."
470
- msgstr ""
471
- "Sostituisce la lettera \"p\" scritta sbagliata in mezzo alla parola "
472
- "WordPress (la cui P centrale deve essere maiuscola)."
473
-
474
- #: admin/pages/additionally.php:216
475
- msgid "Disable capitalization in Wordpress branding."
476
- msgstr "Disattiva correzione maiuscole nel branding di WordPress."
477
-
478
- #: admin/pages/additionally.php:226
479
- msgid ""
480
- "Replaces the double shifting of a string to an HTML p ... /p construct, and "
481
- "a single one on br."
482
- msgstr ""
483
- "Sostituisce la correzione di una stringa doppia in un costrutto HTML p ... /"
484
- "p, e di una singola in br."
485
-
486
- #: admin/pages/additionally.php:226
487
- msgid "Disable auto inserted paragraphs."
488
- msgstr "Disattiva inserimento automatico paragrafi."
489
-
490
- #: admin/pages/additionally.php:232
491
- msgid "Heartbeat"
492
- msgstr "Heartbeat"
493
-
494
- #: admin/pages/additionally.php:232
495
- msgid ""
496
- "The WordPress Heartbeat API uses /wp-admin/admin-ajax.php to run AJAX calls "
497
- "from the web-browser. While this is great and all it can also cause high CPU "
498
- "usage and crazy amounts of PHP calls. For example, if you leave your "
499
- "dashboard open it will keep sending POST requests to this file on a regular "
500
- "interval, every 15 seconds. Here is an example below of it happening."
501
- msgstr ""
502
- "La API Heartbeat di WordPress usa /wp-admin/admin-ajax.php per eseguire "
503
- "chiamate AJAX dal browser web. Può sembrare una cosa positiva, ma rischia di "
504
- "causare un utilizzo eccessivo della CPU ed una quantità smisurata di "
505
- "chiamate PHP. Per esempio, se lasci la tua bacheca aperta continuerà ad "
506
- "inviare richieste POST a questo file ad intervalli regolari, ogni 15 "
507
- "secondi. Qui di seguito puoi vederne un esempio in azione."
508
-
509
- #: admin/pages/additionally.php:241
510
- msgid "Default"
511
- msgstr "Predefinito"
512
-
513
- #: admin/pages/additionally.php:242
514
- msgid "Everywhere"
515
- msgstr "Dappertutto"
516
-
517
- #: admin/pages/additionally.php:243
518
- msgid "On dashboard page"
519
- msgstr "Sulla bacheca"
520
-
521
- #: admin/pages/additionally.php:244
522
- msgid "Only allow when editing Posts/Pages"
523
- msgstr "Consenti solo durante la modifica di articoli/pagine"
524
-
525
- #: admin/pages/additionally.php:271 admin/pages/additionally.php:272
526
- #: admin/pages/additionally.php:273 admin/pages/additionally.php:274
527
- #: admin/pages/additionally.php:275 admin/pages/additionally.php:276
528
- #: admin/pages/additionally.php:277 admin/pages/additionally.php:278
529
- #: admin/pages/additionally.php:279
530
- msgid "seconds"
531
- msgstr "secondi"
532
-
533
- #: admin/pages/additionally.php:282
534
- msgid ""
535
- "You can disable all plugin updates or choose manual or automatic update mode."
536
- msgstr ""
537
- "Puoi disattivare tutti gli aggiornamenti dei plugins o scegliere le modalità "
538
- "di aggiornamento automatico e manuale."
539
-
540
- #: admin/pages/code-clean.php:27
541
- msgid "Code cleaning"
542
- msgstr "Pulizia del codice"
543
-
544
- #: admin/pages/code-clean.php:68
545
- msgid ""
546
- "By default, WordPress generates all types of different RSS feeds for your "
547
- "site. While RSS feeds can be useful if you are running a blog, businesses "
548
- "might not always utilize these. Not every site out there has a blog."
549
- msgstr ""
550
- "Per impostazione predefinita, WordPress genera tutti i tipi di feeds RSS per "
551
- "il tuo sito. Mentre i feeds RSS possono essere utili se stai gestendo un "
552
- "blog, le aziende non sempre li usano. Non tutti i siti su internet hanno un "
553
- "blog."
554
-
555
- #: admin/pages/code-clean.php:68
556
- #, php-format
557
- msgid ""
558
- "Removes a link to the RSS-feed from the %s section, closes and puts the "
559
- "redirect from all RSS-feeds."
560
- msgstr ""
561
- "Rimuove il collegamento al feed RSS dalla sezione %s, chiude il feed e mette "
562
- "un redirect da tutti i feeds RSS."
563
-
564
- #: admin/pages/code-clean.php:78
565
- msgid ""
566
- "The WordPress REST API provides API endpoints for WordPress data types that "
567
- "allow developers to interact with sites remotely by sending and receiving "
568
- "JSON (JavaScript Object Notation) objects. However, a lot of sites don’t use "
569
- "this, and therefore in most cases, it is just unnecessary code."
570
- msgstr ""
571
- "La API REST di WordPress offre degli endpoints API per i tipi di dati di "
572
- "WordPress che permettono agli sviluppatori di interagire con i siti "
573
- "remotamente inviando e ricevendo oggetti JSON (JavaScript Object Notation). "
574
- "Tuttavia, tanti siti non la usano, quindi in tanti casi è solo codice "
575
- "superfluo."
576
-
577
- #: admin/pages/code-clean.php:78
578
- msgid ""
579
- "Removes REST API link tag from the front end and the REST API header link "
580
- "from page requests."
581
- msgstr ""
582
- "Rimuove il link tag API REST dal front-end e il collegamento nell'header "
583
- "alla API REST dalle richieste di pagina."
584
-
585
- #: admin/pages/code-clean.php:86 admin/pages/code-clean.php:116
586
- #: admin/pages/code-clean.php:125 admin/pages/code-clean.php:135
587
- #: admin/pages/code-clean.php:145 admin/pages/code-clean.php:155
588
- #: admin/pages/code-clean.php:165 admin/pages/defence.php:64
589
- #: admin/pages/defence.php:74 admin/pages/defence.php:84
590
- #: admin/pages/double-pages.php:66 admin/pages/double-pages.php:76
591
- #: admin/pages/double-pages.php:96 admin/pages/double-pages.php:106
592
- #: admin/pages/double-pages.php:116 admin/pages/privacy.php:66
593
- #: admin/pages/privacy.php:76 admin/pages/privacy.php:87 admin/pages/seo.php:66
594
- #: admin/pages/seo.php:121 admin/pages/seo.php:144 admin/pages/seo.php:167
595
- #: admin/pages/seo.php:177 admin/pages/seo.php:217
596
- msgid "Recommended"
597
- msgstr "Consigliate"
598
-
599
- #: admin/pages/code-clean.php:88
600
- msgid ""
601
- "Emojis are fun and all, but if you are aren’t using them they actually load "
602
- "a JavaScript file (wp-emoji-release.min.js) on every page of your website. "
603
- "For a lot of businesses, this is not needed and simply adds load time to "
604
- "your site. So we recommend disabling this."
605
- msgstr ""
606
- "Gli emoji saranno pure carini, ma se non li usi caricano un file JavaScript "
607
- "(wp-emoji-release.min.js) su ogni pagina del tuo sito. Per tante aziende, "
608
- "questo non è necessario e non fa altro che aggiungersi ai tempi di "
609
- "caricamento del sito, quindi consigliamo di disattivarlo."
610
-
611
- #: admin/pages/code-clean.php:88
612
- msgid "Removes WordPress Emojis JavaScript file (wp-emoji-release.min.js)."
613
- msgstr "Rimuove il file JavaScript Emoji WordPress (wp-emoji-release.min.js)"
614
-
615
- #: admin/pages/code-clean.php:98
616
- msgid ""
617
- "They started adding jQuery migrate in WordPress 3.6. Most up-to-date "
618
- "frontend code and plugins don’t require jquery-migrate.min.js. In most "
619
- "cases, this simply adds unnecessary load to your site. You can see this "
620
- "running if you launch Chrome Devtools console."
621
- msgstr ""
622
- "Da WordPress 3.6, è stato aggiunto jQuery Migrate. Solitamente, jquery-"
623
- "migrate.min.js non è richiesto se il codice front-end e i plugin sono stati "
624
- "scritti correttamente. In molti casi, questo aggiunge tempi di caricamento "
625
- "non necessari al tuo sito. Puoi valutarne l'impatto lanciando la console di "
626
- "sviluppo del tuo browser."
627
-
628
- #: admin/pages/code-clean.php:98
629
- msgid "Removes jQuery Migrate JavaScript file (jquery-migrate.min.js)."
630
- msgstr "Rimuove il file JavaScript di jQuery Migrate (jquery-migrate.min.js)."
631
-
632
- #: admin/pages/code-clean.php:98
633
- msgid "Warning! If there is a broke on your site, disable this option!"
634
- msgstr ""
635
- "Attenzione! Se qualcosa nel sito dovesse smettere di funzionare, disattiva "
636
- "questa opzione!"
637
-
638
- #: admin/pages/code-clean.php:108
639
- msgid ""
640
- "Embeds were released with WordPress 4.4. This is basically the magic that "
641
- "auto converts your YouTube videos, Tweets, and URLs into pretty previews "
642
- "while you are editing. However, this actually loads a JavaScript file (wp-"
643
- "embed.min.js) on every page of your website. If you don’t care about the "
644
- "auto converting preview (which we don’t), you can disable this across your "
645
- "site."
646
- msgstr ""
647
- "Gli embeds sono stati rilasciati con WordPress 4.4. Questa è in pratica la "
648
- "magia che converte automaticamente i tuoi video di YouTube, tweets e URL in "
649
- "anteprime durante la modifica dei contenuti. Tuttavia, questo carica un file "
650
- "JavaScript (wp-embed.min.js) su tutte le pagine del sito. Se non ti "
651
- "interessa la conversione automatica delle anteprime, puoi disattivarla su "
652
- "tutto il sito."
653
-
654
- #: admin/pages/code-clean.php:108
655
- msgid "Removes WordPress Embed JavaScript file (wp-embed.min.js)"
656
- msgstr "Rimuove il File JavaScript Embed di WordPress (wp-embed.min.js)"
657
-
658
- #: admin/pages/code-clean.php:118
659
- #, php-format
660
- msgid ""
661
- "Since version 4.6.1 in WordPress there are new links in the section %s this "
662
- "type of: "
663
- msgstr ""
664
- "Dalla versione 4.6.1, ci sono nuovi collegamenti nella sezione %s di "
665
- "WordPress di questo tipo:"
666
-
667
- #: admin/pages/code-clean.php:118
668
- #, php-format
669
- msgid "Removes dns-prefetch links from the %s section"
670
- msgstr "Rimuove i collegamenti dns-prefetch dalla sezione %s"
671
-
672
- #: admin/pages/code-clean.php:127
673
- msgid ""
674
- "The above link is used by blog clients. If you edit your site from your "
675
- "browser then you don’t need this. It is also used by some 3rd party "
676
- "applications that utilize XML-RPC requests. In most cases, this is just "
677
- "unnecessary code."
678
- msgstr ""
679
- "Il collegamento sopra è usato dai client di blog. Se modifichi il tuo sito "
680
- "dal tuo browser, non ne hai bisogno. È anche usato da alcune applicazioni di "
681
- "terze parti che utilizzano le richieste XML-RPC. In molti casi, questo è "
682
- "solo codice superfluo."
683
-
684
- #: admin/pages/code-clean.php:127
685
- msgid "Remove RSD (Real Simple Discovery) link tag."
686
- msgstr "Rimuovi il link tag RSD (Real Simple Discovery)."
687
-
688
- #: admin/pages/code-clean.php:137
689
- msgid ""
690
- "This link is actually used by Windows Live Writer. If you don’t know use "
691
- "Windows Live Writer, which we are guessing you don’t, this is just "
692
- "unnecessary code."
693
- msgstr ""
694
- "Questo collegamento viene usato da Windows Live Writer. Se non sai di cosa "
695
- "si tratta, è solo codice non necessario."
696
-
697
- #: admin/pages/code-clean.php:137
698
- msgid "Remove wlwmanifest (Windows Live Writer) link tag."
699
- msgstr "Rimuovi il link tag wlwmanifest (Windows Live Writer)."
700
-
701
- #: admin/pages/code-clean.php:147
702
- #, php-format
703
- msgid ""
704
- "By default, the following tag shows up in every WordPress install. %s This "
705
- "is used for a shortlink to your pages and posts. However, if you are already "
706
- "using pretty permalinks, such as domain.com/post, then there is no reason to "
707
- "keep this, it is just unnecessary code."
708
- msgstr ""
709
- "Per impostazione predefinita, il tag seguente compare in ogni installazione "
710
- "di WordPress. %s viene usato come shortlink verso le tue pagine ed articoli. "
711
- "Tuttavia, se usi già i permalink user-friendly, come dominio.com/articolo, "
712
- "non c'è ragione per tenerlo: è solo codice superfluo."
713
-
714
- #: admin/pages/code-clean.php:147
715
- msgid "Remove Shortlink link tag."
716
- msgstr "Rimuovi link tag Shortlink."
717
-
718
- #: admin/pages/code-clean.php:157
719
- msgid ""
720
- "If you use Wordpress as a CMS, then you can delete these links, they can "
721
- "only come in handy for a blog."
722
- msgstr ""
723
- "Se usi WordPress come un CMS, puoi eliminare questi collegamenti, che "
724
- "risultano solo utili per i blog."
725
-
726
- #: admin/pages/code-clean.php:157
727
- msgid ""
728
- "Remove the previous and next post links within the wp_head of your wordpress "
729
- "theme."
730
- msgstr ""
731
- "Rimuovi i collegamenti \"articolo precedente/successivo\" dal wp_head del "
732
- "tuo tema WordPress."
733
-
734
- #: admin/pages/code-clean.php:167
735
- msgid ""
736
- "WP by default for the widget \"recent comments\" prescribes in the code "
737
- "styles that are almost impossible to change, because to them apply! "
738
- "important."
739
- msgstr ""
740
- "Per impostazione predefinita, il widget \"commenti recenti\" ha uno stile "
741
- "quasi impossibile da personalizzare, perché vi sono state applicate le "
742
- "regole CSS con la direttiva !important."
743
-
744
- #: admin/pages/code-clean.php:167
745
- msgid "Removes .recentcomments styles from head section."
746
- msgstr "Rimuove stili .recentcomments dall'intestazione."
747
-
748
- #: admin/pages/code-clean.php:177
749
- msgid ""
750
- "Reduces the weight of the page by removing line breaks, tabs, spaces, etc."
751
- msgstr ""
752
- "Riduce il peso della pagina rimuovendo ritorni a capo, tabulazioni, spazi, "
753
- "ecc."
754
-
755
- #: admin/pages/code-clean.php:177
756
- msgid "Minify pages."
757
- msgstr "Minimizza pagine."
758
-
759
- #: admin/pages/code-clean.php:187 admin/pages/privacy.php:109
760
- msgid ""
761
- "This function will remove all html comments in the source code, except for "
762
- "special and hidden comments. This is necessary to hide the version of "
763
- "installed plugins."
764
- msgstr ""
765
- "Questa funzione rimuoverà tutti i commenti HTML dal codice sorgente, eccetto "
766
- "per i commenti speciali e nascosti. Questo è necessario per nascondere la "
767
- "versione dei plugins installati."
768
-
769
- #: admin/pages/code-clean.php:187 admin/pages/privacy.php:109
770
- msgid "Remove html comments in source code."
771
- msgstr "Rimuovi commenti HTML dal codice sorgente."
772
-
773
- #: admin/pages/components.php:32
774
- msgid "Components"
775
- msgstr "Componenti"
776
-
777
- #: admin/pages/defence.php:25
778
- msgid "Defence"
779
- msgstr "Difesa"
780
-
781
- #: admin/pages/defence.php:66
782
- msgid ""
783
- "An attacker can find out the author's login, using a similar request to get "
784
- "your site. mysite.com/?author=1"
785
- msgstr ""
786
- "Un malintenzionato può dedurre il login dell'autore, usando una richiesta "
787
- "come questa verso il tuo sito: mysite.com/?author=1"
788
-
789
- #: admin/pages/defence.php:66
790
- msgid "Sets the redirect to exclude the possibility of obtaining a login."
791
- msgstr "Imposta il redirect per escludere la possibilità di ottnere un login."
792
-
793
- #: admin/pages/defence.php:76
794
- msgid ""
795
- "WP by default shows whether you entered a wrong login or incorrect password, "
796
- "which allows attackers to understand if there is a certain user on the site, "
797
- "and then start searching through the passwords."
798
- msgstr ""
799
- "WP per impostazione predefinita mostra se hai inserito un login o una "
800
- "password sbagliati, il che permette ai malintenzionati di sapere se esiste "
801
- "un dato utente sul sito, per poi tentare un attacco brute-force."
802
-
803
- #: admin/pages/defence.php:76
804
- msgid ""
805
- "Changes in the text of the error so that attackers could not find the login."
806
- msgstr ""
807
- "Cambia il testo dell'errore in maniera che i malintenzionati non possano "
808
- "scoprire il login."
809
-
810
- #: admin/pages/defence.php:84
811
- msgid "Disable XML-RPC"
812
- msgstr "Disattiva XML-RPC"
813
-
814
- #: admin/pages/defence.php:86
815
- msgid ""
816
- "A pingback is basically an automated comment that gets created when another "
817
- "blog links to you. A self-pingback is created when you link to an article "
818
- "within your own blog. Pingbacks are essentially nothing more than spam and "
819
- "simply waste resources."
820
- msgstr ""
821
- "Un pingback è praticamente un commento automatico che viene creato quando un "
822
- "altro blog crea un collegamento verso il tuo. Un auto-pingback viene creato "
823
- "quando crei un collegamento ad un articolo all'interno del tuo blog. I "
824
- "pingback possono essere visti come spam, e quindi uno spreco di risorse."
825
-
826
- #: admin/pages/defence.php:86
827
- msgid "Removes the server responses a reference to the xmlrpc file."
828
- msgstr "Rimuovi i riferimenti al file XML-RPC dalle risposte del server"
829
-
830
- #: admin/pages/double-pages.php:27
831
- msgid "Duplicate pages"
832
- msgstr "Pagine duplicate"
833
-
834
- #: admin/pages/double-pages.php:68
835
- #, php-format
836
- msgid ""
837
- "Many duplicates in date archives. Imagine, in addition, that your article "
838
- "will be displayed in the main and in the category, you will still receive at "
839
- "least 3 duplicates: in archives by year, month and date, for example %s."
840
- msgstr ""
841
- "Gli archivi per data contengono molte pagine duplicate. Oltre al caso in cui "
842
- "il tuo articolo venga mostrato nella pagina principale e nelle categorie, ne "
843
- "rimarranno comunque altri tre duplicati: negli archivi per anno, per mese e "
844
- "per giorno, per esempio %s."
845
-
846
- #: admin/pages/double-pages.php:68
847
- msgid "Removes all pages with the date archives and puts a redirect."
848
- msgstr ""
849
- "Rimuove tutte le pagine con gli archivi per data ed imposta un redirect."
850
-
851
- #: admin/pages/double-pages.php:78
852
- #, php-format
853
- msgid ""
854
- "If the site is only filled by you - a mandatory item. Allows you to get rid "
855
- "of duplicates on user archives, for example %s."
856
- msgstr ""
857
- "Se il sito è gestito contenutisticamente soltanto da te, questa opzione è "
858
- "altamente raccomandata. Ti permette di rimuovere i duplicati dagli archivi "
859
- "utente, per esempio %s."
860
-
861
- #: admin/pages/double-pages.php:78
862
- msgid "Removes all pages with the author archives and puts a redirect."
863
- msgstr ""
864
- "Rimuove tutte le pagine con gli archivi per autore ed imposta un redirect."
865
-
866
- #: admin/pages/double-pages.php:88
867
- msgid ""
868
- "If you use tags only for the block Similar records, or do not use them at "
869
- "all - it will be more correct to close them to avoid duplicates."
870
- msgstr ""
871
- "Se usi i tags solo per il blocco \"Elementi simili\", o se non li usi "
872
- "proprio, conviene chiuderli per evitare duplicati."
873
-
874
- #: admin/pages/double-pages.php:88
875
- msgid "Removes all pages with the tag archives and puts a redirect."
876
- msgstr "Rimuove tutte le pagine con gli archivi tags ed imposta un redirect."
877
-
878
- #: admin/pages/double-pages.php:98
879
- msgid ""
880
- "Every of the pictures has its own page on the site. Such pages are "
881
- "successfully indexed and create duplicates. The site can have thousands of "
882
- "same-type attachment pages."
883
- msgstr ""
884
- "Tutte le immagini hanno la propria pagina sul sito. Queste pagine sono "
885
- "indicizzate, portando alla creazione di duplicati. Il sito può avere "
886
- "migliaia di pagine allegato dello stesso tipo."
887
-
888
- #: admin/pages/double-pages.php:98
889
- msgid "Removes attachment pages and puts a redirect."
890
- msgstr "Rimuove le pagine allegato ed imposta un redirect."
891
-
892
- #: admin/pages/double-pages.php:108
893
- #, php-format
894
- msgid ""
895
- "In WordPress, any post can be divided into parts (pages), each part will "
896
- "have its own address. But this functionality is rarely used, but it can "
897
- "create trouble for you. For example, you can add a number to the address of "
898
- "any entry of your blog, %s - the post itself will open, which will be a "
899
- "duplicate. You can substitute any number."
900
- msgstr ""
901
-
902
- #: admin/pages/double-pages.php:108
903
- #, php-format
904
- msgid "Removes the pagination from the post and puts a redirect. Example: %s"
905
- msgstr ""
906
- "Rimuove la paginazione degli articoli ed imposta un redirect. Esempio: %s"
907
-
908
- #: admin/pages/double-pages.php:118
909
- #, php-format
910
- msgid ""
911
- "WordPress adds %s to the link \"Reply\" in the comments, if you use "
912
- "hierarchical comments."
913
- msgstr ""
914
- "WordPress aggiunge %s al collegamento \"Rispondi\" nei commenti, se utilizzi "
915
- "i commenti gerarchici."
916
-
917
- #: admin/pages/double-pages.php:118
918
- msgid "?relpytocom remove and and puts a redirect."
919
- msgstr "Rimuove ?relpytocom ed imposta un redirect."
920
-
921
- #: admin/pages/privacy.php:27
922
- msgid "Privacy Settings"
923
- msgstr "Impostazioni di Privacy"
924
-
925
- #: admin/pages/privacy.php:68
926
- msgid ""
927
- "Allows attacker to learn the version of WP installed on the site. This meta "
928
- "tag has no useful function."
929
- msgstr ""
930
- "Permette ai malintenzionati di conoscere la versione di WordPress installata "
931
- "sul sito. Questo meta tag non ha alcuno scopo utile."
932
-
933
- #: admin/pages/privacy.php:68
934
- #, php-format
935
- msgid "Removes the meta tag from the %s section"
936
- msgstr "Rimuove il tag meta dalla sezione %s"
937
-
938
- #: admin/pages/privacy.php:78 admin/pages/privacy.php:89
939
- msgid ""
940
- "To make it more difficult for others to hack your website you can remove the "
941
- "WordPress version number from your site, your css and js. Without that "
942
- "number it's not possible to see if you run not the current version to "
943
- "exploit bugs from the older versions. <br><br>\n"
944
- "\t\t\t\t\tAdditionally it can improve the loading speed of your site, "
945
- "because without query strings in the URL the css and js files can be cached."
946
- msgstr ""
947
- "Per complicare la vita agli hacker sul tuo sito, puoi rimuovere il numero di "
948
- "versione WordPress da sito, css e js. Senza quel numero, non è possibile "
949
- "vedere se non stai eseguendo la versione più attuale e capire se si possono "
950
- "sfruttare exploits noti delle versioni precedenti.<br><br>\n"
951
- "Questo può anche migliorare le prestazioni del tuo sito, perché senza le "
952
- "querystrings negli URL i files js e css possono essere messi in cache."
953
-
954
- #: admin/pages/privacy.php:79
955
- msgid ""
956
- "Removes the wordpress version number from stylesheets (not logged in user "
957
- "only)."
958
- msgstr ""
959
- "Rimuove il numero di versione WordPress dagli stylesheets (solo per gli "
960
- "utenti non autenticati)."
961
-
962
- #: admin/pages/privacy.php:90
963
- msgid ""
964
- "Removes wordpress version number from scripts (not logged in user only)."
965
- msgstr ""
966
- "Rimuove il numero di versione WordPress dagli scripts (solo per gli utenti "
967
- "non autenticati)."
968
-
969
- #: admin/pages/privacy.php:100
970
- msgid ""
971
- "Enter Stylesheet/Script file names to exclude from version removal (each "
972
- "exclude file starts with a new line)"
973
- msgstr ""
974
- "Inserisci i nomi dei files di stylesheet/script da escludere dalla rimozione "
975
- "della versione. Qualsiasi esclusione deve cominciare su una nuova riga."
976
-
977
- #: admin/pages/privacy.php:100
978
- msgid "Example"
979
- msgstr "Esempio"
980
-
981
- #: admin/pages/quick-start.php:35
982
- msgid "Clearfy menu"
983
- msgstr "Menu Clearfy"
984
-
985
- #: admin/pages/quick-start.php:42
986
- msgid "Quick start"
987
- msgstr "Avvio veloce"
988
-
989
- #: admin/pages/quick-start.php:76
990
- msgid ""
991
- "On this page you can quickly configure the plug-in without going into "
992
- "details."
993
- msgstr ""
994
- "Su questa pagina puoi configurare velocemente il plugin senza entrare nei "
995
- "dettagli."
996
-
997
- #: admin/pages/quick-start.php:169
998
- msgid "Reset all settings"
999
- msgstr "Reimposta Configurazione"
1000
-
1001
- #: admin/pages/quick-start.php:170
1002
- msgid "Recommended Mode"
1003
- msgstr "Impostazioni Raccomandate"
1004
-
1005
- #: admin/pages/quick-start.php:171
1006
- msgid "Code Clearing"
1007
- msgstr "Pulizia del Codice"
1008
-
1009
- #: admin/pages/quick-start.php:172
1010
- msgid "Security"
1011
- msgstr "Sicurezza"
1012
-
1013
- #: admin/pages/quick-start.php:173
1014
- msgid "Seo optimization"
1015
- msgstr "Ottimizzazione SEO"
1016
-
1017
- #: admin/pages/quick-start.php:175
1018
- msgid "Remove default Widgets"
1019
- msgstr "Rimuovi Widgets Predefiniti"
1020
-
1021
- #: admin/pages/quick-start.php:182
1022
- msgid "Are you sure you want to enable the this options?"
1023
- msgstr "Sei sicuro di voler attivare queste opzioni?"
1024
-
1025
- #: admin/pages/quick-start.php:185
1026
- msgid ""
1027
- "After confirmation, all the settings of the plug-in will return to the "
1028
- "default state. Make backup settings by copying data from the export field."
1029
- msgstr ""
1030
- "Dopo la conferma, tutte le impostazioni del plugin ritorneranno allo stato "
1031
- "iniziale. Fai un backup delle impostazioni copiando i dati dal campo di "
1032
- "esportazione."
1033
-
1034
- #: admin/pages/quick-start.php:189
1035
- msgid "Confirm"
1036
- msgstr "Conferma"
1037
-
1038
- #: admin/pages/quick-start.php:190
1039
- msgid "Cancel"
1040
- msgstr "Annulla"
1041
-
1042
- #: admin/pages/quick-start.php:196
1043
- msgid ""
1044
- "This is the quick plug-in setup mode. Use it if you do not want to "
1045
- "understand the settings or do not understand what settings you need to use."
1046
- msgstr ""
1047
- "Questa è la modalità di configurazione veloce del plugin. Usala se non vuoi "
1048
- "soffermarti sulle singole impostazioni o se non sai che impostazioni "
1049
- "scegliere."
1050
-
1051
- #: admin/pages/quick-start.php:197
1052
- msgid "Select mode"
1053
- msgstr "Scegli modalità"
1054
-
1055
- #: admin/pages/quick-start.php:199
1056
- msgid ""
1057
- "After selecting the mode, the plug-in automatically activates the necessary "
1058
- "settings for the mode."
1059
- msgstr ""
1060
- "Dopo aver selezionato la modalità, il plugin ne attiva automaticamente le "
1061
- "impostazioni necessarie."
1062
-
1063
- #: admin/pages/quick-start.php:231
1064
- msgid "Activate"
1065
- msgstr "Attiva"
1066
-
1067
- #: admin/pages/quick-start.php:232
1068
- msgid "Deactivate"
1069
- msgstr "Disattiva"
1070
-
1071
- #: admin/pages/quick-start.php:244
1072
- msgid "Settings successfully updated!"
1073
- msgstr "Impostazioni aggiornate con successo!"
1074
-
1075
- #: admin/pages/quick-start.php:247
1076
- msgid ""
1077
- "During the setup, an unknown error occurred, please try again or contact the "
1078
- "plug-in support."
1079
- msgstr ""
1080
- "Durante la configurazione, si è verificato un errore sconosciuto, riprova "
1081
- "oppure contatta il supporto del plugin."
1082
-
1083
- #: admin/pages/quick-start.php:254
1084
- msgid "Import/Export settings"
1085
- msgstr "Importa/Esporta Impostazioni"
1086
-
1087
- #: admin/pages/quick-start.php:257
1088
- msgid "Import options"
1089
- msgstr "Importa opzioni"
1090
-
1091
- #: admin/pages/quick-start.php:263
1092
- msgid "Support"
1093
- msgstr "Supporto"
1094
-
1095
- #: admin/pages/quick-start.php:265
1096
- msgid ""
1097
- "If you faced with any issues, please follow the steps below to get quickly "
1098
- "quality support:"
1099
- msgstr ""
1100
- "Se incontri qualsiasi problema, segui i passaggi di seguito per ottenere "
1101
- "subito un supporto di qualità:"
1102
-
1103
- #: admin/pages/quick-start.php:268
1104
- msgid ""
1105
- "Generate a debug report which will contains inforamtion about your "
1106
- "configuratin and installed plugins"
1107
- msgstr ""
1108
- "Genera un report di debug, contenente le informazioni sulla tua "
1109
- "configurazione e sui plugins installati."
1110
-
1111
- #: admin/pages/quick-start.php:271
1112
- msgid "Generate Debug Report"
1113
- msgstr "Genera Report di Debug"
1114
-
1115
- #: admin/pages/quick-start.php:275
1116
- msgid ""
1117
- "Send a message to <b>wordpress.webraftic@gmail.com</b> include the debug "
1118
- "report into the message body."
1119
- msgstr ""
1120
- "Invia un messaggio a <b>wordpress.webraftic@gmail.com</b> includendo il "
1121
- "report di debug nel corpo del messaggio."
1122
-
1123
- #: admin/pages/quick-start.php:278
1124
- msgid "We guarantee to respond you within 7 business day."
1125
- msgstr "Garantiamo la risposta entro i 7 giorni lavorativi."
1126
-
1127
- #: admin/pages/seo.php:27
1128
- msgid "SEO"
1129
- msgstr "SEO"
1130
-
1131
- #: admin/pages/seo.php:68
1132
- msgid ""
1133
- "The alt attribute is mandatory, so most SEO experts say. If you missed or "
1134
- "did not fill it at all, it will be automatically assigned and will be equal "
1135
- "to the title of the article."
1136
- msgstr ""
1137
- "L'attributo \"alt\" è obbligatorio, secondo molti esperti di SEO. Se te lo "
1138
- "sei dimenticato o non l'hai proprio riempito, sarà assegnato automaticamente "
1139
- "per essere uguale al titolo dell'articolo."
1140
-
1141
- #: admin/pages/seo.php:68
1142
- #, php-format
1143
- msgid "Replaces the %s, on attribute with an article name %s"
1144
- msgstr ""
1145
-
1146
- #: admin/pages/seo.php:78
1147
- msgid ""
1148
- "After installation, WP does not contain a robots.txt file and create it "
1149
- "manually. We re-read about 30 different articles, instructions from Yandex "
1150
- "and Google to create the perfect robots.txt"
1151
- msgstr ""
1152
-
1153
- #: admin/pages/seo.php:78
1154
- msgid "Automatically creates the perfect robots.txt file"
1155
- msgstr "Crea automaticamente il file robots.txt ideale"
1156
-
1157
- #: admin/pages/seo.php:109
1158
- msgid "Server headers and response"
1159
- msgstr "Headers e risposte del server"
1160
-
1161
- #: admin/pages/seo.php:109
1162
- msgid ""
1163
- "WordPress does not know how to give the Last Modified header in the server's "
1164
- "responses. You can do this using the settings below."
1165
- msgstr ""
1166
- "WordPress non sa come impostare l'header \"Last Modified\" nelle risposte "
1167
- "del server. Puoi farlo utilizzando le impostazioni qui sotto."
1168
-
1169
- #: admin/pages/seo.php:137
1170
- #, php-format
1171
- msgid ""
1172
- "You can specify a page mask, for example: %s or %s. All pages that contain "
1173
- "the string will be excluded. Each exclude must begin with a new line."
1174
- msgstr ""
1175
- "Puoi specificare un filtro pagina, per esempio: %s o %s. Tutte le pagine che "
1176
- "contengono la stringa saranno escluse. Qualsiasi esclusione deve cominciare "
1177
- "su una nuova riga."
1178
-
1179
- #: admin/pages/seo.php:155
1180
- msgid "For the Yoast SEO plugin"
1181
- msgstr "Per il plugin Yoast SEO"
1182
-
1183
- #: admin/pages/seo.php:155
1184
- msgid ""
1185
- "These settings will help you eliminate some problems associated with the "
1186
- "popular Yoast SEO plugin"
1187
- msgstr ""
1188
- "Queste impostazioni ti aiuteranno ad eliminare alcuni problemi associati con "
1189
- "il popolare plugin Yoast SEO"
1190
-
1191
- #: admin/pages/seo.php:169
1192
- msgid ""
1193
- "The last element in the breadcrumbs in the Yoast SEO plugin duplicates the "
1194
- "title of the article. Some SEO-specialists consider this duplication to be "
1195
- "superfluous."
1196
- msgstr ""
1197
- "L'ultimo elemento nel breadcrumb del plugin Yoast SEO duplica il titolo "
1198
- "dell'articolo. Alcuni specialisti di SEO considerano questa duplicazione "
1199
- "superflua."
1200
-
1201
- #: admin/pages/seo.php:169
1202
- msgid ""
1203
- "Removes duplication of the name in the breadcrumbs of the WP SEO plugin from "
1204
- "Yoast."
1205
- msgstr "Rimuove la duplicazione del nome nel breadcrumb del plugin Yoast SEO."
1206
-
1207
- #: admin/pages/seo.php:179
1208
- msgid ""
1209
- "Yandex.Webmaster swears on a standard XML card from the plugin Yoast, tk. it "
1210
- "has a specific tag"
1211
- msgstr ""
1212
-
1213
- #: admin/pages/seo.php:179
1214
- #, php-format
1215
- msgid "Remove the tag %s from XML site map of the plugin Yoast SEO."
1216
- msgstr "Rimuovi il tag %s dalla site map XML del plugin Yoast SEO."
1217
-
1218
- #: admin/pages/seo.php:179
1219
- msgid ""
1220
- "Attention! After activation, turn off the site map and enable it back to "
1221
- "regenerate it."
1222
- msgstr ""
1223
- "Attenzione! Dopo l'attivazione, disattiva la site map e riattivala per "
1224
- "rigenerarla."
1225
-
1226
- #: admin/pages/seo.php:179
1227
- msgid "In older versions of Yoast SEO may not work - update the plugin Yoast"
1228
- msgstr ""
1229
- "Nelle versioni vecchie di Yoast SEO, questo potrebbe non funzionare: "
1230
- "assicurati che il plugin sia aggiornato."
1231
-
1232
- #: admin/pages/seo.php:197
1233
- msgid ""
1234
- "If you’re not familiar with Search Action it’s the mark-up that helps search "
1235
- "engines add a shiny Sitelinks Search Box below your search engine results. "
1236
- "For the majority of webmasters the extra search box is an absolutely "
1237
- "fantastic feature but for many it’s not required or wanted, especially if a "
1238
- "site only has a few pages or if the site uses a customised search platform "
1239
- "that only searches blog posts and not pages."
1240
- msgstr ""
1241
- "Se non conosci l'Azione di Ricerca, è il markup che permette ai motori di "
1242
- "ricerca di aggiungere una casella di ricerca sitelink sotto ai tuoi "
1243
- "risultati del motore di ricerca. Per la maggior parte dei webmaster, la "
1244
- "casella di ricerca aggiuntiva è un'ottima caratteristica, ma per altri può "
1245
- "non essere richiesta o desiderata, specialmente se un sito ha soltanto poche "
1246
- "pagine o se utilizza una piattaforma di ricerca personalizzata che ricerca "
1247
- "solo gli articoli e non le pagine."
1248
-
1249
- #: admin/pages/seo.php:197
1250
- msgid ""
1251
- "Disable JSON-LD sitelinks searchbox using WordPress in plugin Yoast SEO."
1252
- msgstr ""
1253
- "Disattiva casella di ricerca sitelinks JSON-LD di WordPress nel plugin Yoast "
1254
- "SEO."
1255
-
1256
- #: admin/pages/seo.php:207
1257
- msgid ""
1258
- "Prevents output of the script tag of type application/ld+json containing\n"
1259
- "schema.org data from the popular Yoast SEO and Yoast SEO Premium plugins.\n"
1260
- "There is currently no UI to do so."
1261
- msgstr ""
1262
- "Blocca l'output dello script tag di tipo application/id+json contenente i "
1263
- "dati\n"
1264
- "dallo schema.org dei famosi plugin Yoast SEO e Yoast SEO Premium.\n"
1265
- "Attualmente, non è possibile rimuoverli tramite interfaccia utente."
1266
-
1267
- #: admin/pages/seo.php:209
1268
- msgid "Disable Structured Data in plugin Yoast SEO."
1269
- msgstr "Disattiva Dati Strutturati nel plugin Yoast SEO."
1270
-
1271
- #: admin/pages/seo.php:219
1272
- #, php-format
1273
- msgid "The Yoast SEO plugin displays a comment of the form %s in %s section"
1274
- msgstr "Il plugin Yoast SEO mostra un commento nel formato %s nella sezione %s"
1275
-
1276
- #: admin/pages/seo.php:219
1277
- #, php-format
1278
- msgid "Removes the Yoast SEO plugin comment of their section %s"
1279
- msgstr "Rimuove il commento della sezione %s del plugin Yoast SEO"
1280
-
1281
- #: admin/pages/widgets.php:25
1282
- msgid "Widgets"
1283
- msgstr "Widgets"
1284
-
1285
- #: clearfy.php:63
1286
- msgid "Clearfy"
1287
- msgstr "Clearfy"
1288
-
1289
- #: clearfy.php:112
1290
- msgid "Irks! An error has occurred."
1291
- msgstr ""
1292
-
1293
- #: includes/classes/class.configurate-advanced.php:247
1294
- msgid "Howdy"
1295
- msgstr "Ciao"
1296
-
1297
- #: includes/classes/class.configurate-advanced.php:247
1298
- msgid "Welcome"
1299
- msgstr "Benvenuto/a"
1300
-
1301
- #: includes/classes/class.configurate-security.php:30
1302
- msgid "<strong>ERROR</strong>: Wrong login or password"
1303
- msgstr "<strong>ERRORE</strong>: Login o password errati"
1304
-
1305
- #: includes/classes/class.zip-archive.php:10
1306
- msgid "The ZipArchive class does not exist in this version of php."
1307
- msgstr ""
1308
-
1309
- #~ msgid "Comments tweaks"
1310
- #~ msgstr "Personalizzazioni commenti"
1311
-
1312
- #~ msgid "Webcraftic comments tweaks"
1313
- #~ msgstr "Personalizzazioni commenti Webcraftic"
1314
-
1315
- #~ msgid "Webcraftic Clearfy - disable unused features"
1316
- #~ msgstr "Webcraftic Clearfy - disattiva caratteristiche inutilizzate"
1317
-
1318
- #~ msgid ""
1319
- #~ "Disables unused Wordpress features, improves performance and increases "
1320
- #~ "SEO rankings, using Clearfy, which makes WordPress very easy."
1321
- #~ msgstr ""
1322
- #~ "Disattiva caratteristiche inutilizzare di WordPress, migliora le "
1323
- #~ "prestazione ed aumenta il posizionamento SEO tramite la semplicità di "
1324
- #~ "Clarify."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/clearfy-ru_RU.mo CHANGED
Binary file
languages/clearfy-ru_RU.po CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: clearfy\n"
4
- "POT-Creation-Date: 2018-01-22 13:43+0300\n"
5
- "PO-Revision-Date: 2018-01-22 13:44+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"
@@ -18,292 +18,430 @@ msgstr ""
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPathExcluded-0: libs\n"
20
  "X-Poedit-SearchPathExcluded-1: components\n"
 
21
 
22
- #: admin/ajax/configurate.php:16 admin/ajax/import-settings.php:16
23
  msgid "You don't have enough capability to edit this information."
24
  msgstr "У вас недостаточно возможностей для редактирования этой информации."
25
 
26
- #: admin/ajax/configurate.php:25 admin/ajax/configurate.php:37
27
  msgid "Undefinded mode."
28
  msgstr "Неопределенный режим."
29
 
30
- #: admin/ajax/import-settings.php:23
31
  msgid "Settings are not defined or do not exist."
32
  msgstr "Настройки не определены или не существуют."
33
 
34
- #: admin/includes/options.php:12 admin/pages/code-clean.php:76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  msgid "Remove REST API Links"
36
  msgstr "Отключить Rest API"
37
 
38
- #: admin/includes/options.php:17 admin/pages/code-clean.php:86
39
  msgid "Disable Emojis"
40
  msgstr "Отключить Emojis (эмоции)"
41
 
42
- #: admin/includes/options.php:22 admin/pages/code-clean.php:116
43
- msgid "Remove dns-prefetch"
44
- msgstr "Удалить dns-prefetch"
45
-
46
- #: admin/includes/options.php:27 admin/pages/code-clean.php:125
47
  msgid "Remove RSD Link"
48
  msgstr "Удаляет RSD ссылку"
49
 
50
- #: admin/includes/options.php:32 admin/pages/code-clean.php:135
51
  msgid "Remove wlwmanifest Link"
52
  msgstr "Удалить wlwmanifest Link"
53
 
54
- #: admin/includes/options.php:37 admin/pages/code-clean.php:145
55
  msgid "Remove Shortlink"
56
  msgstr "Удалить короткие ссылки"
57
 
58
- #: admin/includes/options.php:42 admin/pages/code-clean.php:155
59
  msgid "Remove links to previous, next post"
60
  msgstr "Удалить ссылки следующая, предыдущая запись"
61
 
62
- #: admin/includes/options.php:47 admin/pages/code-clean.php:165
63
  msgid "Remove .recentcomments styles"
64
  msgstr "Удалить стили .recentcomments"
65
 
66
- #: admin/includes/options.php:52 admin/pages/seo.php:66
67
  msgid "Automatically set the alt attribute"
68
  msgstr "Автоматически устанавливать атрибут alt"
69
 
70
- #: admin/includes/options.php:57 admin/pages/seo.php:116
71
  msgid "Automatically insert the Last Modified header"
72
  msgstr "Автоматически вставлять заголовок Last Modified"
73
 
74
- #: admin/includes/options.php:62 admin/pages/seo.php:139
75
  msgid "Return an If-Modified-Since responce"
76
  msgstr "Возвращать заголовок If-Modified-Since"
77
 
78
- #: admin/includes/options.php:67 admin/pages/seo.php:152
79
  msgid "Remove duplicate names in breadcrumbs WP SEO by Yoast"
80
  msgstr "Удалить дубли имен в хлебных крошках WP SEO Yoast"
81
 
82
- #: admin/includes/options.php:72 admin/pages/seo.php:162
83
  #, php-format
84
  msgid "Remove the tag %s from XML site map"
85
  msgstr "Удаляет тег %s из XML карты сайта плагин Yoast SEO."
86
 
87
- #: admin/includes/options.php:77 admin/pages/seo.php:180
88
  msgid "Disable JSON-LD sitelinks searchbox"
89
  msgstr "Отключить ссылки JSON-LD"
90
 
91
- #: admin/includes/options.php:82 admin/pages/seo.php:190
92
  msgid "Disable Yoast Structured Data"
93
  msgstr "Отключить структурирование данных"
94
 
95
- #: admin/includes/options.php:87 admin/pages/seo.php:202
96
  #, php-format
97
  msgid "Remove comment from %s section"
98
  msgstr "Удалить комментарии из секции %s"
99
 
100
- #: admin/includes/options.php:92 admin/pages/double-pages.php:66
101
  msgid "Remove archives date"
102
  msgstr "Удалить архивы дат"
103
 
104
- #: admin/includes/options.php:97 admin/pages/double-pages.php:76
105
  msgid "Remove author archives "
106
  msgstr "Удалить архивы автора"
107
 
108
- #: admin/includes/options.php:102 admin/pages/double-pages.php:86
109
  msgid "Remove archives tag"
110
  msgstr "Удалить метки архивов"
111
 
112
- #: admin/includes/options.php:107 admin/pages/double-pages.php:96
113
  msgid "Remove attachment pages"
114
  msgstr "Удалить страницы вложений"
115
 
116
- #: admin/includes/options.php:112 admin/pages/double-pages.php:106
117
  msgid "Remove post pagination"
118
  msgstr "Удалить постраничную навигацию записей"
119
 
120
- #: admin/includes/options.php:117 admin/pages/double-pages.php:116
121
  msgid "Remove ?replytocom"
122
  msgstr "Удалить ?replytocom"
123
 
124
- #: admin/includes/options.php:122 admin/pages/privacy.php:66
125
  msgid "Remove meta generator"
126
  msgstr "Удалить meta generator"
127
 
128
- #: admin/includes/options.php:127 admin/pages/defence.php:64
129
  msgid "Hide author login"
130
  msgstr "Убрать возможность узнать логин автора"
131
 
132
- #: admin/includes/options.php:132 admin/pages/defence.php:74
133
  msgid "Hide errors when logging into the site"
134
  msgstr "Спрятать ошибки при входе на сайт"
135
 
136
- #: admin/includes/options.php:137 admin/includes/options.php:254
137
- #: admin/pages/privacy.php:76
138
  msgid "Remove Version from Stylesheet"
139
  msgstr "Удалить версию у файлов стилей"
140
 
141
- #: admin/includes/options.php:142 admin/includes/options.php:259
142
- #: admin/pages/privacy.php:87
143
  msgid "Remove Version from Script"
144
  msgstr "Удаляет версию у javascript файлов"
145
 
146
- #: admin/includes/options.php:147 admin/pages/widgets.php:44
 
 
 
 
 
 
 
 
 
 
 
 
147
  msgid "Remove the \"Pages\" widget"
148
  msgstr "Удалите виджет «Страницы»"
149
 
150
- #: admin/includes/options.php:152 admin/pages/widgets.php:53
151
  msgid "Remove calendar widget"
152
  msgstr "Удалить виджет календаря"
153
 
154
- #: admin/includes/options.php:157 admin/pages/widgets.php:62
155
  msgid "Remove the \"Cloud of tags\" widget"
156
  msgstr "Удалите виджет «Облако тегов»"
157
 
158
- #: admin/includes/options.php:162 admin/pages/widgets.php:71
159
  msgid "Remove the \"Archives\" widget"
160
  msgstr "Удалите виджет «Архивы»"
161
 
162
- #: admin/includes/options.php:167 admin/pages/widgets.php:80
163
  msgid "Remove the \"Links\" widget"
164
  msgstr "Удалите виджет «Ссылки»"
165
 
166
- #: admin/includes/options.php:172 admin/pages/widgets.php:89
167
  msgid "Remove the \"Meta\" widget"
168
  msgstr "Удалите виджет «Мета»"
169
 
170
- #: admin/includes/options.php:177 admin/pages/widgets.php:98
171
  msgid "Remove the \"Search\" widget"
172
  msgstr "Удалите виджет «Поиск»"
173
 
174
- #: admin/includes/options.php:182 admin/includes/options.php:202
175
- #: admin/pages/widgets.php:107
176
  msgid "Remove the \"Text\" widget"
177
  msgstr "Удалите виджет «Текст»"
178
 
179
- #: admin/includes/options.php:187 admin/pages/widgets.php:116
180
  msgid "Remove the \"Categories\" widget"
181
  msgstr "Удалите виджет «Категории»"
182
 
183
- #: admin/includes/options.php:192 admin/pages/widgets.php:125
184
  msgid "Remove the \"Recent Posts\" widget"
185
  msgstr "Удалите виджет «Последние записи»"
186
 
187
- #: admin/includes/options.php:197 admin/pages/widgets.php:134
188
  msgid "Remove the \"Recent Comments\" widget"
189
- msgstr "Удалите виджет «Последние комментарии»"
190
 
191
- #: admin/includes/options.php:207 admin/pages/widgets.php:143
192
  msgid "Remove the \"RSS\" widget"
193
  msgstr "Удалить виджет «RSS»"
194
 
195
- #: admin/includes/options.php:212 admin/pages/widgets.php:152
196
  msgid "Remove the \"Menu\" widget"
197
  msgstr "Удалите виджет «Меню»"
198
 
199
- #: admin/includes/options.php:217 admin/pages/widgets.php:161
200
  msgid "Remove the \"Twenty Eleven Ephemera\" widget"
201
  msgstr "Удалите виджет \"Twenty Eleven Ephemera\""
202
 
203
- #: admin/includes/options.php:220 admin/includes/options.php:289
204
- #: admin/pages/additionally.php:187
205
  msgid "Disable revision"
206
  msgstr "Отключить ревизии"
207
 
208
- #: admin/includes/options.php:221 admin/includes/options.php:294
209
- #: admin/pages/additionally.php:220
210
  msgid "Limit Post Revisions"
211
  msgstr "Установить лимит ревизий"
212
 
213
- #: admin/includes/options.php:222 admin/pages/seo.php:130
214
  msgid "Exclude pages:"
215
  msgstr "Исключить страницы:"
216
 
217
- #: admin/includes/options.php:225 admin/pages/seo.php:76
218
  msgid "Create right robots.txt"
219
  msgstr "Создайте правильный robots.txt"
220
 
221
- #: admin/includes/options.php:230 admin/pages/seo.php:91
222
  msgid "You can edit the robots.txt file in the box below:"
223
  msgstr "Вы можете отредактировать файл robots.txt в поле ниже:"
224
 
225
- #: admin/includes/options.php:233
226
  msgid "Quick mode"
227
  msgstr "Быстрый старт"
228
 
229
- #: admin/includes/options.php:236 admin/pages/code-clean.php:96
230
  msgid "Remove jQuery Migrate"
231
  msgstr "Удалить jQuery Migrate"
232
 
233
- #: admin/includes/options.php:239 admin/pages/code-clean.php:106
234
  msgid "Disable Embeds"
235
  msgstr "Отключить Embeds"
236
 
237
- #: admin/includes/options.php:240 admin/pages/code-clean.php:66
238
  msgid "Disable RSS feeds"
239
  msgstr "Отключить RSS каналы"
240
 
241
- #: admin/includes/options.php:243
242
  msgid "Removes links to wordpress.org site from the admin bar"
243
  msgstr "Удаляет ссылки на wordpress.org сайт из панели администратора"
244
 
245
- #: admin/includes/options.php:246 admin/pages/code-clean.php:175
246
  msgid "HTML minify"
247
  msgstr "Html сжатие"
248
 
249
- #: admin/includes/options.php:249
250
  msgid "Redirect Http to Https"
251
  msgstr "Перенаправление Http на Https"
252
 
253
- #: admin/includes/options.php:264 admin/pages/privacy.php:98
254
  msgid "Eclude stylesheet/script file names"
255
  msgstr "Исключает файлы стилей/сприптов"
256
 
257
- #: admin/includes/options.php:269 admin/pages/additionally.php:289
258
  msgid "Enable Sanitization of WordPress"
259
  msgstr "Включить Wordpress Sanitization"
260
 
261
- #: admin/includes/options.php:274 admin/pages/additionally.php:144
262
  msgid "Disable admin top bar"
263
  msgstr "Скрыть верхнюю панель администратора"
264
 
265
- #: admin/includes/options.php:279 admin/pages/additionally.php:162
266
  msgid "Remove admin bar WP logo"
267
  msgstr "Удалить логотип Wordpress из админбара"
268
 
269
- #: admin/includes/options.php:284 admin/pages/additionally.php:172
270
  msgid "Replace \"Howdy\" text with \"Welcome\""
271
  msgstr "Заменить текст \"Привет\", на \"Добро пожаловать\""
272
 
273
- #: admin/includes/options.php:299 admin/pages/additionally.php:244
274
  msgid "Disable autosave"
275
  msgstr "Отключить автосохранения"
276
 
277
- #: admin/includes/options.php:304 admin/pages/additionally.php:254
278
  msgid "Disable Texturization - Smart Quotes"
279
  msgstr "Отключить \"Умные кавычки\""
280
 
281
- #: admin/includes/options.php:309 admin/pages/additionally.php:264
282
  msgid "Disable capitalization in Wordpress branding"
283
  msgstr "Отключить верблюжий шрифт в WordPress брендинге"
284
 
285
- #: admin/includes/options.php:314 admin/pages/additionally.php:274
286
  msgid "Disable auto inserted paragraphs (i.e. p tags)"
287
  msgstr "Отключить автоматические параграфы (т.е p теги)"
288
 
289
- #: admin/includes/options.php:319 admin/pages/additionally.php:77
290
  msgid "Disable Heartbeat"
291
  msgstr "Отключить пульсацию Wordpress"
292
 
293
- #: admin/includes/options.php:324 admin/pages/additionally.php:106
294
  msgid "Heartbeat frequency"
295
  msgstr "Интервал пульсации Wordpress"
296
 
297
- #: admin/includes/options.php:329 admin/pages/code-clean.php:185
298
- #: admin/pages/privacy.php:107
299
  msgid "Remove html comments"
300
  msgstr "Удалить html комментарии"
301
 
302
- #: admin/pages/additionally.php:27
303
  msgid "Advanced"
304
  msgstr "Дополнительно"
305
 
306
- #: admin/pages/additionally.php:54
307
  msgid ""
308
  "Warning! In the wp-config.php file, a constant WP_POST_REVISIONS is found, "
309
  "it determines the number of revisions. Delete it so you can change this "
@@ -313,11 +451,11 @@ msgstr ""
313
  "она определяет количество ревизий. Удалите ее, чтобы вы могли изменить это "
314
  "значение через панель администратора."
315
 
316
- #: admin/pages/additionally.php:70
317
  msgid "Heartbeat"
318
  msgstr "Пульсация"
319
 
320
- #: admin/pages/additionally.php:70
321
  msgid ""
322
  "The WordPress Heartbeat API uses /wp-admin/admin-ajax.php to run AJAX calls "
323
  "from the web-browser. While this is great and all it can also cause high CPU "
@@ -332,35 +470,35 @@ msgstr ""
332
  "будет регулярно отправлять POST-запросы в этот файл через каждые 15 секунд. "
333
  "Ниже приведен пример ниже."
334
 
335
- #: admin/pages/additionally.php:79
336
  msgid "Default"
337
  msgstr "По умолчанию"
338
 
339
- #: admin/pages/additionally.php:80
340
  msgid "Everywhere"
341
  msgstr "Повсюду"
342
 
343
- #: admin/pages/additionally.php:81
344
  msgid "On dashboard page"
345
  msgstr "В панели инструментов"
346
 
347
- #: admin/pages/additionally.php:82
348
  msgid "Only allow when editing Posts/Pages"
349
  msgstr "Когда редактируете записи/страницы"
350
 
351
- #: admin/pages/additionally.php:108 admin/pages/additionally.php:222
352
  msgid "Wordpress default"
353
  msgstr "Wordpress по умолчанию"
354
 
355
- #: admin/pages/additionally.php:109 admin/pages/additionally.php:110
356
- #: admin/pages/additionally.php:111 admin/pages/additionally.php:112
357
- #: admin/pages/additionally.php:113 admin/pages/additionally.php:114
358
- #: admin/pages/additionally.php:115 admin/pages/additionally.php:116
359
- #: admin/pages/additionally.php:117
360
  msgid "seconds"
361
  msgstr "секунды"
362
 
363
- #: admin/pages/additionally.php:120
364
  msgid ""
365
  "Select the heartbeat frequency wordpress. We recommend you 60 seconds, "
366
  "default is 20 seconds."
@@ -368,28 +506,28 @@ msgstr ""
368
  "Установите частоту пульсации Wordpress. Мы рекомендуем вам 60 секунд, "
369
  "значение по умолчанию — 20 секунд."
370
 
371
- #: admin/pages/additionally.php:137
372
  msgid "Admin bar"
373
  msgstr "Верхняя панель администратора"
374
 
375
- #: admin/pages/additionally.php:137
376
  msgid "In this group of settings, you can manage the adminbar."
377
  msgstr ""
378
  "В этой группе настроек вы можете управлять верхней панелью администратора."
379
 
380
- #: admin/pages/additionally.php:146
381
  msgid "Default enable"
382
  msgstr "Включен (по умолчанию)"
383
 
384
- #: admin/pages/additionally.php:147
385
  msgid "For all users"
386
  msgstr "Для всех пользователей"
387
 
388
- #: admin/pages/additionally.php:150
389
  msgid "For all users except administrator"
390
  msgstr "Для всех, кроме администратора"
391
 
392
- #: admin/pages/additionally.php:154
393
  msgid ""
394
  "In some cases, you need to disable the floating top admin panel. You can "
395
  "disable this panel."
@@ -397,39 +535,39 @@ msgstr ""
397
  "В некоторых случаях вам необходимо отключить админбар. Вы можете это сделать "
398
  "с помощью текущей опции."
399
 
400
- #: admin/pages/additionally.php:154
401
  msgid "Disable admin top bar."
402
  msgstr "Отключить верхнюю панель администратора."
403
 
404
- #: admin/pages/additionally.php:164
405
  msgid "Enable this if you want to remove wp logo from admin bar."
406
  msgstr ""
407
  "Включите это, если вы хотите удалить логотип Wordpress из верхней панели "
408
  "администратора."
409
 
410
- #: admin/pages/additionally.php:174
411
  msgid "Replaces the welcome text in admin bar."
412
  msgstr "Заменяет текст приветствия в панели администратора."
413
 
414
- #: admin/pages/additionally.php:180
415
  msgid "Posts"
416
  msgstr "Записи"
417
 
418
- #: admin/pages/additionally.php:180
419
  msgid "In this group of options, you can manage revisions and post autosave."
420
  msgstr ""
421
  "В этой группе опций вы можете управлять ревизиями и автосохранением записей "
422
  "и страниц."
423
 
424
- #: admin/pages/additionally.php:223 admin/pages/additionally.php:224
425
- #: admin/pages/additionally.php:225 admin/pages/additionally.php:226
426
- #: admin/pages/additionally.php:227 admin/pages/additionally.php:228
427
- #: admin/pages/additionally.php:229 admin/pages/additionally.php:230
428
- #: admin/pages/additionally.php:231 admin/pages/additionally.php:232
429
  msgid "revisions"
430
  msgstr "ревизии"
431
 
432
- #: admin/pages/additionally.php:235
433
  msgid ""
434
  "WordPress automatically saves revisions when you are working on posts and "
435
  "pages. These can begin to add up pretty quick. By default, there is no limit "
@@ -448,7 +586,7 @@ msgstr ""
448
  "базы данных, а также использовать дисковое пространство.\n"
449
  "Поэтому мы рекомендуем либо отключать, либо ограничивать ваши изменения."
450
 
451
- #: admin/pages/additionally.php:246
452
  msgid ""
453
  "WordPress by default automatically saves a draft every 60 seconds (1 "
454
  "minute). There are reasons why you might want to change this."
@@ -456,11 +594,11 @@ msgstr ""
456
  "WordPress по умолчанию автоматически сохраняет черновик каждые 60 секунд (1 "
457
  "минута). Есть причины, по которым вы можете изменить это."
458
 
459
- #: admin/pages/additionally.php:246
460
  msgid "Disables automatic saving of drafts."
461
  msgstr "Отключает автоматическое сохранение черновиков."
462
 
463
- #: admin/pages/additionally.php:256
464
  msgid ""
465
  "Function of text formatting. This function makes the text more correct, "
466
  "readable and visually appealing. But sometimes this function may prevent you "
@@ -470,11 +608,11 @@ msgstr ""
470
  "читаемым и визуально привлекательным. Но иногда эта функция может помешать "
471
  "вам использовать определенные коды и символы."
472
 
473
- #: admin/pages/additionally.php:256
474
  msgid "Disable Texturization - Smart Quotes."
475
  msgstr "Отключить умные кавычки"
476
 
477
- #: admin/pages/additionally.php:266
478
  msgid ""
479
  "Replaces the incorrectly written letter \"p\" in the middle of WordPress "
480
  "(you need to write with the capital P in the middle)."
@@ -482,286 +620,306 @@ msgstr ""
482
  "Заменяет неправильно написанную букву «p» в середине WordPress (вам нужно "
483
  "написать ее верхнем регистре P в середине)."
484
 
485
- #: admin/pages/additionally.php:266
486
  msgid "Disable capitalization in Wordpress branding."
487
  msgstr "Отключить верблюжий шрифт в брендинге Wordpress."
488
 
489
- #: admin/pages/additionally.php:276
490
  msgid ""
491
  "Replaces the double shifting of a string to an HTML p ... /p construct, and "
492
  "a single one on br."
493
  msgstr ""
494
  "Заменяет двойное смещение строки на конструкцию HTML p ... / p и одну на br."
495
 
496
- #: admin/pages/additionally.php:276
497
  msgid "Disable auto inserted paragraphs."
498
  msgstr "Отключить автоматически вставленные абзацы."
499
 
500
- #: admin/pages/additionally.php:282
501
- msgid "Others"
502
- msgstr "Другие"
503
 
504
- #: admin/pages/additionally.php:282
505
- msgid "Other useful features."
506
- msgstr "Другие полезные функции."
507
 
508
- #: admin/pages/additionally.php:291
509
- msgid ""
510
- "File names and some titles can have special characters, which can cause "
511
- "problems when creating permalinks."
512
  msgstr ""
513
- "Имена файлов и некоторые заголовки могут иметь специальные символы, что "
514
- "может вызвать проблемы при создании постоянных ссылок."
515
 
516
- #: admin/pages/additionally.php:291
 
 
 
 
517
  msgid ""
518
- "Removes symbols, spaces, latin and other languages characters from uploaded "
519
- "files and gives them \"permalink\" structure (clean characters, only "
520
- "lowercase and dahes)."
521
  msgstr ""
522
- "Удаляет символы, пробелы, латинские и другие языки из имен загружаемых "
523
- "файлов и дает им структуру «permalink» (чистые символы, только строчные "
524
- "буквы и тире)."
525
 
526
- #: admin/pages/code-clean.php:27
527
- msgid "Code cleaning"
528
- msgstr "Очистка кода"
529
 
530
- #: admin/pages/code-clean.php:68
531
- msgid ""
532
- "By default, WordPress generates all types of different RSS feeds for your "
533
- "site. While RSS feeds can be useful if you are running a blog, businesses "
534
- "might not always utilize these. Not every site out there has a blog."
535
  msgstr ""
536
- "По умолчанию WordPress генерирует различные виды RSS-каналов для вашего "
537
- "сайта. Иногда RSS-каналы могут быть полезны, если вы используете блог "
538
- "например, но если у вас обычный одностаничник, то RSS для вас будет "
539
- "бесполезен. "
540
 
541
- #: admin/pages/code-clean.php:68
542
- #, php-format
 
 
 
543
  msgid ""
544
- "Removes a link to the RSS-feed from the %s section, closes and puts the "
545
- "redirect from all RSS-feeds."
546
  msgstr ""
547
- "Удаляет ссылку на RSS-канал из раздела %s, закрывает и ставит "
548
- "перенаправления от всех RSS-каналов."
 
 
 
549
 
550
- #: admin/pages/code-clean.php:78
551
  msgid ""
552
- "The WordPress REST API provides API endpoints for WordPress data types that "
553
- "allow developers to interact with sites remotely by sending and receiving "
554
- "JSON (JavaScript Object Notation) objects. However, a lot of sites don’t use "
555
- "this, and therefore in most cases, it is just unnecessary code."
556
  msgstr ""
557
- "WordPress REST API предоставляет API для работы с WordPress данными, это "
558
- "позволяет разработчикам взаимодействовать с сайтами удаленно, посредством "
559
- "отправки и получения данных в формате JSON (JavaScript Object Notation). "
560
- "Однако многие сайты не используют это, и поэтому в большинстве случаев, это "
561
- "только ненужный код."
562
 
563
- #: admin/pages/code-clean.php:78
564
- msgid ""
565
- "Removes REST API link tag from the front end and the REST API header link "
566
- "from page requests."
567
- msgstr "Отключает REST API и удаляет все ссылки из исходного кода страницы."
568
 
569
- #: admin/pages/code-clean.php:86 admin/pages/code-clean.php:116
570
- #: admin/pages/code-clean.php:125 admin/pages/code-clean.php:135
571
- #: admin/pages/code-clean.php:145 admin/pages/code-clean.php:155
572
- #: admin/pages/code-clean.php:165 admin/pages/defence.php:64
573
- #: admin/pages/defence.php:74 admin/pages/defence.php:84
574
- #: admin/pages/double-pages.php:66 admin/pages/double-pages.php:76
575
- #: admin/pages/double-pages.php:96 admin/pages/double-pages.php:106
576
- #: admin/pages/double-pages.php:116 admin/pages/privacy.php:66
577
- #: admin/pages/privacy.php:76 admin/pages/privacy.php:87 admin/pages/seo.php:66
578
- #: admin/pages/seo.php:116 admin/pages/seo.php:139 admin/pages/seo.php:152
579
- #: admin/pages/seo.php:162 admin/pages/seo.php:202
580
- msgid "Recommended"
581
- msgstr "Рекомендовано"
582
 
583
- #: admin/pages/code-clean.php:88
584
  msgid ""
585
- "Emojis are fun and all, but if you are aren’t using them they actually load "
586
- "a JavaScript file (wp-emoji-release.min.js) on every page of your website. "
587
- "For a lot of businesses, this is not needed and simply adds load time to "
588
- "your site. So we recommend disabling this."
589
  msgstr ""
590
- "Emojis это смайлы (эмоции), если вы не используете их на своем сайте, в "
591
- "исходном коде страницы будет загружаться JavaScript файл (wp-emoji-release."
592
- "min.js), на каждой странице вашего веб-сайта. Для многих сайтов это не "
593
- "требуется и просто увеличивает время загрузки страницы. Поэтому мы "
594
- "рекомендуем отключить это."
595
 
596
- #: admin/pages/code-clean.php:88
597
- msgid "Removes WordPress Emojis JavaScript file (wp-emoji-release.min.js)."
598
- msgstr "Удаляет код Emojis из исходного кода страницы"
 
 
 
 
599
 
600
- #: admin/pages/code-clean.php:98
 
 
 
 
601
  msgid ""
602
- "They started adding jQuery migrate in WordPress 3.6. Most up-to-date "
603
- "frontend code and plugins don’t require jquery-migrate.min.js. In most "
604
- "cases, this simply adds unnecessary load to your site. You can see this "
605
- "running if you launch Chrome Devtools console."
606
  msgstr ""
607
- "jQuery миграция появилась в WordPress 3.6. Большинство современных веб-"
608
- "интерфейсов и плагинов не требуют jquery-migrate.min.js. В большинстве "
609
- "случаев это просто ненужная нагрузка на ваш сайт. "
 
610
 
611
- #: admin/pages/code-clean.php:98
612
- msgid "Removes jQuery Migrate JavaScript file (jquery-migrate.min.js)."
613
- msgstr "Удаляет подключаемый файл (jquery-migrate.min.js)."
614
 
615
- #: admin/pages/code-clean.php:98
616
- msgid "Warning! If there is a broke on your site, disable this option!"
 
 
617
  msgstr ""
618
- "Предупреждение! Если у вас появились проблемы в работе сайта или плагинов, "
619
- "отключите эту опцию!"
620
 
621
- #: admin/pages/code-clean.php:108
 
 
 
 
622
  msgid ""
623
- "Embeds were released with WordPress 4.4. This is basically the magic that "
624
- "auto converts your YouTube videos, Tweets, and URLs into pretty previews "
625
- "while you are editing. However, this actually loads a JavaScript file (wp-"
626
- "embed.min.js) on every page of your website. If you don’t care about the "
627
- "auto converting preview (which we don’t), you can disable this across your "
628
- "site."
629
  msgstr ""
630
- "Встраиваемые объекты были добавлены в WordPress 4.4. Эта функция "
631
- "автоматически преобразуют YouTube, Tweets, и URL-адреса в объекты для "
632
- "удобного просмотра (плеер, картинки и т.д.). Для того, чтобы объекты "
633
- "автоматически преобразовывались на вашем сайте, на каждой странице "
634
- "подключается код JavaScript (wp-embed.min.js). Если вы не используете "
635
- "функции автоматического преобразования встраиваемых объектов, то можете "
636
- "отключить эту функцию."
637
 
638
- #: admin/pages/code-clean.php:108
639
- msgid "Removes WordPress Embed JavaScript file (wp-embed.min.js)"
640
- msgstr ""
641
- "Удаляет JavaScript код отвечающий за встраиваемые объекты (wp-embed.min.js)"
642
 
643
- #: admin/pages/code-clean.php:118
644
- #, php-format
 
 
 
 
 
 
 
 
 
 
 
645
  msgid ""
646
- "Since version 4.6.1 in WordPress there are new links in the section %s this "
647
- "type of: "
 
648
  msgstr ""
649
- "Начиная с версии 4.6.1 в WordPress появляются новые ссылки в секции %s "
650
- "пример:"
651
-
652
- #: admin/pages/code-clean.php:118
653
- #, php-format
654
- msgid "Removes dns-prefetch links from the %s section"
655
- msgstr "Удаляет тег link dns-prefetch из секции %s"
656
 
657
- #: admin/pages/code-clean.php:127
658
  msgid ""
659
- "The above link is used by blog clients. If you edit your site from your "
660
- "browser then you don’t need this. It is also used by some 3rd party "
661
- "applications that utilize XML-RPC requests. In most cases, this is just "
662
- "unnecessary code."
663
  msgstr ""
664
- "Эта ссылка используется клиентами блога. Если вы редактируете сайт из вашего "
665
- "браузера, то вам не нужно это. Она также используется в некоторых "
666
- "приложениях, которые используют XML-RPC-запросы. В большинстве случаев это "
667
- "только ненужный код."
668
 
669
- #: admin/pages/code-clean.php:127
670
- msgid "Remove RSD (Real Simple Discovery) link tag."
671
- msgstr "Удаляет RSD link тег"
 
 
 
 
 
 
 
672
 
673
- #: admin/pages/code-clean.php:137
674
  msgid ""
675
- "This link is actually used by Windows Live Writer. If you don’t know use "
676
- "Windows Live Writer, which we are guessing you don’t, this is just "
677
- "unnecessary code."
678
  msgstr ""
679
- "Эта ссылка используется фактически Windows Live Writer. Если вы не знаете, "
680
- "как использовать Windows Live Writer, то это только ненужный код."
681
 
682
- #: admin/pages/code-clean.php:137
683
- msgid "Remove wlwmanifest (Windows Live Writer) link tag."
684
- msgstr "Удаляет тег link wlwmanifest (Windows Live Writer)."
 
 
 
 
 
685
 
686
- #: admin/pages/code-clean.php:147
687
  #, php-format
688
  msgid ""
689
- "By default, the following tag shows up in every WordPress install. %s This "
690
- "is used for a shortlink to your pages and posts. However, if you are already "
691
- "using pretty permalinks, such as domain.com/post, then there is no reason to "
692
- "keep this, it is just unnecessary code."
693
- msgstr ""
694
- "По умолчанию следующий тег печатается на каждой странице ваших записей и "
695
- "страниц. %s Это используется, как короткая ссылка на вашу статью. Если вы "
696
- "используете постоянные ссылки, то это не нужный код."
 
 
 
 
697
 
698
- #: admin/pages/code-clean.php:147
699
- msgid "Remove Shortlink link tag."
700
- msgstr "Удаляет тег link shortlink."
701
-
702
- #: admin/pages/code-clean.php:157
703
  msgid ""
704
- "If you use Wordpress as a CMS, then you can delete these links, they can "
705
- "only come in handy for a blog."
 
706
  msgstr ""
707
- "Если вы используете Wordpress как CMS (а не блог), то вы можете удалить эти "
708
- "ссылки, но для блога они могут быть полезны."
 
709
 
710
- #: admin/pages/code-clean.php:157
 
711
  msgid ""
712
- "Remove the previous and next post links within the wp_head of your wordpress "
713
- "theme."
 
714
  msgstr ""
715
- "Удаляет ссылки предидущая и следующая запись в head вашей темы wordpress."
 
 
 
 
 
 
716
 
717
- #: admin/pages/code-clean.php:167
 
718
  msgid ""
719
- "WP by default for the widget \"recent comments\" prescribes in the code "
720
- "styles that are almost impossible to change, because to them apply! "
721
- "important."
722
  msgstr ""
723
- "Wordpress по умолчанию для виджета \"Последние комментари\" прописывает в "
724
- "стилях код, которые почти невозможно изменить, потому что к ним применяются "
725
- "значение !important."
726
-
727
- #: admin/pages/code-clean.php:167
728
- msgid "Removes .recentcomments styles from head section."
729
- msgstr "Удаляет .recentcomments стили из head секции."
730
 
731
- #: admin/pages/code-clean.php:177
 
732
  msgid ""
733
- "Reduces the weight of the page by removing line breaks, tabs, spaces, etc."
 
734
  msgstr ""
735
- "Уменьшает вес страницы путем удаления разрывов строк, вкладок, пробелов и т. "
736
- "Д."
737
 
738
- #: admin/pages/code-clean.php:177
739
- msgid "Minify pages."
740
- msgstr "Минимизировать страницы."
 
741
 
742
- #: admin/pages/code-clean.php:187 admin/pages/privacy.php:109
743
  msgid ""
744
- "This function will remove all html comments in the source code, except for "
745
- "special and hidden comments. This is necessary to hide the version of "
746
- "installed plugins."
747
  msgstr ""
748
- "Эта функция удалит все html-комментарии в исходном коде, за исключением "
749
- "специальных и скрытых комментариев. Это необходимо, чтобы скрыть версию "
750
- "установленных плагинов."
751
 
752
- #: admin/pages/code-clean.php:187 admin/pages/privacy.php:109
753
- msgid "Remove html comments in source code."
754
- msgstr "Удалить Html комментарии в исходном коде страницы."
 
 
 
 
755
 
756
- #: admin/pages/components.php:32
757
- msgid "Components"
758
- msgstr "Компоненты"
759
 
760
- #: admin/pages/defence.php:25
761
- msgid "Defence"
762
- msgstr "Защита"
763
 
764
- #: admin/pages/defence.php:66
765
  msgid ""
766
  "An attacker can find out the author's login, using a similar request to get "
767
  "your site. mysite.com/?author=1"
@@ -769,12 +927,12 @@ msgstr ""
769
  "Злоумышленник может узнать логин автора, с помощью подобного get запроса "
770
  "mysite.com/?author=1"
771
 
772
- #: admin/pages/defence.php:66
773
  msgid "Sets the redirect to exclude the possibility of obtaining a login."
774
  msgstr ""
775
  "Предотвращает возможность узнать логин автора, устанавливая перенаправление."
776
 
777
- #: admin/pages/defence.php:76
778
  msgid ""
779
  "WP by default shows whether you entered a wrong login or incorrect password, "
780
  "which allows attackers to understand if there is a certain user on the site, "
@@ -784,17 +942,17 @@ msgstr ""
784
  "неправильный пароль, что дает злоумышленникам понять, существует ли "
785
  "определенный пользователь на сайте, а после начать перебор паролей."
786
 
787
- #: admin/pages/defence.php:76
788
  msgid ""
789
  "Changes in the text of the error so that attackers could not find the login."
790
  msgstr ""
791
  "Меняет текст ошибки так, чтобы злоумышленники не смогли подобрать логин."
792
 
793
- #: admin/pages/defence.php:84
794
  msgid "Disable XML-RPC"
795
  msgstr "Отключить XML-RPC"
796
 
797
- #: admin/pages/defence.php:86
798
  msgid ""
799
  "A pingback is basically an automated comment that gets created when another "
800
  "blog links to you. A self-pingback is created when you link to an article "
@@ -806,121 +964,588 @@ msgstr ""
806
  "оставили ссылку на статью в своем блоге. Pingbacks по существу являются не "
807
  "более чем спам и пустая трата ресурсов вашего сайта."
808
 
809
- #: admin/pages/defence.php:86
810
  msgid "Removes the server responses a reference to the xmlrpc file."
811
  msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
812
 
813
- #: admin/pages/double-pages.php:27
814
- msgid "Duplicate pages"
815
- msgstr "Дубли страниц"
816
 
817
- #: admin/pages/double-pages.php:68
818
- #, php-format
819
  msgid ""
820
- "Many duplicates in date archives. Imagine, in addition, that your article "
821
- "will be displayed in the main and in the category, you will still receive at "
822
- "least 3 duplicates: in archives by year, month and date, for example %s."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
823
  msgstr ""
824
- "Огромное количество дублей в архивах дат. Представьте, кроме того, что Ваша "
825
- "статья будет выводиться на главной и в категории, Вы еще получите как "
826
- "минимум 3 дубля: в архивах по году, месяцу и дате, например %s."
 
827
 
828
- #: admin/pages/double-pages.php:68
829
- msgid "Removes all pages with the date archives and puts a redirect."
830
- msgstr "Удаляет полностью архивы дат и ставит редирект."
831
 
832
- #: admin/pages/double-pages.php:78
833
- #, php-format
834
  msgid ""
835
- "If the site is only filled by you - a mandatory item. Allows you to get rid "
836
- "of duplicates on user archives, for example %s."
837
  msgstr ""
838
- "Если сайт заполняете только вы - это функция обязательна. Позволяет вам "
839
- "избавиться от дубликатов страниц автора, например %s."
840
 
841
- #: admin/pages/double-pages.php:78
842
- msgid "Removes all pages with the author archives and puts a redirect."
843
- msgstr "Удаляет все страницы из архивов автора и ставит перенаправление."
844
 
845
- #: admin/pages/double-pages.php:88
846
- msgid ""
847
- "If you use tags only for the block Similar records, or do not use them at "
848
- "all - it will be more correct to close them to avoid duplicates."
849
- msgstr ""
850
- "Если вы используете теги только для виджета \"Похожие записи\", либо не "
851
- "используете их совсем - правильнее будет их закрыть, чтобы избежать дублей."
852
 
853
- #: admin/pages/double-pages.php:88
854
- msgid "Removes all pages with the tag archives and puts a redirect."
855
- msgstr "Ставит редирект со страниц тегов на главную."
856
 
857
- #: admin/pages/double-pages.php:98
858
  msgid ""
859
- "Every of the pictures has its own page on the site. Such pages are "
860
- "successfully indexed and create duplicates. The site can have thousands of "
861
- "same-type attachment pages."
862
  msgstr ""
863
- "Каждая загруженная картинка имеет свою страничку на сайте, состоящую только "
864
- "из одной картинки. Такие страницы успешно индексируются и создают дубли. На "
865
- "сайте могут быть тысячи однотипных страниц вложений."
866
 
867
- #: admin/pages/double-pages.php:98
868
- msgid "Removes attachment pages and puts a redirect."
869
- msgstr "Удаляет страницы вложений и ставит редирект на запись."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
870
 
871
- #: admin/pages/double-pages.php:108
872
- #, php-format
 
 
 
 
 
 
 
873
  msgid ""
874
- "In WordPress, any post can be divided into parts (pages), each part will "
875
- "have its own address. But this functionality is rarely used, but it can "
876
- "create trouble for you. For example, you can add a number to the address of "
877
- "any entry of your blog, %s - the post itself will open, which will be a "
878
- "duplicate. You can substitute any number."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
879
  msgstr ""
880
- "В WordPress любое содержание можно разделить на части (страницы), каждая "
881
- "часть будет иметь свой собственный адрес. Эта функциональность используется "
882
- "редко, но это может создать проблемы для вас. Например вы можете добавить "
883
- "номер в адрес любой записи вашего блога, %s - откроет текущую страницу, "
884
- "которая будет дублироваться."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
885
 
886
- #: admin/pages/double-pages.php:108
887
  #, php-format
888
- msgid "Removes the pagination from the post and puts a redirect. Example: %s"
 
 
 
 
 
 
889
  msgstr ""
890
- "Удаление постраничную навигацию из записи и устанавливет перенаправление. "
891
- "Пример: %s"
 
 
 
 
 
 
 
 
 
 
 
892
 
893
- #: admin/pages/double-pages.php:118
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
894
  #, php-format
895
  msgid ""
896
- "WordPress adds %s to the link \"Reply\" in the comments, if you use "
897
- "hierarchical comments."
898
  msgstr ""
899
- "WordPress добавляет %s к ссылке «Ответ» в комментариях, если вы используете "
900
- "иерархические комментарии."
901
 
902
- #: admin/pages/double-pages.php:118
903
- msgid "?relpytocom remove and and puts a redirect."
904
- msgstr "Удаляет ?relpytocom и ставит перенаправление."
 
 
 
 
905
 
906
- #: admin/pages/privacy.php:27
907
- msgid "Privacy Settings"
908
- msgstr "Настройки приватности"
909
 
910
- #: admin/pages/privacy.php:68
911
  msgid ""
912
- "Allows attacker to learn the version of WP installed on the site. This meta "
913
- "tag has no useful function."
914
  msgstr ""
915
- "Позволяет злоумышленнику узнать версию Wordpress, установленую на вашем "
916
- "сайте. Этот мета-тег не несет никакой пользы."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
917
 
918
- #: admin/pages/privacy.php:68
919
  #, php-format
920
- msgid "Removes the meta tag from the %s section"
921
- msgstr "Удаляет мета-тег из раздел %s"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
922
 
923
- #: admin/pages/privacy.php:78 admin/pages/privacy.php:89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
924
  msgid ""
925
  "To make it more difficult for others to hack your website you can remove the "
926
  "WordPress version number from your site, your css and js. Without that "
@@ -933,18 +1558,18 @@ msgstr ""
933
  "того, это может улучшить скорость загрузки вашего сайта, потому что без "
934
  "строки запроса в URL-адрес css и js файлов могут быть кэшированы."
935
 
936
- #: admin/pages/privacy.php:79
937
  msgid ""
938
  "Removes the wordpress version number from stylesheets (not logged in user "
939
  "only)."
940
  msgstr "Удаляет номер версии из файлов стилей стилей (только для фронтенда)."
941
 
942
- #: admin/pages/privacy.php:90
943
  msgid ""
944
  "Removes wordpress version number from scripts (not logged in user only)."
945
  msgstr "Удаляет номер версии из javascript файлов (только для фронтенда)."
946
 
947
- #: admin/pages/privacy.php:100
948
  msgid ""
949
  "Enter Stylesheet/Script file names to exclude from version removal (each "
950
  "exclude file starts with a new line)"
@@ -953,19 +1578,19 @@ msgstr ""
953
  "которых, будет удалена версия (каждое исключение, должно быть с новой "
954
  "строки)."
955
 
956
- #: admin/pages/privacy.php:100
957
  msgid "Example"
958
  msgstr "Например"
959
 
960
- #: admin/pages/quick-start.php:35
961
  msgid "Clearfy menu"
962
  msgstr "Clearfy меню"
963
 
964
- #: admin/pages/quick-start.php:42
965
  msgid "Quick start"
966
  msgstr "Быстрый старт"
967
 
968
- #: admin/pages/quick-start.php:76
969
  msgid ""
970
  "On this page you can quickly configure the plug-in without going into "
971
  "details."
@@ -973,35 +1598,35 @@ msgstr ""
973
  "На этой странице вы можете быстро настроить плагин, не вдаваясь в "
974
  "подробности."
975
 
976
- #: admin/pages/quick-start.php:170
977
  msgid "Set the recommened for me"
978
  msgstr "Установить рекомендуемые для меня"
979
 
980
- #: admin/pages/quick-start.php:173
981
  msgid "One click code clearing"
982
  msgstr "Очистка кода в один клик"
983
 
984
- #: admin/pages/quick-start.php:174
985
  msgid "One click security"
986
  msgstr "Улучшить безопасность в один клик"
987
 
988
- #: admin/pages/quick-start.php:176
989
  msgid "One click seo optimization"
990
  msgstr "Оптимизировать SEO в один клик"
991
 
992
- #: admin/pages/quick-start.php:180
993
  msgid "One click remove default Widgets"
994
  msgstr "Удалить виджеты по умолчанию в один клик"
995
 
996
- #: admin/pages/quick-start.php:185
997
  msgid "Reset all settings"
998
  msgstr "Сбросить все настройки"
999
 
1000
- #: admin/pages/quick-start.php:189
1001
  msgid "Are you sure you want to enable the this options?"
1002
  msgstr "Вы действительно хотите включить эти настройки?"
1003
 
1004
- #: admin/pages/quick-start.php:192 admin/pages/quick-start.php:232
1005
  msgid ""
1006
  "After confirmation, all the settings of the plug-in will return to the "
1007
  "default state. Make backup settings by copying data from the export field."
@@ -1010,15 +1635,15 @@ msgstr ""
1010
  "умолчанию. Сделайте резервную копию настроек, скопировав данные из поля "
1011
  "экспорта."
1012
 
1013
- #: admin/pages/quick-start.php:196
1014
  msgid "Confirm"
1015
  msgstr "Подтвердить"
1016
 
1017
- #: admin/pages/quick-start.php:197
1018
  msgid "Cancel"
1019
  msgstr "Отмена"
1020
 
1021
- #: admin/pages/quick-start.php:203
1022
  msgid ""
1023
  "These are quick optimization options for your website. You can activate the "
1024
  "groups of necessary settings in one click. With the fast optimization mode, "
@@ -1034,11 +1659,11 @@ msgstr ""
1034
  "индивидуально. Настройки с серым и красным знаком вопроса не будут "
1035
  "активированы, пока вы сами не примите решение об их включении."
1036
 
1037
- #: admin/pages/quick-start.php:204
1038
  msgid "Select what you need to do"
1039
  msgstr "Выберите, что вам нужно сделать"
1040
 
1041
- #: admin/pages/quick-start.php:206
1042
  msgid ""
1043
  "After selecting any optimization case, the plugin will automatically enable "
1044
  "the necessary settings in safe mode and one click."
@@ -1046,23 +1671,23 @@ msgstr ""
1046
  "После выбора варианта оптимизации, плагин автоматически включит необходимые "
1047
  "и безопасные настройки в один клик."
1048
 
1049
- #: admin/pages/quick-start.php:231
1050
  msgid "Reset settings"
1051
  msgstr "Сбросить настройки"
1052
 
1053
- #: admin/pages/quick-start.php:244
1054
  msgid "Reset"
1055
  msgstr "Сбросить"
1056
 
1057
- #: admin/pages/quick-start.php:246
1058
  msgid "Do It!"
1059
  msgstr "Сделать!"
1060
 
1061
- #: admin/pages/quick-start.php:260
1062
  msgid "Settings successfully updated!"
1063
  msgstr "Настройки успешно обновлены!"
1064
 
1065
- #: admin/pages/quick-start.php:263
1066
  msgid ""
1067
  "During the setup, an unknown error occurred, please try again or contact the "
1068
  "plug-in support."
@@ -1070,19 +1695,19 @@ msgstr ""
1070
  "Во время установки произошла неизвестная ошибка, повторите попытку или "
1071
  "обратитесь в службу поддержки плагинов."
1072
 
1073
- #: admin/pages/quick-start.php:270
1074
  msgid "Import/Export settings"
1075
  msgstr "Импорт/Экспорт настроек"
1076
 
1077
- #: admin/pages/quick-start.php:273
1078
  msgid "Import options"
1079
  msgstr "Импортировать настройки"
1080
 
1081
- #: admin/pages/quick-start.php:279
1082
  msgid "Support"
1083
  msgstr "Поддержка"
1084
 
1085
- #: admin/pages/quick-start.php:281
1086
  msgid ""
1087
  "If you faced with any issues, please follow the steps below to get quickly "
1088
  "quality support:"
@@ -1090,7 +1715,7 @@ msgstr ""
1090
  "Если вы столкнулись с какими-либо проблемами, выполните следующие действия, "
1091
  "чтобы быстро получить качественную поддержку:"
1092
 
1093
- #: admin/pages/quick-start.php:284
1094
  msgid ""
1095
  "Generate a debug report which will contains inforamtion about your "
1096
  "configuratin and installed plugins"
@@ -1098,11 +1723,11 @@ msgstr ""
1098
  "Создайте отчет об ошибках, который будет содержать информацию о вашей "
1099
  "конфигурации и установленных плагинах."
1100
 
1101
- #: admin/pages/quick-start.php:287
1102
  msgid "Generate Debug Report"
1103
  msgstr "Сгенерировать отчет об ошибках"
1104
 
1105
- #: admin/pages/quick-start.php:291
1106
  msgid ""
1107
  "Send a message to <b>wordpress.webraftic@gmail.com</b> include the debug "
1108
  "report into the message body."
@@ -1110,15 +1735,135 @@ msgstr ""
1110
  "Отправьте ваше сообщение на <b>wordpress.webraftic@gmail.com</b>, к "
1111
  "сообщению прикрепите отчет об ошибках"
1112
 
1113
- #: admin/pages/quick-start.php:294
1114
  msgid "We guarantee to respond you within 7 business day."
1115
  msgstr "Мы гарантируем ответ на ваш вопрос в течении 7 дней."
1116
 
1117
- #: admin/pages/seo.php:27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1118
  msgid "SEO"
1119
  msgstr "SEO"
1120
 
1121
- #: admin/pages/seo.php:68
 
 
 
 
 
 
 
 
1122
  msgid ""
1123
  "The alt attribute is mandatory, so most SEO experts say. If you missed or "
1124
  "did not fill it at all, it will be automatically assigned and will be equal "
@@ -1128,12 +1873,12 @@ msgstr ""
1128
  "говорят. Если вы пропустили, или не заполнили его, он будет автоматически "
1129
  "задан из названия статьи."
1130
 
1131
- #: admin/pages/seo.php:68
1132
  #, php-format
1133
  msgid "Replaces the %s, on attribute with an article name %s"
1134
  msgstr "Заменяет %s, на атрибут с названием статьи %s"
1135
 
1136
- #: admin/pages/seo.php:78
1137
  msgid ""
1138
  "After installation, WP does not contain a robots.txt file and create it "
1139
  "manually. We re-read about 30 different articles, instructions from Yandex "
@@ -1143,15 +1888,15 @@ msgstr ""
1143
  "перечитывали около 30 различных статей, инструкции от Yandex и Google, чтобы "
1144
  "создать идеальный файл robots.txt"
1145
 
1146
- #: admin/pages/seo.php:78
1147
  msgid "Automatically creates the perfect robots.txt file"
1148
  msgstr "Автоматически создает идеальный robots.txt"
1149
 
1150
- #: admin/pages/seo.php:109
1151
  msgid "Server headers and response"
1152
  msgstr "Заголовки серверов и ответ"
1153
 
1154
- #: admin/pages/seo.php:109
1155
  msgid ""
1156
  "WordPress does not know how to give the Last Modified header in the server's "
1157
  "responses. You can do this using the settings below."
@@ -1159,7 +1904,7 @@ msgstr ""
1159
  "WordPress не знает, как отдать заголовок Last Modified. Вы можете сделать "
1160
  "это с помощью параметров ниже."
1161
 
1162
- #: admin/pages/seo.php:132
1163
  #, php-format
1164
  msgid ""
1165
  "You can specify a page mask, for example: %s or %s. All pages that contain "
@@ -1232,6 +1977,11 @@ msgid ""
1232
  "site only has a few pages or if the site uses a customised search platform "
1233
  "that only searches blog posts and not pages."
1234
  msgstr ""
 
 
 
 
 
1235
 
1236
  #: admin/pages/seo.php:182
1237
  msgid ""
@@ -1244,8 +1994,9 @@ msgid ""
1244
  "schema.org data from the popular Yoast SEO and Yoast SEO Premium plugins.\n"
1245
  "There is currently no UI to do so."
1246
  msgstr ""
1247
- "Удаляет тег application/ld+json(содержащего данные schema.org) из исходного "
1248
- "кода страницы, при использовании плагинов Yoast SEO и Yoast SEO Premium."
 
1249
 
1250
  #: admin/pages/seo.php:194
1251
  msgid "Disable Structured Data in plugin Yoast SEO."
@@ -1261,30 +2012,146 @@ msgstr "Yoast SEO плагин отображает комментарий фо
1261
  msgid "Removes the Yoast SEO plugin comment of their section %s"
1262
  msgstr "Удаляет комментрии Yoast SEO из %s"
1263
 
1264
- #: admin/pages/widgets.php:25
1265
  msgid "Widgets"
1266
  msgstr "Виджеты"
1267
 
1268
- #: clearfy.php:63
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1269
  msgid "Clearfy"
1270
  msgstr "Clearfy"
1271
 
1272
- #: includes/classes/class.configurate-advanced.php:247
1273
  msgid "Howdy"
1274
  msgstr "Привет"
1275
 
1276
- #: includes/classes/class.configurate-advanced.php:247
1277
  msgid "Welcome"
1278
  msgstr "Добро пожаловать"
1279
 
1280
- #: includes/classes/class.configurate-security.php:30
 
 
 
 
 
 
 
 
 
 
 
 
1281
  msgid "<strong>ERROR</strong>: Wrong login or password"
1282
  msgstr "<strong>Ошибка</strong>: Неправильный логин или пароль"
1283
 
1284
- #: includes/classes/class.zip-archive.php:10
1285
  msgid "The ZipArchive class does not exist in this version of php."
1286
  msgstr "Класса ZipArchive не существует в этой версии php."
1287
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1288
  #~ msgid ""
1289
  #~ "This is the “One click optimization” solution. Use it if you do not want "
1290
  #~ "to understand the settings or do not understand what settings you need to "
@@ -1357,12 +2224,6 @@ msgstr "Класса ZipArchive не существует в этой верси
1357
  #~ msgid "Remove default Widgets"
1358
  #~ msgstr "Удалить виджеты по умолчанию"
1359
 
1360
- #~ msgid "Activate"
1361
- #~ msgstr "Включить"
1362
-
1363
- #~ msgid "Deactivate"
1364
- #~ msgstr "Отключить"
1365
-
1366
  #~ msgid ""
1367
  #~ "If your site uses an SSL certificate, check this box to enable "
1368
  #~ "redirection from http to https."
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: clearfy\n"
4
+ "POT-Creation-Date: 2018-03-14 14:27+0300\n"
5
+ "PO-Revision-Date: 2018-03-14 14:28+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"
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/configurate.php:19 admin/ajax/import-settings.php:21
24
  msgid "You don't have enough capability to edit this information."
25
  msgstr "У вас недостаточно возможностей для редактирования этой информации."
26
 
27
+ #: admin/ajax/configurate.php:28 admin/ajax/configurate.php:39
28
  msgid "Undefinded mode."
29
  msgstr "Неопределенный режим."
30
 
31
+ #: admin/ajax/import-settings.php:28
32
  msgid "Settings are not defined or do not exist."
33
  msgstr "Настройки не определены или не существуют."
34
 
35
+ #: admin/boot.php:22
36
+ #, php-format
37
+ msgid ""
38
+ "We found that you have the plugin %s installed. The functions of this plugin "
39
+ "already exist in %s. Please deactivate plugin %s to avoid conflicts between "
40
+ "plugins functions."
41
+ msgstr ""
42
+ "Мы обнаружили, что у вас установлен плагин %s, функции этого плагина уже "
43
+ "есть в %s. Пожалуйста, деактивируйте плагин %s во избежание конфликтов между "
44
+ "функциями плагинов."
45
+
46
+ #: admin/boot.php:23
47
+ #, php-format
48
+ msgid ""
49
+ "If you do not want to deactivate the plugin %s for some reason, we strongly "
50
+ "recommend do not use the same plugins functions at the same time!"
51
+ msgstr ""
52
+ "Если по какой-то причине вы не хотите деактивировать плагин %s, то мы "
53
+ "настоятельно рекомендуем не использовать похожие функции плагинов "
54
+ "одновременно!"
55
+
56
+ #: admin/boot.php:72
57
+ #, php-format
58
+ msgid "Welcome to Clearfy (%s)"
59
+ msgstr "Вас приветствует Clearfy (%s)"
60
+
61
+ #: admin/boot.php:73
62
+ msgid ""
63
+ "There are new optimization and protection features in the plugin. We "
64
+ "recommend you to look at them maybe they will be useful!"
65
+ msgstr ""
66
+ "В плагине появились новые функции оптимизации и защиты. Мы рекомендуем вам "
67
+ "ознакомится с ними, возможно они будут полезны!"
68
+
69
+ #: admin/boot.php:75
70
+ msgid "The section \"Code cleaning\" was renamed"
71
+ msgstr "Переименован раздел \"Очистка кода\""
72
+
73
+ #: admin/boot.php:76
74
+ msgid ""
75
+ "Asynchronous Google fonts loading, Google Analytics optimization, disabling "
76
+ "Google Fonts and Maps, disabling of gravatars, Font Awesome icons was added."
77
+ msgstr ""
78
+ "Добавлена асинхронная загрузка Google шрифтов, оптимизация Google Analytics, "
79
+ "отключение Google шрифтов и карт, отключение граваторов, иконок Font Awesome."
80
+
81
+ #: admin/boot.php:78
82
+ msgid "Login page protection added"
83
+ msgstr "Добавлена защита страницы логина"
84
+
85
+ #: admin/boot.php:79
86
+ msgid ""
87
+ "With the new Clearfy version, you can use the hide login page function. "
88
+ "Nobody will know the address of your login page, which means there will be "
89
+ "no password bruteforce and the attempts of your website hack will decrease."
90
+ msgstr ""
91
+ "В новой версии Clearfy, вы можете использовать функции скрытия страницы "
92
+ "логина. Никто не узнает адрес вашей страницы логина, а значит не будет "
93
+ "переборов пароля и уменьшатся попытки взлома вашего сайта."
94
+
95
+ #: admin/includes/options.php:18 admin/pages/performance-google.php:92
96
+ msgid "Google Fonts asynchronous"
97
+ msgstr "Загружать Google Fonts асинхронно"
98
+
99
+ #: admin/includes/options.php:23 admin/pages/performance-google.php:102
100
+ msgid "Disable Google Fonts"
101
+ msgstr "Отключить Google шрифты"
102
+
103
+ #: admin/includes/options.php:28 admin/pages/performance-google.php:130
104
+ msgid "Remove iframe Google maps"
105
+ msgstr "Удалить Google карты (iframe)"
106
+
107
+ #: admin/includes/options.php:33 admin/pages/performance-google.php:140
108
+ msgid "Exclude pages from Disable Google Maps filter"
109
+ msgstr "Не отключать Google карты на установленных страницах"
110
+
111
+ #: admin/includes/options.php:38 admin/pages/performance-google.php:153
112
+ msgid "Google analytic cache"
113
+ msgstr "Кеш Google аналитики"
114
+
115
+ #: admin/includes/options.php:43 admin/pages/performance-google.php:174
116
+ msgid "Google analytic Code"
117
+ msgstr "Код Google аналитики"
118
+
119
+ #: admin/includes/options.php:48 admin/pages/performance-google.php:195
120
+ msgid "Use adjusted bounce rate?"
121
+ msgstr "Показатель отказов?"
122
+
123
+ #: admin/includes/options.php:53 admin/pages/performance-google.php:204
124
+ msgid "Change enqueue order?"
125
+ msgstr "Сортировка скрипта?"
126
+
127
+ #: admin/includes/options.php:58 admin/pages/performance-google.php:213
128
+ msgid "Disable all display features functionality?"
129
+ msgstr "Отключить все функции для контекстно-медийной сети?"
130
+
131
+ #: admin/includes/options.php:63 admin/pages/performance-google.php:222
132
+ msgid "Use Anonymize IP? (Required by law for some countries)"
133
+ msgstr ""
134
+ "Использовать анонимный IP-адрес? (Требуется по закону для некоторых стран)"
135
+
136
+ #: admin/includes/options.php:68 admin/pages/performance-google.php:231
137
+ #: admin/pages/performance-google.php:233
138
+ msgid "Track logged in Administrators?"
139
+ msgstr "Отслеживать, если вы авторизованы под администратором?"
140
+
141
+ #: admin/includes/options.php:73 admin/pages/performance-google.php:240
142
+ msgid "Remove script from wp-cron?"
143
+ msgstr "Удалить кеширования скрипта из крона?"
144
+
145
+ #: admin/includes/options.php:79 admin/pages/performance-google.php:113
146
+ msgid "Disable Google maps"
147
+ msgstr "Отключить Google карты"
148
+
149
+ #: admin/includes/options.php:85 admin/pages/performance.php:164
150
+ msgid "Removing XFN (XHTML Friends Network) Profile Link"
151
+ msgstr "Удалить профиль XFN (XHTML Friends Network)"
152
+
153
+ #: admin/includes/options.php:90 admin/pages/performance.php:216
154
+ msgid "Font Awesome asynchronous"
155
+ msgstr "Асинхронный Fontawesome"
156
+
157
+ #: admin/includes/options.php:95 admin/pages/performance.php:226
158
+ msgid "Disable Dashicons"
159
+ msgstr "Отключить Wordpress иконки (для фронтенда)"
160
+
161
+ #: admin/includes/options.php:100 admin/pages/performance.php:236
162
+ msgid "Disable gravatars"
163
+ msgstr "Отключить граватары"
164
+
165
+ #: admin/includes/options.php:105 admin/pages/performance.php:106
166
  msgid "Remove REST API Links"
167
  msgstr "Отключить Rest API"
168
 
169
+ #: admin/includes/options.php:110 admin/pages/performance.php:116
170
  msgid "Disable Emojis"
171
  msgstr "Отключить Emojis (эмоции)"
172
 
173
+ #: admin/includes/options.php:121 admin/pages/performance.php:155
 
 
 
 
174
  msgid "Remove RSD Link"
175
  msgstr "Удаляет RSD ссылку"
176
 
177
+ #: admin/includes/options.php:126 admin/pages/performance.php:176
178
  msgid "Remove wlwmanifest Link"
179
  msgstr "Удалить wlwmanifest Link"
180
 
181
+ #: admin/includes/options.php:131 admin/pages/performance.php:186
182
  msgid "Remove Shortlink"
183
  msgstr "Удалить короткие ссылки"
184
 
185
+ #: admin/includes/options.php:136 admin/pages/performance.php:196
186
  msgid "Remove links to previous, next post"
187
  msgstr "Удалить ссылки следующая, предыдущая запись"
188
 
189
+ #: admin/includes/options.php:141 admin/pages/performance.php:206
190
  msgid "Remove .recentcomments styles"
191
  msgstr "Удалить стили .recentcomments"
192
 
193
+ #: admin/includes/options.php:147 admin/pages/seo.php:76
194
  msgid "Automatically set the alt attribute"
195
  msgstr "Автоматически устанавливать атрибут alt"
196
 
197
+ #: admin/includes/options.php:152 admin/pages/seo.php:115
198
  msgid "Automatically insert the Last Modified header"
199
  msgstr "Автоматически вставлять заголовок Last Modified"
200
 
201
+ #: admin/includes/options.php:157 admin/pages/seo.php:138
202
  msgid "Return an If-Modified-Since responce"
203
  msgstr "Возвращать заголовок If-Modified-Since"
204
 
205
+ #: admin/includes/options.php:162 admin/pages/seo.php:152
206
  msgid "Remove duplicate names in breadcrumbs WP SEO by Yoast"
207
  msgstr "Удалить дубли имен в хлебных крошках WP SEO Yoast"
208
 
209
+ #: admin/includes/options.php:167 admin/pages/seo.php:162
210
  #, php-format
211
  msgid "Remove the tag %s from XML site map"
212
  msgstr "Удаляет тег %s из XML карты сайта плагин Yoast SEO."
213
 
214
+ #: admin/includes/options.php:172 admin/pages/seo.php:180
215
  msgid "Disable JSON-LD sitelinks searchbox"
216
  msgstr "Отключить ссылки JSON-LD"
217
 
218
+ #: admin/includes/options.php:177 admin/pages/seo.php:190
219
  msgid "Disable Yoast Structured Data"
220
  msgstr "Отключить структурирование данных"
221
 
222
+ #: admin/includes/options.php:182 admin/pages/seo.php:202
223
  #, php-format
224
  msgid "Remove comment from %s section"
225
  msgstr "Удалить комментарии из секции %s"
226
 
227
+ #: admin/includes/options.php:187 admin/pages/seo-double-pages.php:93
228
  msgid "Remove archives date"
229
  msgstr "Удалить архивы дат"
230
 
231
+ #: admin/includes/options.php:192 admin/pages/seo-double-pages.php:103
232
  msgid "Remove author archives "
233
  msgstr "Удалить архивы автора"
234
 
235
+ #: admin/includes/options.php:197 admin/pages/seo-double-pages.php:113
236
  msgid "Remove archives tag"
237
  msgstr "Удалить метки архивов"
238
 
239
+ #: admin/includes/options.php:202 admin/pages/seo-double-pages.php:123
240
  msgid "Remove attachment pages"
241
  msgstr "Удалить страницы вложений"
242
 
243
+ #: admin/includes/options.php:207 admin/pages/seo-double-pages.php:133
244
  msgid "Remove post pagination"
245
  msgstr "Удалить постраничную навигацию записей"
246
 
247
+ #: admin/includes/options.php:212 admin/pages/seo-double-pages.php:143
248
  msgid "Remove ?replytocom"
249
  msgstr "Удалить ?replytocom"
250
 
251
+ #: admin/includes/options.php:217 admin/pages/defence-privacy-code.php:74
252
  msgid "Remove meta generator"
253
  msgstr "Удалить meta generator"
254
 
255
+ #: admin/includes/options.php:222 admin/pages/defence.php:213
256
  msgid "Hide author login"
257
  msgstr "Убрать возможность узнать логин автора"
258
 
259
+ #: admin/includes/options.php:227 admin/pages/defence.php:223
260
  msgid "Hide errors when logging into the site"
261
  msgstr "Спрятать ошибки при входе на сайт"
262
 
263
+ #: admin/includes/options.php:232 admin/includes/options.php:364
264
+ #: admin/pages/performance.php:248
265
  msgid "Remove Version from Stylesheet"
266
  msgstr "Удалить версию у файлов стилей"
267
 
268
+ #: admin/includes/options.php:237 admin/includes/options.php:369
269
+ #: admin/pages/performance.php:259
270
  msgid "Remove Version from Script"
271
  msgstr "Удаляет версию у javascript файлов"
272
 
273
+ #: admin/includes/options.php:242 admin/pages/defence.php:250
274
+ msgid "Hide wp-admin"
275
+ msgstr "Скрыть wp-admin"
276
+
277
+ #: admin/includes/options.php:247 admin/pages/defence.php:259
278
+ msgid "Hide Login Page"
279
+ msgstr "Скрыть страницу логина"
280
+
281
+ #: admin/includes/options.php:252 admin/pages/defence.php:274
282
+ msgid "New login page"
283
+ msgstr "Новый адрес страницы логина"
284
+
285
+ #: admin/includes/options.php:257 admin/pages/widgets.php:59
286
  msgid "Remove the \"Pages\" widget"
287
  msgstr "Удалите виджет «Страницы»"
288
 
289
+ #: admin/includes/options.php:262 admin/pages/widgets.php:68
290
  msgid "Remove calendar widget"
291
  msgstr "Удалить виджет календаря"
292
 
293
+ #: admin/includes/options.php:267 admin/pages/widgets.php:77
294
  msgid "Remove the \"Cloud of tags\" widget"
295
  msgstr "Удалите виджет «Облако тегов»"
296
 
297
+ #: admin/includes/options.php:272 admin/pages/widgets.php:86
298
  msgid "Remove the \"Archives\" widget"
299
  msgstr "Удалите виджет «Архивы»"
300
 
301
+ #: admin/includes/options.php:277 admin/pages/widgets.php:95
302
  msgid "Remove the \"Links\" widget"
303
  msgstr "Удалите виджет «Ссылки»"
304
 
305
+ #: admin/includes/options.php:282 admin/pages/widgets.php:104
306
  msgid "Remove the \"Meta\" widget"
307
  msgstr "Удалите виджет «Мета»"
308
 
309
+ #: admin/includes/options.php:287 admin/pages/widgets.php:113
310
  msgid "Remove the \"Search\" widget"
311
  msgstr "Удалите виджет «Поиск»"
312
 
313
+ #: admin/includes/options.php:292 admin/includes/options.php:312
314
+ #: admin/pages/widgets.php:122
315
  msgid "Remove the \"Text\" widget"
316
  msgstr "Удалите виджет «Текст»"
317
 
318
+ #: admin/includes/options.php:297 admin/pages/widgets.php:131
319
  msgid "Remove the \"Categories\" widget"
320
  msgstr "Удалите виджет «Категории»"
321
 
322
+ #: admin/includes/options.php:302 admin/pages/widgets.php:140
323
  msgid "Remove the \"Recent Posts\" widget"
324
  msgstr "Удалите виджет «Последние записи»"
325
 
326
+ #: admin/includes/options.php:307 admin/pages/widgets.php:149
327
  msgid "Remove the \"Recent Comments\" widget"
328
+ msgstr "Удалите виджет «Свежие комментарии»"
329
 
330
+ #: admin/includes/options.php:317 admin/pages/widgets.php:158
331
  msgid "Remove the \"RSS\" widget"
332
  msgstr "Удалить виджет «RSS»"
333
 
334
+ #: admin/includes/options.php:322 admin/pages/widgets.php:167
335
  msgid "Remove the \"Menu\" widget"
336
  msgstr "Удалите виджет «Меню»"
337
 
338
+ #: admin/includes/options.php:327 admin/pages/widgets.php:176
339
  msgid "Remove the \"Twenty Eleven Ephemera\" widget"
340
  msgstr "Удалите виджет \"Twenty Eleven Ephemera\""
341
 
342
+ #: admin/includes/options.php:330 admin/includes/options.php:399
343
+ #: admin/pages/advanced.php:199
344
  msgid "Disable revision"
345
  msgstr "Отключить ревизии"
346
 
347
+ #: admin/includes/options.php:331 admin/includes/options.php:404
348
+ #: admin/pages/advanced.php:212
349
  msgid "Limit Post Revisions"
350
  msgstr "Установить лимит ревизий"
351
 
352
+ #: admin/includes/options.php:332 admin/pages/seo.php:129
353
  msgid "Exclude pages:"
354
  msgstr "Исключить страницы:"
355
 
356
+ #: admin/includes/options.php:335 admin/pages/seo.php:86
357
  msgid "Create right robots.txt"
358
  msgstr "Создайте правильный robots.txt"
359
 
360
+ #: admin/includes/options.php:340 admin/pages/seo.php:101
361
  msgid "You can edit the robots.txt file in the box below:"
362
  msgstr "Вы можете отредактировать файл robots.txt в поле ниже:"
363
 
364
+ #: admin/includes/options.php:343
365
  msgid "Quick mode"
366
  msgstr "Быстрый старт"
367
 
368
+ #: admin/includes/options.php:346 admin/pages/performance.php:126
369
  msgid "Remove jQuery Migrate"
370
  msgstr "Удалить jQuery Migrate"
371
 
372
+ #: admin/includes/options.php:349 admin/pages/performance.php:136
373
  msgid "Disable Embeds"
374
  msgstr "Отключить Embeds"
375
 
376
+ #: admin/includes/options.php:350 admin/pages/performance.php:76
377
  msgid "Disable RSS feeds"
378
  msgstr "Отключить RSS каналы"
379
 
380
+ #: admin/includes/options.php:353
381
  msgid "Removes links to wordpress.org site from the admin bar"
382
  msgstr "Удаляет ссылки на wordpress.org сайт из панели администратора"
383
 
384
+ #: admin/includes/options.php:356 admin/pages/performance-html-minify.php:72
385
  msgid "HTML minify"
386
  msgstr "Html сжатие"
387
 
388
+ #: admin/includes/options.php:359
389
  msgid "Redirect Http to Https"
390
  msgstr "Перенаправление Http на Https"
391
 
392
+ #: admin/includes/options.php:374 admin/pages/performance.php:270
393
  msgid "Eclude stylesheet/script file names"
394
  msgstr "Исключает файлы стилей/сприптов"
395
 
396
+ #: admin/includes/options.php:379
397
  msgid "Enable Sanitization of WordPress"
398
  msgstr "Включить Wordpress Sanitization"
399
 
400
+ #: admin/includes/options.php:384 admin/pages/advanced.php:150
401
  msgid "Disable admin top bar"
402
  msgstr "Скрыть верхнюю панель администратора"
403
 
404
+ #: admin/includes/options.php:389 admin/pages/advanced.php:168
405
  msgid "Remove admin bar WP logo"
406
  msgstr "Удалить логотип Wordpress из админбара"
407
 
408
+ #: admin/includes/options.php:394 admin/pages/advanced.php:178
409
  msgid "Replace \"Howdy\" text with \"Welcome\""
410
  msgstr "Заменить текст \"Привет\", на \"Добро пожаловать\""
411
 
412
+ #: admin/includes/options.php:409 admin/pages/advanced.php:236
413
  msgid "Disable autosave"
414
  msgstr "Отключить автосохранения"
415
 
416
+ #: admin/includes/options.php:414 admin/pages/advanced.php:246
417
  msgid "Disable Texturization - Smart Quotes"
418
  msgstr "Отключить \"Умные кавычки\""
419
 
420
+ #: admin/includes/options.php:419 admin/pages/advanced.php:256
421
  msgid "Disable capitalization in Wordpress branding"
422
  msgstr "Отключить верблюжий шрифт в WordPress брендинге"
423
 
424
+ #: admin/includes/options.php:424 admin/pages/advanced.php:266
425
  msgid "Disable auto inserted paragraphs (i.e. p tags)"
426
  msgstr "Отключить автоматические параграфы (т.е p теги)"
427
 
428
+ #: admin/includes/options.php:429 admin/pages/advanced.php:89
429
  msgid "Disable Heartbeat"
430
  msgstr "Отключить пульсацию Wordpress"
431
 
432
+ #: admin/includes/options.php:434 admin/pages/advanced.php:118
433
  msgid "Heartbeat frequency"
434
  msgstr "Интервал пульсации Wordpress"
435
 
436
+ #: admin/includes/options.php:439 admin/pages/defence-privacy-code.php:64
 
437
  msgid "Remove html comments"
438
  msgstr "Удалить html комментарии"
439
 
440
+ #: admin/pages/advanced.php:36
441
  msgid "Advanced"
442
  msgstr "Дополнительно"
443
 
444
+ #: admin/pages/advanced.php:65
445
  msgid ""
446
  "Warning! In the wp-config.php file, a constant WP_POST_REVISIONS is found, "
447
  "it determines the number of revisions. Delete it so you can change this "
451
  "она определяет количество ревизий. Удалите ее, чтобы вы могли изменить это "
452
  "значение через панель администратора."
453
 
454
+ #: admin/pages/advanced.php:82
455
  msgid "Heartbeat"
456
  msgstr "Пульсация"
457
 
458
+ #: admin/pages/advanced.php:82
459
  msgid ""
460
  "The WordPress Heartbeat API uses /wp-admin/admin-ajax.php to run AJAX calls "
461
  "from the web-browser. While this is great and all it can also cause high CPU "
470
  "будет регулярно отправлять POST-запросы в этот файл через каждые 15 секунд. "
471
  "Ниже приведен пример ниже."
472
 
473
+ #: admin/pages/advanced.php:91
474
  msgid "Default"
475
  msgstr "По умолчанию"
476
 
477
+ #: admin/pages/advanced.php:92
478
  msgid "Everywhere"
479
  msgstr "Повсюду"
480
 
481
+ #: admin/pages/advanced.php:93
482
  msgid "On dashboard page"
483
  msgstr "В панели инструментов"
484
 
485
+ #: admin/pages/advanced.php:94
486
  msgid "Only allow when editing Posts/Pages"
487
  msgstr "Когда редактируете записи/страницы"
488
 
489
+ #: admin/pages/advanced.php:120 admin/pages/advanced.php:214
490
  msgid "Wordpress default"
491
  msgstr "Wordpress по умолчанию"
492
 
493
+ #: admin/pages/advanced.php:121 admin/pages/advanced.php:122
494
+ #: admin/pages/advanced.php:123 admin/pages/advanced.php:124
495
+ #: admin/pages/advanced.php:125 admin/pages/advanced.php:126
496
+ #: admin/pages/advanced.php:127 admin/pages/advanced.php:128
497
+ #: admin/pages/advanced.php:129
498
  msgid "seconds"
499
  msgstr "секунды"
500
 
501
+ #: admin/pages/advanced.php:132
502
  msgid ""
503
  "Select the heartbeat frequency wordpress. We recommend you 60 seconds, "
504
  "default is 20 seconds."
506
  "Установите частоту пульсации Wordpress. Мы рекомендуем вам 60 секунд, "
507
  "значение по умолчанию — 20 секунд."
508
 
509
+ #: admin/pages/advanced.php:143
510
  msgid "Admin bar"
511
  msgstr "Верхняя панель администратора"
512
 
513
+ #: admin/pages/advanced.php:143
514
  msgid "In this group of settings, you can manage the adminbar."
515
  msgstr ""
516
  "В этой группе настроек вы можете управлять верхней панелью администратора."
517
 
518
+ #: admin/pages/advanced.php:152
519
  msgid "Default enable"
520
  msgstr "Включен (по умолчанию)"
521
 
522
+ #: admin/pages/advanced.php:153
523
  msgid "For all users"
524
  msgstr "Для всех пользователей"
525
 
526
+ #: admin/pages/advanced.php:156
527
  msgid "For all users except administrator"
528
  msgstr "Для всех, кроме администратора"
529
 
530
+ #: admin/pages/advanced.php:160
531
  msgid ""
532
  "In some cases, you need to disable the floating top admin panel. You can "
533
  "disable this panel."
535
  "В некоторых случаях вам необходимо отключить админбар. Вы можете это сделать "
536
  "с помощью текущей опции."
537
 
538
+ #: admin/pages/advanced.php:160
539
  msgid "Disable admin top bar."
540
  msgstr "Отключить верхнюю панель администратора."
541
 
542
+ #: admin/pages/advanced.php:170
543
  msgid "Enable this if you want to remove wp logo from admin bar."
544
  msgstr ""
545
  "Включите это, если вы хотите удалить логотип Wordpress из верхней панели "
546
  "администратора."
547
 
548
+ #: admin/pages/advanced.php:180
549
  msgid "Replaces the welcome text in admin bar."
550
  msgstr "Заменяет текст приветствия в панели администратора."
551
 
552
+ #: admin/pages/advanced.php:192
553
  msgid "Posts"
554
  msgstr "Записи"
555
 
556
+ #: admin/pages/advanced.php:192
557
  msgid "In this group of options, you can manage revisions and post autosave."
558
  msgstr ""
559
  "В этой группе опций вы можете управлять ревизиями и автосохранением записей "
560
  "и страниц."
561
 
562
+ #: admin/pages/advanced.php:215 admin/pages/advanced.php:216
563
+ #: admin/pages/advanced.php:217 admin/pages/advanced.php:218
564
+ #: admin/pages/advanced.php:219 admin/pages/advanced.php:220
565
+ #: admin/pages/advanced.php:221 admin/pages/advanced.php:222
566
+ #: admin/pages/advanced.php:223 admin/pages/advanced.php:224
567
  msgid "revisions"
568
  msgstr "ревизии"
569
 
570
+ #: admin/pages/advanced.php:227
571
  msgid ""
572
  "WordPress automatically saves revisions when you are working on posts and "
573
  "pages. These can begin to add up pretty quick. By default, there is no limit "
586
  "базы данных, а также использовать дисковое пространство.\n"
587
  "Поэтому мы рекомендуем либо отключать, либо ограничивать ваши изменения."
588
 
589
+ #: admin/pages/advanced.php:238
590
  msgid ""
591
  "WordPress by default automatically saves a draft every 60 seconds (1 "
592
  "minute). There are reasons why you might want to change this."
594
  "WordPress по умолчанию автоматически сохраняет черновик каждые 60 секунд (1 "
595
  "минута). Есть причины, по которым вы можете изменить это."
596
 
597
+ #: admin/pages/advanced.php:238
598
  msgid "Disables automatic saving of drafts."
599
  msgstr "Отключает автоматическое сохранение черновиков."
600
 
601
+ #: admin/pages/advanced.php:248
602
  msgid ""
603
  "Function of text formatting. This function makes the text more correct, "
604
  "readable and visually appealing. But sometimes this function may prevent you "
608
  "читаемым и визуально привлекательным. Но иногда эта функция может помешать "
609
  "вам использовать определенные коды и символы."
610
 
611
+ #: admin/pages/advanced.php:248
612
  msgid "Disable Texturization - Smart Quotes."
613
  msgstr "Отключить умные кавычки"
614
 
615
+ #: admin/pages/advanced.php:258
616
  msgid ""
617
  "Replaces the incorrectly written letter \"p\" in the middle of WordPress "
618
  "(you need to write with the capital P in the middle)."
620
  "Заменяет неправильно написанную букву «p» в середине WordPress (вам нужно "
621
  "написать ее верхнем регистре P в середине)."
622
 
623
+ #: admin/pages/advanced.php:258
624
  msgid "Disable capitalization in Wordpress branding."
625
  msgstr "Отключить верблюжий шрифт в брендинге Wordpress."
626
 
627
+ #: admin/pages/advanced.php:268
628
  msgid ""
629
  "Replaces the double shifting of a string to an HTML p ... /p construct, and "
630
  "a single one on br."
631
  msgstr ""
632
  "Заменяет двойное смещение строки на конструкцию HTML p ... / p и одну на br."
633
 
634
+ #: admin/pages/advanced.php:268
635
  msgid "Disable auto inserted paragraphs."
636
  msgstr "Отключить автоматически вставленные абзацы."
637
 
638
+ #: admin/pages/components.php:40
639
+ msgid "Components"
640
+ msgstr "Компоненты"
641
 
642
+ #: admin/pages/components.php:71
643
+ msgid "Updates manager"
644
+ msgstr "Менеджер обновлений"
645
 
646
+ #: admin/pages/components.php:74
647
+ msgid "Disable updates enable auto updates for themes, plugins and WordPress."
 
 
648
  msgstr ""
649
+ "Отключает обновления, включает автообновления плагинов, тем, WordPress."
 
650
 
651
+ #: admin/pages/components.php:78
652
+ msgid "Comments tools"
653
+ msgstr "Инструменты комментариев"
654
+
655
+ #: admin/pages/components.php:81
656
  msgid ""
657
+ "Bulk disable and remove comments, disable “Website” field, hides external "
658
+ "links, disable XML-RPC."
 
659
  msgstr ""
660
+ "Позволяет массово отключать и удалять комментарии, отключает поле сайт, "
661
+ "скрывает внешние ссылки, отключает XML-RPC."
 
662
 
663
+ #: admin/pages/components.php:85
664
+ msgid "Widgets tools"
665
+ msgstr "Инструменты для виджетов"
666
 
667
+ #: admin/pages/components.php:88
668
+ msgid "Disable unused widgets such as tag cloud, links, calendar etc."
 
 
 
669
  msgstr ""
670
+ "Позволяет отключить неиспользуемые виджеты, такие как облако тегов, ссылки, "
671
+ "календарь и т.д."
 
 
672
 
673
+ #: admin/pages/components.php:92
674
+ msgid "Asset manager"
675
+ msgstr "Менеджер скриптов"
676
+
677
+ #: admin/pages/components.php:95
678
  msgid ""
679
+ "Selectively disable unused scripts and styles on the pages of your website."
 
680
  msgstr ""
681
+ "Выборочно отключает неиспользуемые скрипты и стили на страницах вашего сайта."
682
+
683
+ #: admin/pages/components.php:99
684
+ msgid "Disable admin notices"
685
+ msgstr "Отключить уведомления"
686
 
687
+ #: admin/pages/components.php:102
688
  msgid ""
689
+ "Disables admin notices bulk or individually. Collects notices into the admin "
690
+ "bar."
 
 
691
  msgstr ""
692
+ "Отключает уведомления администратора индивидуально или все разом. Собирает "
693
+ "уведомления в админ баре."
 
 
 
694
 
695
+ #: admin/pages/components.php:106
696
+ msgid "Admin bar manager"
697
+ msgstr "Управление админбаром"
 
 
698
 
699
+ #: admin/pages/components.php:109
700
+ msgid "Disables admin bar. Allows to change and remove admin bar elements."
701
+ msgstr ""
702
+ "Отключает админ бар. Позволяет изменять и удалять элементы из админбара."
703
+
704
+ #: admin/pages/components.php:113
705
+ msgid "Posts tools"
706
+ msgstr "Инструменты для записей"
 
 
 
 
 
707
 
708
+ #: admin/pages/components.php:116
709
  msgid ""
710
+ "Disable revisions, disable posts autosave, disable smart quotes and disable "
711
+ "auto paragraphs."
 
 
712
  msgstr ""
713
+ "Отключение ревизий, отключение автосохранений записей, отключение «умных "
714
+ "кавычек», отключение автоматических параграфов."
 
 
 
715
 
716
+ #: admin/pages/components.php:120
717
+ msgid "Yoast SEO optimization"
718
+ msgstr "Оптимизация Yoast Seo"
719
+
720
+ #: admin/pages/components.php:123
721
+ msgid "Set of optimization functions for the popular Yoast SEO plugin."
722
+ msgstr "Набор функций для оптимизации популярного плагина Yoast Seo."
723
 
724
+ #: admin/pages/components.php:130
725
+ msgid "Transliteration of Cyrillic alphabet"
726
+ msgstr "Транслитерация кириллицы"
727
+
728
+ #: admin/pages/components.php:133
729
  msgid ""
730
+ "Converts Cyrillic permalinks of post, pages, taxonomies and media files to "
731
+ "the Latin alphabet. Supports Russian, Ukrainian, Georgian, Bulgarian "
732
+ "languages."
 
733
  msgstr ""
734
+ "Конвертирует кириллические постоянные ссылки записей, страниц, таксономий и "
735
+ "медиафайлов в латиницу. Поддерживает Русский, Украинский, Грузинский, "
736
+ "Болгарский языки. Пример: http://site.dev/последние-новости -> http://site."
737
+ "dev/poslednie-novosti"
738
 
739
+ #: admin/pages/components.php:140
740
+ msgid "Privacy Wordpress"
741
+ msgstr "Приватный Wordpress"
742
 
743
+ #: admin/pages/components.php:143
744
+ msgid ""
745
+ "This component is to protect your site, Wordpress runs private mode. Nobody "
746
+ "will know that you will use Wordpress!"
747
  msgstr ""
748
+ "Этот компонент предназначен для защиты вашего сайта, Wordpress работает в "
749
+ "приватном режиме. Никто не будет знать, что вы будете использовать Wordpress!"
750
 
751
+ #: admin/pages/components.php:147
752
+ msgid "<strong>Plugin Components</strong>."
753
+ msgstr "<strong>Компоненты плагина</strong>."
754
+
755
+ #: admin/pages/components.php:149
756
  msgid ""
757
+ "These are components of the plugin bundle. When you activate the plugin, all "
758
+ "the components turned on by default. If you don’t need some function, you "
759
+ "can easily turn it off on this page."
 
 
 
760
  msgstr ""
761
+ "Это компоненты, входящие в загрузочный пакет плагина. При активации плагина "
762
+ "все компоненты включены по умолчанию. Если какая-то функция вам не нужна, вы "
763
+ "можете легко отключить её на этой странице."
 
 
 
 
764
 
765
+ #: admin/pages/components.php:181
766
+ msgid "Activate"
767
+ msgstr "Включить"
 
768
 
769
+ #: admin/pages/components.php:183
770
+ msgid "Deactivate"
771
+ msgstr "Отключить"
772
+
773
+ #: admin/pages/defence-privacy-code.php:38
774
+ msgid "Code privacy"
775
+ msgstr "Приватный код"
776
+
777
+ #: admin/pages/defence-privacy-code.php:57
778
+ msgid "<strong>Hide WordPress plugins versions</strong>."
779
+ msgstr "<strong>Скрыть версии Wordpress и плагинов</strong>."
780
+
781
+ #: admin/pages/defence-privacy-code.php:57
782
  msgid ""
783
+ "WordPress itself and many plugins shows their version at the public areas of "
784
+ "your site. An attacker received this information may be aware of the "
785
+ "vulnerabilities found in the version of the WordPress core or plugins."
786
  msgstr ""
787
+ "Сам WordPress и многие плагины, публикуют свою версию в публичных областях "
788
+ "вашего сайта. Получив эту информацию, злоумышленник может знать об "
789
+ "уязвимостях обнаруженных в полученной им версии ядра WordPress или плагинов."
 
 
 
 
790
 
791
+ #: admin/pages/defence-privacy-code.php:66
792
  msgid ""
793
+ "This function will remove all html comments in the source code, except for "
794
+ "special and hidden comments. This is necessary to hide the version of "
795
+ "installed plugins."
 
796
  msgstr ""
797
+ "Эта функция удалит все html-комментарии в исходном коде, за исключением "
798
+ "специальных и скрытых комментариев. Это необходимо, чтобы скрыть версию "
799
+ "установленных плагинов."
 
800
 
801
+ #: admin/pages/defence-privacy-code.php:66
802
+ msgid "Remove html comments in source code."
803
+ msgstr "Удалить Html комментарии в исходном коде страницы."
804
+
805
+ #: admin/pages/defence-privacy-code.php:74 admin/pages/performance.php:248
806
+ #: admin/pages/performance.php:259 admin/pages/seo.php:76
807
+ #: admin/pages/seo.php:115 admin/pages/seo.php:138 admin/pages/seo.php:152
808
+ #: admin/pages/seo.php:162 admin/pages/seo.php:202
809
+ msgid "Recommended"
810
+ msgstr "Рекомендовано"
811
 
812
+ #: admin/pages/defence-privacy-code.php:76
813
  msgid ""
814
+ "Allows attacker to learn the version of WP installed on the site. This meta "
815
+ "tag has no useful function."
 
816
  msgstr ""
817
+ "Позволяет злоумышленнику узнать версию Wordpress, установленую на вашем "
818
+ "сайте. Этот мета-тег не несет никакой пользы."
819
 
820
+ #: admin/pages/defence-privacy-code.php:76
821
+ #, php-format
822
+ msgid "Removes the meta tag from the %s section"
823
+ msgstr "Удаляет мета-тег из раздел %s"
824
+
825
+ #: admin/pages/defence.php:34
826
+ msgid "Defence"
827
+ msgstr "Защита"
828
 
829
+ #: admin/pages/defence.php:77
830
  #, php-format
831
  msgid ""
832
+ "We found that you are use the (%s) plugin to change wp-login.php page "
833
+ "address. Please delete it, because Clearfy already contains these functions "
834
+ "and you do not need to use two plugins. If you do not want to remove (%s) "
835
+ "plugin for some reason, please do not use wp-login.php page address change "
836
+ "feature in the Clearfy plugin, to avoid conflicts."
837
+ msgstr ""
838
+ "Мы обнаружили, что вы используете плагин (%s) для изменения адреса страницы "
839
+ "wp-login.php. Пожалуйста удалите его, так как Clearfy уже содержит эти "
840
+ "функции и вам незачем использовать два плагина. Если вы по каким-то причинам "
841
+ "не хотите удалять плагин (%s), пожалуйста не используйте функции по "
842
+ "изменению адреса страницы wp-login.php в плагине Clearfy, во избежание "
843
+ "конфликтов."
844
 
845
+ #: admin/pages/defence.php:86
846
+ #, php-format
 
 
 
847
  msgid ""
848
+ "We found that you are use the (%s) plugin. Please do not use its wp-login."
849
+ "php page address change and the same feature in the Clearfy plugin, to avoid "
850
+ "conflicts."
851
  msgstr ""
852
+ "Мы обнаружили, что вы используете плагин (%s). Пожалуйста не используйте его "
853
+ "функции по изменению адреса страницы wp-login.php и схожие функции в плагине "
854
+ "Clearfy, во избежание конфликтов."
855
 
856
+ #: admin/pages/defence.php:124
857
+ #, php-format
858
  msgid ""
859
+ "Hi,\n"
860
+ "This is %s plugin. Here is your new WordPress login address:\n"
861
+ "URL: %s"
862
  msgstr ""
863
+ "Здравствуйте!\n"
864
+ "Это плагин %s. Вы изменили адрес страницы логина на:\n"
865
+ "URL: %s"
866
+
867
+ #: admin/pages/defence.php:125 admin/pages/defence.php:275
868
+ msgid "IMPORTANT! Be sure that you wrote down the new login page address"
869
+ msgstr "ВАЖНО! Обязательно запишите новый адрес страницы логина"
870
 
871
+ #: admin/pages/defence.php:126 admin/pages/defence.php:266
872
+ #, php-format
873
  msgid ""
874
+ "If unable to access the login/admin section anymore, use the Recovery Link "
875
+ "which reset links to default: \n"
876
+ "%s"
877
  msgstr ""
878
+ "Если вы больше не можете получить доступ к разделу login/admin, используйте "
879
+ "ссылку восстановления, которая восстанавливает ссылки по умолчанию: \n"
880
+ "%s"
 
 
 
 
881
 
882
+ #: admin/pages/defence.php:127
883
+ #, php-format
884
  msgid ""
885
+ "Best Regards,\n"
886
+ "%s"
887
  msgstr ""
888
+ "С уважением,\n"
889
+ "%s"
890
 
891
+ #: admin/pages/defence.php:135
892
+ #, php-format
893
+ msgid "[%s] Your New WP Login!"
894
+ msgstr "[%s] Измен адрес страницы логина!"
895
 
896
+ #: admin/pages/defence.php:181
897
  msgid ""
898
+ "You entered an incorrect part of the path to your login page. The path to "
899
+ "the login page can not consist only of digits, at least 3 characters, you "
900
+ "must use only the characters [0-9A-z_-]!"
901
  msgstr ""
902
+ "Вы ввели неправильную часть пути к своей странице входа. Путь к странице "
903
+ "входа не может состоять только из цифр, не менее 3 символов, вы должны "
904
+ "использовать только символы [0-9A-z_-]!"
905
 
906
+ #: admin/pages/defence.php:188
907
+ msgid ""
908
+ "The entered login page name is already used for one of your pages. Try to "
909
+ "choose a different login page name!"
910
+ msgstr ""
911
+ "Введенное имя учетной записи уже используется для одной из ваших страниц. "
912
+ "Попробуйте выбрать другое имя учетной записи!"
913
 
914
+ #: admin/pages/defence.php:206
915
+ msgid "<strong>Base settings</strong>."
916
+ msgstr "<strong>Базовый настройки</strong>."
917
 
918
+ #: admin/pages/defence.php:206
919
+ msgid "Basic recommended security settings."
920
+ msgstr "Основные рекомендуемые параметры безопасности."
921
 
922
+ #: admin/pages/defence.php:215
923
  msgid ""
924
  "An attacker can find out the author's login, using a similar request to get "
925
  "your site. mysite.com/?author=1"
927
  "Злоумышленник может узнать логин автора, с помощью подобного get запроса "
928
  "mysite.com/?author=1"
929
 
930
+ #: admin/pages/defence.php:215
931
  msgid "Sets the redirect to exclude the possibility of obtaining a login."
932
  msgstr ""
933
  "Предотвращает возможность узнать логин автора, устанавливая перенаправление."
934
 
935
+ #: admin/pages/defence.php:225
936
  msgid ""
937
  "WP by default shows whether you entered a wrong login or incorrect password, "
938
  "which allows attackers to understand if there is a certain user on the site, "
942
  "неправильный пароль, что дает злоумышленникам понять, существует ли "
943
  "определенный пользователь на сайте, а после начать перебор паролей."
944
 
945
+ #: admin/pages/defence.php:225
946
  msgid ""
947
  "Changes in the text of the error so that attackers could not find the login."
948
  msgstr ""
949
  "Меняет текст ошибки так, чтобы злоумышленники не смогли подобрать логин."
950
 
951
+ #: admin/pages/defence.php:233
952
  msgid "Disable XML-RPC"
953
  msgstr "Отключить XML-RPC"
954
 
955
+ #: admin/pages/defence.php:235
956
  msgid ""
957
  "A pingback is basically an automated comment that gets created when another "
958
  "blog links to you. A self-pingback is created when you link to an article "
964
  "оставили ссылку на статью в своем блоге. Pingbacks по существу являются не "
965
  "более чем спам и пустая трата ресурсов вашего сайта."
966
 
967
+ #: admin/pages/defence.php:235
968
  msgid "Removes the server responses a reference to the xmlrpc file."
969
  msgstr "Удаляет ссылку на xmlrpc-файл и ответ сервера."
970
 
971
+ #: admin/pages/defence.php:243
972
+ msgid "<strong>Protect your admin login</strong>."
973
+ msgstr "<strong>Защитите вашу страницу логина</strong>."
974
 
975
+ #: admin/pages/defence.php:243
 
976
  msgid ""
977
+ "Dozens of bots attack your login page at /wp-login.php and /wp-admin/daily. "
978
+ "Bruteforce and want to access your admin panel. Even if you're sure that you "
979
+ "have created a complex and reliable password, this does not guarantee "
980
+ "security and does not relieve your login page load. The easiest way is to "
981
+ "protect the login page by simply changing its address to your own and unique."
982
+ msgstr ""
983
+ "Десятки ботов ежедневно атакуют вашу страницу логина по адресам /wp-login."
984
+ "php и /wp-admin/, перебирая пароли, желая получить доступ в вашу админ "
985
+ "панель. Даже если вы уверены, что создали сложный и надежный пароль, это не "
986
+ "гарантирует безопасность и не избавляет от нагрузки вашу страницу логина. "
987
+ "Проще всего защитить страницу логина, просто изменив её адрес на собственный "
988
+ "и уникальный."
989
+
990
+ #: admin/pages/defence.php:252
991
+ msgid ""
992
+ "Hides the /wp-admin directory for unauthorized users. If the option is "
993
+ "disabled, when you request the page /wp-admin you will be redirected to the "
994
+ "login page, even if you changed its address. Therefore, for protection "
995
+ "purposes enable this option."
996
  msgstr ""
997
+ "Скрывает каталог /wp-admin для неавторизованных пользователей. Если опция "
998
+ "отключена, при запросе страницы /wp-admin вы будете перенаправлены на "
999
+ "страницу логина, даже если вы изменили ее адрес. Поэтому в целях защиты, "
1000
+ "включите эту опцию."
1001
 
1002
+ #: admin/pages/defence.php:261
1003
+ msgid "Hides the wp-login.php and wp-signup.php pages."
1004
+ msgstr "Скрывает страницу wp-login.php, wp-signup.php."
1005
 
1006
+ #: admin/pages/defence.php:261
 
1007
  msgid ""
1008
+ "Use this option carefully! If you forget the new login page address, you can "
1009
+ "not get into the admin panel."
1010
  msgstr ""
1011
+ "Используйте эту опцию осторожно, если вы забудете новый адрес страницы "
1012
+ "логина, вы не сможете попасть в админ панель."
1013
 
1014
+ #: admin/pages/defence.php:275
1015
+ msgid "Set a new login page name without slash. Example: mysecretlogin"
1016
+ msgstr "Задайте новое имя страницы логина без слешей. Пример: mysecretlogin"
1017
 
1018
+ #: admin/pages/performance-google.php:46
1019
+ msgid "Google services"
1020
+ msgstr "Google сервисы"
 
 
 
 
1021
 
1022
+ #: admin/pages/performance-google.php:85
1023
+ msgid "<strong>Fonts and Maps</strong>."
1024
+ msgstr "<strong>Карты и шрифты</strong>."
1025
 
1026
+ #: admin/pages/performance-google.php:85
1027
  msgid ""
1028
+ "Google Fonts and Maps strongly affect your website loading speed. Use "
1029
+ "settings below to disable or optimize Google fonts and Maps."
 
1030
  msgstr ""
1031
+ "Google шрифты и карты сильно влияют на скорость загрузки вашего сайта. "
1032
+ "Используйте настройки ниже, чтобы отключить или оптимизировать Google шрифты "
1033
+ "и карты."
1034
 
1035
+ #: admin/pages/performance-google.php:94
1036
+ msgid ""
1037
+ "By default, WordPress loads Google fonts synchronously, that is, your page "
1038
+ "will not be fully loaded until Google Fonts are loaded. This algorithm slows "
1039
+ "down the loading of your page and leads to errors when checking the site in "
1040
+ "Google Page Speed. Using this option, your Google Fonts will be loaded after "
1041
+ "your page is fully loaded. This method has a negative — you and visitors of "
1042
+ "your site will see how the font changes while loading a page, from the "
1043
+ "system to the downloadable one."
1044
+ msgstr ""
1045
+ "По умолчанию WordPress загружает шрифты Google синхронно, то есть, ваша "
1046
+ "страница не будет полностью загружена, пока не будут загружены шрифты "
1047
+ "Google. Такой алгоритм работы замедляет загрузку вашей страницы и приводит к "
1048
+ "появлению ошибок при проверке сайта в Google Page Speed. Используя эту "
1049
+ "опцию, ваши шрифты Google будут загружаться после полной загрузки вашей "
1050
+ "страницы. У этого метода есть и минус — вы и посетители сайта будете видеть, "
1051
+ "как меняется шрифт в процессе загрузки страницы с системного на загружаемый."
1052
+
1053
+ #: admin/pages/performance-google.php:104
1054
+ msgid ""
1055
+ "This function stops loading of Open Sans and other fonts used by WordPress "
1056
+ "and bundled themes (Twenty Twelve, Twenty Thirteen, Twenty Fourteen, Twenty "
1057
+ "Fifteen, Twenty Sixteen, Twenty Seventeen) from Google Fonts.\n"
1058
+ "Reasons for not using Google Fonts might be privacy and security, local "
1059
+ "development or production, blocking of Google’s servers, characters not "
1060
+ "supported by font, performance."
1061
+ msgstr ""
1062
+ "Эта функция останавливает загрузку Open Sans и других шрифтов, используемых "
1063
+ "WordPress, и связанных с ним тем (Twenty Twelve, Twenty Thirteen, Twenty "
1064
+ "Fourteen, Twenty Fifteen, Twenty Sixteen, Twenty Seventeen) из сервиса "
1065
+ "Google шрифты.\n"
1066
+ "Причинами не использовать Google шрифты могут быть конфиденциальность и "
1067
+ "безопасность, локальная разработка или отладка, блокировка серверов Google, "
1068
+ "символы, не поддерживаемые шрифтом, производительность."
1069
+
1070
+ #: admin/pages/performance-google.php:115
1071
+ msgid ""
1072
+ "This function stops loading of Google Maps used by some themes or plugins.\n"
1073
+ "Reasons for not using Google Maps might be privacy and security, local "
1074
+ "development or production, blocking of Google’s servers, performance, not "
1075
+ "necessary, etc."
1076
+ msgstr ""
1077
+ "Эта функция останавливает загрузку Карт Google, используемых некоторыми "
1078
+ "темами или плагинами.\n"
1079
+ "Причинами не использования Google карт могут быть конфиденциальность и "
1080
+ "безопасность, локальная разработка или отладка, блокировка серверов Google, "
1081
+ "производительность и т. д."
1082
+
1083
+ #: admin/pages/performance-google.php:132
1084
+ msgid ""
1085
+ "By default, the \"Disable Google Maps\" option removes maps inserted with "
1086
+ "the SCRIPT tag from the page source code. However, you can also cut out all "
1087
+ "maps inserted via the iframe by enabling this option."
1088
+ msgstr ""
1089
+ "По умолчанию, опция \"Отключить карты Google \" удаляет карты с тегом script "
1090
+ "из исходного кода страницы. Однако, вы также можете вырезать все карты, "
1091
+ "вставленные через iframe, включив эту опцию."
1092
 
1093
+ #: admin/pages/performance-google.php:141
1094
+ msgid "Posts or Pages IDs separated by a ,"
1095
+ msgstr "ID записей или страниц, разделенные запятой ,"
1096
+
1097
+ #: admin/pages/performance-google.php:146
1098
+ msgid "<strong>Google Analytics cache</strong>."
1099
+ msgstr "<strong>Кеширование Google аналитики</strong>."
1100
+
1101
+ #: admin/pages/performance-google.php:146
1102
  msgid ""
1103
+ "To improve Google Page Speed indicators Analytics caching is needed. "
1104
+ "However, it can also slightly increase your website loading speed, because "
1105
+ "Analytics js files will load locally. The second case that you might need "
1106
+ "these settings is the usual Google Analytics connection to your website. You "
1107
+ "do not need to do this with other plugins or insert the tracking code into "
1108
+ "your theme."
1109
+ msgstr ""
1110
+ "Кеширование Analytics нужно для улучшения показателей Google Page Speed, но "
1111
+ "это также может незначительно повысить скорость загрузки вашего сайта, "
1112
+ "потому что js файлы Analytics будут подгружаться локально. Второй случай, "
1113
+ "когда вам могут понадобиться эти настройки — обычное подключение Google "
1114
+ "Analytics к сайту. Вам не нужно делать это с помощью других плагинов или "
1115
+ "просто вставлять код отслеживания в вашу тему."
1116
+
1117
+ #: admin/pages/performance-google.php:155
1118
+ msgid ""
1119
+ "If you enable this option, the plugin will begin to save a local copy of "
1120
+ "Google Analytics to speed up the loading of your website and improve Google "
1121
+ "Page Speed."
1122
  msgstr ""
1123
+ "Если включить эту опцию, плагин начнет сохранять локальную копию Google "
1124
+ "Analytics, чтобы ускорить загрузку вашего сайта и улучшить показатели Google "
1125
+ "Page speed. ВНИМАНИЕ! Перед использованием этой опции, удалите ранее "
1126
+ "установленный код Google Analytics в вашей теме или плагины, связанные с "
1127
+ "этой функцией!"
1128
+
1129
+ #: admin/pages/performance-google.php:155
1130
+ msgid ""
1131
+ "ATTENTION! Before using this option, remove the previously installed Google "
1132
+ "Analytics code inside your theme or plugins associated with this feature!"
1133
+ msgstr ""
1134
+ "ВНИМАНИЕ! Перед использованием этой опции, удалите ранее установленный код "
1135
+ "Google Analytics в вашей теме или плагины, связанные с этой функцией!"
1136
+
1137
+ #: admin/pages/performance-google.php:176
1138
+ msgid "Set the Google Analytics tracking code."
1139
+ msgstr "Установите код отслеживания Google Analytics."
1140
+
1141
+ #: admin/pages/performance-google.php:187
1142
+ msgid "Save GA in"
1143
+ msgstr "Использовать код аналитики в"
1144
+
1145
+ #: admin/pages/performance-google.php:188
1146
+ msgid "Select location for the Google Analytics code."
1147
+ msgstr "Выберите местоположение для кода Google Analytics."
1148
+
1149
+ #: admin/pages/performance-google.php:198
1150
+ msgid ""
1151
+ "Essentially, you set up an event which is triggered after a user spends a "
1152
+ "certain amount of time on the landing page, telling Google Analytics not to "
1153
+ "count these users as bounces. A user may come to your website, find all of "
1154
+ "the information they need (a phone number, for example) and then leave the "
1155
+ "site without visiting another page. Without adjusted bounce rate, such a "
1156
+ "user would be considered a bounce, even though they had a successful "
1157
+ "experience. By defining a time limit after which you can consider a user to "
1158
+ "be \"engaged,\" that user would no longer count as a bounce, and you'd get a "
1159
+ "more accurate idea of whether they found what they were looking for."
1160
+ msgstr ""
1161
+ "По сути, вы настраиваете событие, которое запускается после того, как "
1162
+ "пользователь тратит определенное количество времени на целевую страницу, "
1163
+ "сообщая Google Analytics не считать этих пользователей как отказы. "
1164
+ "Пользователь может зайти на ваш сайт, найти всю необходимую информацию "
1165
+ "(например, номер телефона), а затем покинуть сайт, не посещая другую "
1166
+ "страницу. Без скорректированного коэффициента отказов такой пользователь "
1167
+ "будет считаться отказом, хотя у них был успешный опыт. Определив лимит "
1168
+ "времени, после которого вы можете считать пользователя «включенным», этот "
1169
+ "пользователь больше не будет считаться отказом, и вы получите более точное "
1170
+ "представление о том, нашли ли они то, что искали."
1171
+
1172
+ #: admin/pages/performance-google.php:207
1173
+ msgid ""
1174
+ "By default, Google Analytics code is loaded before other scripts and "
1175
+ "javasscript code, but if you set the value to 100, the GA code will be "
1176
+ "loaded after all other scripts. By changing the priority, you can set code "
1177
+ "position on the page."
1178
+ msgstr ""
1179
+ "По умолчанию код Google Analytics загружается раньше остальных скриптов и "
1180
+ "javasscript кода, но если вы установите к примеру значение 100, то код GA "
1181
+ "будет загружен после всех остальных скриптов. Изменяя приоритет, вы можете "
1182
+ "задавать положение кода на странице."
1183
 
1184
+ #: admin/pages/performance-google.php:215
1185
  #, php-format
1186
+ msgid "Disable all <a href=\"%s\">display features functionality?</a>"
1187
+ msgstr "Отключить <a href=\"%s\">все функции для контекстно-медийной сети?</a>"
1188
+
1189
+ #: admin/pages/performance-google.php:224
1190
+ #, php-format
1191
+ msgid ""
1192
+ "Use <a href=\"%s\">Anonymize IP?</a> (Required by law for some countries)"
1193
  msgstr ""
1194
+ "Использовать <a href=\"%s\">анонимный IP-адрес?</a> (Требуется по закону для "
1195
+ "некоторых стран)"
1196
+
1197
+ #: admin/pages/performance-google.php:242
1198
+ msgid ""
1199
+ "Clearfy creates a cron job to daily update Google Analytics cache scripts. "
1200
+ "After enabling this option, the plugin will not update Google Analytics "
1201
+ "cache file. Do not use this option if you do not understand why you need it!"
1202
+ msgstr ""
1203
+ "Плагин создает cron задание, чтобы ежедневно обновлять кеш скриптов Google "
1204
+ "Analytics. После включения этой опции, плагин не будет обновлять кэш файл "
1205
+ "Google Analytics. Не используйте эту опцию, если вы не понимаете, для чего "
1206
+ "вам это нужно!"
1207
 
1208
+ #: admin/pages/performance-html-minify.php:46
1209
+ msgid "Html Minify"
1210
+ msgstr "Html сжатие"
1211
+
1212
+ #: admin/pages/performance-html-minify.php:65
1213
+ msgid ""
1214
+ "<strong>Make your website’s markup look professional by using Minify HTML "
1215
+ "options</strong>."
1216
+ msgstr ""
1217
+ "<strong>Уменьшите вес ваших страниц, за счет удаления лишнего мусора, "
1218
+ "пробелов и комментариев.</strong>."
1219
+
1220
+ #: admin/pages/performance-html-minify.php:65
1221
+ msgid ""
1222
+ "Ever look at the HTML markup of your website and notice how sloppy and "
1223
+ "amateurish it looks? The Minify HTML options cleans up sloppy looking markup "
1224
+ "and minifies, which also speeds up download time."
1225
+ msgstr ""
1226
+ "Вы когда-нибудь видели HTML разметку на своем веб-сайте, замечали насколько "
1227
+ "она неаккуратна и раздута? Настройки HTML сжатия позволят грамотно "
1228
+ "установить правила формирования html разметки, а также регулировать вес "
1229
+ "ваших страниц."
1230
+
1231
+ #: admin/pages/performance-html-minify.php:74
1232
+ msgid ""
1233
+ "Reduces the weight of the page by removing line breaks, tabs, spaces, etc."
1234
+ msgstr ""
1235
+ "Уменьшает вес страницы путем удаления разрывов строк, вкладок, пробелов и т. "
1236
+ "Д."
1237
+
1238
+ #: admin/pages/performance-html-minify.php:74
1239
+ msgid "Minify pages."
1240
+ msgstr "Минимизировать страницы."
1241
+
1242
+ #: admin/pages/performance-html-minify.php:92
1243
+ msgid "Minify inline JavaScript"
1244
+ msgstr "Сжимать строчный JavaScript"
1245
+
1246
+ #: admin/pages/performance-html-minify.php:100
1247
+ msgid "Remove HTML, JavaScript and CSS comments"
1248
+ msgstr "Удалять HTML, JavaScript and CSS комментарии"
1249
+
1250
+ #: admin/pages/performance-html-minify.php:108
1251
+ msgid "Remove XHTML closing tags from HTML5 void elements"
1252
+ msgstr "Удалить XHTML закрывающие теги из HTML5 для пустых элементов"
1253
+
1254
+ #: admin/pages/performance-html-minify.php:116
1255
+ msgid "Remove relative domain from internal URLs"
1256
+ msgstr "Удалить относительные домены из внутренних Urls"
1257
+
1258
+ #: admin/pages/performance-html-minify.php:124
1259
+ msgid "Remove schemes (HTTP: and HTTPS:) from all URLs"
1260
+ msgstr "Удалить протоколы (HTTP: и HTTPS:) для всех URLs"
1261
+
1262
+ #: admin/pages/performance-html-minify.php:132
1263
+ msgid "Support multi-byte UTF-8 encoding (if you see odd characters)"
1264
+ msgstr "Поддержка многобайтовой кодировки UTF-8 (для кириллицы)"
1265
+
1266
+ #: admin/pages/performance.php:41
1267
+ msgid "Performance"
1268
+ msgstr "Производительность"
1269
+
1270
+ #: admin/pages/performance.php:69
1271
+ msgid "<strong>Clear the unnecessary scripts</strong>"
1272
+ msgstr "<strong>Очистите неиспользуемые скрипты</strong>"
1273
+
1274
+ #: admin/pages/performance.php:69
1275
+ msgid ""
1276
+ "This set of settings will help you remove unnecessary links and code from "
1277
+ "the head section, as well as reduce your website's pages weight."
1278
+ msgstr ""
1279
+ "Этот набор настроек поможет вам убрать лишние ссылки и код из секции head, а "
1280
+ "также уменьшить вес страниц вашего сайта."
1281
+
1282
+ #: admin/pages/performance.php:78
1283
+ msgid ""
1284
+ "By default, WordPress generates all types of different RSS feeds for your "
1285
+ "site. While RSS feeds can be useful if you are running a blog, businesses "
1286
+ "might not always utilize these. Not every site out there has a blog."
1287
+ msgstr ""
1288
+ "По умолчанию WordPress генерирует различные виды RSS-каналов для вашего "
1289
+ "сайта. Иногда RSS-каналы могут быть полезны, если вы используете блог "
1290
+ "например, но если у вас обычный одностаничник, то RSS для вас будет "
1291
+ "бесполезен. "
1292
+
1293
+ #: admin/pages/performance.php:78
1294
  #, php-format
1295
  msgid ""
1296
+ "Removes a link to the RSS-feed from the %s section, closes and puts the "
1297
+ "redirect from all RSS-feeds."
1298
  msgstr ""
1299
+ "Удаляет ссылку на RSS-канал из раздела %s, закрывает и ставит "
1300
+ "перенаправления от всех RSS-каналов."
1301
 
1302
+ #: admin/pages/performance.php:93
1303
+ msgid "Redirect 301"
1304
+ msgstr "301 редирект"
1305
+
1306
+ #: admin/pages/performance.php:94
1307
+ msgid "Page 404"
1308
+ msgstr "Страница 404"
1309
 
1310
+ #: admin/pages/performance.php:96
1311
+ msgid "Redirect feed requests"
1312
+ msgstr "Перенаправлять запросы с rss лент"
1313
 
1314
+ #: admin/pages/performance.php:97
1315
  msgid ""
1316
+ "Forward all requests to page 404 or to the main page through 301 redirects."
 
1317
  msgstr ""
1318
+ "Переслать все запросы на страницу 404 или на главную страницу через 301 "
1319
+ "переадресацию."
1320
+
1321
+ #: admin/pages/performance.php:108
1322
+ msgid ""
1323
+ "The WordPress REST API provides API endpoints for WordPress data types that "
1324
+ "allow developers to interact with sites remotely by sending and receiving "
1325
+ "JSON (JavaScript Object Notation) objects. However, a lot of sites don’t use "
1326
+ "this, and therefore in most cases, it is just unnecessary code."
1327
+ msgstr ""
1328
+ "WordPress REST API предоставляет API для работы с WordPress данными, это "
1329
+ "позволяет разработчикам взаимодействовать с сайтами удаленно, посредством "
1330
+ "отправки и получения данных в формате JSON (JavaScript Object Notation). "
1331
+ "Однако многие сайты не используют это, и поэтому в большинстве случаев, это "
1332
+ "только ненужный код."
1333
+
1334
+ #: admin/pages/performance.php:108
1335
+ msgid ""
1336
+ "Removes REST API link tag from the front end and the REST API header link "
1337
+ "from page requests."
1338
+ msgstr "Отключает REST API и удаляет все ссылки из исходного кода страницы."
1339
+
1340
+ #: admin/pages/performance.php:118
1341
+ msgid ""
1342
+ "Emojis are fun and all, but if you are aren’t using them they actually load "
1343
+ "a JavaScript file (wp-emoji-release.min.js) on every page of your website. "
1344
+ "For a lot of businesses, this is not needed and simply adds load time to "
1345
+ "your site. So we recommend disabling this."
1346
+ msgstr ""
1347
+ "Emojis это смайлы (эмоции), если вы не используете их на своем сайте, в "
1348
+ "исходном коде страницы будет загружаться JavaScript файл (wp-emoji-release."
1349
+ "min.js), на каждой странице вашего веб-сайта. Для многих сайтов это не "
1350
+ "требуется и просто увеличивает время загрузки страницы. Поэтому мы "
1351
+ "рекомендуем отключить это."
1352
+
1353
+ #: admin/pages/performance.php:118
1354
+ msgid "Removes WordPress Emojis JavaScript file (wp-emoji-release.min.js)."
1355
+ msgstr "Удаляет код Emojis из исходного кода страницы"
1356
+
1357
+ #: admin/pages/performance.php:128
1358
+ msgid ""
1359
+ "They started adding jQuery migrate in WordPress 3.6. Most up-to-date "
1360
+ "frontend code and plugins don’t require jquery-migrate.min.js. In most "
1361
+ "cases, this simply adds unnecessary load to your site. You can see this "
1362
+ "running if you launch Chrome Devtools console."
1363
+ msgstr ""
1364
+ "jQuery миграция появилась в WordPress 3.6. Большинство современных веб-"
1365
+ "интерфейсов и плагинов не требуют jquery-migrate.min.js. В большинстве "
1366
+ "случаев это просто ненужная нагрузка на ваш сайт. "
1367
+
1368
+ #: admin/pages/performance.php:128
1369
+ msgid "Removes jQuery Migrate JavaScript file (jquery-migrate.min.js)."
1370
+ msgstr "Удаляет подключаемый файл (jquery-migrate.min.js)."
1371
+
1372
+ #: admin/pages/performance.php:128
1373
+ msgid "Warning! If there is a broke on your site, disable this option!"
1374
+ msgstr ""
1375
+ "Предупреждение! Если у вас появились проблемы в работе сайта или плагинов, "
1376
+ "отключите эту опцию!"
1377
+
1378
+ #: admin/pages/performance.php:138
1379
+ msgid ""
1380
+ "Embeds were released with WordPress 4.4. This is basically the magic that "
1381
+ "auto converts your YouTube videos, Tweets, and URLs into pretty previews "
1382
+ "while you are editing. However, this actually loads a JavaScript file (wp-"
1383
+ "embed.min.js) on every page of your website. If you don’t care about the "
1384
+ "auto converting preview (which we don’t), you can disable this across your "
1385
+ "site."
1386
+ msgstr ""
1387
+ "Встраиваемые объекты были добавлены в WordPress 4.4. Эта функция "
1388
+ "автоматически преобразуют YouTube, Tweets, и URL-адреса в объекты для "
1389
+ "удобного просмотра (плеер, картинки и т.д.). Для того, чтобы объекты "
1390
+ "автоматически преобразовывались на вашем сайте, на каждой странице "
1391
+ "подключается код JavaScript (wp-embed.min.js). Если вы не используете "
1392
+ "функции автоматического преобразования встраиваемых объектов, то можете "
1393
+ "отключить эту функцию."
1394
+
1395
+ #: admin/pages/performance.php:138
1396
+ msgid "Removes WordPress Embed JavaScript file (wp-embed.min.js)"
1397
+ msgstr ""
1398
+ "Удаляет JavaScript код отвечающий за встраиваемые объекты (wp-embed.min.js)"
1399
+
1400
+ #: admin/pages/performance.php:157
1401
+ msgid ""
1402
+ "The above link is used by blog clients. If you edit your site from your "
1403
+ "browser then you don’t need this. It is also used by some 3rd party "
1404
+ "applications that utilize XML-RPC requests. In most cases, this is just "
1405
+ "unnecessary code."
1406
+ msgstr ""
1407
+ "Эта ссылка используется клиентами блога. Если вы редактируете сайт из вашего "
1408
+ "браузера, то вам не нужно это. Она также используется в некоторых "
1409
+ "приложениях, которые используют XML-RPC-запросы. В большинстве случаев это "
1410
+ "только ненужный код."
1411
+
1412
+ #: admin/pages/performance.php:157
1413
+ msgid "Remove RSD (Real Simple Discovery) link tag."
1414
+ msgstr "Удаляет RSD link тег"
1415
+
1416
+ #: admin/pages/performance.php:166
1417
+ msgid ""
1418
+ "The profile attribute specifies the metadata profile address. Usually, the "
1419
+ "browser recognizes the value of this attribute and executes some conventions "
1420
+ "related to the specified profile. Loading the document itself at the "
1421
+ "specified address does not really happen, moreover, it may not exist at "
1422
+ "all.\n"
1423
+ "In particular, the profile is used for the XFN microformat (XHTML Friends "
1424
+ "Network) - a way of representing relationships between people using links "
1425
+ "and rel attributes with different values. WordPress also actively uses "
1426
+ "profile in its templates.\n"
1427
+ msgstr ""
1428
+ "Атрибут profile указывает адрес профиля метаданных. Обычно браузер "
1429
+ "распознаёт значение этого атрибута и выполняет некоторые соглашения, "
1430
+ "связанные с указанным профилем. Загрузки самого документа по указанному "
1431
+ "адресу в реальности не происходит, более того, его может вообще не "
1432
+ "существовать.\n"
1433
+ "В частности, profile используется для микроформата XFN (XHTML Friends "
1434
+ "Network) — это способ представления отношений между людьми с помощью ссылок "
1435
+ "и атрибутов rel с разными значениями. WordPress также активно применяет "
1436
+ "profile в своих шаблонах.\n"
1437
+
1438
+ #: admin/pages/performance.php:168
1439
+ msgid "Remove link tag"
1440
+ msgstr "Удалить тег ссылки"
1441
+
1442
+ #: admin/pages/performance.php:178
1443
+ msgid ""
1444
+ "This link is actually used by Windows Live Writer. If you don’t know use "
1445
+ "Windows Live Writer, which we are guessing you don’t, this is just "
1446
+ "unnecessary code."
1447
+ msgstr ""
1448
+ "Эта ссылка используется фактически Windows Live Writer. Если вы не знаете, "
1449
+ "как использовать Windows Live Writer, то это только ненужный код."
1450
+
1451
+ #: admin/pages/performance.php:178
1452
+ msgid "Remove wlwmanifest (Windows Live Writer) link tag."
1453
+ msgstr "Удаляет тег link wlwmanifest (Windows Live Writer)."
1454
 
1455
+ #: admin/pages/performance.php:188
1456
  #, php-format
1457
+ msgid ""
1458
+ "By default, the following tag shows up in every WordPress install. %s This "
1459
+ "is used for a shortlink to your pages and posts. However, if you are already "
1460
+ "using pretty permalinks, such as domain.com/post, then there is no reason to "
1461
+ "keep this, it is just unnecessary code."
1462
+ msgstr ""
1463
+ "По умолчанию следующий тег печатается на каждой странице ваших записей и "
1464
+ "страниц. %s Это используется, как короткая ссылка на вашу статью. Если вы "
1465
+ "используете постоянные ссылки, то это не нужный код."
1466
+
1467
+ #: admin/pages/performance.php:188
1468
+ msgid "Remove Shortlink link tag."
1469
+ msgstr "Удаляет тег link shortlink."
1470
+
1471
+ #: admin/pages/performance.php:198
1472
+ msgid ""
1473
+ "If you use Wordpress as a CMS, then you can delete these links, they can "
1474
+ "only come in handy for a blog."
1475
+ msgstr ""
1476
+ "Если вы используете Wordpress как CMS (а не блог), то вы можете удалить эти "
1477
+ "ссылки, но для блога они могут быть полезны."
1478
+
1479
+ #: admin/pages/performance.php:198
1480
+ msgid ""
1481
+ "Remove the previous and next post links within the wp_head of your wordpress "
1482
+ "theme."
1483
+ msgstr ""
1484
+ "Удаляет ссылки предидущая и следующая запись в head вашей темы wordpress."
1485
+
1486
+ #: admin/pages/performance.php:208
1487
+ msgid ""
1488
+ "WP by default for the widget \"recent comments\" prescribes in the code "
1489
+ "styles that are almost impossible to change, because to them apply! "
1490
+ "important."
1491
+ msgstr ""
1492
+ "Wordpress по умолчанию для виджета \"Последние комментари\" прописывает в "
1493
+ "стилях код, которые почти невозможно изменить, потому что к ним применяются "
1494
+ "значение !important."
1495
+
1496
+ #: admin/pages/performance.php:208
1497
+ msgid "Removes .recentcomments styles from head section."
1498
+ msgstr "Удаляет .recentcomments стили из head секции."
1499
 
1500
+ #: admin/pages/performance.php:218
1501
+ msgid ""
1502
+ "By default, WordPress loads Font Awesome icons synchronously, that is, your "
1503
+ "page will not be fully loaded until Font Awesome icons are loaded. This "
1504
+ "algorithm slows down the loading of your page and leads to errors when "
1505
+ "checking the site in Google Page Speed. Using this option, your Font Awesome "
1506
+ "icons will be loaded after your page is fully loaded. This method has a "
1507
+ "negative — you and visitors of your site will see changes while loading a "
1508
+ "page, from the placeholders to icons."
1509
+ msgstr ""
1510
+ "По умолчанию WordPress загружает иконки Font Awesome синхронно, то есть, "
1511
+ "ваша страница не будет полностью загружена, пока не будут загружены иконки "
1512
+ "Font Awesome. Такой алгоритм работы замедляет загрузку вашей страницы и "
1513
+ "приводит к появлению ошибок при проверке сайта в Google Page Speed. "
1514
+ "Используя эту опцию, ваши иконки Font Awesome, будут загружаться после "
1515
+ "полной загрузки вашей страницы. У этого метода есть и минус — вы и "
1516
+ "посетители сайта будете видеть изменения в процессе загрузки страницы с "
1517
+ "«кракозябр» вместо иконок на иконки."
1518
+
1519
+ #: admin/pages/performance.php:228
1520
+ msgid ""
1521
+ "Dashicons is the official icon font of the WordPress admin as of 3.8. Some "
1522
+ "of you have requested that we add a feature to remove Dashicons. Some themes "
1523
+ "and developers utilize this (dashicons.min.css) on the front-end of their "
1524
+ "sites."
1525
+ msgstr ""
1526
+ "Dashicons является официальным шрифтом в панели администратора WordPress от "
1527
+ "3,8. Некоторые пользователи попросили добавить функцию удаления Dashicons, "
1528
+ "так как некоторые разработчики не используют (dashicons.min.css) на "
1529
+ "фронтенде своих сайтов. Опция отключает иконки только для фронтенда!"
1530
+
1531
+ #: admin/pages/performance.php:238
1532
+ msgid ""
1533
+ "This function that prevents the user’s gravatar being automatically obtained "
1534
+ "from gravatar.com based on their registered email. This would be useful for "
1535
+ "sites where users require an extra layer of privacy, or if you just want to "
1536
+ "prevent potentially silly or embarrasing avatar accidents.\n"
1537
+ "\t\t\tIf you’re using Identicons or any other generated default avatar, the "
1538
+ "user should keep a consistent avatar unless they change their registered "
1539
+ "email.\n"
1540
+ "\t\t\t"
1541
+ msgstr ""
1542
+ "Эта функция, которая предотвращает автоматическое получение пользователем "
1543
+ "граваторов от gravatar.com на основе зарегистрированного email адреса. Это "
1544
+ "было бы полезно для сайтов, где пользователям нужен дополнительный уровень "
1545
+ "конфиденциальности, или если вы просто хотите предотвратить потенциально "
1546
+ "глупые или неловкие аватары."
1547
+
1548
+ #: admin/pages/performance.php:250 admin/pages/performance.php:261
1549
  msgid ""
1550
  "To make it more difficult for others to hack your website you can remove the "
1551
  "WordPress version number from your site, your css and js. Without that "
1558
  "того, это может улучшить скорость загрузки вашего сайта, потому что без "
1559
  "строки запроса в URL-адрес css и js файлов могут быть кэшированы."
1560
 
1561
+ #: admin/pages/performance.php:251
1562
  msgid ""
1563
  "Removes the wordpress version number from stylesheets (not logged in user "
1564
  "only)."
1565
  msgstr "Удаляет номер версии из файлов стилей стилей (только для фронтенда)."
1566
 
1567
+ #: admin/pages/performance.php:262
1568
  msgid ""
1569
  "Removes wordpress version number from scripts (not logged in user only)."
1570
  msgstr "Удаляет номер версии из javascript файлов (только для фронтенда)."
1571
 
1572
+ #: admin/pages/performance.php:272
1573
  msgid ""
1574
  "Enter Stylesheet/Script file names to exclude from version removal (each "
1575
  "exclude file starts with a new line)"
1578
  "которых, будет удалена версия (каждое исключение, должно быть с новой "
1579
  "строки)."
1580
 
1581
+ #: admin/pages/performance.php:272
1582
  msgid "Example"
1583
  msgstr "Например"
1584
 
1585
+ #: admin/pages/quick-start.php:62
1586
  msgid "Clearfy menu"
1587
  msgstr "Clearfy меню"
1588
 
1589
+ #: admin/pages/quick-start.php:71
1590
  msgid "Quick start"
1591
  msgstr "Быстрый старт"
1592
 
1593
+ #: admin/pages/quick-start.php:105
1594
  msgid ""
1595
  "On this page you can quickly configure the plug-in without going into "
1596
  "details."
1598
  "На этой странице вы можете быстро настроить плагин, не вдаваясь в "
1599
  "подробности."
1600
 
1601
+ #: admin/pages/quick-start.php:184
1602
  msgid "Set the recommened for me"
1603
  msgstr "Установить рекомендуемые для меня"
1604
 
1605
+ #: admin/pages/quick-start.php:187
1606
  msgid "One click code clearing"
1607
  msgstr "Очистка кода в один клик"
1608
 
1609
+ #: admin/pages/quick-start.php:188
1610
  msgid "One click security"
1611
  msgstr "Улучшить безопасность в один клик"
1612
 
1613
+ #: admin/pages/quick-start.php:190
1614
  msgid "One click seo optimization"
1615
  msgstr "Оптимизировать SEO в один клик"
1616
 
1617
+ #: admin/pages/quick-start.php:194
1618
  msgid "One click remove default Widgets"
1619
  msgstr "Удалить виджеты по умолчанию в один клик"
1620
 
1621
+ #: admin/pages/quick-start.php:203
1622
  msgid "Reset all settings"
1623
  msgstr "Сбросить все настройки"
1624
 
1625
+ #: admin/pages/quick-start.php:207
1626
  msgid "Are you sure you want to enable the this options?"
1627
  msgstr "Вы действительно хотите включить эти настройки?"
1628
 
1629
+ #: admin/pages/quick-start.php:210 admin/pages/quick-start.php:250
1630
  msgid ""
1631
  "After confirmation, all the settings of the plug-in will return to the "
1632
  "default state. Make backup settings by copying data from the export field."
1635
  "умолчанию. Сделайте резервную копию настроек, скопировав данные из поля "
1636
  "экспорта."
1637
 
1638
+ #: admin/pages/quick-start.php:214
1639
  msgid "Confirm"
1640
  msgstr "Подтвердить"
1641
 
1642
+ #: admin/pages/quick-start.php:215
1643
  msgid "Cancel"
1644
  msgstr "Отмена"
1645
 
1646
+ #: admin/pages/quick-start.php:221
1647
  msgid ""
1648
  "These are quick optimization options for your website. You can activate the "
1649
  "groups of necessary settings in one click. With the fast optimization mode, "
1659
  "индивидуально. Настройки с серым и красным знаком вопроса не будут "
1660
  "активированы, пока вы сами не примите решение об их включении."
1661
 
1662
+ #: admin/pages/quick-start.php:222
1663
  msgid "Select what you need to do"
1664
  msgstr "Выберите, что вам нужно сделать"
1665
 
1666
+ #: admin/pages/quick-start.php:224
1667
  msgid ""
1668
  "After selecting any optimization case, the plugin will automatically enable "
1669
  "the necessary settings in safe mode and one click."
1671
  "После выбора варианта оптимизации, плагин автоматически включит необходимые "
1672
  "и безопасные настройки в один клик."
1673
 
1674
+ #: admin/pages/quick-start.php:249
1675
  msgid "Reset settings"
1676
  msgstr "Сбросить настройки"
1677
 
1678
+ #: admin/pages/quick-start.php:262
1679
  msgid "Reset"
1680
  msgstr "Сбросить"
1681
 
1682
+ #: admin/pages/quick-start.php:264
1683
  msgid "Do It!"
1684
  msgstr "Сделать!"
1685
 
1686
+ #: admin/pages/quick-start.php:278
1687
  msgid "Settings successfully updated!"
1688
  msgstr "Настройки успешно обновлены!"
1689
 
1690
+ #: admin/pages/quick-start.php:281
1691
  msgid ""
1692
  "During the setup, an unknown error occurred, please try again or contact the "
1693
  "plug-in support."
1695
  "Во время установки произошла неизвестная ошибка, повторите попытку или "
1696
  "обратитесь в службу поддержки плагинов."
1697
 
1698
+ #: admin/pages/quick-start.php:288
1699
  msgid "Import/Export settings"
1700
  msgstr "Импорт/Экспорт настроек"
1701
 
1702
+ #: admin/pages/quick-start.php:291
1703
  msgid "Import options"
1704
  msgstr "Импортировать настройки"
1705
 
1706
+ #: admin/pages/quick-start.php:297
1707
  msgid "Support"
1708
  msgstr "Поддержка"
1709
 
1710
+ #: admin/pages/quick-start.php:299
1711
  msgid ""
1712
  "If you faced with any issues, please follow the steps below to get quickly "
1713
  "quality support:"
1715
  "Если вы столкнулись с какими-либо проблемами, выполните следующие действия, "
1716
  "чтобы быстро получить качественную поддержку:"
1717
 
1718
+ #: admin/pages/quick-start.php:302
1719
  msgid ""
1720
  "Generate a debug report which will contains inforamtion about your "
1721
  "configuratin and installed plugins"
1723
  "Создайте отчет об ошибках, который будет содержать информацию о вашей "
1724
  "конфигурации и установленных плагинах."
1725
 
1726
+ #: admin/pages/quick-start.php:305
1727
  msgid "Generate Debug Report"
1728
  msgstr "Сгенерировать отчет об ошибках"
1729
 
1730
+ #: admin/pages/quick-start.php:309
1731
  msgid ""
1732
  "Send a message to <b>wordpress.webraftic@gmail.com</b> include the debug "
1733
  "report into the message body."
1735
  "Отправьте ваше сообщение на <b>wordpress.webraftic@gmail.com</b>, к "
1736
  "сообщению прикрепите отчет об ошибках"
1737
 
1738
+ #: admin/pages/quick-start.php:312
1739
  msgid "We guarantee to respond you within 7 business day."
1740
  msgstr "Мы гарантируем ответ на ваш вопрос в течении 7 дней."
1741
 
1742
+ #: admin/pages/seo-double-pages.php:37
1743
+ msgid "Duplicate pages"
1744
+ msgstr "Дубли страниц"
1745
+
1746
+ #: admin/pages/seo-double-pages.php:86
1747
+ msgid "<strong>Delete duplicate pages.</strong>."
1748
+ msgstr "<strong>Удалите дубли страниц</strong>."
1749
+
1750
+ #: admin/pages/seo-double-pages.php:86
1751
+ msgid ""
1752
+ "Search engines perceive these pages as website separate pages, therefore "
1753
+ "their content ceases to be unique because of duplication. In addition, page "
1754
+ "reference weight is reduced if it has a duplicate. A small number of "
1755
+ "duplicated pages will not be a serious problem, but if there are more than "
1756
+ "50 percents of them - you urgently need to correct the situation."
1757
+ msgstr ""
1758
+ "Поисковые системы воспринимают эти страницы, как отдельные страницы сайта, "
1759
+ "поэтому их наполнение из-за дублирования информации перестает быть "
1760
+ "уникальным. Кроме того, понижается ссылочный вес страницы, если она имеет "
1761
+ "дубль. Небольшое количество дублированных страниц не станет серьёзной "
1762
+ "проблемой, однако если их более 50 процентов - вам срочно нужно исправлять "
1763
+ "ситуацию."
1764
+
1765
+ #: admin/pages/seo-double-pages.php:95
1766
+ #, php-format
1767
+ msgid ""
1768
+ "Many duplicates in date archives. Imagine, in addition, that your article "
1769
+ "will be displayed in the main and in the category, you will still receive at "
1770
+ "least 3 duplicates: in archives by year, month and date, for example %s."
1771
+ msgstr ""
1772
+ "Огромное количество дублей в архивах дат. Представьте, кроме того, что Ваша "
1773
+ "статья будет выводиться на главной и в категории, Вы еще получите как "
1774
+ "минимум 3 дубля: в архивах по году, месяцу и дате, например %s."
1775
+
1776
+ #: admin/pages/seo-double-pages.php:95
1777
+ msgid "Removes all pages with the date archives and puts a redirect."
1778
+ msgstr "Удаляет полностью архивы дат и ставит редирект."
1779
+
1780
+ #: admin/pages/seo-double-pages.php:105
1781
+ #, php-format
1782
+ msgid ""
1783
+ "If the site is only filled by you - a mandatory item. Allows you to get rid "
1784
+ "of duplicates on user archives, for example %s."
1785
+ msgstr ""
1786
+ "Если сайт заполняете только вы - это функция обязательна. Позволяет вам "
1787
+ "избавиться от дубликатов страниц автора, например %s."
1788
+
1789
+ #: admin/pages/seo-double-pages.php:105
1790
+ msgid "Removes all pages with the author archives and puts a redirect."
1791
+ msgstr "Удаляет все страницы из архивов автора и ставит перенаправление."
1792
+
1793
+ #: admin/pages/seo-double-pages.php:115
1794
+ msgid ""
1795
+ "If you use tags only for the block Similar records, or do not use them at "
1796
+ "all - it will be more correct to close them to avoid duplicates."
1797
+ msgstr ""
1798
+ "Если вы используете теги только для виджета \"Похожие записи\", либо не "
1799
+ "используете их совсем - правильнее будет их закрыть, чтобы избежать дублей."
1800
+
1801
+ #: admin/pages/seo-double-pages.php:115
1802
+ msgid "Removes all pages with the tag archives and puts a redirect."
1803
+ msgstr "Ставит редирект со страниц тегов на главную."
1804
+
1805
+ #: admin/pages/seo-double-pages.php:125
1806
+ msgid ""
1807
+ "Every of the pictures has its own page on the site. Such pages are "
1808
+ "successfully indexed and create duplicates. The site can have thousands of "
1809
+ "same-type attachment pages."
1810
+ msgstr ""
1811
+ "Каждая загруженная картинка имеет свою страничку на сайте, состоящую только "
1812
+ "из одной картинки. Такие страницы успешно индексируются и создают дубли. На "
1813
+ "сайте могут быть тысячи однотипных страниц вложений."
1814
+
1815
+ #: admin/pages/seo-double-pages.php:125
1816
+ msgid "Removes attachment pages and puts a redirect."
1817
+ msgstr "Удаляет страницы вложений и ставит редирект на запись."
1818
+
1819
+ #: admin/pages/seo-double-pages.php:135
1820
+ #, php-format
1821
+ msgid ""
1822
+ "In WordPress, any post can be divided into parts (pages), each part will "
1823
+ "have its own address. But this functionality is rarely used, but it can "
1824
+ "create trouble for you. For example, you can add a number to the address of "
1825
+ "any entry of your blog, %s - the post itself will open, which will be a "
1826
+ "duplicate. You can substitute any number."
1827
+ msgstr ""
1828
+ "В WordPress любое содержание можно разделить на части (страницы), каждая "
1829
+ "часть будет иметь свой собственный адрес. Эта функциональность используется "
1830
+ "редко, но это может создать проблемы для вас. Например вы можете добавить "
1831
+ "номер в адрес любой записи вашего блога, %s - откроет текущую страницу, "
1832
+ "которая будет дублироваться."
1833
+
1834
+ #: admin/pages/seo-double-pages.php:135
1835
+ #, php-format
1836
+ msgid "Removes the pagination from the post and puts a redirect. Example: %s"
1837
+ msgstr ""
1838
+ "Удаление постраничную навигацию из записи и устанавливет перенаправление. "
1839
+ "Пример: %s"
1840
+
1841
+ #: admin/pages/seo-double-pages.php:145
1842
+ #, php-format
1843
+ msgid ""
1844
+ "WordPress adds %s to the link \"Reply\" in the comments, if you use "
1845
+ "hierarchical comments."
1846
+ msgstr ""
1847
+ "WordPress добавляет %s к ссылке «Ответ» в комментариях, если вы используете "
1848
+ "иерархические комментарии."
1849
+
1850
+ #: admin/pages/seo-double-pages.php:145
1851
+ msgid "?relpytocom remove and and puts a redirect."
1852
+ msgstr "Удаляет ?relpytocom и ставит перенаправление."
1853
+
1854
+ #: admin/pages/seo.php:35
1855
  msgid "SEO"
1856
  msgstr "SEO"
1857
 
1858
+ #: admin/pages/seo.php:69
1859
+ msgid "<strong>Basic SEO optimization settings</strong>."
1860
+ msgstr "<strong>Базовые настройки SEO оптимизации</strong>."
1861
+
1862
+ #: admin/pages/seo.php:69
1863
+ msgid "Recommended settings that can complement your SEO plugin."
1864
+ msgstr "Рекомендуемые настройки, которые могут дополнять ваш плагин SEO."
1865
+
1866
+ #: admin/pages/seo.php:78
1867
  msgid ""
1868
  "The alt attribute is mandatory, so most SEO experts say. If you missed or "
1869
  "did not fill it at all, it will be automatically assigned and will be equal "
1873
  "говорят. Если вы пропустили, или не заполнили его, он будет автоматически "
1874
  "задан из названия статьи."
1875
 
1876
+ #: admin/pages/seo.php:78
1877
  #, php-format
1878
  msgid "Replaces the %s, on attribute with an article name %s"
1879
  msgstr "Заменяет %s, на атрибут с названием статьи %s"
1880
 
1881
+ #: admin/pages/seo.php:88
1882
  msgid ""
1883
  "After installation, WP does not contain a robots.txt file and create it "
1884
  "manually. We re-read about 30 different articles, instructions from Yandex "
1888
  "перечитывали около 30 различных статей, инструкции от Yandex и Google, чтобы "
1889
  "создать идеальный файл robots.txt"
1890
 
1891
+ #: admin/pages/seo.php:88
1892
  msgid "Automatically creates the perfect robots.txt file"
1893
  msgstr "Автоматически создает идеальный robots.txt"
1894
 
1895
+ #: admin/pages/seo.php:108
1896
  msgid "Server headers and response"
1897
  msgstr "Заголовки серверов и ответ"
1898
 
1899
+ #: admin/pages/seo.php:108
1900
  msgid ""
1901
  "WordPress does not know how to give the Last Modified header in the server's "
1902
  "responses. You can do this using the settings below."
1904
  "WordPress не знает, как отдать заголовок Last Modified. Вы можете сделать "
1905
  "это с помощью параметров ниже."
1906
 
1907
+ #: admin/pages/seo.php:131
1908
  #, php-format
1909
  msgid ""
1910
  "You can specify a page mask, for example: %s or %s. All pages that contain "
1977
  "site only has a few pages or if the site uses a customised search platform "
1978
  "that only searches blog posts and not pages."
1979
  msgstr ""
1980
+ "Эта функция позволяет поисковым системам добавлять дополнительные ссылки и "
1981
+ "поле поиска в поисковый блок (сниппет) в поисковой выдаче. Для многих "
1982
+ "вебмастеров — это просто находка, но в то же время, многим эта функция не "
1983
+ "нужна. Особенно, если на сайте всего несколько страниц или есть собственный "
1984
+ "поиск, который ищет только записи блога, но не страницы."
1985
 
1986
  #: admin/pages/seo.php:182
1987
  msgid ""
1994
  "schema.org data from the popular Yoast SEO and Yoast SEO Premium plugins.\n"
1995
  "There is currently no UI to do so."
1996
  msgstr ""
1997
+ "Удаляет ссылку application/ld+json, содержащую структурированные данные "
1998
+ "schema.org о сайте и его владельце. Эту ссылку создают популярные плагины "
1999
+ "Yoast SEO и Yoast SEO Premium"
2000
 
2001
  #: admin/pages/seo.php:194
2002
  msgid "Disable Structured Data in plugin Yoast SEO."
2012
  msgid "Removes the Yoast SEO plugin comment of their section %s"
2013
  msgstr "Удаляет комментрии Yoast SEO из %s"
2014
 
2015
+ #: admin/pages/widgets.php:33
2016
  msgid "Widgets"
2017
  msgstr "Виджеты"
2018
 
2019
+ #: admin/pages/widgets.php:52
2020
+ msgid "<strong>Disable unused widgets</strong>."
2021
+ msgstr "<strong>Отключите неиспользуемые виджеты</strong>."
2022
+
2023
+ #: admin/pages/widgets.php:52
2024
+ msgid ""
2025
+ "Some widgets, such as the Calendar or Tag Cloud, create an extra query to "
2026
+ "the database, even if they are not displayed on the website. Of course, a "
2027
+ "couple of hits to the database will not do much harm to the whole site. "
2028
+ "However, if the resource contains a huge amount of content, and the speed of "
2029
+ "its work above all else, disabling unused functionality is the first step to "
2030
+ "optimizing and accelerating it."
2031
+ msgstr ""
2032
+ "Некоторые виджеты, например, Календарь или Облако меток, создают по лишнему "
2033
+ "запросу к базе данных, даже если не выводятся на сайте. Конечно, пару "
2034
+ "обращений к базе данных не принесут особого вреда целому сайту. Однако, если "
2035
+ "ресурс содержит огромное количество контента, и скорость его работы превыше "
2036
+ "всего, то отключение неиспользуемого функционала — первый шаг к его "
2037
+ "оптимизации и ускорению."
2038
+
2039
+ #: clearfy.php:62
2040
  msgid "Clearfy"
2041
  msgstr "Clearfy"
2042
 
2043
+ #: includes/classes/class.configurate-advanced.php:212
2044
  msgid "Howdy"
2045
  msgstr "Привет"
2046
 
2047
+ #: includes/classes/class.configurate-advanced.php:212
2048
  msgid "Welcome"
2049
  msgstr "Добро пожаловать"
2050
 
2051
+ #: includes/classes/class.configurate-google-performance.php:398
2052
+ msgid "Once Weekly"
2053
+ msgstr "Один раз в неделю"
2054
+
2055
+ #: includes/classes/class.configurate-google-performance.php:403
2056
+ msgid "Twice Monthly"
2057
+ msgstr "Дважды в месяц"
2058
+
2059
+ #: includes/classes/class.configurate-google-performance.php:408
2060
+ msgid "Once Monthly"
2061
+ msgstr "Один раз в месяц"
2062
+
2063
+ #: includes/classes/class.configurate-security.php:279
2064
  msgid "<strong>ERROR</strong>: Wrong login or password"
2065
  msgstr "<strong>Ошибка</strong>: Неправильный логин или пароль"
2066
 
2067
+ #: includes/classes/class.zip-archive.php:15
2068
  msgid "The ZipArchive class does not exist in this version of php."
2069
  msgstr "Класса ZipArchive не существует в этой версии php."
2070
 
2071
+ #~ msgid ""
2072
+ #~ "Search engines perceive these pages as website separate pages, therefore "
2073
+ #~ "their content ceases to be unique because of duplication. In addition, "
2074
+ #~ "page reference weight is reduced if it has a duplicate. A small number of "
2075
+ #~ "duplicated pages will not be a serious problem, but if there are more "
2076
+ #~ "than 50% of them - you urgently need to correct the situation."
2077
+ #~ msgstr ""
2078
+ #~ "Поисковые системы воспринимают эти страницы, как отдельные страницы "
2079
+ #~ "сайта, поэтому их наполнение из-за дублирования информации перестает быть "
2080
+ #~ "уникальным. Кроме того, понижается ссылочный вес страницы, если она имеет "
2081
+ #~ "дубль. Небольшое количество дублированных страниц не станет серьёзной "
2082
+ #~ "проблемой, однако если их более 50 процентов - вам срочно нужно "
2083
+ #~ "исправлять ситуацию."
2084
+
2085
+ #~ msgid "Welcome to Clearfy (1.1.9)"
2086
+ #~ msgstr "Вас приветствует Clearfy (1.1.9)"
2087
+
2088
+ #~ msgid ""
2089
+ #~ "We have moved the plugins menu to the general settings for your comfort. "
2090
+ #~ "There are new plugin features. Please go to the plugin page to learn more!"
2091
+ #~ msgstr ""
2092
+ #~ "Для вашего комфорта мы убрали меню плагина в общие настройки. У плагина "
2093
+ #~ "появились новые функции, пожалуйста, ознакомьтесь с ними на странице "
2094
+ #~ "плагина!"
2095
+
2096
+ #~ msgid "Remove the excess from Clearfy (1.1.9)"
2097
+ #~ msgstr "Удалите лишнее из Clearfy (1.1.9)"
2098
+
2099
+ #~ msgid ""
2100
+ #~ "We have divided plugin features into components. You can turn off unused "
2101
+ #~ "plugin functions."
2102
+ #~ msgstr ""
2103
+ #~ "Мы разделили функции плагина на компоненты, чтобы вы могли отключить не "
2104
+ #~ "нужные для вас функции."
2105
+
2106
+ #~ msgid "Remove dns-prefetch"
2107
+ #~ msgstr "Удалить dns-prefetch"
2108
+
2109
+ #~ msgid "Others"
2110
+ #~ msgstr "Другие"
2111
+
2112
+ #~ msgid "Other useful features."
2113
+ #~ msgstr "Другие полезные функции."
2114
+
2115
+ #~ msgid ""
2116
+ #~ "File names and some titles can have special characters, which can cause "
2117
+ #~ "problems when creating permalinks."
2118
+ #~ msgstr ""
2119
+ #~ "Имена файлов и некоторые заголовки могут иметь специальные символы, что "
2120
+ #~ "может вызвать проблемы при создании постоянных ссылок."
2121
+
2122
+ #~ msgid ""
2123
+ #~ "Removes symbols, spaces, latin and other languages characters from "
2124
+ #~ "uploaded files and gives them \"permalink\" structure (clean characters, "
2125
+ #~ "only lowercase and dahes)."
2126
+ #~ msgstr ""
2127
+ #~ "Удаляет символы, пробелы, латинские и другие языки из имен загружаемых "
2128
+ #~ "файлов и дает им структуру «permalink» (чистые символы, только строчные "
2129
+ #~ "буквы и тире)."
2130
+
2131
+ #~ msgid "Code cleaning"
2132
+ #~ msgstr "Очистка кода"
2133
+
2134
+ #~ msgid ""
2135
+ #~ "Since version 4.6.1 in WordPress there are new links in the section %s "
2136
+ #~ "this type of: "
2137
+ #~ msgstr ""
2138
+ #~ "Начиная с версии 4.6.1 в WordPress появляются новые ссылки в секции %s "
2139
+ #~ "пример:"
2140
+
2141
+ #~ msgid "Removes dns-prefetch links from the %s section"
2142
+ #~ msgstr "Удаляет тег link dns-prefetch из секции %s"
2143
+
2144
+ #~ msgid "Privacy Settings"
2145
+ #~ msgstr "Настройки приватности"
2146
+
2147
+ #~ msgid ""
2148
+ #~ "We have moved the plugin's menu to the general settings for your comfort. "
2149
+ #~ "There are new plugin features. Please go to the plugin page to learn more!"
2150
+ #~ msgstr ""
2151
+ #~ "Для вашего комфорта мы убрали меню плагина в общие настройки. У плагина "
2152
+ #~ "появились новые функции, пожалуйста, ознакомьтесь с ними на странице "
2153
+ #~ "плагина!"
2154
+
2155
  #~ msgid ""
2156
  #~ "This is the “One click optimization” solution. Use it if you do not want "
2157
  #~ "to understand the settings or do not understand what settings you need to "
2224
  #~ msgid "Remove default Widgets"
2225
  #~ msgstr "Удалить виджеты по умолчанию"
2226
 
 
 
 
 
 
 
2227
  #~ msgid ""
2228
  #~ "If your site uses an SSL certificate, check this box to enable "
2229
  #~ "redirection from http to https."
languages/index.php ADDED
File without changes
libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ .factory-bootstrap-400 .factory-accordion{margin:0 0 30px;border-top:1px solid #DDD;border-right:1px solid #DDD;border-left:1px solid #DDD;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.factory-bootstrap-400 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-400 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-400 .factory-accordion-item{display:none}.factory-bootstrap-400 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-400 .factory-accordion>h3.active:hover{cursor:default}
libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ .factory-bootstrap-400 .btn-primary{background:#e1a948;border-color:#d39323;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-400 .btn-primary:focus,.factory-bootstrap-400 .btn-primary:hover{background:#db9825;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8be74,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8be74,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-400 .btn-primary:active{background:#db9825;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-400 .btn-primary:disabled,.factory-bootstrap-400 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-400 .btn-group .btn.active.value{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.factory-bootstrap-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ .factory-bootstrap-400 .btn-primary{background:#c7a589;border-color:#b78a66;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-400 .btn-primary:focus,.factory-bootstrap-400 .btn-primary:hover{background:#ba906d;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 1px 0 #d7bfac,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #d7bfac,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-400 .btn-primary:active{background:#ba906d;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-400 .btn-primary:disabled,.factory-bootstrap-400 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-400 .btn-group .btn.active.value{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.factory-bootstrap-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ .factory-bootstrap-400 article,.factory-bootstrap-400 aside,.factory-bootstrap-400 details,.factory-bootstrap-400 figcaption,.factory-bootstrap-400 figure,.factory-bootstrap-400 footer,.factory-bootstrap-400 header,.factory-bootstrap-400 hgroup,.factory-bootstrap-400 main,.factory-bootstrap-400 nav,.factory-bootstrap-400 section,.factory-bootstrap-400 summary{display:block}.factory-bootstrap-400 audio,.factory-bootstrap-400 canvas,.factory-bootstrap-400 video{display:inline-block}.factory-bootstrap-400 audio:not([controls]){display:none;height:0}.factory-bootstrap-400 [hidden],.factory-bootstrap-400 template{display:none}.factory-bootstrap-400 body{margin:0}.factory-bootstrap-400 a{background:0 0}.factory-bootstrap-400 a:focus{outline:thin dotted}.factory-bootstrap-400 a:active,.factory-bootstrap-400 a:hover{outline:0}.factory-bootstrap-400 h1{margin:.67em 0}.factory-bootstrap-400 b,.factory-bootstrap-400 strong{font-weight:700}.factory-bootstrap-400 dfn{font-style:italic}.factory-bootstrap-400 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-400 mark{color:#000;background:#ff0}.factory-bootstrap-400 code,.factory-bootstrap-400 kbd,.factory-bootstrap-400 pre,.factory-bootstrap-400 samp{font-size:1em}.factory-bootstrap-400 pre{white-space:pre-wrap}.factory-bootstrap-400 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-400 sub,.factory-bootstrap-400 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-400 sup{top:-.5em}.factory-bootstrap-400 sub{bottom:-.25em}.factory-bootstrap-400 img{border:0}.factory-bootstrap-400 svg:not(:root){overflow:hidden}.factory-bootstrap-400 figure{margin:0}.factory-bootstrap-400 button,.factory-bootstrap-400 input,.factory-bootstrap-400 select,.factory-bootstrap-400 textarea{margin:0}.factory-bootstrap-400 button,.factory-bootstrap-400 select{text-transform:none}.factory-bootstrap-400 select{padding-right:4px!important}.factory-bootstrap-400 button,.factory-bootstrap-400 input[type=reset],.factory-bootstrap-400 input[type=submit],html .factory-bootstrap-400 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-400 button[disabled],html .factory-bootstrap-400 input[disabled]{cursor:default}.factory-bootstrap-400 input[type=checkbox],.factory-bootstrap-400 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-400 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-400 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-400 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-400 button::-moz-focus-inner,.factory-bootstrap-400 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-400 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-400 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-400 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-400 a,.factory-bootstrap-400 a:visited{text-decoration:underline}.factory-bootstrap-400 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-400 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-400 a[href^="javascript:"]:after,.factory-bootstrap-400 a[href^="#"]:after{content:""}.factory-bootstrap-400 blockquote,.factory-bootstrap-400 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-400 thead{display:table-header-group}.factory-bootstrap-400 img,.factory-bootstrap-400 tr{page-break-inside:avoid}.factory-bootstrap-400 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-400 h2,.factory-bootstrap-400 h3,.factory-bootstrap-400 p{orphans:3;widows:3}.factory-bootstrap-400 h2,.factory-bootstrap-400 h3{page-break-after:avoid}.factory-bootstrap-400 select{background:#fff!important}.factory-bootstrap-400 .navbar{display:none}.factory-bootstrap-400 .table td,.factory-bootstrap-400 .table th{background-color:#fff!important}.factory-bootstrap-400 .btn>.caret,.factory-bootstrap-400 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-400 .label{border:1px solid #000}.factory-bootstrap-400 .table{border-collapse:collapse!important}.factory-bootstrap-400 .table-bordered td,.factory-bootstrap-400 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-400 *,.factory-bootstrap-400 :after,.factory-bootstrap-400 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-400{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-400 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-400 button,.factory-bootstrap-400 input,.factory-bootstrap-400 select,.factory-bootstrap-400 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-400 img{vertical-align:middle}.factory-bootstrap-400 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-400 .img-rounded{border-radius:6px}.factory-bootstrap-400 .img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-400 .img-circle{border-radius:50%}.factory-bootstrap-400 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-400 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-400 .h1,.factory-bootstrap-400 .h2,.factory-bootstrap-400 .h3,.factory-bootstrap-400 .h4,.factory-bootstrap-400 .h5,.factory-bootstrap-400 .h6,.factory-bootstrap-400 h1,.factory-bootstrap-400 h2,.factory-bootstrap-400 h3,.factory-bootstrap-400 h4,.factory-bootstrap-400 h5,.factory-bootstrap-400 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-400 .h1 .small,.factory-bootstrap-400 .h1 small,.factory-bootstrap-400 .h2 .small,.factory-bootstrap-400 .h2 small,.factory-bootstrap-400 .h3 .small,.factory-bootstrap-400 .h3 small,.factory-bootstrap-400 .h4 .small,.factory-bootstrap-400 .h4 small,.factory-bootstrap-400 .h5 .small,.factory-bootstrap-400 .h5 small,.factory-bootstrap-400 .h6 .small,.factory-bootstrap-400 .h6 small,.factory-bootstrap-400 h1 .small,.factory-bootstrap-400 h1 small,.factory-bootstrap-400 h2 .small,.factory-bootstrap-400 h2 small,.factory-bootstrap-400 h3 .small,.factory-bootstrap-400 h3 small,.factory-bootstrap-400 h4 .small,.factory-bootstrap-400 h4 small,.factory-bootstrap-400 h5 .small,.factory-bootstrap-400 h5 small,.factory-bootstrap-400 h6 .small,.factory-bootstrap-400 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-400 h1,.factory-bootstrap-400 h2,.factory-bootstrap-400 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-400 h1 .small,.factory-bootstrap-400 h1 small,.factory-bootstrap-400 h2 .small,.factory-bootstrap-400 h2 small,.factory-bootstrap-400 h3 .small,.factory-bootstrap-400 h3 small{font-size:65%}.factory-bootstrap-400 h4,.factory-bootstrap-400 h5,.factory-bootstrap-400 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-400 h4 .small,.factory-bootstrap-400 h4 small,.factory-bootstrap-400 h5 .small,.factory-bootstrap-400 h5 small,.factory-bootstrap-400 h6 .small,.factory-bootstrap-400 h6 small{font-size:75%}.factory-bootstrap-400 .h1,.factory-bootstrap-400 h1{font-size:36px}.factory-bootstrap-400 .h2,.factory-bootstrap-400 h2{font-size:30px}.factory-bootstrap-400 .h3,.factory-bootstrap-400 h3{font-size:24px}.factory-bootstrap-400 .h4,.factory-bootstrap-400 h4{font-size:18px}.factory-bootstrap-400 .h5,.factory-bootstrap-400 h5{font-size:14px}.factory-bootstrap-400 .h6,.factory-bootstrap-400 h6{font-size:12px}.factory-bootstrap-400 p{margin:0 0 10px}.factory-bootstrap-400 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-400 .small,.factory-bootstrap-400 small{font-size:85%}.factory-bootstrap-400 cite{font-style:normal}.factory-bootstrap-400 .text-muted{color:#999}.factory-bootstrap-400 .text-primary{color:#428bca}.factory-bootstrap-400 .text-primary:hover{color:#3071a9}.factory-bootstrap-400 .text-warning{color:#8a6d3b}.factory-bootstrap-400 .text-warning:hover{color:#66512c}.factory-bootstrap-400 .text-danger{color:#a94442}.factory-bootstrap-400 .text-danger:hover{color:#843534}.factory-bootstrap-400 .text-success{color:#3c763d}.factory-bootstrap-400 .text-success:hover{color:#2b542c}.factory-bootstrap-400 .text-info{color:#31708f}.factory-bootstrap-400 .text-info:hover{color:#245269}.factory-bootstrap-400 .text-left{text-align:left}.factory-bootstrap-400 .text-right{text-align:right}.factory-bootstrap-400 .text-center{text-align:center}.factory-bootstrap-400 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-400 ol,.factory-bootstrap-400 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-400 ol ol,.factory-bootstrap-400 ol ul,.factory-bootstrap-400 ul ol,.factory-bootstrap-400 ul ul{margin-bottom:0}.factory-bootstrap-400 .list-inline,.factory-bootstrap-400 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-400 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-400 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-400 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-400 dd,.factory-bootstrap-400 dt{line-height:1.428571429}.factory-bootstrap-400 dt{font-weight:700}.factory-bootstrap-400 dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:after,.dl-horizontal dd:before{display:table;content:" "}.dl-horizontal dd:after{clear:both}}.factory-bootstrap-400 abbr[data-original-title],.factory-bootstrap-400 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-400 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-400 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-400 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-400 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-400 blockquote .small,.factory-bootstrap-400 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-400 blockquote .small:before,.factory-bootstrap-400 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-400 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-400 blockquote.pull-right .small,.factory-bootstrap-400 blockquote.pull-right p,.factory-bootstrap-400 blockquote.pull-right small{text-align:right}.factory-bootstrap-400 blockquote.pull-right .small:before,.factory-bootstrap-400 blockquote.pull-right small:before{content:''}.factory-bootstrap-400 blockquote.pull-right .small:after,.factory-bootstrap-400 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-400 blockquote:after,.factory-bootstrap-400 blockquote:before{content:""}.factory-bootstrap-400 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-400 code,.factory-bootstrap-400 kbd,.factory-bootstrap-400 pre,.factory-bootstrap-400 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-400 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-400 pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-400 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-400 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-400 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-400 .container:after,.factory-bootstrap-400 .container:before{display:table;content:" "}.factory-bootstrap-400 .container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.factory-bootstrap-400 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-400 .row:after,.factory-bootstrap-400 .row:before{display:table;content:" "}.factory-bootstrap-400 .row:after{clear:both}.factory-bootstrap-400 .col-lg-1,.factory-bootstrap-400 .col-lg-10,.factory-bootstrap-400 .col-lg-11,.factory-bootstrap-400 .col-lg-12,.factory-bootstrap-400 .col-lg-2,.factory-bootstrap-400 .col-lg-3,.factory-bootstrap-400 .col-lg-4,.factory-bootstrap-400 .col-lg-5,.factory-bootstrap-400 .col-lg-6,.factory-bootstrap-400 .col-lg-7,.factory-bootstrap-400 .col-lg-8,.factory-bootstrap-400 .col-lg-9,.factory-bootstrap-400 .col-md-1,.factory-bootstrap-400 .col-md-10,.factory-bootstrap-400 .col-md-11,.factory-bootstrap-400 .col-md-12,.factory-bootstrap-400 .col-md-2,.factory-bootstrap-400 .col-md-3,.factory-bootstrap-400 .col-md-4,.factory-bootstrap-400 .col-md-5,.factory-bootstrap-400 .col-md-6,.factory-bootstrap-400 .col-md-7,.factory-bootstrap-400 .col-md-8,.factory-bootstrap-400 .col-md-9,.factory-bootstrap-400 .col-sm-1,.factory-bootstrap-400 .col-sm-10,.factory-bootstrap-400 .col-sm-11,.factory-bootstrap-400 .col-sm-12,.factory-bootstrap-400 .col-sm-2,.factory-bootstrap-400 .col-sm-3,.factory-bootstrap-400 .col-sm-4,.factory-bootstrap-400 .col-sm-5,.factory-bootstrap-400 .col-sm-6,.factory-bootstrap-400 .col-sm-7,.factory-bootstrap-400 .col-sm-8,.factory-bootstrap-400 .col-sm-9,.factory-bootstrap-400 .col-xs-1,.factory-bootstrap-400 .col-xs-10,.factory-bootstrap-400 .col-xs-11,.factory-bootstrap-400 .col-xs-12,.factory-bootstrap-400 .col-xs-2,.factory-bootstrap-400 .col-xs-3,.factory-bootstrap-400 .col-xs-4,.factory-bootstrap-400 .col-xs-5,.factory-bootstrap-400 .col-xs-6,.factory-bootstrap-400 .col-xs-7,.factory-bootstrap-400 .col-xs-8,.factory-bootstrap-400 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-400 .col-xs-1,.factory-bootstrap-400 .col-xs-10,.factory-bootstrap-400 .col-xs-11,.factory-bootstrap-400 .col-xs-12,.factory-bootstrap-400 .col-xs-2,.factory-bootstrap-400 .col-xs-3,.factory-bootstrap-400 .col-xs-4,.factory-bootstrap-400 .col-xs-5,.factory-bootstrap-400 .col-xs-6,.factory-bootstrap-400 .col-xs-7,.factory-bootstrap-400 .col-xs-8,.factory-bootstrap-400 .col-xs-9{float:left}.factory-bootstrap-400 .col-xs-12{width:100%}.factory-bootstrap-400 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-400 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-400 .col-xs-9{width:75%}.factory-bootstrap-400 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-400 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-400 .col-xs-6{width:50%}.factory-bootstrap-400 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-400 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-400 .col-xs-3{width:25%}.factory-bootstrap-400 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-400 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-400 .col-xs-pull-12{right:100%}.factory-bootstrap-400 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-400 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-400 .col-xs-pull-9{right:75%}.factory-bootstrap-400 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-400 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-400 .col-xs-pull-6{right:50%}.factory-bootstrap-400 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-400 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-400 .col-xs-pull-3{right:25%}.factory-bootstrap-400 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-400 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-400 .col-xs-pull-0{right:0}.factory-bootstrap-400 .col-xs-push-12{left:100%}.factory-bootstrap-400 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-400 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-400 .col-xs-push-9{left:75%}.factory-bootstrap-400 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-400 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-400 .col-xs-push-6{left:50%}.factory-bootstrap-400 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-400 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-400 .col-xs-push-3{left:25%}.factory-bootstrap-400 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-400 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-400 .col-xs-push-0{left:0}.factory-bootstrap-400 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-400 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-400 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-400 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-400 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-400 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-400 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-400 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-400 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-400 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-400 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-400 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-400 .col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}.factory-bootstrap-400 table{max-width:100%;background-color:transparent}.factory-bootstrap-400 th{text-align:left}.factory-bootstrap-400 .table{width:100%;margin-bottom:20px}.factory-bootstrap-400 .table>tbody>tr>td,.factory-bootstrap-400 .table>tbody>tr>th,.factory-bootstrap-400 .table>tfoot>tr>td,.factory-bootstrap-400 .table>tfoot>tr>th,.factory-bootstrap-400 .table>thead>tr>td,.factory-bootstrap-400 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-400 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-400 .table>caption+thead>tr:first-child>td,.factory-bootstrap-400 .table>caption+thead>tr:first-child>th,.factory-bootstrap-400 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-400 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-400 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-400 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-400 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-400 .table .table{background-color:#fff}.factory-bootstrap-400 .table-condensed>tbody>tr>td,.factory-bootstrap-400 .table-condensed>tbody>tr>th,.factory-bootstrap-400 .table-condensed>tfoot>tr>td,.factory-bootstrap-400 .table-condensed>tfoot>tr>th,.factory-bootstrap-400 .table-condensed>thead>tr>td,.factory-bootstrap-400 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-400 .table-bordered,.factory-bootstrap-400 .table-bordered>tbody>tr>td,.factory-bootstrap-400 .table-bordered>tbody>tr>th,.factory-bootstrap-400 .table-bordered>tfoot>tr>td,.factory-bootstrap-400 .table-bordered>tfoot>tr>th,.factory-bootstrap-400 .table-bordered>thead>tr>td,.factory-bootstrap-400 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-400 .table-bordered>thead>tr>td,.factory-bootstrap-400 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-400 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-400 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-400 .table-hover>tbody>tr:hover>td,.factory-bootstrap-400 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-400 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-400 table td[class*=col-],.factory-bootstrap-400 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-400 .table>tbody>.active>td,.factory-bootstrap-400 .table>tbody>.active>th,.factory-bootstrap-400 .table>tbody>tr>.active,.factory-bootstrap-400 .table>tfoot>.active>td,.factory-bootstrap-400 .table>tfoot>.active>th,.factory-bootstrap-400 .table>tfoot>tr>.active,.factory-bootstrap-400 .table>thead>.active>td,.factory-bootstrap-400 .table>thead>.active>th,.factory-bootstrap-400 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-400 .table-hover>tbody>.active:hover>td,.factory-bootstrap-400 .table-hover>tbody>.active:hover>th,.factory-bootstrap-400 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-400 .table>tbody>.success>td,.factory-bootstrap-400 .table>tbody>.success>th,.factory-bootstrap-400 .table>tbody>tr>.success,.factory-bootstrap-400 .table>tfoot>.success>td,.factory-bootstrap-400 .table>tfoot>.success>th,.factory-bootstrap-400 .table>tfoot>tr>.success,.factory-bootstrap-400 .table>thead>.success>td,.factory-bootstrap-400 .table>thead>.success>th,.factory-bootstrap-400 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-400 .table-hover>tbody>.success:hover>td,.factory-bootstrap-400 .table-hover>tbody>.success:hover>th,.factory-bootstrap-400 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-400 .table>tbody>.danger>td,.factory-bootstrap-400 .table>tbody>.danger>th,.factory-bootstrap-400 .table>tbody>tr>.danger,.factory-bootstrap-400 .table>tfoot>.danger>td,.factory-bootstrap-400 .table>tfoot>.danger>th,.factory-bootstrap-400 .table>tfoot>tr>.danger,.factory-bootstrap-400 .table>thead>.danger>td,.factory-bootstrap-400 .table>thead>.danger>th,.factory-bootstrap-400 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-400 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-400 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-400 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-400 .table>tbody>.warning>td,.factory-bootstrap-400 .table>tbody>.warning>th,.factory-bootstrap-400 .table>tbody>tr>.warning,.factory-bootstrap-400 .table>tfoot>.warning>td,.factory-bootstrap-400 .table>tfoot>.warning>th,.factory-bootstrap-400 .table>tfoot>tr>.warning,.factory-bootstrap-400 .table>thead>.warning>td,.factory-bootstrap-400 .table>thead>.warning>th,.factory-bootstrap-400 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-400 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-400 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-400 .table-hover>tbody>tr>.warning:hover{background-color:#faf2cc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.factory-bootstrap-400 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-400 legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-400 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-400 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-400 input[type=checkbox],.factory-bootstrap-400 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-400 input[type=file]{display:block}.factory-bootstrap-400 select[multiple],.factory-bootstrap-400 select[size]{height:auto}.factory-bootstrap-400 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-400 input[type=checkbox]:focus,.factory-bootstrap-400 input[type=file]:focus,.factory-bootstrap-400 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-400 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-400 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-400 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-400 .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.factory-bootstrap-400 .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-400 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-400 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-400 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-400 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-400 .form-control[disabled],.factory-bootstrap-400 .form-control[readonly],.factory-bootstrap-400 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-400 textarea.form-control{height:auto}.factory-bootstrap-400 .form-group{margin-bottom:15px}.factory-bootstrap-400 .checkbox,.factory-bootstrap-400 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-400 .checkbox label,.factory-bootstrap-400 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-400 .checkbox input[type=checkbox],.factory-bootstrap-400 .checkbox-inline input[type=checkbox],.factory-bootstrap-400 .radio input[type=radio],.factory-bootstrap-400 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-400 .checkbox+.checkbox,.factory-bootstrap-400 .radio+.radio{margin-top:-5px}.factory-bootstrap-400 .checkbox-inline,.factory-bootstrap-400 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-400 .checkbox-inline+.checkbox-inline,.factory-bootstrap-400 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-400 .checkbox-inline[disabled],.factory-bootstrap-400 .checkbox[disabled],.factory-bootstrap-400 .radio-inline[disabled],.factory-bootstrap-400 .radio[disabled],.factory-bootstrap-400 fieldset[disabled] .checkbox,.factory-bootstrap-400 fieldset[disabled] .checkbox-inline,.factory-bootstrap-400 fieldset[disabled] .radio,.factory-bootstrap-400 fieldset[disabled] .radio-inline,.factory-bootstrap-400 fieldset[disabled] input[type=checkbox],.factory-bootstrap-400 fieldset[disabled] input[type=radio],.factory-bootstrap-400 input[type=checkbox][disabled],.factory-bootstrap-400 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-400 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-400 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-400 textarea.input-sm{height:auto}.factory-bootstrap-400 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-400 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-400 textarea.input-lg{height:auto}.factory-bootstrap-400 .has-warning .checkbox,.factory-bootstrap-400 .has-warning .checkbox-inline,.factory-bootstrap-400 .has-warning .control-label,.factory-bootstrap-400 .has-warning .help-block,.factory-bootstrap-400 .has-warning .radio,.factory-bootstrap-400 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-400 .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-400 .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.factory-bootstrap-400 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-400 .has-error .checkbox,.factory-bootstrap-400 .has-error .checkbox-inline,.factory-bootstrap-400 .has-error .control-label,.factory-bootstrap-400 .has-error .help-block,.factory-bootstrap-400 .has-error .radio,.factory-bootstrap-400 .has-error .radio-inline{color:#a94442}.factory-bootstrap-400 .controls{display:block}.factory-bootstrap-400 .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-400 .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.factory-bootstrap-400 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-400 .has-success .checkbox,.factory-bootstrap-400 .has-success .checkbox-inline,.factory-bootstrap-400 .has-success .control-label,.factory-bootstrap-400 .has-success .help-block,.factory-bootstrap-400 .has-success .radio,.factory-bootstrap-400 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-400 .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-400 .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.factory-bootstrap-400 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-400 .form-control-static{margin-bottom:0}.factory-bootstrap-400 .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;font-weight:400}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline select.form-control{width:auto}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.factory-bootstrap-400 .form-horizontal .checkbox,.factory-bootstrap-400 .form-horizontal .checkbox-inline,.factory-bootstrap-400 .form-horizontal .control-label,.factory-bootstrap-400 .form-horizontal .radio,.factory-bootstrap-400 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-400 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-400 .form-horizontal .checkbox,.factory-bootstrap-400 .form-horizontal .radio{min-height:27px}.factory-bootstrap-400 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-400 .form-horizontal .form-group:after,.factory-bootstrap-400 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-400 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-400 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-400 .btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.factory-bootstrap-400 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-400 .btn{text-decoration:none}.factory-bootstrap-400 .btn:focus,.factory-bootstrap-400 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-400 .btn.disabled,.factory-bootstrap-400 .btn[disabled],.factory-bootstrap-400 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-400 .btn-default.active,.factory-bootstrap-400 .btn-default:active,.factory-bootstrap-400 .btn-default:focus,.factory-bootstrap-400 .btn-default:hover,.factory-bootstrap-400 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-400 .btn-default.active,.factory-bootstrap-400 .btn-default:active,.factory-bootstrap-400 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-400 .btn-default.disabled,.factory-bootstrap-400 .btn-default.disabled.active,.factory-bootstrap-400 .btn-default.disabled:active,.factory-bootstrap-400 .btn-default.disabled:focus,.factory-bootstrap-400 .btn-default.disabled:hover,.factory-bootstrap-400 .btn-default[disabled],.factory-bootstrap-400 .btn-default[disabled].active,.factory-bootstrap-400 .btn-default[disabled]:active,.factory-bootstrap-400 .btn-default[disabled]:focus,.factory-bootstrap-400 .btn-default[disabled]:hover,.factory-bootstrap-400 fieldset[disabled] .btn-default,.factory-bootstrap-400 fieldset[disabled] .btn-default.active,.factory-bootstrap-400 fieldset[disabled] .btn-default:active,.factory-bootstrap-400 fieldset[disabled] .btn-default:focus,.factory-bootstrap-400 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-400 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-400 .btn-primary.active,.factory-bootstrap-400 .btn-primary:active,.factory-bootstrap-400 .btn-primary:focus,.factory-bootstrap-400 .btn-primary:hover,.factory-bootstrap-400 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-400 .btn-primary.active,.factory-bootstrap-400 .btn-primary:active,.factory-bootstrap-400 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-400 .btn-primary.disabled,.factory-bootstrap-400 .btn-primary.disabled.active,.factory-bootstrap-400 .btn-primary.disabled:active,.factory-bootstrap-400 .btn-primary.disabled:focus,.factory-bootstrap-400 .btn-primary.disabled:hover,.factory-bootstrap-400 .btn-primary[disabled],.factory-bootstrap-400 .btn-primary[disabled].active,.factory-bootstrap-400 .btn-primary[disabled]:active,.factory-bootstrap-400 .btn-primary[disabled]:focus,.factory-bootstrap-400 .btn-primary[disabled]:hover,.factory-bootstrap-400 fieldset[disabled] .btn-primary,.factory-bootstrap-400 fieldset[disabled] .btn-primary.active,.factory-bootstrap-400 fieldset[disabled] .btn-primary:active,.factory-bootstrap-400 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-400 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-400 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-400 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-400 .btn-warning.active,.factory-bootstrap-400 .btn-warning:active,.factory-bootstrap-400 .btn-warning:focus,.factory-bootstrap-400 .btn-warning:hover,.factory-bootstrap-400 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-400 .btn-warning.active,.factory-bootstrap-400 .btn-warning:active,.factory-bootstrap-400 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-400 .btn-warning.disabled,.factory-bootstrap-400 .btn-warning.disabled.active,.factory-bootstrap-400 .btn-warning.disabled:active,.factory-bootstrap-400 .btn-warning.disabled:focus,.factory-bootstrap-400 .btn-warning.disabled:hover,.factory-bootstrap-400 .btn-warning[disabled],.factory-bootstrap-400 .btn-warning[disabled].active,.factory-bootstrap-400 .btn-warning[disabled]:active,.factory-bootstrap-400 .btn-warning[disabled]:focus,.factory-bootstrap-400 .btn-warning[disabled]:hover,.factory-bootstrap-400 fieldset[disabled] .btn-warning,.factory-bootstrap-400 fieldset[disabled] .btn-warning.active,.factory-bootstrap-400 fieldset[disabled] .btn-warning:active,.factory-bootstrap-400 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-400 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-400 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-400 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-400 .btn-success.active,.factory-bootstrap-400 .btn-success:active,.factory-bootstrap-400 .btn-success:focus,.factory-bootstrap-400 .btn-success:hover,.factory-bootstrap-400 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-400 .btn-success.active,.factory-bootstrap-400 .btn-success:active,.factory-bootstrap-400 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-400 .btn-success.disabled,.factory-bootstrap-400 .btn-success.disabled.active,.factory-bootstrap-400 .btn-success.disabled:active,.factory-bootstrap-400 .btn-success.disabled:focus,.factory-bootstrap-400 .btn-success.disabled:hover,.factory-bootstrap-400 .btn-success[disabled],.factory-bootstrap-400 .btn-success[disabled].active,.factory-bootstrap-400 .btn-success[disabled]:active,.factory-bootstrap-400 .btn-success[disabled]:focus,.factory-bootstrap-400 .btn-success[disabled]:hover,.factory-bootstrap-400 fieldset[disabled] .btn-success,.factory-bootstrap-400 fieldset[disabled] .btn-success.active,.factory-bootstrap-400 fieldset[disabled] .btn-success:active,.factory-bootstrap-400 fieldset[disabled] .btn-success:focus,.factory-bootstrap-400 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-400 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-400 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-400 .btn-info.active,.factory-bootstrap-400 .btn-info:active,.factory-bootstrap-400 .btn-info:focus,.factory-bootstrap-400 .btn-info:hover,.factory-bootstrap-400 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-400 .btn-info.active,.factory-bootstrap-400 .btn-info:active,.factory-bootstrap-400 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-400 .btn-info.disabled,.factory-bootstrap-400 .btn-info.disabled.active,.factory-bootstrap-400 .btn-info.disabled:active,.factory-bootstrap-400 .btn-info.disabled:focus,.factory-bootstrap-400 .btn-info.disabled:hover,.factory-bootstrap-400 .btn-info[disabled],.factory-bootstrap-400 .btn-info[disabled].active,.factory-bootstrap-400 .btn-info[disabled]:active,.factory-bootstrap-400 .btn-info[disabled]:focus,.factory-bootstrap-400 .btn-info[disabled]:hover,.factory-bootstrap-400 fieldset[disabled] .btn-info,.factory-bootstrap-400 fieldset[disabled] .btn-info.active,.factory-bootstrap-400 fieldset[disabled] .btn-info:active,.factory-bootstrap-400 fieldset[disabled] .btn-info:focus,.factory-bootstrap-400 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-400 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-400 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-400 .btn-link,.factory-bootstrap-400 .btn-link:active,.factory-bootstrap-400 .btn-link[disabled],.factory-bootstrap-400 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-400 .btn-link,.factory-bootstrap-400 .btn-link:active,.factory-bootstrap-400 .btn-link:focus,.factory-bootstrap-400 .btn-link:hover{border-color:transparent}.factory-bootstrap-400 .btn-link:focus,.factory-bootstrap-400 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-400 .btn-link[disabled]:focus,.factory-bootstrap-400 .btn-link[disabled]:hover,.factory-bootstrap-400 fieldset[disabled] .btn-link:focus,.factory-bootstrap-400 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-400 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-400 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-400 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-400 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-400 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-400 input[type=button].btn-block,.factory-bootstrap-400 input[type=reset].btn-block,.factory-bootstrap-400 input[type=submit].btn-block{width:100%}.factory-bootstrap-400 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-400 .fade.in{opacity:1}.factory-bootstrap-400 .collapse{display:none}.factory-bootstrap-400 .collapse.in{display:block}.factory-bootstrap-400 .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular) format('svg')}.factory-bootstrap-400 .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;line-height:1;-moz-osx-font-smoothing:grayscale}.factory-bootstrap-400 .glyphicon:empty{width:1em}.factory-bootstrap-400 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-400 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-400 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-400 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-400 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-400 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-400 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-400 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-400 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-400 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-400 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-400 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-400 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-400 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-400 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-400 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-400 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-400 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-400 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-400 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-400 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-400 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-400 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-400 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-400 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-400 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-400 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-400 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-400 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-400 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-400 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-400 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-400 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-400 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-400 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-400 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-400 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-400 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-400 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-400 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-400 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-400 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-400 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-400 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-400 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-400 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-400 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-400 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-400 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-400 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-400 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-400 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-400 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-400 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-400 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-400 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-400 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-400 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-400 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-400 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-400 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-400 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-400 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-400 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-400 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-400 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-400 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-400 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-400 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-400 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-400 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-400 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-400 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-400 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-400 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-400 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-400 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-400 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-400 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-400 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-400 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-400 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-400 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-400 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-400 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-400 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-400 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-400 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-400 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-400 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-400 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-400 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-400 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-400 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-400 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-400 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-400 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-400 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-400 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-400 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-400 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-400 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-400 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-400 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-400 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-400 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-400 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-400 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-400 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-400 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-400 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-400 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-400 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-400 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-400 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-400 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-400 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-400 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-400 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-400 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-400 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-400 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-400 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-400 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-400 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-400 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-400 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-400 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-400 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-400 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-400 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-400 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-400 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-400 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-400 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-400 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-400 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-400 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-400 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-400 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-400 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-400 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-400 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-400 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-400 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-400 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-400 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-400 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-400 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-400 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-400 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-400 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-400 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-400 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-400 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-400 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-400 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-400 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-400 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-400 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-400 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-400 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-400 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-400 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-400 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-400 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-400 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-400 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-400 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-400 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-400 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-400 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-400 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-400 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-400 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-400 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-400 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-400 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-400 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-400 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-400 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-400 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-400 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-400 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-400 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-400 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-400 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-400 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-400 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-400 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-400 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-400 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-400 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-400 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-400 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-400 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-400 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-400 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-400 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-400 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-400 .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.factory-bootstrap-400 .dropdown{position:relative}.factory-bootstrap-400 .dropdown-toggle:focus{outline:0}.factory-bootstrap-400 .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.factory-bootstrap-400 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-400 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-400 .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.factory-bootstrap-400 .dropdown-menu>li>a:focus,.factory-bootstrap-400 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-400 .dropdown-menu>.active>a,.factory-bootstrap-400 .dropdown-menu>.active>a:focus,.factory-bootstrap-400 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-400 .dropdown-menu>.disabled>a,.factory-bootstrap-400 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-400 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-400 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-400 .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-400 .open>.dropdown-menu{display:block}.factory-bootstrap-400 .open>a{outline:0}.factory-bootstrap-400 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-400 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-400 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-400 .dropup .caret,.factory-bootstrap-400 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-400 .dropup .dropdown-menu,.factory-bootstrap-400 .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.factory-bootstrap-400 .btn-group,.factory-bootstrap-400 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-400 .btn-group-vertical>.btn,.factory-bootstrap-400 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-400 .btn-group-vertical>.btn.active,.factory-bootstrap-400 .btn-group-vertical>.btn:active,.factory-bootstrap-400 .btn-group-vertical>.btn:focus,.factory-bootstrap-400 .btn-group-vertical>.btn:hover,.factory-bootstrap-400 .btn-group>.btn.active,.factory-bootstrap-400 .btn-group>.btn:active,.factory-bootstrap-400 .btn-group>.btn:focus,.factory-bootstrap-400 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-400 .btn-group-vertical>.btn:focus,.factory-bootstrap-400 .btn-group>.btn:focus{outline:0}.factory-bootstrap-400 .btn-group .btn+.btn,.factory-bootstrap-400 .btn-group .btn+.btn-group,.factory-bootstrap-400 .btn-group .btn-group+.btn,.factory-bootstrap-400 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-400 .btn-toolbar:after,.factory-bootstrap-400 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-400 .btn-toolbar:after{clear:both}.factory-bootstrap-400 .btn-toolbar .btn-group{float:left}.factory-bootstrap-400 .btn-toolbar>.btn+.btn,.factory-bootstrap-400 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-400 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-400 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-400 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-400 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-400 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-400 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-400 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-400 .btn-group>.btn-group{float:left}.factory-bootstrap-400 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-400 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-400 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-400 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-400 .btn-group .dropdown-toggle:active,.factory-bootstrap-400 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-400 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-400 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-400 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-400 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-400 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-400 .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.factory-bootstrap-400 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-400 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-400 .btn-group .btn.active.value{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-400 .btn .caret{margin-left:0}.factory-bootstrap-400 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-400 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-400 .btn-group-vertical>.btn,.factory-bootstrap-400 .btn-group-vertical>.btn-group,.factory-bootstrap-400 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-400 .btn-group-vertical>.btn-group:after,.factory-bootstrap-400 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-400 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-400 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-400 .btn-group-vertical>.btn+.btn,.factory-bootstrap-400 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-400 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-400 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-400 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-400 .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-400 .btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.factory-bootstrap-400 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-400 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-400 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-400 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-400 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-400 .btn-group-justified>.btn,.factory-bootstrap-400 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-400 .btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.factory-bootstrap-400 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-400 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-400 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-400 .input-group-lg>.form-control,.factory-bootstrap-400 .input-group-lg>.input-group-addon,.factory-bootstrap-400 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-400 select.input-group-lg>.form-control,.factory-bootstrap-400 select.input-group-lg>.input-group-addon,.factory-bootstrap-400 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-400 textarea.input-group-lg>.form-control,.factory-bootstrap-400 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-400 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-400 .input-group-sm>.form-control,.factory-bootstrap-400 .input-group-sm>.input-group-addon,.factory-bootstrap-400 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-400 select.input-group-sm>.form-control,.factory-bootstrap-400 select.input-group-sm>.input-group-addon,.factory-bootstrap-400 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-400 textarea.input-group-sm>.form-control,.factory-bootstrap-400 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-400 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-400 .input-group .form-control,.factory-bootstrap-400 .input-group-addon,.factory-bootstrap-400 .input-group-btn{display:table-cell}.factory-bootstrap-400 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-400 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-400 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-400 .input-group-addon,.factory-bootstrap-400 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-400 .input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-400 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-400 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-400 .input-group-addon input[type=checkbox],.factory-bootstrap-400 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-400 .input-group .form-control:first-child,.factory-bootstrap-400 .input-group-addon:first-child,.factory-bootstrap-400 .input-group-btn:first-child>.btn,.factory-bootstrap-400 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-400 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-400 .input-group-addon:first-child{border-right:0}.factory-bootstrap-400 .input-group .form-control:last-child,.factory-bootstrap-400 .input-group-addon:last-child,.factory-bootstrap-400 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-400 .input-group-btn:last-child>.btn,.factory-bootstrap-400 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-400 .input-group-addon:last-child{border-left:0}.factory-bootstrap-400 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-400 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-400 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-400 .input-group-btn>.btn{position:relative}.factory-bootstrap-400 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-400 .input-group-btn>.btn:active,.factory-bootstrap-400 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-400 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-400 .nav:after,.factory-bootstrap-400 .nav:before{display:table;content:" "}.factory-bootstrap-400 .nav:after{clear:both}.factory-bootstrap-400 .nav>li{position:relative;display:block}.factory-bootstrap-400 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-400 .nav>li>a:focus,.factory-bootstrap-400 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-400 .nav>li.disabled>a{color:#999}.factory-bootstrap-400 .nav>li.disabled>a:focus,.factory-bootstrap-400 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-400 .nav .open>a,.factory-bootstrap-400 .nav .open>a:focus,.factory-bootstrap-400 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-400 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-400 .nav>li>a>img{max-width:none}.factory-bootstrap-400 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-400 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-400 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-400 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-400 .nav-tabs>li.active>a,.factory-bootstrap-400 .nav-tabs>li.active>a:focus,.factory-bootstrap-400 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-400 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-400 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-400 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-400 .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-400 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-400 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-400 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-400 .nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-400 .nav-pills>li{float:left}.factory-bootstrap-400 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-400 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-400 .nav-pills>li.active>a,.factory-bootstrap-400 .nav-pills>li.active>a:focus,.factory-bootstrap-400 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-400 .nav-stacked>li{float:none}.factory-bootstrap-400 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-400 .nav-justified{width:100%}.factory-bootstrap-400 .nav-justified>li{float:none}.factory-bootstrap-400 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-400 .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-400 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-400 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-400 .nav-tabs-justified>.active>a,.factory-bootstrap-400 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-400 .nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-400 .tab-content>.tab-pane{display:none}.factory-bootstrap-400 .tab-content>.active{display:block}.factory-bootstrap-400 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-400 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-400 .navbar:after,.factory-bootstrap-400 .navbar:before{display:table;content:" "}.factory-bootstrap-400 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-400 .navbar-header:after,.factory-bootstrap-400 .navbar-header:before{display:table;content:" "}.factory-bootstrap-400 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-400 .navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.factory-bootstrap-400 .navbar-collapse:after,.factory-bootstrap-400 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-400 .navbar-collapse:after{clear:both}.factory-bootstrap-400 .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.factory-bootstrap-400 .container>.navbar-collapse,.factory-bootstrap-400 .container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.factory-bootstrap-400 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-400 .navbar-fixed-bottom,.factory-bootstrap-400 .navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.factory-bootstrap-400 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-400 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-400 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-400 .navbar-brand:focus,.factory-bootstrap-400 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-400 .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.factory-bootstrap-400 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-400 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-400 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-400 .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.factory-bootstrap-400 .navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form select.form-control{width:auto}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.factory-bootstrap-400 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-400 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-400 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-400 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-400 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-400 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-400 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-400 .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.factory-bootstrap-400 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-400 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-400 .navbar-default .navbar-brand:focus,.factory-bootstrap-400 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-400 .navbar-default .navbar-nav>li>a,.factory-bootstrap-400 .navbar-default .navbar-text{color:#777}.factory-bootstrap-400 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-400 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-400 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-400 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-400 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-400 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-400 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-400 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-400 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-400 .navbar-default .navbar-toggle:focus,.factory-bootstrap-400 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-400 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-400 .navbar-default .navbar-collapse,.factory-bootstrap-400 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-400 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-400 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-400 .navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.factory-bootstrap-400 .navbar-default .navbar-link{color:#777}.factory-bootstrap-400 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-400 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-400 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-400 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-400 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-400 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-400 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-400 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-400 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-400 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-400 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-400 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-400 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-400 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-400 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-400 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-400 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-400 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-400 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-400 .navbar-inverse .navbar-collapse,.factory-bootstrap-400 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-400 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-400 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-400 .navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.factory-bootstrap-400 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-400 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-400 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-400 .breadcrumb>li{display:inline-block}.factory-bootstrap-400 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-400 .breadcrumb>.active{color:#999}.factory-bootstrap-400 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-400 .pagination>li{display:inline}.factory-bootstrap-400 .pagination>li>a,.factory-bootstrap-400 .pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-400 .pagination>li:first-child>a,.factory-bootstrap-400 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-400 .pagination>li:last-child>a,.factory-bootstrap-400 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-400 .pagination>li>a:focus,.factory-bootstrap-400 .pagination>li>a:hover,.factory-bootstrap-400 .pagination>li>span:focus,.factory-bootstrap-400 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-400 .pagination>.disabled>a,.factory-bootstrap-400 .pagination>.disabled>a:focus,.factory-bootstrap-400 .pagination>.disabled>a:hover,.factory-bootstrap-400 .pagination>.disabled>span,.factory-bootstrap-400 .pagination>.disabled>span:focus,.factory-bootstrap-400 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-400 .pagination-lg>li>a,.factory-bootstrap-400 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-400 .pagination-lg>li:first-child>a,.factory-bootstrap-400 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-400 .pagination-lg>li:last-child>a,.factory-bootstrap-400 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-400 .pagination-sm>li>a,.factory-bootstrap-400 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-400 .pagination-sm>li:first-child>a,.factory-bootstrap-400 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-400 .pagination-sm>li:last-child>a,.factory-bootstrap-400 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-400 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-400 .pager:after,.factory-bootstrap-400 .pager:before{display:table;content:" "}.factory-bootstrap-400 .pager:after{clear:both}.factory-bootstrap-400 .pager li{display:inline}.factory-bootstrap-400 .pager li>a,.factory-bootstrap-400 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-400 .pager li>a:focus,.factory-bootstrap-400 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-400 .pager .next>a,.factory-bootstrap-400 .pager .next>span{float:right}.factory-bootstrap-400 .pager .previous>a,.factory-bootstrap-400 .pager .previous>span{float:left}.factory-bootstrap-400 .pager .disabled>a,.factory-bootstrap-400 .pager .disabled>a:focus,.factory-bootstrap-400 .pager .disabled>a:hover,.factory-bootstrap-400 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-400 .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.factory-bootstrap-400 .label[href]:focus,.factory-bootstrap-400 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-400 .label:empty{display:none}.factory-bootstrap-400 .btn .label{position:relative;top:-1px}.factory-bootstrap-400 .label-default{background-color:#999}.factory-bootstrap-400 .label-default[href]:focus,.factory-bootstrap-400 .label-default[href]:hover{background-color:gray}.factory-bootstrap-400 .label-primary{background-color:#428bca}.factory-bootstrap-400 .label-primary[href]:focus,.factory-bootstrap-400 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-400 .label-success{background-color:#5cb85c}.factory-bootstrap-400 .label-success[href]:focus,.factory-bootstrap-400 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-400 .label-info{background-color:#5bc0de}.factory-bootstrap-400 .label-info[href]:focus,.factory-bootstrap-400 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-400 .label-warning{background-color:#f0ad4e}.factory-bootstrap-400 .label-warning[href]:focus,.factory-bootstrap-400 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-400 .label-danger{background-color:#d9534f}.factory-bootstrap-400 .label-danger[href]:focus,.factory-bootstrap-400 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-400 .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.factory-bootstrap-400 .badge:empty{display:none}.factory-bootstrap-400 .btn .badge{position:relative;top:-1px}.factory-bootstrap-400 a.badge:focus,.factory-bootstrap-400 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-400 .nav-pills>.active>a>.badge,.factory-bootstrap-400 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-400 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-400 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-400 .jumbotron .h1,.factory-bootstrap-400 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-400 .jumbotron p{line-height:1.4}.factory-bootstrap-400 .container .jumbotron{border-radius:6px}.factory-bootstrap-400 .jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.factory-bootstrap-400 .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-400 .thumbnail a>img,.factory-bootstrap-400 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-400 a.thumbnail.active,.factory-bootstrap-400 a.thumbnail:focus,.factory-bootstrap-400 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-400 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-400 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-400 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-400 .alert .alert-link{font-weight:700}.factory-bootstrap-400 .alert>p,.factory-bootstrap-400 .alert>ul{margin-bottom:0}.factory-bootstrap-400 .alert>p+p{margin-top:5px}.factory-bootstrap-400 .alert-dismissable{padding-right:35px}.factory-bootstrap-400 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-400 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-400 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-400 .alert-info .alert-link{color:#245269}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.factory-bootstrap-400 .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.factory-bootstrap-400 .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#2ea2cc;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.factory-bootstrap-400 .progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.factory-bootstrap-400 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-400 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-400 .progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-400 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-400 .progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-400 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-400 .progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-400 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-400 .progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-400 .media,.factory-bootstrap-400 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-400 .media,.factory-bootstrap-400 .media .media{margin-top:15px}.factory-bootstrap-400 .media:first-child{margin-top:0}.factory-bootstrap-400 .media-object{display:block}.factory-bootstrap-400 .media-heading{margin:0 0 5px}.factory-bootstrap-400 .media>.pull-left{margin-right:10px}.factory-bootstrap-400 .media>.pull-right{margin-left:10px}.factory-bootstrap-400 .media-list{padding-left:0;list-style:none}.factory-bootstrap-400 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-400 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-400 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-400 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-400 .list-group-item>.badge{float:right}.factory-bootstrap-400 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-400 a.list-group-item{color:#555}.factory-bootstrap-400 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-400 a.list-group-item:focus,.factory-bootstrap-400 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-400 a.list-group-item.active,.factory-bootstrap-400 a.list-group-item.active:focus,.factory-bootstrap-400 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-400 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-400 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-400 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-400 a.list-group-item.active .list-group-item-text,.factory-bootstrap-400 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-400 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-400 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-400 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-400 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-400 .panel-body{padding:15px}.factory-bootstrap-400 .panel-body:after,.factory-bootstrap-400 .panel-body:before{display:table;content:" "}.factory-bootstrap-400 .panel-body:after{clear:both}.factory-bootstrap-400 .panel>.list-group{margin-bottom:0}.factory-bootstrap-400 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-400 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-400 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-400 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-400 .panel>.table,.factory-bootstrap-400 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-400 .panel>.panel-body+.table,.factory-bootstrap-400 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-400 .panel>.table>tbody:first-child td,.factory-bootstrap-400 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-400 .panel>.table-bordered,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-400 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-400 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-400 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-400 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-400 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-400 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-400 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-400 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-400 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-400 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-400 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-400 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-400 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-400 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-400 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-400 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-400 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-400 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-400 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-400 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-400 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-400 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-400 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-400 .panel-title>a{color:inherit}.factory-bootstrap-400 .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.factory-bootstrap-400 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-400 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-400 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-400 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-400 .panel-group .panel-footer{border-top:0}.factory-bootstrap-400 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-400 .panel-default{border-color:#ddd}.factory-bootstrap-400 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-400 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-400 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-400 .panel-primary{border-color:#428bca}.factory-bootstrap-400 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-400 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-400 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-400 .panel-success{border-color:#d6e9c6}.factory-bootstrap-400 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-400 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-400 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-400 .panel-warning{border-color:#faebcc}.factory-bootstrap-400 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-400 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-400 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-400 .panel-danger{border-color:#ebccd1}.factory-bootstrap-400 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-400 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-400 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-400 .panel-info{border-color:#bce8f1}.factory-bootstrap-400 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-400 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-400 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-400 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-400 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-400 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-400 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-400 .close{float:right;font-size:14px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.3;filter:alpha(opacity=30)}.factory-bootstrap-400 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-400 .close:focus,.factory-bootstrap-400 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-400 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-400 .modal-open{overflow:hidden}.factory-bootstrap-400 .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll;width:auto;margin-left:0;background-color:transparent;border:0}.factory-bootstrap-400 .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.factory-bootstrap-400 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-400 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-400 .modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box}.factory-bootstrap-400 .modal-backdrop,.factory-bootstrap-400-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-400 .modal-backdrop.fade,.factory-bootstrap-400-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-400 .modal-backdrop.in,.factory-bootstrap-400-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-400 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-400 .modal-header .close{margin-top:-2px}.factory-bootstrap-400 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-400 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-400 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-400 .modal-footer:after,.factory-bootstrap-400 .modal-footer:before{display:table;content:" "}.factory-bootstrap-400 .modal-footer:after{clear:both}.factory-bootstrap-400 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-400 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-400 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-400 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-400 .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}}.factory-bootstrap-400 .tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.factory-bootstrap-400 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-400 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-400 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-400 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-400 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-400 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-400 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-400 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-400 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-400 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-400 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-400 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-400 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-400 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-400 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-400 .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);background-clip:padding-box}.factory-bootstrap-400 .popover.top{margin-top:-10px}.factory-bootstrap-400 .popover.right{margin-left:10px}.factory-bootstrap-400 .popover.bottom{margin-top:10px}.factory-bootstrap-400 .popover.left{margin-left:-10px}.factory-bootstrap-400 .popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.factory-bootstrap-400 .popover-content{padding:9px 14px}.factory-bootstrap-400 .popover .arrow,.factory-bootstrap-400 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-400 .popover .arrow{border-width:11px}.factory-bootstrap-400 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-400 .popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.factory-bootstrap-400 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-400 .popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.factory-bootstrap-400 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-400 .popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.factory-bootstrap-400 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-400 .popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0}.factory-bootstrap-400 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-400 .carousel{position:relative}.factory-bootstrap-400 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-400 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-400 .carousel-inner>.item>a>img,.factory-bootstrap-400 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-400 .carousel-inner>.active,.factory-bootstrap-400 .carousel-inner>.next,.factory-bootstrap-400 .carousel-inner>.prev{display:block}.factory-bootstrap-400 .carousel-inner>.active{left:0}.factory-bootstrap-400 .carousel-inner>.next,.factory-bootstrap-400 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-400 .carousel-inner>.next{left:100%}.factory-bootstrap-400 .carousel-inner>.prev{left:-100%}.factory-bootstrap-400 .carousel-inner>.next.left,.factory-bootstrap-400 .carousel-inner>.prev.right{left:0}.factory-bootstrap-400 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-400 .carousel-inner>.active.right{left:100%}.factory-bootstrap-400 .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-400 .carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.factory-bootstrap-400 .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.factory-bootstrap-400 .carousel-control:focus,.factory-bootstrap-400 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-400 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-400 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-400 .carousel-control .icon-next,.factory-bootstrap-400 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-400 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-400 .carousel-control .icon-prev{left:50%}.factory-bootstrap-400 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-400 .carousel-control .icon-next{right:50%}.factory-bootstrap-400 .carousel-control .icon-next,.factory-bootstrap-400 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-400 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-400 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-400 .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.factory-bootstrap-400 .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.factory-bootstrap-400 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-400 .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.factory-bootstrap-400 .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.factory-bootstrap-400 .clearfix:after,.factory-bootstrap-400 .clearfix:before{display:table;content:" "}.factory-bootstrap-400 .clearfix:after{clear:both}.factory-bootstrap-400 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-400 .pull-right{float:right!important}.factory-bootstrap-400 .pull-left{float:left!important}.factory-bootstrap-400 .hide{display:none!important}.factory-bootstrap-400 .show{display:block!important}.factory-bootstrap-400 .invisible{visibility:hidden}.factory-bootstrap-400 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-400 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-400 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-400 .visible-lg,.factory-bootstrap-400 .visible-md,.factory-bootstrap-400 .visible-sm,.factory-bootstrap-400 .visible-xs,.factory-bootstrap-400 td.visible-lg,.factory-bootstrap-400 td.visible-md,.factory-bootstrap-400 td.visible-sm,.factory-bootstrap-400 td.visible-xs,.factory-bootstrap-400 th.visible-lg,.factory-bootstrap-400 th.visible-md,.factory-bootstrap-400 th.visible-sm,.factory-bootstrap-400 th.visible-xs,.factory-bootstrap-400 tr.visible-lg,.factory-bootstrap-400 tr.visible-md,.factory-bootstrap-400 tr.visible-sm,.factory-bootstrap-400 tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}table.visible-xs.visible-sm{display:table}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}table.visible-xs.visible-md{display:table}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}table.visible-xs.visible-lg{display:table}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}table.visible-sm.visible-xs{display:table}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}table.visible-sm.visible-md{display:table}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}table.visible-sm.visible-lg{display:table}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-md.visible-xs{display:block!important}table.visible-md.visible-xs{display:table}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}table.visible-md.visible-sm{display:table}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}table.visible-md.visible-lg{display:table}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}table.visible-lg.visible-xs{display:table}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}table.visible-lg.visible-sm{display:table}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}table.visible-lg.visible-md{display:table}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.factory-bootstrap-400 .hidden-xs{display:block!important}.factory-bootstrap-400 table.hidden-xs{display:table}.factory-bootstrap-400 tr.hidden-xs{display:table-row!important}.factory-bootstrap-400 td.hidden-xs,.factory-bootstrap-400 th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.factory-bootstrap-400 .hidden-sm{display:block!important}.factory-bootstrap-400 table.hidden-sm{display:table}.factory-bootstrap-400 tr.hidden-sm{display:table-row!important}.factory-bootstrap-400 td.hidden-sm,.factory-bootstrap-400 th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.factory-bootstrap-400 .hidden-md{display:block!important}.factory-bootstrap-400 table.hidden-md{display:table}.factory-bootstrap-400 tr.hidden-md{display:table-row!important}.factory-bootstrap-400 td.hidden-md,.factory-bootstrap-400 th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.factory-bootstrap-400 .hidden-lg{display:block!important}.factory-bootstrap-400 table.hidden-lg{display:table}.factory-bootstrap-400 tr.hidden-lg{display:table-row!important}.factory-bootstrap-400 td.hidden-lg,.factory-bootstrap-400 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-400 .hidden-lg.hidden-xs,.factory-bootstrap-400 td.hidden-lg.hidden-xs,.factory-bootstrap-400 th.hidden-lg.hidden-xs,.factory-bootstrap-400 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-400 .hidden-lg.hidden-sm,.factory-bootstrap-400 td.hidden-lg.hidden-sm,.factory-bootstrap-400 th.hidden-lg.hidden-sm,.factory-bootstrap-400 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-400 .hidden-lg.hidden-md,.factory-bootstrap-400 td.hidden-lg.hidden-md,.factory-bootstrap-400 th.hidden-lg.hidden-md,.factory-bootstrap-400 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-400 .hidden-lg,.factory-bootstrap-400 td.hidden-lg,.factory-bootstrap-400 th.hidden-lg,.factory-bootstrap-400 tr.hidden-lg{display:none!important}}.factory-bootstrap-400 .visible-print,.factory-bootstrap-400 td.visible-print,.factory-bootstrap-400 th.visible-print,.factory-bootstrap-400 tr.visible-print{display:none!important}@media print{.factory-bootstrap-400 .visible-print{display:block!important}.factory-bootstrap-400 table.visible-print{display:table}.factory-bootstrap-400 tr.visible-print{display:table-row!important}.factory-bootstrap-400 td.visible-print,.factory-bootstrap-400 th.visible-print{display:table-cell!important}.factory-bootstrap-400 .hidden-print,.factory-bootstrap-400 td.hidden-print,.factory-bootstrap-400 th.hidden-print,.factory-bootstrap-400 tr.hidden-print{display:none!important}}/*!
12
+ * Factory Default Bootstrap Theme
13
+ *
14
+ * The code is based on Bootstrap v2.1.1
15
+ *
16
+ * Bootstrap v3.0.3 (http://getbootstrap.com)
17
+ * Copyright 2013 Twitter, Inc.
18
+ * Licensed under http://www.apache.org/licenses/LICENSE-2.0
19
+ *
20
+ * @author Paul Kashtanoff <paul@byonepress.com>
21
+ * @copyright (c) 2013, OnePress Ltd
22
+ *
23
+ * @package factory-bootstrap
24
+ * @since 1.0.0
25
+ */.factory-bootstrap-400 .btn-danger,.factory-bootstrap-400 .btn-default,.factory-bootstrap-400 .btn-info,.factory-bootstrap-400 .btn-primary,.factory-bootstrap-400 .btn-success,.factory-bootstrap-400 .btn-warning{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-400 .btn-danger.active,.factory-bootstrap-400 .btn-danger:active,.factory-bootstrap-400 .btn-default.active,.factory-bootstrap-400 .btn-default:active,.factory-bootstrap-400 .btn-info.active,.factory-bootstrap-400 .btn-info:active,.factory-bootstrap-400 .btn-primary.active,.factory-bootstrap-400 .btn-primary:active,.factory-bootstrap-400 .btn-success.active,.factory-bootstrap-400 .btn-success:active,.factory-bootstrap-400 .btn-warning.active,.factory-bootstrap-400 .btn-warning:active{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.factory-bootstrap-400 .btn.active,.factory-bootstrap-400 .btn:active{background-image:none}.factory-bootstrap-400 .btn-default{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.factory-bootstrap-400 .btn-default.active,.factory-bootstrap-400 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-400 .btn-gold{font-weight:700;padding:7px 12px;cursor:pointer;line-height:16px;display:inline-block;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;box-shadow:#e3e3e3 0 1px 1px;-moz-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);-webkit-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);text-shadow:1px 1px 0 #ffe8b2;color:#7c5d1b;border:1px solid #d6a437;background:#feeb80}.factory-bootstrap-400 .btn-gold:focus,.factory-bootstrap-400 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-400 .btn-gold.active,.factory-bootstrap-400 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-400 .btn-primary{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.factory-bootstrap-400 .btn-primary:focus,.factory-bootstrap-400 .btn-primary:hover{background:#1e8cbe;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.factory-bootstrap-400 .btn-primary.active,.factory-bootstrap-400 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-400 .btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-400 .btn-success:focus,.factory-bootstrap-400 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-400 .btn-success.active,.factory-bootstrap-400 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-400 .btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-400 .btn-warning:focus,.factory-bootstrap-400 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-400 .btn-warning.active,.factory-bootstrap-400 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-400 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-400 .btn-danger.active,.factory-bootstrap-400 .btn-danger:active,.factory-bootstrap-400 .btn-danger:focus,.factory-bootstrap-400 .btn-danger:hover,.factory-bootstrap-400 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-400 .btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-400 .btn-info:focus,.factory-bootstrap-400 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-400 .btn-info.active,.factory-bootstrap-400 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-400 .img-thumbnail,.factory-bootstrap-400 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-400 .dropdown-menu>li>a:focus,.factory-bootstrap-400 .dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-400 .dropdown-menu>.active>a,.factory-bootstrap-400 .dropdown-menu>.active>a:focus,.factory-bootstrap-400 .dropdown-menu>.active>a:hover{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-400 .navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.factory-bootstrap-400 .navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.factory-bootstrap-400 .navbar-brand,.factory-bootstrap-400 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-400 .navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-400 .navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.factory-bootstrap-400 .navbar-inverse .navbar-brand,.factory-bootstrap-400 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-400 .navbar-fixed-bottom,.factory-bootstrap-400 .navbar-fixed-top,.factory-bootstrap-400 .navbar-static-top{border-radius:0}.factory-bootstrap-400 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-400 .alert .actions{padding-top:10px}.factory-bootstrap-400 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-400 .alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0)}.factory-bootstrap-400 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-400 .alert-normal,.factory-bootstrap-400 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-400 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-400 .alert-danger a:not(.btn),.factory-bootstrap-400 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-400 .progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.factory-bootstrap-400 .progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.factory-bootstrap-400 .progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.factory-bootstrap-400 .progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.factory-bootstrap-400 .progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.factory-bootstrap-400 .progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.factory-bootstrap-400 .list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-400 .list-group-item.active,.factory-bootstrap-400 .list-group-item.active:focus,.factory-bootstrap-400 .list-group-item.active:hover{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0)}.factory-bootstrap-400 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-400 .panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-400 .panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-400 .panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.factory-bootstrap-400 .panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.factory-bootstrap-400 .panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.factory-bootstrap-400 .panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.factory-bootstrap-400 .well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}.factory-bootstrap-400 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-400 .factory-hidden{display:none}.factory-bootstrap-400 .factory-ajax-loader{width:25px;height:25px;background:url(../assets/images/loader-sm-tr.gif)}.factory-control-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:5px;padding:4px 10px 3px;max-width:500px;display:inline-block}.factory-control-error i{margin:0 7px 0 1px}
libs/factory/bootstrap/assets/css-min/bootstrap.datepicker.min.css ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ /*!
12
+ * Datepicker for Bootstrap v1.5.0-dev (https://github.com/eternicode/bootstrap-datepicker)
13
+ *
14
+ * Copyright 2012 Stefan Petre
15
+ * Improvements by Andrew Rowls
16
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
17
+ */.datepicker{border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days .datepicker-days,.datepicker.months .datepicker-months,.datepicker.years .datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:0}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#eee;cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:active,.datepicker table tr td.today:focus,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:focus,.datepicker table tr td.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{color:#000;background-color:#ffcd70;border-color:#f59e00}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{background-image:none}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled.disabled.active,.datepicker table tr td.today.disabled.disabled:active,.datepicker table tr td.today.disabled.disabled:focus,.datepicker table tr td.today.disabled.disabled:hover,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover.disabled.active,.datepicker table tr td.today.disabled:hover.disabled:active,.datepicker table tr td.today.disabled:hover.disabled:focus,.datepicker table tr td.today.disabled:hover.disabled:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled:hover[disabled].active,.datepicker table tr td.today.disabled:hover[disabled]:active,.datepicker table tr td.today.disabled:hover[disabled]:focus,.datepicker table tr td.today.disabled:hover[disabled]:hover,.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled[disabled].active,.datepicker table tr td.today.disabled[disabled]:active,.datepicker table tr td.today.disabled[disabled]:focus,.datepicker table tr td.today.disabled[disabled]:hover,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover.disabled.active,.datepicker table tr td.today:hover.disabled:active,.datepicker table tr td.today:hover.disabled:focus,.datepicker table tr td.today:hover.disabled:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today:hover[disabled].active,.datepicker table tr td.today:hover[disabled]:active,.datepicker table tr td.today:hover[disabled]:focus,.datepicker table tr td.today:hover[disabled]:hover,.datepicker table tr td.today[disabled],.datepicker table tr td.today[disabled].active,.datepicker table tr td.today[disabled]:active,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.today,fieldset[disabled] .datepicker table tr td.today.active,fieldset[disabled] .datepicker table tr td.today.disabled,fieldset[disabled] .datepicker table tr td.today.disabled.active,fieldset[disabled] .datepicker table tr td.today.disabled:active,fieldset[disabled] .datepicker table tr td.today.disabled:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.today:active,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:hover.active,fieldset[disabled] .datepicker table tr td.today:hover:active,fieldset[disabled] .datepicker table tr td.today:hover:focus,fieldset[disabled] .datepicker table tr td.today:hover:hover{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{color:#000;background-color:#f7ca77;border-color:#f1a417;border-radius:0}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:focus,.datepicker table tr td.range.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover{color:#000;background-color:#f4bb51;border-color:#bf800c}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover{background-image:none}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled.disabled.active,.datepicker table tr td.range.today.disabled.disabled:active,.datepicker table tr td.range.today.disabled.disabled:focus,.datepicker table tr td.range.today.disabled.disabled:hover,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover.disabled.active,.datepicker table tr td.range.today.disabled:hover.disabled:active,.datepicker table tr td.range.today.disabled:hover.disabled:focus,.datepicker table tr td.range.today.disabled:hover.disabled:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled:hover[disabled].active,.datepicker table tr td.range.today.disabled:hover[disabled]:active,.datepicker table tr td.range.today.disabled:hover[disabled]:focus,.datepicker table tr td.range.today.disabled:hover[disabled]:hover,.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled[disabled].active,.datepicker table tr td.range.today.disabled[disabled]:active,.datepicker table tr td.range.today.disabled[disabled]:focus,.datepicker table tr td.range.today.disabled[disabled]:hover,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover.disabled.active,.datepicker table tr td.range.today:hover.disabled:active,.datepicker table tr td.range.today:hover.disabled:focus,.datepicker table tr td.range.today:hover.disabled:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today:hover[disabled].active,.datepicker table tr td.range.today:hover[disabled]:active,.datepicker table tr td.range.today:hover[disabled]:focus,.datepicker table tr td.range.today:hover[disabled]:hover,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today[disabled].active,.datepicker table tr td.range.today[disabled]:active,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today,fieldset[disabled] .datepicker table tr td.range.today.active,fieldset[disabled] .datepicker table tr td.range.today.disabled,fieldset[disabled] .datepicker table tr td.range.today.disabled.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.range.today:active,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:hover.active,fieldset[disabled] .datepicker table tr td.range.today:hover:active,fieldset[disabled] .datepicker table tr td.range.today:hover:focus,fieldset[disabled] .datepicker table tr td.range.today:hover:hover{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{color:#fff;background-color:#999;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:active,.datepicker table tr td.selected:focus,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:focus,.datepicker table tr td.selected:hover:hover,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{color:#fff;background-color:#858585;border-color:#373737}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{background-image:none}.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled.disabled.active,.datepicker table tr td.selected.disabled.disabled:active,.datepicker table tr td.selected.disabled.disabled:focus,.datepicker table tr td.selected.disabled.disabled:hover,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover.disabled.active,.datepicker table tr td.selected.disabled:hover.disabled:active,.datepicker table tr td.selected.disabled:hover.disabled:focus,.datepicker table tr td.selected.disabled:hover.disabled:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled:hover[disabled].active,.datepicker table tr td.selected.disabled:hover[disabled]:active,.datepicker table tr td.selected.disabled:hover[disabled]:focus,.datepicker table tr td.selected.disabled:hover[disabled]:hover,.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled[disabled].active,.datepicker table tr td.selected.disabled[disabled]:active,.datepicker table tr td.selected.disabled[disabled]:focus,.datepicker table tr td.selected.disabled[disabled]:hover,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover.disabled.active,.datepicker table tr td.selected:hover.disabled:active,.datepicker table tr td.selected:hover.disabled:focus,.datepicker table tr td.selected:hover.disabled:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected:hover[disabled].active,.datepicker table tr td.selected:hover[disabled]:active,.datepicker table tr td.selected:hover[disabled]:focus,.datepicker table tr td.selected:hover[disabled]:hover,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected[disabled].active,.datepicker table tr td.selected[disabled]:active,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected,fieldset[disabled] .datepicker table tr td.selected.active,fieldset[disabled] .datepicker table tr td.selected.disabled,fieldset[disabled] .datepicker table tr td.selected.disabled.active,fieldset[disabled] .datepicker table tr td.selected.disabled:active,fieldset[disabled] .datepicker table tr td.selected.disabled:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.selected:active,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:hover.active,fieldset[disabled] .datepicker table tr td.selected:hover:active,fieldset[disabled] .datepicker table tr td.selected:hover:focus,fieldset[disabled] .datepicker table tr td.selected:hover:hover{background-color:#999;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:active,.datepicker table tr td.active:focus,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:focus,.datepicker table tr td.active:hover:hover,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover{background-image:none}.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled.disabled.active,.datepicker table tr td.active.disabled.disabled:active,.datepicker table tr td.active.disabled.disabled:focus,.datepicker table tr td.active.disabled.disabled:hover,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover.disabled.active,.datepicker table tr td.active.disabled:hover.disabled:active,.datepicker table tr td.active.disabled:hover.disabled:focus,.datepicker table tr td.active.disabled:hover.disabled:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled:hover[disabled].active,.datepicker table tr td.active.disabled:hover[disabled]:active,.datepicker table tr td.active.disabled:hover[disabled]:focus,.datepicker table tr td.active.disabled:hover[disabled]:hover,.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled[disabled].active,.datepicker table tr td.active.disabled[disabled]:active,.datepicker table tr td.active.disabled[disabled]:focus,.datepicker table tr td.active.disabled[disabled]:hover,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover.disabled.active,.datepicker table tr td.active:hover.disabled:active,.datepicker table tr td.active:hover.disabled:focus,.datepicker table tr td.active:hover.disabled:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active:hover[disabled].active,.datepicker table tr td.active:hover[disabled]:active,.datepicker table tr td.active:hover[disabled]:focus,.datepicker table tr td.active:hover[disabled]:hover,.datepicker table tr td.active[disabled],.datepicker table tr td.active[disabled].active,.datepicker table tr td.active[disabled]:active,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active[disabled]:hover,fieldset[disabled] .datepicker table tr td.active,fieldset[disabled] .datepicker table tr td.active.active,fieldset[disabled] .datepicker table tr td.active.disabled,fieldset[disabled] .datepicker table tr td.active.disabled.active,fieldset[disabled] .datepicker table tr td.active.disabled:active,fieldset[disabled] .datepicker table tr td.active.disabled:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.active:active,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:hover.active,fieldset[disabled] .datepicker table tr td.active:hover:active,fieldset[disabled] .datepicker table tr td.active:hover:focus,fieldset[disabled] .datepicker table tr td.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:active,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:focus,.datepicker table tr td span.active:hover:hover,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{background-image:none}.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled.disabled.active,.datepicker table tr td span.active.disabled.disabled:active,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover.disabled.active,.datepicker table tr td span.active.disabled:hover.disabled:active,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled:hover[disabled].active,.datepicker table tr td span.active.disabled:hover[disabled]:active,.datepicker table tr td span.active.disabled:hover[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled[disabled].active,.datepicker table tr td span.active.disabled[disabled]:active,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover.disabled.active,.datepicker table tr td span.active:hover.disabled:active,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active:hover[disabled].active,.datepicker table tr td span.active:hover[disabled]:active,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active[disabled].active,.datepicker table tr td span.active[disabled]:active,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active,fieldset[disabled] .datepicker table tr td span.active.active,fieldset[disabled] .datepicker table tr td span.active.disabled,fieldset[disabled] .datepicker table tr td span.active.disabled.active,fieldset[disabled] .datepicker table tr td span.active.disabled:active,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active:active,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover.active,fieldset[disabled] .datepicker table tr td span.active:hover:active,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker tfoot tr th,.datepicker thead tr:first-child th{cursor:pointer}.datepicker tfoot tr th:hover,.datepicker thead tr:first-child th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child .cw{cursor:default;background-color:transparent}.input-group.date .input-group-addon{cursor:pointer}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;font-weight:400;line-height:1.42857143;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:solid #ccc;border-width:1px 0;margin-left:-5px;margin-right:-5px}.datepicker.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;color:#333;font-size:13px;line-height:1.42857143}.datepicker.datepicker-inline td,.datepicker.datepicker-inline th,.datepicker.dropdown-menu td,.datepicker.dropdown-menu th{padding:0 5px}
libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ .factory-bootstrap-400 .btn-primary{background:#a3b745;border-color:#839237;color:#fff;-webkit-box-shadow:inset 0 1px 0 #c0cd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #c0cd7b,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-400 .btn-primary:focus,.factory-bootstrap-400 .btn-primary:hover{background:#89993a;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 1px 0 #b7c669,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #b7c669,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-400 .btn-primary:active{background:#89993a;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-400 .btn-primary:disabled,.factory-bootstrap-400 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-400 .btn-group .btn.active.value{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.factory-bootstrap-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ .factory-bootstrap-400 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-400 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-400 .factory-form-group .factory-hint-icon{display:block;width:16px;height:16px;line-height:13px;padding:0;font-size:11px;text-align:center;position:absolute;top:-5px;right:-3px;color:#fff;background:#E91E63;border-radius:3px}.factory-bootstrap-400 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-400 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-400 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-400 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-400 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-400 .factory-form-group legend+.control-group{margin-top:0}
libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ .factory-bootstrap-400 .btn-primary{background:#04a4cc;border-color:#037c9a;color:#fff;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-400 .btn-primary:focus,.factory-bootstrap-400 .btn-primary:hover{background:#0384a4;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 1px 0 #09cafa,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #09cafa,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-400 .btn-primary:active{background:#0384a4;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-400 .btn-primary:disabled,.factory-bootstrap-400 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-400 .btn-group .btn.active.value{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.factory-bootstrap-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ .factory-bootstrap-400 .btn-primary{background:#e14d43;border-color:#d02a21;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ec8a85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8a85,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-400 .btn-primary:focus,.factory-bootstrap-400 .btn-primary:hover{background:#d92c23;border-color:#ba251e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8756f,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8756f,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-400 .btn-primary:active{background:#d92c23;border-color:#ba251e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-400 .btn-primary:disabled,.factory-bootstrap-400 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-400 .btn-group .btn.active.value{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.factory-bootstrap-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ .factory-bootstrap-400 .btn-primary{background:#9ebaa0;border-color:#80a583;color:#fff;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-400 .btn-primary:focus,.factory-bootstrap-400 .btn-primary:hover{background:#86a988;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bccfbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bccfbd,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-400 .btn-primary:active{background:#86a988;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-400 .btn-primary:disabled,.factory-bootstrap-400 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-400 .btn-group .btn.active.value{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.factory-bootstrap-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ .factory-bootstrap-400 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ .factory-bootstrap-400 .btn-primary{background:#dd823b;border-color:#c36822;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8ab7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ab7c,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-400 .btn-primary:focus,.factory-bootstrap-400 .btn-primary:hover{background:#cc6c23;border-color:#ad5c1e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e59d66,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e59d66,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-400 .btn-primary:active{background:#cc6c23;border-color:#ad5c1e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-400 .btn-primary:disabled,.factory-bootstrap-400 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-400 .btn-group .btn.active.value{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}.factory-bootstrap-400 .pagination>.active>a,.factory-bootstrap-400 .pagination>.active>a:focus,.factory-bootstrap-400 .pagination>.active>a:hover,.factory-bootstrap-400 .pagination>.active>span,.factory-bootstrap-400 .pagination>.active>span:focus,.factory-bootstrap-400 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
libs/factory/bootstrap/assets/css-min/control.checkbox.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ #side-sortables .factory-bootstrap-400 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-400 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-400 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-400 .factory-buttons-way .factory-on.active{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-400 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-400 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-400 .factory-buttons-way .factory-on.active{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.admin-color-blue .factory-bootstrap-400 .factory-buttons-way .factory-on.active{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.admin-color-coffee .factory-bootstrap-400 .factory-buttons-way .factory-on.active{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.admin-color-ectoplasm .factory-bootstrap-400 .factory-buttons-way .factory-on.active{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.admin-color-midnight .factory-bootstrap-400 .factory-buttons-way .factory-on.active{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.admin-color-ocean .factory-bootstrap-400 .factory-buttons-way .factory-on.active{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.admin-color-sunrise .factory-bootstrap-400 .factory-buttons-way .factory-on.active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}
libs/factory/bootstrap/assets/css-min/control.dropdown.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ .factory-bootstrap-400 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-400 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-400 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-400 .factory-dropdown.factory-buttons-way .active{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.admin-color-blue .factory-bootstrap-400 .factory-dropdown.factory-buttons-way .active{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.admin-color-coffee .factory-bootstrap-400 .factory-dropdown.factory-buttons-way .active{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.admin-color-ectoplasm .factory-bootstrap-400 .factory-dropdown.factory-buttons-way .active{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.admin-color-midnight .factory-bootstrap-400 .factory-dropdown.factory-buttons-way .active{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.admin-color-ocean .factory-bootstrap-400 .factory-dropdown.factory-buttons-way .active{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.admin-color-sunrise .factory-bootstrap-400 .factory-dropdown.factory-buttons-way .active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}.factory-bootstrap-400 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-400 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-400 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-400 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ .factory-bootstrap-400 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-400 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-400 .factory-mtextbox-item .factory-mtextbox-remove-item{position:absolute;top:0;right:0;bottom:0;width:40px;border-radius:0 3px 3px 0;outline:0}.factory-bootstrap-400 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-400 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-400 .factory-mtextbox-add-item{display:block;margin-top:10px}
libs/factory/bootstrap/assets/css-min/holder.more-link.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap generator - v1.0.1, 2018-02-26
3
+ * Webcraftic factory build
4
+ *
5
+ * Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
6
+ * Site: http://webcraftic.com
7
+ * Support: http://webcraftic.com/contact-us/
8
+ */
9
+
10
+
11
+ .factory-bootstrap-400 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-400 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-400 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-400 .factory-tab .factory-more-link-hide{position:absolute;margin-top:-35px;background-color:#fff;padding:0 5px;right:20px;color:#bbb;text-decoration:none}.factory-bootstrap-400 .factory-tab .factory-more-link-hide:hover{color:#999}
libs/factory/bootstrap/assets/flat/css/bootstrap.core.css DELETED
@@ -1,7810 +0,0 @@
1
- /*
2
- * Factory Bootstrap CSS
3
- *
4
- * The code is based on Bootstrap v2.1.1
5
- *
6
- * Bootstrap v3.0.3 (http://getbootstrap.com)
7
- * Copyright 2013 Twitter, Inc.
8
- * Licensed under http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * @author Paul Kashtanoff <paul@byonepress.com>
11
- * @copyright (c) 2013, OnePress Ltd
12
- *
13
- * @package factory-bootstrap
14
- * @since 1.0.0
15
- */
16
-
17
- .factory-bootstrap-330 article,
18
- .factory-bootstrap-330 aside,
19
- .factory-bootstrap-330 details,
20
- .factory-bootstrap-330 figcaption,
21
- .factory-bootstrap-330 figure,
22
- .factory-bootstrap-330 footer,
23
- .factory-bootstrap-330 header,
24
- .factory-bootstrap-330 hgroup,
25
- .factory-bootstrap-330 main,
26
- .factory-bootstrap-330 nav,
27
- .factory-bootstrap-330 section,
28
- .factory-bootstrap-330 summary {
29
- display: block;
30
- }
31
-
32
- .factory-bootstrap-330 audio,
33
- .factory-bootstrap-330 canvas,
34
- .factory-bootstrap-330 video {
35
- display: inline-block;
36
- }
37
-
38
- .factory-bootstrap-330 audio:not([controls]) {
39
- display: none;
40
- height: 0;
41
- }
42
-
43
- .factory-bootstrap-330 [hidden],
44
- .factory-bootstrap-330 template {
45
- display: none;
46
- }
47
-
48
- .factory-bootstrap-330 body {
49
- margin: 0;
50
- }
51
-
52
- .factory-bootstrap-330 a {
53
- background: transparent;
54
- }
55
-
56
- .factory-bootstrap-330 a:focus {
57
- outline: thin dotted;
58
- }
59
-
60
- .factory-bootstrap-330 a:active,
61
- .factory-bootstrap-330 a:hover {
62
- outline: 0;
63
- }
64
-
65
- .factory-bootstrap-330 h1 {
66
- margin: 0.67em 0;
67
- font-size: 2em;
68
- }
69
-
70
- .factory-bootstrap-330 abbr[title] {
71
- border-bottom: 1px dotted;
72
- }
73
-
74
- .factory-bootstrap-330 b,
75
- .factory-bootstrap-330 strong {
76
- font-weight: bold;
77
- }
78
-
79
- .factory-bootstrap-330 dfn {
80
- font-style: italic;
81
- }
82
-
83
- .factory-bootstrap-330 hr {
84
- height: 0;
85
- -moz-box-sizing: content-box;
86
- box-sizing: content-box;
87
- }
88
-
89
- .factory-bootstrap-330 mark {
90
- color: #000;
91
- background: #ff0;
92
- }
93
-
94
- .factory-bootstrap-330 code,
95
- .factory-bootstrap-330 kbd,
96
- .factory-bootstrap-330 pre,
97
- .factory-bootstrap-330 samp {
98
- font-family: monospace, serif;
99
- font-size: 1em;
100
- }
101
-
102
- .factory-bootstrap-330 pre {
103
- white-space: pre-wrap;
104
- }
105
-
106
- .factory-bootstrap-330 q {
107
- quotes: "\201C" "\201D" "\2018" "\2019";
108
- }
109
-
110
- .factory-bootstrap-330 small {
111
- font-size: 80%;
112
- }
113
-
114
- .factory-bootstrap-330 sub,
115
- .factory-bootstrap-330 sup {
116
- position: relative;
117
- font-size: 75%;
118
- line-height: 0;
119
- vertical-align: baseline;
120
- }
121
-
122
- .factory-bootstrap-330 sup {
123
- top: -0.5em;
124
- }
125
-
126
- .factory-bootstrap-330 sub {
127
- bottom: -0.25em;
128
- }
129
-
130
- .factory-bootstrap-330 img {
131
- border: 0;
132
- }
133
-
134
- .factory-bootstrap-330 svg:not(:root) {
135
- overflow: hidden;
136
- }
137
-
138
- .factory-bootstrap-330 figure {
139
- margin: 0;
140
- }
141
-
142
- .factory-bootstrap-330 fieldset {
143
- padding: 0.35em 0.625em 0.75em;
144
- margin: 0 2px;
145
- border: 1px solid #c0c0c0;
146
- }
147
-
148
- .factory-bootstrap-330 legend {
149
- padding: 0;
150
- border: 0;
151
- }
152
-
153
- .factory-bootstrap-330 button,
154
- .factory-bootstrap-330 input,
155
- .factory-bootstrap-330 select,
156
- .factory-bootstrap-330 textarea {
157
- margin: 0;
158
- font-family: inherit;
159
- font-size: 100%;
160
- }
161
-
162
- .factory-bootstrap-330 button,
163
- .factory-bootstrap-330 input {
164
- line-height: normal;
165
- }
166
-
167
- .factory-bootstrap-330 button,
168
- .factory-bootstrap-330 select {
169
- text-transform: none;
170
- }
171
-
172
- .factory-bootstrap-330 select {
173
- padding-right: 4px !important;
174
- }
175
-
176
- .factory-bootstrap-330 button,
177
- html .factory-bootstrap-330 input[type="button"],
178
- .factory-bootstrap-330 input[type="reset"],
179
- .factory-bootstrap-330 input[type="submit"] {
180
- cursor: pointer;
181
- -webkit-appearance: button;
182
- }
183
-
184
- .factory-bootstrap-330 button[disabled],
185
- html .factory-bootstrap-330 input[disabled] {
186
- cursor: default;
187
- }
188
-
189
- .factory-bootstrap-330 input[type="checkbox"],
190
- .factory-bootstrap-330 input[type="radio"] {
191
- padding: 0;
192
- box-sizing: border-box;
193
- }
194
-
195
- .factory-bootstrap-330 input[type="search"] {
196
- -webkit-box-sizing: content-box;
197
- -moz-box-sizing: content-box;
198
- box-sizing: content-box;
199
- -webkit-appearance: textfield;
200
- }
201
-
202
- .factory-bootstrap-330 input[type="search"]::-webkit-search-cancel-button,
203
- .factory-bootstrap-330 input[type="search"]::-webkit-search-decoration {
204
- -webkit-appearance: none;
205
- }
206
-
207
- .factory-bootstrap-330 button::-moz-focus-inner,
208
- .factory-bootstrap-330 input::-moz-focus-inner {
209
- padding: 0;
210
- border: 0;
211
- }
212
-
213
- .factory-bootstrap-330 textarea {
214
- overflow: auto;
215
- vertical-align: top;
216
- }
217
-
218
- .factory-bootstrap-330 table {
219
- border-collapse: collapse;
220
- border-spacing: 0;
221
- }
222
-
223
- @media print {
224
- .factory-bootstrap-330 * {
225
- color: #000 !important;
226
- text-shadow: none !important;
227
- background: transparent !important;
228
- box-shadow: none !important;
229
- }
230
-
231
- .factory-bootstrap-330 a,
232
- .factory-bootstrap-330 a:visited {
233
- text-decoration: underline;
234
- }
235
-
236
- .factory-bootstrap-330 a[href]:after {
237
- content: " (" attr(href) ")";
238
- }
239
-
240
- .factory-bootstrap-330 abbr[title]:after {
241
- content: " (" attr(title) ")";
242
- }
243
-
244
- .factory-bootstrap-330 a[href^="javascript:"]:after,
245
- .factory-bootstrap-330 a[href^="#"]:after {
246
- content: "";
247
- }
248
-
249
- .factory-bootstrap-330 pre,
250
- .factory-bootstrap-330 blockquote {
251
- border: 1px solid #999;
252
- page-break-inside: avoid;
253
- }
254
-
255
- .factory-bootstrap-330 thead {
256
- display: table-header-group;
257
- }
258
-
259
- .factory-bootstrap-330 tr,
260
- .factory-bootstrap-330 img {
261
- page-break-inside: avoid;
262
- }
263
-
264
- .factory-bootstrap-330 img {
265
- max-width: 100% !important;
266
- }
267
-
268
- @page {
269
- margin: 2cm .5cm;
270
- }
271
-
272
- .factory-bootstrap-330 p,
273
- .factory-bootstrap-330 h2,
274
- .factory-bootstrap-330 h3 {
275
- orphans: 3;
276
- widows: 3;
277
- }
278
-
279
- .factory-bootstrap-330 h2,
280
- .factory-bootstrap-330 h3 {
281
- page-break-after: avoid;
282
- }
283
-
284
- .factory-bootstrap-330 select {
285
- background: #fff !important;
286
- }
287
-
288
- .factory-bootstrap-330 .navbar {
289
- display: none;
290
- }
291
-
292
- .factory-bootstrap-330 .table td,
293
- .factory-bootstrap-330 .table th {
294
- background-color: #fff !important;
295
- }
296
-
297
- .factory-bootstrap-330 .btn > .caret,
298
- .factory-bootstrap-330 .dropup > .btn > .caret {
299
- border-top-color: #000 !important;
300
- }
301
-
302
- .factory-bootstrap-330 .label {
303
- border: 1px solid #000;
304
- }
305
-
306
- .factory-bootstrap-330 .table {
307
- border-collapse: collapse !important;
308
- }
309
-
310
- .factory-bootstrap-330 .table-bordered th,
311
- .factory-bootstrap-330 .table-bordered td {
312
- border: 1px solid #ddd !important;
313
- }
314
- }
315
-
316
- .factory-bootstrap-330 *,
317
- .factory-bootstrap-330 *:before,
318
- .factory-bootstrap-330 *:after {
319
- -webkit-box-sizing: border-box;
320
- -moz-box-sizing: border-box;
321
- box-sizing: border-box;
322
- }
323
-
324
- html .factory-bootstrap-330 {
325
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
326
- }
327
-
328
- .factory-bootstrap-330 body {
329
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
330
- font-size: 14px;
331
- line-height: 1.428571429;
332
- color: #333333;
333
- background-color: #ffffff;
334
- }
335
-
336
- .factory-bootstrap-330 input,
337
- .factory-bootstrap-330 button,
338
- .factory-bootstrap-330 select,
339
- .factory-bootstrap-330 textarea {
340
- font-family: inherit;
341
- font-size: inherit;
342
- line-height: inherit;
343
- }
344
-
345
- .factory-bootstrap-330 img {
346
- vertical-align: middle;
347
- }
348
-
349
- .factory-bootstrap-330 .img-responsive {
350
- display: block;
351
- height: auto;
352
- max-width: 100%;
353
- }
354
-
355
- .factory-bootstrap-330 .img-rounded {
356
- border-radius: 6px;
357
- }
358
-
359
- .factory-bootstrap-330 .img-thumbnail {
360
- display: inline-block;
361
- height: auto;
362
- max-width: 100%;
363
- padding: 4px;
364
- line-height: 1.428571429;
365
- background-color: #ffffff;
366
- border: 1px solid #dddddd;
367
- border-radius: 4px;
368
- -webkit-transition: all 0.2s ease-in-out;
369
- transition: all 0.2s ease-in-out;
370
- }
371
-
372
- .factory-bootstrap-330 .img-circle {
373
- border-radius: 50%;
374
- }
375
-
376
- .factory-bootstrap-330 hr {
377
- margin-top: 20px;
378
- margin-bottom: 20px;
379
- border: 0;
380
- border-top: 1px solid #eeeeee;
381
- }
382
-
383
- .factory-bootstrap-330 .sr-only {
384
- position: absolute;
385
- width: 1px;
386
- height: 1px;
387
- padding: 0;
388
- margin: -1px;
389
- overflow: hidden;
390
- clip: rect(0, 0, 0, 0);
391
- border: 0;
392
- }
393
-
394
- .factory-bootstrap-330 h1,
395
- .factory-bootstrap-330 h2,
396
- .factory-bootstrap-330 h3,
397
- .factory-bootstrap-330 h4,
398
- .factory-bootstrap-330 h5,
399
- .factory-bootstrap-330 h6,
400
- .factory-bootstrap-330 .h1,
401
- .factory-bootstrap-330 .h2,
402
- .factory-bootstrap-330 .h3,
403
- .factory-bootstrap-330 .h4,
404
- .factory-bootstrap-330 .h5,
405
- .factory-bootstrap-330 .h6 {
406
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
407
- font-weight: 500;
408
- line-height: 1.1;
409
- color: inherit;
410
- }
411
-
412
- .factory-bootstrap-330 h1 small,
413
- .factory-bootstrap-330 h2 small,
414
- .factory-bootstrap-330 h3 small,
415
- .factory-bootstrap-330 h4 small,
416
- .factory-bootstrap-330 h5 small,
417
- .factory-bootstrap-330 h6 small,
418
- .factory-bootstrap-330 .h1 small,
419
- .factory-bootstrap-330 .h2 small,
420
- .factory-bootstrap-330 .h3 small,
421
- .factory-bootstrap-330 .h4 small,
422
- .factory-bootstrap-330 .h5 small,
423
- .factory-bootstrap-330 .h6 small,
424
- .factory-bootstrap-330 h1 .small,
425
- .factory-bootstrap-330 h2 .small,
426
- .factory-bootstrap-330 h3 .small,
427
- .factory-bootstrap-330 h4 .small,
428
- .factory-bootstrap-330 h5 .small,
429
- .factory-bootstrap-330 h6 .small,
430
- .factory-bootstrap-330 .h1 .small,
431
- .factory-bootstrap-330 .h2 .small,
432
- .factory-bootstrap-330 .h3 .small,
433
- .factory-bootstrap-330 .h4 .small,
434
- .factory-bootstrap-330 .h5 .small,
435
- .factory-bootstrap-330 .h6 .small {
436
- font-weight: normal;
437
- line-height: 1;
438
- color: #999999;
439
- }
440
-
441
- .factory-bootstrap-330 h1,
442
- .factory-bootstrap-330 h2,
443
- .factory-bootstrap-330 h3 {
444
- margin-top: 20px;
445
- margin-bottom: 10px;
446
- }
447
-
448
- .factory-bootstrap-330 h1 small,
449
- .factory-bootstrap-330 h2 small,
450
- .factory-bootstrap-330 h3 small,
451
- .factory-bootstrap-330 h1 .small,
452
- .factory-bootstrap-330 h2 .small,
453
- .factory-bootstrap-330 h3 .small {
454
- font-size: 65%;
455
- }
456
-
457
- .factory-bootstrap-330 h4,
458
- .factory-bootstrap-330 h5,
459
- .factory-bootstrap-330 h6 {
460
- margin-top: 10px;
461
- margin-bottom: 10px;
462
- }
463
-
464
- .factory-bootstrap-330 h4 small,
465
- .factory-bootstrap-330 h5 small,
466
- .factory-bootstrap-330 h6 small,
467
- .factory-bootstrap-330 h4 .small,
468
- .factory-bootstrap-330 h5 .small,
469
- .factory-bootstrap-330 h6 .small {
470
- font-size: 75%;
471
- }
472
-
473
- .factory-bootstrap-330 h1,
474
- .factory-bootstrap-330 .h1 {
475
- font-size: 36px;
476
- }
477
-
478
- .factory-bootstrap-330 h2,
479
- .factory-bootstrap-330 .h2 {
480
- font-size: 30px;
481
- }
482
-
483
- .factory-bootstrap-330 h3,
484
- .factory-bootstrap-330 .h3 {
485
- font-size: 24px;
486
- }
487
-
488
- .factory-bootstrap-330 h4,
489
- .factory-bootstrap-330 .h4 {
490
- font-size: 18px;
491
- }
492
-
493
- .factory-bootstrap-330 h5,
494
- .factory-bootstrap-330 .h5 {
495
- font-size: 14px;
496
- }
497
-
498
- .factory-bootstrap-330 h6,
499
- .factory-bootstrap-330 .h6 {
500
- font-size: 12px;
501
- }
502
-
503
- .factory-bootstrap-330 p {
504
- margin: 0 0 10px;
505
- }
506
-
507
- .factory-bootstrap-330 .lead {
508
- margin-bottom: 20px;
509
- font-size: 16px;
510
- font-weight: 200;
511
- line-height: 1.4;
512
- }
513
-
514
- @media (min-width: 768px) {
515
- .lead {
516
- font-size: 21px;
517
- }
518
- }
519
-
520
- .factory-bootstrap-330 small,
521
- .factory-bootstrap-330 .small {
522
- font-size: 85%;
523
- }
524
-
525
- .factory-bootstrap-330 cite {
526
- font-style: normal;
527
- }
528
-
529
- .factory-bootstrap-330 .text-muted {
530
- color: #999999;
531
- }
532
-
533
- .factory-bootstrap-330 .text-primary {
534
- color: #428bca;
535
- }
536
-
537
- .factory-bootstrap-330 .text-primary:hover {
538
- color: #3071a9;
539
- }
540
-
541
- .factory-bootstrap-330 .text-warning {
542
- color: #8a6d3b;
543
- }
544
-
545
- .factory-bootstrap-330 .text-warning:hover {
546
- color: #66512c;
547
- }
548
-
549
- .factory-bootstrap-330 .text-danger {
550
- color: #a94442;
551
- }
552
-
553
- .factory-bootstrap-330 .text-danger:hover {
554
- color: #843534;
555
- }
556
-
557
- .factory-bootstrap-330 .text-success {
558
- color: #3c763d;
559
- }
560
-
561
- .factory-bootstrap-330 .text-success:hover {
562
- color: #2b542c;
563
- }
564
-
565
- .factory-bootstrap-330 .text-info {
566
- color: #31708f;
567
- }
568
-
569
- .factory-bootstrap-330 .text-info:hover {
570
- color: #245269;
571
- }
572
-
573
- .factory-bootstrap-330 .text-left {
574
- text-align: left;
575
- }
576
-
577
- .factory-bootstrap-330 .text-right {
578
- text-align: right;
579
- }
580
-
581
- .factory-bootstrap-330 .text-center {
582
- text-align: center;
583
- }
584
-
585
- .factory-bootstrap-330 .page-header {
586
- padding-bottom: 9px;
587
- margin: 40px 0 20px;
588
- border-bottom: 1px solid #eeeeee;
589
- }
590
-
591
- .factory-bootstrap-330 ul,
592
- .factory-bootstrap-330 ol {
593
- margin-top: 0;
594
- margin-bottom: 10px;
595
- }
596
-
597
- .factory-bootstrap-330 ul ul,
598
- .factory-bootstrap-330 ol ul,
599
- .factory-bootstrap-330 ul ol,
600
- .factory-bootstrap-330 ol ol {
601
- margin-bottom: 0;
602
- }
603
-
604
- .factory-bootstrap-330 .list-unstyled {
605
- padding-left: 0;
606
- list-style: none;
607
- }
608
-
609
- .factory-bootstrap-330 .list-inline {
610
- padding-left: 0;
611
- list-style: none;
612
- }
613
-
614
- .factory-bootstrap-330 .list-inline > li {
615
- display: inline-block;
616
- padding-right: 5px;
617
- padding-left: 5px;
618
- }
619
-
620
- .factory-bootstrap-330 .list-inline > li:first-child {
621
- padding-left: 0;
622
- }
623
-
624
- .factory-bootstrap-330 dl {
625
- margin-top: 0;
626
- margin-bottom: 20px;
627
- }
628
-
629
- .factory-bootstrap-330 dt,
630
- .factory-bootstrap-330 dd {
631
- line-height: 1.428571429;
632
- }
633
-
634
- .factory-bootstrap-330 dt {
635
- font-weight: bold;
636
- }
637
-
638
- .factory-bootstrap-330 dd {
639
- margin-left: 0;
640
- }
641
-
642
- @media (min-width: 768px) {
643
- .dl-horizontal dt {
644
- float: left;
645
- width: 160px;
646
- overflow: hidden;
647
- clear: left;
648
- text-align: right;
649
- text-overflow: ellipsis;
650
- white-space: nowrap;
651
- }
652
-
653
- .dl-horizontal dd {
654
- margin-left: 180px;
655
- }
656
-
657
- .dl-horizontal dd:before,
658
- .dl-horizontal dd:after {
659
- display: table;
660
- content: " ";
661
- }
662
-
663
- .dl-horizontal dd:after {
664
- clear: both;
665
- }
666
-
667
- .dl-horizontal dd:before,
668
- .dl-horizontal dd:after {
669
- display: table;
670
- content: " ";
671
- }
672
-
673
- .dl-horizontal dd:after {
674
- clear: both;
675
- }
676
- }
677
-
678
- .factory-bootstrap-330 abbr[title],
679
- .factory-bootstrap-330 abbr[data-original-title] {
680
- cursor: help;
681
- border-bottom: 1px dotted #999999;
682
- }
683
-
684
- .factory-bootstrap-330 .initialism {
685
- font-size: 90%;
686
- text-transform: uppercase;
687
- }
688
-
689
- .factory-bootstrap-330 blockquote {
690
- padding: 10px 20px;
691
- margin: 0 0 20px;
692
- border-left: 5px solid #eeeeee;
693
- }
694
-
695
- .factory-bootstrap-330 blockquote p {
696
- font-size: 17.5px;
697
- font-weight: 300;
698
- line-height: 1.25;
699
- }
700
-
701
- .factory-bootstrap-330 blockquote p:last-child {
702
- margin-bottom: 0;
703
- }
704
-
705
- .factory-bootstrap-330 blockquote small,
706
- .factory-bootstrap-330 blockquote .small {
707
- display: block;
708
- line-height: 1.428571429;
709
- color: #999999;
710
- }
711
-
712
- .factory-bootstrap-330 blockquote small:before,
713
- .factory-bootstrap-330 blockquote .small:before {
714
- content: '\2014 \00A0';
715
- }
716
-
717
- .factory-bootstrap-330 blockquote.pull-right {
718
- padding-right: 15px;
719
- padding-left: 0;
720
- border-right: 5px solid #eeeeee;
721
- border-left: 0;
722
- }
723
-
724
- .factory-bootstrap-330 blockquote.pull-right p,
725
- .factory-bootstrap-330 blockquote.pull-right small,
726
- .factory-bootstrap-330 blockquote.pull-right .small {
727
- text-align: right;
728
- }
729
-
730
- .factory-bootstrap-330 blockquote.pull-right small:before,
731
- .factory-bootstrap-330 blockquote.pull-right .small:before {
732
- content: '';
733
- }
734
-
735
- .factory-bootstrap-330 blockquote.pull-right small:after,
736
- .factory-bootstrap-330 blockquote.pull-right .small:after {
737
- content: '\00A0 \2014';
738
- }
739
-
740
- .factory-bootstrap-330 blockquote:before,
741
- .factory-bootstrap-330 blockquote:after {
742
- content: "";
743
- }
744
-
745
- .factory-bootstrap-330 address {
746
- margin-bottom: 20px;
747
- font-style: normal;
748
- line-height: 1.428571429;
749
- }
750
-
751
- .factory-bootstrap-330 code,
752
- .factory-bootstrap-330 kbd,
753
- .factory-bootstrap-330 pre,
754
- .factory-bootstrap-330 samp {
755
- font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
756
- }
757
-
758
- .factory-bootstrap-330 code {
759
- padding: 2px 4px;
760
- font-size: 90%;
761
- color: #c7254e;
762
- white-space: nowrap;
763
- background-color: #f9f2f4;
764
- border-radius: 4px;
765
- }
766
-
767
- .factory-bootstrap-330 pre {
768
- display: block;
769
- padding: 9.5px;
770
- margin: 0 0 10px;
771
- font-size: 13px;
772
- line-height: 1.428571429;
773
- color: #333333;
774
- word-break: break-all;
775
- word-wrap: break-word;
776
- background-color: #f5f5f5;
777
- border: 1px solid #cccccc;
778
- border-radius: 4px;
779
- }
780
-
781
- .factory-bootstrap-330 pre code {
782
- padding: 0;
783
- font-size: inherit;
784
- color: inherit;
785
- white-space: pre-wrap;
786
- background-color: transparent;
787
- border-radius: 0;
788
- }
789
-
790
- .factory-bootstrap-330 .pre-scrollable {
791
- max-height: 340px;
792
- overflow-y: scroll;
793
- }
794
-
795
- .factory-bootstrap-330 .container {
796
- padding-right: 15px;
797
- padding-left: 15px;
798
- margin-right: auto;
799
- margin-left: auto;
800
- }
801
-
802
- .factory-bootstrap-330 .container:before,
803
- .factory-bootstrap-330 .container:after {
804
- display: table;
805
- content: " ";
806
- }
807
-
808
- .factory-bootstrap-330 .container:after {
809
- clear: both;
810
- }
811
-
812
- .factory-bootstrap-330 .container:before,
813
- .factory-bootstrap-330 .container:after {
814
- display: table;
815
- content: " ";
816
- }
817
-
818
- .factory-bootstrap-330 .container:after {
819
- clear: both;
820
- }
821
-
822
- @media (min-width: 768px) {
823
- .container {
824
- width: 750px;
825
- }
826
- }
827
-
828
- @media (min-width: 992px) {
829
- .container {
830
- width: 970px;
831
- }
832
- }
833
-
834
- @media (min-width: 1200px) {
835
- .container {
836
- width: 1170px;
837
- }
838
- }
839
-
840
- .factory-bootstrap-330 .row {
841
- margin-right: -15px;
842
- margin-left: -15px;
843
- }
844
-
845
- .factory-bootstrap-330 .row:before,
846
- .factory-bootstrap-330 .row:after {
847
- display: table;
848
- content: " ";
849
- }
850
-
851
- .factory-bootstrap-330 .row:after {
852
- clear: both;
853
- }
854
-
855
- .factory-bootstrap-330 .row:before,
856
- .factory-bootstrap-330 .row:after {
857
- display: table;
858
- content: " ";
859
- }
860
-
861
- .factory-bootstrap-330 .row:after {
862
- clear: both;
863
- }
864
-
865
- .factory-bootstrap-330 .col-xs-1,
866
- .factory-bootstrap-330 .col-sm-1,
867
- .factory-bootstrap-330 .col-md-1,
868
- .factory-bootstrap-330 .col-lg-1,
869
- .factory-bootstrap-330 .col-xs-2,
870
- .factory-bootstrap-330 .col-sm-2,
871
- .factory-bootstrap-330 .col-md-2,
872
- .factory-bootstrap-330 .col-lg-2,
873
- .factory-bootstrap-330 .col-xs-3,
874
- .factory-bootstrap-330 .col-sm-3,
875
- .factory-bootstrap-330 .col-md-3,
876
- .factory-bootstrap-330 .col-lg-3,
877
- .factory-bootstrap-330 .col-xs-4,
878
- .factory-bootstrap-330 .col-sm-4,
879
- .factory-bootstrap-330 .col-md-4,
880
- .factory-bootstrap-330 .col-lg-4,
881
- .factory-bootstrap-330 .col-xs-5,
882
- .factory-bootstrap-330 .col-sm-5,
883
- .factory-bootstrap-330 .col-md-5,
884
- .factory-bootstrap-330 .col-lg-5,
885
- .factory-bootstrap-330 .col-xs-6,
886
- .factory-bootstrap-330 .col-sm-6,
887
- .