Robin image optimizer — save money on image compression - Version 1.5.3

Version Description

  • Fixed: Error on frontend
Download this release

Release Info

Developer webtemyk
Plugin Icon 128x128 Robin image optimizer — save money on image compression
Version 1.5.3
Comparing to
See all releases

Code changes from version 1.5.0 to 1.5.3

Files changed (51) hide show
  1. admin/activation.php +93 -93
  2. admin/ajax/backup.php +103 -103
  3. admin/ajax/index.php +2 -2
  4. admin/ajax/logs.php +23 -23
  5. admin/ajax/meta-migrations.php +174 -174
  6. admin/ajax/multisite-update-current-blog.php +29 -29
  7. admin/ajax/settings.php +37 -37
  8. admin/assets/css/base-statistic.css +733 -676
  9. admin/assets/css/base-statistic.less +888 -818
  10. admin/assets/css/index.php +2 -2
  11. admin/assets/css/media.css +215 -215
  12. admin/assets/css/settings-premium.css +17 -17
  13. admin/assets/css/statistic.css +410 -410
  14. admin/assets/css/sweetalert-custom.css +155 -155
  15. admin/assets/css/sweetalert-custom.less +185 -185
  16. admin/assets/css/sweetalert2.css +716 -716
  17. admin/assets/img/index.php +2 -2
  18. admin/assets/index.php +2 -2
  19. admin/assets/js/Chart.min.js +10 -10
  20. admin/assets/js/bulk-optimization.js +633 -587
  21. admin/assets/js/index.php +2 -2
  22. admin/assets/js/meta-migrations.js +52 -52
  23. admin/assets/js/modals.js +59 -59
  24. admin/assets/js/restore-backup.js +162 -162
  25. admin/assets/js/settings-premium.js +2 -1
  26. admin/assets/js/single-optimization.js +64 -64
  27. admin/assets/js/statistic.js +38 -38
  28. admin/assets/js/sweetalert2.js +1641 -1641
  29. admin/boot.php +347 -347
  30. admin/includes/classes/class-rio-nextgen-landing.php +61 -61
  31. admin/includes/classes/class-rio-optimize-template.php +226 -226
  32. admin/includes/classes/index.php +2 -2
  33. admin/includes/index.php +2 -2
  34. admin/includes/sidebar-widgets.php +83 -83
  35. admin/index.php +2 -2
  36. admin/pages/class-rio-license.php +125 -125
  37. admin/pages/class-rio-log.php +100 -166
  38. admin/pages/class-rio-page.php +83 -83
  39. admin/pages/class-rio-settings.php +620 -550
  40. admin/pages/class-rio-statistic.php +279 -267
  41. admin/pages/index.php +2 -2
  42. assets/js/lazy-load.js +11 -8
  43. assets/js/lozad.min.js +10 -0
  44. includes/class-rio-plugin.php +209 -191
  45. includes/classes/class-rio-attachment.php +992 -992
  46. includes/classes/class-rio-backup.php +535 -535
  47. includes/classes/class-rio-bulk-optimization.php +462 -0
  48. includes/classes/class-rio-cron.php +148 -183
  49. includes/classes/class-rio-image-statistic.php +411 -398
  50. includes/classes/class-rio-media-library.php +737 -707
  51. includes/classes/class-rio-multisite.php +21 -54
admin/activation.php CHANGED
@@ -1,93 +1,93 @@
1
- <?php
2
-
3
- /**
4
- * Activator for the Robin image optimizer
5
- *
6
- * @author Webcraftic <wordpress.webraftic@gmail.com>
7
- * @copyright (c) 09.09.2017, Webcraftic
8
- * @see Factory439_Activator
9
- * @version 1.0
10
- */
11
-
12
- // Exit if accessed directly
13
- if ( ! defined( 'ABSPATH' ) ) {
14
- exit;
15
- }
16
-
17
- class WIO_Activation extends Wbcr_Factory439_Activator {
18
-
19
- /**
20
- * Runs activation actions.
21
- *
22
- * @since 1.0.0
23
- * @throws \Exception
24
- */
25
- public function activate() {
26
- WRIO_Logger::info( 'Parent plugin start installation!' );
27
-
28
- WRIO_Plugin::app()->updatePopulateOption( 'image_optimization_server', 'server_1' );
29
- WRIO_Plugin::app()->updatePopulateOption( 'backup_origin_images', 1 );
30
- WRIO_Plugin::app()->updatePopulateOption( 'save_exif_data', 1 );
31
-
32
- if ( function_exists( 'wrio_is_license_activate' ) && wrio_is_license_activate() ) {
33
- WRIO_Logger::info( 'Premium plugin start installation!' );
34
- require_once( WRIO_PLUGIN_DIR . '/libs/addons/robin-image-optimizer-premium.php' );
35
- wrio_premium_activate();
36
- WRIO_Logger::info( 'Premium plugin installation complete!' );
37
- }
38
-
39
- $db_version = RIO_Process_Queue::get_db_version();
40
- $plugin_version_in_db = $this->get_plugin_version_in_db();
41
- $current_plugin_version = $this->plugin->getPluginVersion();
42
-
43
- $create_table_log_message = "Plugin installation: try create plugin tables.\r\n";
44
- $create_table_log_message .= "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t-DB Version: {$db_version}\r\n";
45
- $create_table_log_message .= "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t-Plugin Version in DB: {$plugin_version_in_db}\r\n";
46
- $create_table_log_message .= "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t-Current Plugin Version: {$current_plugin_version}";
47
-
48
- WRIO_Logger::info( $create_table_log_message );
49
-
50
- RIO_Process_Queue::try_create_plugin_tables();
51
-
52
- WbcrFactoryClearfy230_Helpers::flushPageCache();
53
-
54
- WRIO_Logger::info( 'Parent plugin installation complete!' );
55
- }
56
-
57
- /**
58
- * Get previous plugin version
59
- *
60
- * @author Alexander Kovalev <alex.kovalevv@gmail.com>
61
- * @since 1.3.8
62
- * @return number
63
- */
64
- public function get_plugin_version_in_db() {
65
- if ( WRIO_Plugin::app()->isNetworkActive() ) {
66
- return get_site_option( WRIO_Plugin::app()->getOptionName( 'plugin_version' ), 0 );
67
- }
68
-
69
- return get_option( WRIO_Plugin::app()->getOptionName( 'plugin_version' ), 0 );
70
- }
71
-
72
- /**
73
- * Runs activation actions.
74
- *
75
- * @since 1.0.0
76
- */
77
- public function deactivate() {
78
- WRIO_Logger::info( 'Parent plugin start deactivation!' );
79
-
80
- if ( class_exists( 'WRIO_Cron' ) ) {
81
- WRIO_Cron::stop();
82
- }
83
-
84
- if ( function_exists( 'wrio_is_license_activate' ) && wrio_is_license_activate() ) {
85
- WRIO_Logger::info( 'Premium plugin start deactivation!' );
86
- require_once( WRIO_PLUGIN_DIR . '/libs/addons/robin-image-optimizer-premium.php' );
87
- wrio_premium_deactivate();
88
- WRIO_Logger::info( 'Premium plugin deactivation complete!' );
89
- }
90
-
91
- WRIO_Logger::info( 'Parent plugin deactivation complete!' );
92
- }
93
- }
1
+ <?php
2
+
3
+ /**
4
+ * Activator for the Robin image optimizer
5
+ *
6
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
7
+ * @copyright (c) 09.09.2017, Webcraftic
8
+ * @see Factory446_Activator
9
+ * @version 1.0
10
+ */
11
+
12
+ // Exit if accessed directly
13
+ if ( ! defined( 'ABSPATH' ) ) {
14
+ exit;
15
+ }
16
+
17
+ class WIO_Activation extends Wbcr_Factory446_Activator {
18
+
19
+ /**
20
+ * Runs activation actions.
21
+ *
22
+ * @since 1.0.0
23
+ * @throws \Exception
24
+ */
25
+ public function activate() {
26
+ WRIO_Plugin::app()->logger->info( 'Parent plugin start installation!' );
27
+
28
+ WRIO_Plugin::app()->updatePopulateOption( 'image_optimization_server', 'server_1' );
29
+ WRIO_Plugin::app()->updatePopulateOption( 'backup_origin_images', 1 );
30
+ WRIO_Plugin::app()->updatePopulateOption( 'save_exif_data', 1 );
31
+
32
+ if ( function_exists( 'wrio_is_license_activate' ) && wrio_is_license_activate() ) {
33
+ WRIO_Plugin::app()->logger->info( 'Premium plugin start installation!' );
34
+ require_once( WRIO_PLUGIN_DIR . '/libs/addons/robin-image-optimizer-premium.php' );
35
+ wrio_premium_activate();
36
+ WRIO_Plugin::app()->logger->info( 'Premium plugin installation complete!' );
37
+ }
38
+
39
+ $db_version = RIO_Process_Queue::get_db_version();
40
+ $plugin_version_in_db = $this->get_plugin_version_in_db();
41
+ $current_plugin_version = $this->plugin->getPluginVersion();
42
+
43
+ $create_table_log_message = "Plugin installation: try create plugin tables.\r\n";
44
+ $create_table_log_message .= "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t-DB Version: {$db_version}\r\n";
45
+ $create_table_log_message .= "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t-Plugin Version in DB: {$plugin_version_in_db}\r\n";
46
+ $create_table_log_message .= "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t-Current Plugin Version: {$current_plugin_version}";
47
+
48
+ WRIO_Plugin::app()->logger->info( $create_table_log_message );
49
+
50
+ RIO_Process_Queue::try_create_plugin_tables();
51
+
52
+ WbcrFactoryClearfy237_Helpers::flushPageCache();
53
+
54
+ WRIO_Plugin::app()->logger->info( 'Parent plugin installation complete!' );
55
+ }
56
+
57
+ /**
58
+ * Get previous plugin version
59
+ *
60
+ * @author Alexander Kovalev <alex.kovalevv@gmail.com>
61
+ * @since 1.3.8
62
+ * @return number
63
+ */
64
+ public function get_plugin_version_in_db() {
65
+ if ( WRIO_Plugin::app()->isNetworkActive() ) {
66
+ return get_site_option( WRIO_Plugin::app()->getOptionName( 'plugin_version' ), 0 );
67
+ }
68
+
69
+ return get_option( WRIO_Plugin::app()->getOptionName( 'plugin_version' ), 0 );
70
+ }
71
+
72
+ /**
73
+ * Runs activation actions.
74
+ *
75
+ * @since 1.0.0
76
+ */
77
+ public function deactivate() {
78
+ WRIO_Plugin::app()->logger->info( 'Parent plugin start deactivation!' );
79
+
80
+ if ( class_exists( 'WRIO_Cron' ) ) {
81
+ WRIO_Cron::stop();
82
+ }
83
+
84
+ if ( function_exists( 'wrio_is_license_activate' ) && wrio_is_license_activate() ) {
85
+ WRIO_Plugin::app()->logger->info( 'Premium plugin start deactivation!' );
86
+ require_once( WRIO_PLUGIN_DIR . '/libs/addons/robin-image-optimizer-premium.php' );
87
+ wrio_premium_deactivate();
88
+ WRIO_Plugin::app()->logger->info( 'Premium plugin deactivation complete!' );
89
+ }
90
+
91
+ WRIO_Plugin::app()->logger->info( 'Parent plugin deactivation complete!' );
92
+ }
93
+ }
admin/ajax/backup.php CHANGED
@@ -1,103 +1,103 @@
1
- <?php
2
- /**
3
- * Back-up related filters.
4
- *
5
- * @author Webcraftic <wordpress.webraftic@gmail.com>
6
- * @copyright (c) 2018 Webraftic Ltd
7
- * @version 1.0
8
- */
9
-
10
- // Exit if accessed directly
11
- if ( ! defined( 'ABSPATH' ) ) {
12
- exit;
13
- }
14
-
15
- /**
16
- * AJAX обработчик восстановления из резервной копии
17
- */
18
- add_action( 'wp_ajax_wio_restore_backup', function () {
19
- check_admin_referer( 'wio-iph' );
20
-
21
- if ( ! current_user_can( 'manage_options' ) ) {
22
- wp_die( - 1 );
23
- }
24
-
25
- $max_process_per_request = 25;
26
-
27
- //$blog_id = WRIO_Plugin::app()->request->post( 'blog_id', null, true );
28
-
29
- /*if ( $blog_id !== null ) {
30
- switch_to_blog( $blog_id );
31
- }*/
32
-
33
- // Total number of remained images to restore
34
- $remane_count = 0;
35
-
36
- $total = 0;
37
-
38
- $filter_results = apply_filters( 'wbcr/rio/backup/restore_filter', $max_process_per_request );
39
-
40
- if ( isset( $filter_results['remane'] ) ) {
41
- $remane_count += $filter_results['remane'];
42
- }
43
-
44
- if ( isset( $filter_results['total'] ) ) {
45
- $total += $filter_results['total'];
46
- }
47
-
48
- $media_library = WRIO_Media_Library::get_instance();
49
-
50
- $total += $media_library->getOptimizedCount();
51
-
52
- $restored_data = $media_library->restoreAllFromBackup( $max_process_per_request );
53
-
54
- if ( isset( $restored_data['remain'] ) ) {
55
- $remane_count += $restored_data['remain'];
56
- }
57
-
58
- /*if ( $blog_id !== null ) {
59
- restore_current_blog();
60
- }*/
61
-
62
- $restored_data['total'] = $total;
63
-
64
- if ( $total > 0 ) {
65
- $restored_data['percent'] = 100 - ( $remane_count * 100 / $total );
66
- } else {
67
- $restored_data['percent'] = 0;
68
- }
69
-
70
- // если изображения закончились - посылаем команду завершения
71
- if ( $remane_count <= 0 ) {
72
- $restored_data['end'] = true;
73
- }
74
-
75
- wp_send_json( $restored_data );
76
- } );
77
-
78
- /**
79
- * AJAX обработчик очистки папки с бекапами
80
- */
81
- add_action( 'wp_ajax_wio_clear_backup', function () {
82
- check_admin_referer( 'wio-iph' );
83
-
84
- if ( ! current_user_can( 'manage_options' ) ) {
85
- wp_die( - 1 );
86
- }
87
-
88
- $backup = WIO_Backup::get_instance();
89
- $blogs = WRIO_Plugin::app()->request->post( 'blogs', [], true );
90
-
91
- if ( ! empty( $blogs ) ) {
92
- foreach ( $blogs as $blog_id ) {
93
- switch_to_blog( intval( $blog_id ) );
94
- $backup->removeBlogBackupDir();
95
- restore_current_blog();
96
- }
97
- } else {
98
- $backup->removeBackupDir();
99
- }
100
-
101
- wp_send_json( true );
102
- } );
103
-
1
+ <?php
2
+ /**
3
+ * Back-up related filters.
4
+ *
5
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
6
+ * @copyright (c) 2018 Webraftic Ltd
7
+ * @version 1.0
8
+ */
9
+
10
+ // Exit if accessed directly
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit;
13
+ }
14
+
15
+ /**
16
+ * AJAX обработчик восстановления из резервной копии
17
+ */
18
+ add_action( 'wp_ajax_wio_restore_backup', function () {
19
+ check_admin_referer( 'wio-iph' );
20
+
21
+ if ( ! current_user_can( 'manage_options' ) ) {
22
+ wp_die( - 1 );
23
+ }
24
+
25
+ $max_process_per_request = 25;
26
+
27
+ //$blog_id = WRIO_Plugin::app()->request->post( 'blog_id', null, true );
28
+
29
+ /*if ( $blog_id !== null ) {
30
+ switch_to_blog( $blog_id );
31
+ }*/
32
+
33
+ // Total number of remained images to restore
34
+ $remane_count = 0;
35
+
36
+ $total = 0;
37
+
38
+ $filter_results = apply_filters( 'wbcr/rio/backup/restore_filter', $max_process_per_request );
39
+
40
+ if ( isset( $filter_results['remane'] ) ) {
41
+ $remane_count += $filter_results['remane'];
42
+ }
43
+
44
+ if ( isset( $filter_results['total'] ) ) {
45
+ $total += $filter_results['total'];
46
+ }
47
+
48
+ $media_library = WRIO_Media_Library::get_instance();
49
+
50
+ $total += $media_library->getOptimizedCount();
51
+
52
+ $restored_data = $media_library->restoreAllFromBackup( $max_process_per_request );
53
+
54
+ if ( isset( $restored_data['remain'] ) ) {
55
+ $remane_count += $restored_data['remain'];
56
+ }
57
+
58
+ /*if ( $blog_id !== null ) {
59
+ restore_current_blog();
60
+ }*/
61
+
62
+ $restored_data['total'] = $total;
63
+
64
+ if ( $total > 0 ) {
65
+ $restored_data['percent'] = 100 - ( $remane_count * 100 / $total );
66
+ } else {
67
+ $restored_data['percent'] = 0;
68
+ }
69
+
70
+ // если изображения закончились - посылаем команду завершения
71
+ if ( $remane_count <= 0 ) {
72
+ $restored_data['end'] = true;
73
+ }
74
+
75
+ wp_send_json( $restored_data );
76
+ } );
77
+
78
+ /**
79
+ * AJAX обработчик очистки папки с бекапами
80
+ */
81
+ add_action( 'wp_ajax_wio_clear_backup', function () {
82
+ check_admin_referer( 'wio-iph' );
83
+
84
+ if ( ! current_user_can( 'manage_options' ) ) {
85
+ wp_die( - 1 );
86
+ }
87
+
88
+ $backup = WIO_Backup::get_instance();
89
+ $blogs = WRIO_Plugin::app()->request->post( 'blogs', [], true );
90
+
91
+ if ( ! empty( $blogs ) ) {
92
+ foreach ( $blogs as $blog_id ) {
93
+ switch_to_blog( intval( $blog_id ) );
94
+ $backup->removeBlogBackupDir();
95
+ restore_current_blog();
96
+ }
97
+ } else {
98
+ $backup->removeBackupDir();
99
+ }
100
+
101
+ wp_send_json( true );
102
+ } );
103
+
admin/ajax/index.php CHANGED
@@ -1,2 +1,2 @@
1
- <?php
2
- // silence is golden
1
+ <?php
2
+ // silence is golden
admin/ajax/logs.php CHANGED
@@ -1,24 +1,24 @@
1
- <?php
2
-
3
- /**
4
- * Used to clean-up logs.
5
- */
6
- add_action( 'wp_ajax_wrio_logs_cleanup', function () {
7
- check_admin_referer( 'wrio_clean_logs', 'nonce' );
8
-
9
- if ( ! current_user_can( 'manage_options' ) ) {
10
- wp_die( - 1 );
11
- }
12
-
13
- if ( ! WRIO_Logger::clean_up() ) {
14
- wp_send_json_error( [
15
- 'message' => esc_html__( 'Failed to clean-up logs. Please try again later.', 'robin-image-optimizer' ),
16
- 'type' => 'danger',
17
- ] );
18
- }
19
-
20
- wp_send_json( [
21
- 'message' => esc_html__( 'Logs clean-up successfully', 'robin-image-optimizer' ),
22
- 'type' => 'success',
23
- ] );
24
  } );
1
+ <?php
2
+
3
+ /**
4
+ * Used to clean-up logs.
5
+ */
6
+ add_action( 'wp_ajax_wrio_logs_cleanup', function () {
7
+ check_admin_referer( 'wrio_clean_logs', 'nonce' );
8
+
9
+ if ( ! current_user_can( 'manage_options' ) ) {
10
+ wp_die( - 1 );
11
+ }
12
+
13
+ if ( ! WRIO_Plugin::app()->logger->clean_up() ) {
14
+ wp_send_json_error( [
15
+ 'message' => esc_html__( 'Failed to clean-up logs. Please try again later.', 'robin-image-optimizer' ),
16
+ 'type' => 'danger',
17
+ ] );
18
+ }
19
+
20
+ wp_send_json( [
21
+ 'message' => esc_html__( 'Logs clean-up successfully', 'robin-image-optimizer' ),
22
+ 'type' => 'success',
23
+ ] );
24
  } );
admin/ajax/meta-migrations.php CHANGED
@@ -1,174 +1,174 @@
1
- <?php
2
- /**
3
- * Ajax action to migrate old architecture based on post meta into new table.
4
- *
5
- * @author Webcraftic <wordpress.webraftic@gmail.com>
6
- * @author Alexander Teshabaev <sasha.tesh@gmail.com>
7
- * @see RIO_Process_Queue for further information.
8
- *
9
- * @copyright (c) 2018 Webraftic Ltd
10
- * @version 1.0
11
- */
12
-
13
- // Exit if accessed directly
14
- if ( ! defined( 'ABSPATH' ) ) {
15
- exit;
16
- }
17
-
18
- add_action( 'wp_ajax_wrio_meta_migrations', 'wbcr_rio_migrate_postmeta_to_process_queue' );
19
-
20
- /**
21
- * Migrating postmeta to newly created table.
22
- *
23
- * @author Alexander Teshabaev <sasha.tesh@gmail.com>
24
- * @since 1.3.0
25
- * @see RIO_Process_Queue as referce for new table.
26
- */
27
- function wbcr_rio_migrate_postmeta_to_process_queue() {
28
- global $wpdb;
29
-
30
- check_admin_referer( 'wrio-meta-migrations' );
31
-
32
- if ( ! current_user_can( 'manage_options' ) ) {
33
- wp_die( - 1 );
34
- }
35
-
36
- $error = (int) WRIO_Plugin::app()->request->post( 'error', 0 );
37
-
38
- if ( $error ) {
39
- WRIO_Logger::error( 'Previous migration was not completed due to an error.' );
40
- }
41
-
42
- $limit = (int) WRIO_Plugin::app()->request->post( 'limit', 150 );
43
-
44
- $processed_items = 0;
45
-
46
- WRIO_Logger::info( 'Start meta migration. Limit ' . $limit );
47
- WRIO_Logger::memory_usage();
48
-
49
- $attachments = wbcr_rio_get_meta_to_migrate();
50
-
51
- if ( isset( $attachments->posts ) && ( $attachments_total = count( $attachments->posts ) ) > 0 ) {
52
-
53
- if ( $attachments_total < $limit ) {
54
- $limit = $attachments_total;
55
- }
56
-
57
- WRIO_Logger::info( 'Finded ' . $attachments_total . ' attachments for migration.' );
58
-
59
- if ( function_exists( 'wp_raise_memory_limit' ) ) {
60
- wp_raise_memory_limit( 'image' );
61
- }
62
-
63
- WRIO_Logger::memory_usage();
64
-
65
- /**
66
- * @var WP_Post $attachment
67
- */
68
- for ( $i = 0; $i < $limit; $i ++ ) {
69
- $attachment = $attachments->posts[ $i ];
70
- $post_meta = get_post_custom( $attachment->ID );
71
-
72
- $extra_data = new RIO_Attachment_Extra_Data();
73
-
74
- $is_backed_up = false;
75
- $original_size = 0;
76
- $final_size = 0;
77
-
78
- if ( isset( $post_meta['wio_backuped'][0] ) && $post_meta['wio_backuped'][0] ) {
79
- $is_backed_up = true;
80
- }
81
-
82
- if ( isset( $post_meta['wio_thumbnails_count'][0] ) ) {
83
- $extra_data->set_thumbnails_count( intval( $post_meta['wio_thumbnails_count'][0] ) );
84
- }
85
-
86
- if ( isset( $post_meta['wio_original_size'][0] ) ) {
87
- $original_size = intval( $post_meta['wio_original_size'][0] );
88
- }
89
-
90
- if ( isset( $post_meta['wio_optimized_size'][0] ) ) {
91
- $final_size = intval( $post_meta['wio_optimized_size'][0] );
92
- }
93
-
94
- if ( isset( $post_meta['wio_original_main_size'][0] ) ) {
95
- $extra_data->set_original_main_size( intval( $post_meta['wio_original_main_size'][0] ) );
96
- }
97
-
98
- if ( isset( $post_meta['wio_error'][0] ) ) {
99
- $extra_data->set_error( 'optimization' );
100
- $extra_data->set_error_msg( $post_meta['wio_error'][0] );
101
- }
102
-
103
- $level = 'normal';
104
-
105
- if ( isset( $post_meta['wio_optimization_level'][0] ) && ! empty( $post_meta['wio_optimization_level'][0] ) ) {
106
- $level = $post_meta['wio_optimization_level'][0];
107
- }
108
-
109
- $data = [
110
- 'server_id' => null,
111
- 'object_id' => $attachment->ID,
112
- 'object_name' => $wpdb->posts,
113
- 'item_type' => 'attachment',
114
- 'result_status' => ! $final_size ? 'error' : 'success',
115
- 'processing_level' => $level,
116
- 'is_backed_up' => $is_backed_up,
117
- 'original_size' => $original_size,
118
- 'final_size' => $final_size,
119
- 'original_mime_type' => $attachment->post_mime_type,
120
- 'final_mime_type' => $attachment->post_mime_type,
121
- 'extra_data' => (string) $extra_data,
122
- 'created_at' => time(),
123
- ];
124
-
125
- $format = [
126
- '%s',
127
- '%d',
128
- '%s',
129
- '%s',
130
- '%s',
131
- '%s',
132
- '%d',
133
- '%d',
134
- '%d',
135
- '%s',
136
- '%s',
137
- '%s',
138
- '%d',
139
- ];
140
-
141
- $rows_inserted = $wpdb->insert( RIO_Process_Queue::table_name(), $data, $format );
142
-
143
- if ( $rows_inserted > 0 ) {
144
- $processed_items ++;
145
-
146
- $attachment_id = absint( $attachment->ID );
147
- $wpdb->query( "DELETE FROM {$wpdb->postmeta} WHERE post_id='{$attachment_id}' AND meta_key LIKE 'wio_%'" );
148
- }
149
- }
150
-
151
- $left_items = $attachments_total - $processed_items;
152
- $message = sprintf( __( 'left to migrate: %s items', 'robin-image-optimizer' ), $left_items );
153
- $need_more_time = true;
154
-
155
- WRIO_Logger::info( 'Succefull migrated ' . $processed_items . ' items.' );
156
- } else {
157
- WRIO_Logger::info( 'Succefull migrated all items. Finishing-up...' );
158
-
159
- // Assumed to be 2 after 010105.php migration
160
- RIO_Process_Queue::update_db_version(2);
161
-
162
- $need_more_time = false;
163
- $message = __( 'Finishing-up...', 'robin-image-optimizer' );
164
- }
165
-
166
- WRIO_Logger::memory_usage();
167
-
168
- wp_send_json_success( [
169
- 'need_more_time' => $need_more_time,
170
- 'message' => $message,
171
- ] );
172
- }
173
-
174
-
1
+ <?php
2
+ /**
3
+ * Ajax action to migrate old architecture based on post meta into new table.
4
+ *
5
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
6
+ * @author Alexander Teshabaev <sasha.tesh@gmail.com>
7
+ * @see RIO_Process_Queue for further information.
8
+ *
9
+ * @copyright (c) 2018 Webraftic Ltd
10
+ * @version 1.0
11
+ */
12
+
13
+ // Exit if accessed directly
14
+ if ( ! defined( 'ABSPATH' ) ) {
15
+ exit;
16
+ }
17
+
18
+ add_action( 'wp_ajax_wrio_meta_migrations', 'wbcr_rio_migrate_postmeta_to_process_queue' );
19
+
20
+ /**
21
+ * Migrating postmeta to newly created table.
22
+ *
23
+ * @author Alexander Teshabaev <sasha.tesh@gmail.com>
24
+ * @since 1.3.0
25
+ * @see RIO_Process_Queue as referce for new table.
26
+ */
27
+ function wbcr_rio_migrate_postmeta_to_process_queue() {
28
+ global $wpdb;
29
+
30
+ check_admin_referer( 'wrio-meta-migrations' );
31
+
32
+ if ( ! current_user_can( 'manage_options' ) ) {
33
+ wp_die( - 1 );
34
+ }
35
+
36
+ $error = (int) WRIO_Plugin::app()->request->post( 'error', 0 );
37
+
38
+ if ( $error ) {
39
+ WRIO_Plugin::app()->logger->error( 'Previous migration was not completed due to an error.' );
40
+ }
41
+
42
+ $limit = (int) WRIO_Plugin::app()->request->post( 'limit', 150 );
43
+
44
+ $processed_items = 0;
45
+
46
+ WRIO_Plugin::app()->logger->info( 'Start meta migration. Limit ' . $limit );
47
+ WRIO_Plugin::app()->logger->memory_usage();
48
+
49
+ $attachments = wbcr_rio_get_meta_to_migrate();
50
+
51
+ if ( isset( $attachments->posts ) && ( $attachments_total = count( $attachments->posts ) ) > 0 ) {
52
+
53
+ if ( $attachments_total < $limit ) {
54
+ $limit = $attachments_total;
55
+ }
56
+
57
+ WRIO_Plugin::app()->logger->info( 'Finded ' . $attachments_total . ' attachments for migration.' );
58
+
59
+ if ( function_exists( 'wp_raise_memory_limit' ) ) {
60
+ wp_raise_memory_limit( 'image' );
61
+ }
62
+
63
+ WRIO_Plugin::app()->logger->memory_usage();
64
+
65
+ /**
66
+ * @var WP_Post $attachment
67
+ */
68
+ for ( $i = 0; $i < $limit; $i ++ ) {
69
+ $attachment = $attachments->posts[ $i ];
70
+ $post_meta = get_post_custom( $attachment->ID );
71
+
72
+ $extra_data = new RIO_Attachment_Extra_Data();
73
+
74
+ $is_backed_up = false;
75
+ $original_size = 0;
76
+ $final_size = 0;
77
+
78
+ if ( isset( $post_meta['wio_backuped'][0] ) && $post_meta['wio_backuped'][0] ) {
79
+ $is_backed_up = true;
80
+ }
81
+
82
+ if ( isset( $post_meta['wio_thumbnails_count'][0] ) ) {
83
+ $extra_data->set_thumbnails_count( intval( $post_meta['wio_thumbnails_count'][0] ) );
84
+ }
85
+
86
+ if ( isset( $post_meta['wio_original_size'][0] ) ) {
87
+ $original_size = intval( $post_meta['wio_original_size'][0] );
88
+ }
89
+
90
+ if ( isset( $post_meta['wio_optimized_size'][0] ) ) {
91
+ $final_size = intval( $post_meta['wio_optimized_size'][0] );
92
+ }
93
+
94
+ if ( isset( $post_meta['wio_original_main_size'][0] ) ) {
95
+ $extra_data->set_original_main_size( intval( $post_meta['wio_original_main_size'][0] ) );
96
+ }
97
+
98
+ if ( isset( $post_meta['wio_error'][0] ) ) {
99
+ $extra_data->set_error( 'optimization' );
100
+ $extra_data->set_error_msg( $post_meta['wio_error'][0] );
101
+ }
102
+
103
+ $level = 'normal';
104
+
105
+ if ( isset( $post_meta['wio_optimization_level'][0] ) && ! empty( $post_meta['wio_optimization_level'][0] ) ) {
106
+ $level = $post_meta['wio_optimization_level'][0];
107
+ }
108
+
109
+ $data = [
110
+ 'server_id' => null,
111
+ 'object_id' => $attachment->ID,
112
+ 'object_name' => $wpdb->posts,
113
+ 'item_type' => 'attachment',
114
+ 'result_status' => ! $final_size ? 'error' : 'success',
115
+ 'processing_level' => $level,
116
+ 'is_backed_up' => $is_backed_up,
117
+ 'original_size' => $original_size,
118
+ 'final_size' => $final_size,
119
+ 'original_mime_type' => $attachment->post_mime_type,
120
+ 'final_mime_type' => $attachment->post_mime_type,
121
+ 'extra_data' => (string) $extra_data,
122
+ 'created_at' => time(),
123
+ ];
124
+
125
+ $format = [
126
+ '%s',
127
+ '%d',
128
+ '%s',
129
+ '%s',
130
+ '%s',
131
+ '%s',
132
+ '%d',
133
+ '%d',
134
+ '%d',
135
+ '%s',
136
+ '%s',
137
+ '%s',
138
+ '%d',
139
+ ];
140
+
141
+ $rows_inserted = $wpdb->insert( RIO_Process_Queue::table_name(), $data, $format );
142
+
143
+ if ( $rows_inserted > 0 ) {
144
+ $processed_items ++;
145
+
146
+ $attachment_id = absint( $attachment->ID );
147
+ $wpdb->query( "DELETE FROM {$wpdb->postmeta} WHERE post_id='{$attachment_id}' AND meta_key LIKE 'wio_%'" );
148
+ }
149
+ }
150
+
151
+ $left_items = $attachments_total - $processed_items;
152
+ $message = sprintf( __( 'left to migrate: %s items', 'robin-image-optimizer' ), $left_items );
153
+ $need_more_time = true;
154
+
155
+ WRIO_Plugin::app()->logger->info( 'Succefull migrated ' . $processed_items . ' items.' );
156
+ } else {
157
+ WRIO_Plugin::app()->logger->info( 'Succefull migrated all items. Finishing-up...' );
158
+
159
+ // Assumed to be 2 after 010105.php migration
160
+ RIO_Process_Queue::update_db_version( 2 );
161
+
162
+ $need_more_time = false;
163
+ $message = __( 'Finishing-up...', 'robin-image-optimizer' );
164
+ }
165
+
166
+ WRIO_Plugin::app()->logger->memory_usage();
167
+
168
+ wp_send_json_success( [
169
+ 'need_more_time' => $need_more_time,
170
+ 'message' => $message,
171
+ ] );
172
+ }
173
+
174
+
admin/ajax/multisite-update-current-blog.php CHANGED
@@ -1,29 +1,29 @@
1
- <?php
2
- /**
3
- * Ajax действие, которое выполняется для смены текущего multisite блога
4
- *
5
- * @author Webcraftic <wordpress.webraftic@gmail.com>
6
- * @copyright (c) 2018 Webraftic Ltd
7
- * @version 1.0
8
- */
9
-
10
- // Exit if accessed directly
11
- if ( ! defined( 'ABSPATH' ) ) {
12
- exit;
13
- }
14
-
15
- /*add_action( 'wp_ajax_wbcr_rio_update_current_blog', function () {
16
- check_ajax_referer( 'update_blog_id', 'wpnonce' );
17
- $blog_id = (int) WRIO_Plugin::app()->request->post( 'current_blog_id' );
18
- $context = sanitize_text_field( WRIO_Plugin::app()->request->post( 'context' ) );
19
- WRIO_Plugin::app()->updatePopulateOption( 'current_blog', $blog_id );
20
- $image_statistics = WIO_OptimizationTools::getImageStatistics( $context );
21
-
22
- switch_to_blog( $blog_id );
23
- $statistic_data = $image_statistics->load();
24
- restore_current_blog();
25
-
26
- wp_send_json_success( array(
27
- 'statistic' => $statistic_data,
28
- ) );
29
- } );*/
1
+ <?php
2
+ /**
3
+ * Ajax действие, которое выполняется для смены текущего multisite блога
4
+ *
5
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
6
+ * @copyright (c) 2018 Webraftic Ltd
7
+ * @version 1.0
8
+ */
9
+
10
+ // Exit if accessed directly
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit;
13
+ }
14
+
15
+ /*add_action( 'wp_ajax_wbcr_rio_update_current_blog', function () {
16
+ check_ajax_referer( 'update_blog_id', 'wpnonce' );
17
+ $blog_id = (int) WRIO_Plugin::app()->request->post( 'current_blog_id' );
18
+ $context = sanitize_text_field( WRIO_Plugin::app()->request->post( 'context' ) );
19
+ WRIO_Plugin::app()->updatePopulateOption( 'current_blog', $blog_id );
20
+ $image_statistics = WIO_OptimizationTools::getImageStatistics( $context );
21
+
22
+ switch_to_blog( $blog_id );
23
+ $statistic_data = $image_statistics->load();
24
+ restore_current_blog();
25
+
26
+ wp_send_json_success( array(
27
+ 'statistic' => $statistic_data,
28
+ ) );
29
+ } );*/
admin/ajax/settings.php CHANGED
@@ -1,37 +1,37 @@
1
- <?php
2
- /**
3
- * Ajax действие, которое выполняется при сохранении настроек
4
- *
5
- * @author Webcraftic <wordpress.webraftic@gmail.com>
6
- * @copyright (c) 2018 Webraftic Ltd
7
- * @version 1.0
8
- */
9
-
10
- // Exit if accessed directly
11
- if ( ! defined( 'ABSPATH' ) ) {
12
- exit;
13
- }
14
-
15
- /**
16
- * AJAX обработчик массовой сохранения уровня сжатия
17
- */
18
- add_action( 'wp_ajax_wio_settings_update_level', function () {
19
- check_admin_referer( 'wio-iph' );
20
-
21
- if ( ! current_user_can( 'manage_options' ) ) {
22
- wp_die( - 1 );
23
- }
24
-
25
- $level = sanitize_text_field( $_POST['level'] );
26
-
27
- if ( ! $level ) {
28
- die();
29
- }
30
-
31
- if ( ! in_array( $level, [ 'normal', 'aggresive', 'ultra' ] ) ) {
32
- die();
33
- }
34
-
35
- WRIO_Plugin::app()->updatePopulateOption( 'image_optimization_level', $level );
36
- die();
37
- } );
1
+ <?php
2
+ /**
3
+ * Ajax действие, которое выполняется при сохранении настроек
4
+ *
5
+ * @author Webcraftic <wordpress.webraftic@gmail.com>
6
+ * @copyright (c) 2018 Webraftic Ltd
7
+ * @version 1.0
8
+ */
9
+
10
+ // Exit if accessed directly
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit;
13
+ }
14
+
15
+ /**
16
+ * AJAX обработчик массовой сохранения уровня сжатия
17
+ */
18
+ add_action( 'wp_ajax_wio_settings_update_level', function () {
19
+ check_admin_referer( 'wio-iph' );
20
+
21
+ if ( ! current_user_can( 'manage_options' ) ) {
22
+ wp_die( - 1 );
23
+ }
24
+
25
+ $level = sanitize_text_field( $_POST['level'] );
26
+
27
+ if ( ! $level ) {
28
+ die();
29
+ }
30
+
31
+ if ( ! in_array( $level, [ 'normal', 'aggresive', 'ultra' ] ) ) {
32
+ die();
33
+ }
34
+
35
+ WRIO_Plugin::app()->updatePopulateOption( 'image_optimization_level', $level );
36
+ die();
37
+ } );
admin/assets/css/base-statistic.css CHANGED
@@ -1,676 +1,733 @@
1
- /**
2
- * Styles for the Widget to be displayed in the Clearfy plugin
3
-
4
- * @author Alex Kovalev <alex.kovalevv@gmail.com>
5
- * @copyright Webcraftic 14.06.2019
6
- */
7
- #WBCR {
8
- /* Doughnut */
9
- /*@media (max-width: 1380px) and (min-width: 1246px), (max-width: 380px) {
10
- .wio-overview-chart-container {
11
- float: none;
12
- margin-right: 0;
13
- }
14
- }
15
-
16
- @media (max-width: 1380px) and (min-width: 1246px), (max-width: 380px) {
17
- .wio-overview-chart-container {
18
- float: none;
19
- margin-right: 0;
20
- }
21
-
22
- .wio-doughnut-legend {
23
- margin-top: 18px;
24
- }
25
-
26
- .wio-global-optim-phrase {
27
- padding-top: 0;
28
- width: auto;
29
- }
30
- }*/
31
- }
32
- #WBCR .wio-clear {
33
- clear: both;
34
- }
35
- #WBCR #io_folders_statistic-wbcr_clearfy-tab,
36
- #WBCR #io_nextgen_gallery_statistic-wbcr_clearfy-tab {
37
- display: none !important;
38
- }
39
- #WBCR .wrio-statistic-nav {
40
- margin: 0;
41
- background: #efefef;
42
- }
43
- #WBCR .wrio-statistic-nav ul {
44
- margin: 0;
45
- }
46
- #WBCR .wrio-statistic-nav ul li {
47
- position: relative;
48
- display: inline-block;
49
- margin: 0 0 0 0;
50
- background: #ffffff;
51
- box-shadow: 0 -2px 0 #eaeaea;
52
- }
53
- #WBCR .wrio-statistic-nav ul li:hover {
54
- background: #f7f7f7;
55
- }
56
- #WBCR .wrio-statistic-nav ul li.active {
57
- background: #f7f7f7;
58
- border-top: 1px solid #d4d4d4;
59
- border-left: 1px solid #d4d4d4;
60
- border-right: 1px solid #d4d4d4;
61
- border-bottom: 1px solid #f7f7f7;
62
- margin-bottom: -1px;
63
- }
64
- #WBCR .wrio-statistic-nav ul li.active a {
65
- color: #222;
66
- }
67
- #WBCR .wrio-statistic-nav ul li.active a .wrio-statistic-tab-percent {
68
- border: 2px dashed #8bc34a;
69
- color: #5e8237;
70
- }
71
- #WBCR .wrio-statistic-nav ul li.active .dashicons,
72
- #WBCR .wrio-statistic-nav ul li.active .dashicons-before:before {
73
- color: #ff8b66;
74
- }
75
- #WBCR .wrio-statistic-nav ul li .wrio-statistic-tab {
76
- display: block;
77
- padding: 10px 20px 10px 20px;
78
- text-decoration: none;
79
- color: #d4d4d4;
80
- font-size: 22px;
81
- line-height: 2;
82
- }
83
- #WBCR .wrio-statistic-nav ul li .wrio-statistic-tab:active,
84
- #WBCR .wrio-statistic-nav ul li .wrio-statistic-tab:focus {
85
- background: 0;
86
- box-shadow: none;
87
- outline: none;
88
- }
89
- #WBCR .wrio-statistic-nav ul li .wrio-statistic-tab .dashicons,
90
- #WBCR .wrio-statistic-nav ul li .wrio-statistic-tab .dashicons-before:before {
91
- display: inline-block;
92
- width: 30px;
93
- height: 30px;
94
- font-size: 30px;
95
- line-height: 1.5;
96
- margin-right: 15px;
97
- color: #d4d4d4;
98
- }
99
- #WBCR .wrio-statistic-nav ul li .wrio-statistic-tab .wrio-statistic-tab-percent {
100
- display: inline-block;
101
- width: 42px;
102
- height: 42px;
103
- border-radius: 100px;
104
- border: 2px dashed #e4e4e4;
105
- padding: 5px;
106
- margin-left: 30px;
107
- font-size: 14px;
108
- font-weight: 600;
109
- text-align: center;
110
- color: #bdbdbd;
111
- }
112
- #WBCR .wrio-statistic-nav ul li .wrio-statistic-tab-premium-label:after {
113
- display: inline-block;
114
- position: absolute;
115
- content: 'PRO';
116
- background: #ff5722;
117
- border-radius: 4px;
118
- color: #fff;
119
- font-size: 10px;
120
- line-height: 1;
121
- font-style: normal;
122
- padding: 4px 6px;
123
- margin-left: 4px;
124
- vertical-align: top;
125
- top: 10px;
126
- left: auto;
127
- right: 10px;
128
- z-index: 11;
129
- }
130
- #WBCR .wrio-table {
131
- width: 100%;
132
- table-layout: fixed;
133
- box-sizing: border-box;
134
- border-spacing: 3px;
135
- background: #fff;
136
- border-top: 2px dashed #cac9c9;
137
- }
138
- #WBCR .wrio-table th,
139
- #WBCR .wrio-table td {
140
- padding: 16px 10px;
141
- text-align: center;
142
- }
143
- #WBCR .wrio-table th {
144
- background: #f3f3f3;
145
- color: #777777;
146
- box-shadow: 0 1px 0 #d8d8d8;
147
- }
148
- #WBCR .wrio-table th:nth-child(2n+1) {
149
- background: #f9f9f9;
150
- }
151
- #WBCR .wrio-table tr.wrio-error {
152
- background-color: #ffe9e9 !important;
153
- }
154
- #WBCR .wrio-table .wrio-table-spinner {
155
- background: url("../img/quick-start-loader.gif") center center no-repeat;
156
- }
157
- #WBCR .wrio-table .wrio-table-highlighter {
158
- display: inline-block;
159
- padding: 3px 7px;
160
- background: #f3f3f3;
161
- }
162
- #WBCR .wrio-table .wbcr-rio-server-success {
163
- color: #8CC152;
164
- }
165
- #WBCR .wrio-table .wbcr-rio-server-error {
166
- color: #fb5d49;
167
- }
168
- #WBCR .wrio-table .wbcr-rio-server-warning {
169
- color: #ffb635;
170
- }
171
- #WBCR .wrio-table.wbcr-rio-folders-table td:nth-child(3) {
172
- text-align: left;
173
- }
174
- #WBCR .wrio-servers {
175
- padding: 40px 20px;
176
- }
177
- #WBCR .wrio-servers label span {
178
- display: block;
179
- font-weight: normal;
180
- font-size: 12px;
181
- color: #b7b2b2;
182
- }
183
- #WBCR .wrio-servers #wrio-change-optimization-server {
184
- position: relative;
185
- display: inline-block;
186
- max-width: 400px;
187
- margin-right: 15px;
188
- margin-bottom: 0;
189
- border: 1px solid #d2d0d0;
190
- background: #efefef;
191
- }
192
- #WBCR .wrio-servers .wrio-servers-info {
193
- margin: 0 0 0;
194
- padding: 20px;
195
- background: #fff;
196
- }
197
- #WBCR .wrio-servers .wrio-server-status-wrap {
198
- display: inline-block;
199
- margin-top: 8px;
200
- }
201
- #WBCR .wrio-servers .wrio-server-status-wrap .wrio-server-status {
202
- background: transparent;
203
- color: #fff;
204
- padding: 3px 5px;
205
- border-radius: 4px;
206
- }
207
- #WBCR .wrio-servers .wrio-server-status-wrap .wrio-server-status.wrio-down {
208
- background: #ff5722;
209
- }
210
- #WBCR .wrio-servers .wrio-server-status-wrap .wrio-server-status.wrio-stable {
211
- background: #8bc34a;
212
- }
213
- #WBCR .wrio-servers .wrio-server-status-wrap .wrio-server-status.wrio-server-check-proccess {
214
- display: inline-block;
215
- height: 10px;
216
- width: 30px;
217
- background: url("../img/quick-start-loader.gif") center no-repeat;
218
- }
219
- #WBCR .wrio-servers .wrio-premium-user-balance-wrap, .wrio-premium-user-update-wrap {
220
- display: inline-block;
221
- margin-top: 8px;
222
- margin-left: 10px;
223
- }
224
- #WBCR .wrio-servers .wrio-premium-user-balance-wrap .wrio-premium-user-balance, .wrio-premium-user-update-wrap .wrio-premium-user-update {
225
- color: #fff;
226
- padding: 3px 5px;
227
- border-radius: 4px;
228
- background: #ffc107;
229
- }
230
- #WBCR .wrio-servers .wrio-premium-user-balance-wrap .wrio-premium-user-balance-check-proccess,
231
- .wrio-premium-user-update-wrap .wrio-premium-user-update-check-proccess {
232
- display: inline-block;
233
- height: 10px;
234
- width: 30px;
235
- background: url("../img/quick-start-loader.gif") center no-repeat;
236
- }
237
- #WBCR .wio-columns {
238
- overflow: hidden;
239
- padding: 15px 0;
240
- counter-reset: cols;
241
- }
242
- #WBCR .wio-columns [class^="col-"] {
243
- float: left;
244
- -webkit-box-sizing: border-box;
245
- -moz-box-sizing: border-box;
246
- box-sizing: border-box;
247
- }
248
- #WBCR .wio-columns .col-1-3 {
249
- width: 33.333%;
250
- padding-left: 28px;
251
- }
252
- #WBCR .wio-columns .col-2-3 {
253
- width: 66.666%;
254
- padding-left: 28px;
255
- }
256
- #WBCR .wio-columns .col-1-2 {
257
- width: 50%;
258
- padding: 0 20px;
259
- }
260
- #WBCR .wio-columns .col-statistics.col-statistics {
261
- width: 60%;
262
- }
263
- #WBCR .wio-columns .col-chart.col-chart {
264
- width: 40%;
265
- position: relative;
266
- padding: 20px;
267
- font-size: 12px;
268
- text-transform: uppercase;
269
- background: #f1f1f1b3;
270
- color: #abacaf;
271
- font-weight: bold;
272
- border-radius: 5px;
273
- margin-top: 10px;
274
- text-align: left;
275
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
276
- }
277
- #WBCR .wio-col {
278
- float: left;
279
- width: 50%;
280
- box-sizing: border-box;
281
- -webkit-flex-basis: 50%;
282
- -ms-flex-preferred-size: 50%;
283
- flex-basis: 50%;
284
- }
285
- #WBCR .wio-col {
286
- padding-right: 20px;
287
- }
288
- #WBCR .wio-col + .wio-col {
289
- padding-right: 0;
290
- padding-left: 50px;
291
- }
292
- #WBCR .wio-col:target {
293
- animation: wiohello 1s 3 linear backwards;
294
- }
295
- #WBCR .wio-number-you-optimized {
296
- margin-bottom: 1.35em;
297
- overflow: hidden;
298
- }
299
- #WBCR .wio-number-you-optimized #wio-total-optimized-attachments-pct {
300
- color: #828282;
301
- }
302
- #WBCR .wio-number-you-optimized .wio-number {
303
- display: table-cell;
304
- padding-right: 15px;
305
- font-size: 48px;
306
- font-weight: bold;
307
- line-height: 1;
308
- vertical-align: middle;
309
- white-space: nowrap;
310
- color: #828282;
311
- }
312
- #WBCR .wio-number-you-optimized .wio-text {
313
- display: table-cell;
314
- vertical-align: middle;
315
- overflow: hidden;
316
- font-size: 12px;
317
- color: #828282;
318
- }
319
- #WBCR .wio-number-you-optimized > p {
320
- display: table;
321
- }
322
- #WBCR .wio-bars {
323
- padding-right: 15px;
324
- }
325
- #WBCR .wio-bars p {
326
- font-size: 12px;
327
- margin-bottom: 5px;
328
- }
329
- #WBCR .wio-bars + .wio-number-you-optimized {
330
- border-bottom: 0;
331
- padding-top: 0.85em;
332
- }
333
- #WBCR .wio-bars + .wio-number-you-optimized p {
334
- color: #72a53b;
335
- }
336
- #WBCR .wio-bar-negative .wio-progress {
337
- background: #D2D3D6;
338
- }
339
- #WBCR .wio-bar-negative .wio-barnb {
340
- color: #9d9fa5;
341
- }
342
- #WBCR .wio-progress {
343
- height: 8px;
344
- transition: width 0.3s;
345
- /*.wio-bar-negative {
346
- width: 92% !important;
347
- }*/
348
- }
349
- #WBCR .wio-bar-positive .wio-progress {
350
- background: #8CC152;
351
- }
352
- #WBCR .wio-bar-positive .wio-barnb {
353
- color: #72a53b;
354
- }
355
- #WBCR .wio-bar-primary .wio-progress {
356
- background: #8CC152;
357
- }
358
- #WBCR .wio-bar-primary .wio-barnb {
359
- color: #72a53b;
360
- }
361
- #WBCR .wio-right-outside-number .wio-barnb {
362
- display: block;
363
- margin-right: -5.25em;
364
- text-align: right;
365
- font-weight: bold;
366
- line-height: 0.8;
367
- }
368
- #WBCR .wio-chart {
369
- position: relative;
370
- top: 1px;
371
- display: inline-block;
372
- vertical-align: middle;
373
- }
374
- #WBCR .wio-chart-container {
375
- position: relative;
376
- display: inline-block;
377
- margin-right: 5px;
378
- }
379
- #WBCR .wio-chart-container canvas {
380
- display: block;
381
- }
382
- #WBCR .wio-overview-chart-container {
383
- float: left;
384
- margin-right: 20px;
385
- }
386
- #WBCR .wio-chart-percent {
387
- position: absolute;
388
- left: 0;
389
- right: 0;
390
- top: 50%;
391
- margin-top: -0.5em;
392
- line-height: 0.8;
393
- text-align: center;
394
- font-size: 54px;
395
- font-weight: bold;
396
- color: #afafaf;
397
- }
398
- #WBCR .wio-chart-percent span {
399
- font-size: 20px;
400
- vertical-align: super;
401
- }
402
- #WBCR #wio-overview-chart-legend {
403
- overflow: hidden;
404
- }
405
- #WBCR .wio-doughnut-legend li {
406
- display: inline-block;
407
- position: relative;
408
- margin-bottom: 15px;
409
- border-radius: 5px;
410
- padding: 3px 8px 2px 31px;
411
- font-size: 9px;
412
- cursor: default;
413
- -webkit-transition: background-color 200ms ease-in-out;
414
- -moz-transition: background-color 200ms ease-in-out;
415
- -o-transition: background-color 200ms ease-in-out;
416
- transition: background-color 200ms ease-in-out;
417
- }
418
- #WBCR .wio-doughnut-legend li span {
419
- display: block;
420
- position: absolute;
421
- left: 0;
422
- top: 0;
423
- width: 25px;
424
- height: 25px;
425
- border-radius: 50%;
426
- }
427
- #WBCR .wio-optimize-button {
428
- min-width: 180px;
429
- padding: 12px 30px;
430
- background: #c9deb2;
431
- color: #586549;
432
- border: 0;
433
- box-shadow: none;
434
- font-size: 14px;
435
- text-transform: uppercase !important;
436
- font-weight: bold;
437
- border-radius: 4px;
438
- outline: none;
439
- }
440
- #WBCR .wio-optimize-button:active {
441
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
442
- }
443
- #WBCR .wio-optimize-button:disabled {
444
- background: #e2edd6;
445
- color: #a5b295;
446
- }
447
- #WBCR .wio-optimize-button.wio-running {
448
- color: #a57b3c;
449
- background: #fdd599 url("../img/Spinner-1s-33px.gif") 10px center no-repeat;
450
- padding-left: 50px;
451
- }
452
- #WBCR .wio-global-optim-phrase {
453
- width: 180px;
454
- padding-top: 20px;
455
- font-size: 14px;
456
- text-align: center;
457
- }
458
- #WBCR .wio-total-percent {
459
- color: #587f2e;
460
- }
461
- #WBCR #wio-start-msg-top,
462
- #WBCR #wio-start-msg-right,
463
- #WBCR #wio-start-msg-complete {
464
- display: none;
465
- }
466
- #WBCR .wio-text-left {
467
- text-align: left;
468
- }
469
- #WBCR span.wio-num {
470
- display: inline !important;
471
- position: inherit !important;
472
- }
473
- #WBCR .wio-image-optimize-board {
474
- padding-bottom: 0 !important;
475
- }
476
- #WBCR .wio-page-statistic {
477
- padding-left: 40px;
478
- }
479
- #WBCR .wio-page-statistic .wio-chart-percent {
480
- margin-top: -1.1em;
481
- }
482
- #WBCR .wrio-optimization-progress {
483
- background: none;
484
- padding: 0;
485
- /*button {
486
- padding: 5px 10px;
487
- border: 0;
488
- font-size: 11px;
489
- text-transform: uppercase !important;
490
- font-weight: bold;
491
- border-radius: 4px;
492
- outline: none;
493
- background: @greyButtonBg;
494
- color: @greyButtonColor;
495
- box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
496
-
497
- &:active {
498
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
499
- }
500
-
501
- &.wbcr-rio-loading {
502
- width: 56px;
503
- font-size: 0;
504
- background: @greyButtonBg url("../img/quick-start-loader.gif") center no-repeat;
505
- }
506
-
507
- &.wbcr-rio-selected {
508
- background: #f3efe2;
509
- color: #d8d8d8;
510
-
511
- &:active {
512
- box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
513
- }
514
- }
515
- }*/
516
- }
517
- #WBCR .wrio-optimization-progress h4 {
518
- font-size: 15px;
519
- font-weight: 700;
520
- }
521
- #WBCR .wrio-optimization-progress .wbcr-rio-warning-message {
522
- padding: 20px;
523
- background: #efefef;
524
- font-size: 15px;
525
- color: #b7b7b7;
526
- font-style: italic;
527
- }
528
- #WBCR .wio-widget {
529
- padding: 0 !important;
530
- }
531
- #WBCR .wio-widget .wio-chart-percent {
532
- font-size: 44px;
533
- line-height: 1;
534
- }
535
- #WBCR .wio-widget .wio-bars {
536
- width: 60%;
537
- margin-left: 155px;
538
- }
539
- #WBCR .wio-widget .col-chart.col-chart {
540
- width: 100%;
541
- }
542
- #WBCR .wio-widget .col-controls {
543
- width: 45%;
544
- padding-left: 5px;
545
- padding-top: 110px;
546
- }
547
- #WBCR .wio-widget .wio-doughnut-legend {
548
- /*padding-top:30px;*/
549
- text-align: left;
550
- }
551
- #WBCR .wio-widget .wio-widget-bottom {
552
- display: table;
553
- padding-top: 20px !important;
554
- width: 100%;
555
- text-align: right;
556
- }
557
- #WBCR .wio-widget .wio-widget-bottom li {
558
- display: table-cell;
559
- }
560
- #WBCR .wio-widget .wio-widget-bottom li:first-child {
561
- text-align: left;
562
- }
563
- #WBCR .factory-checkbox.wrio-checkbox-premium-label:after {
564
- display: inline-block;
565
- position: relative;
566
- content: 'PRO';
567
- background: #ff5722;
568
- border-radius: 4px;
569
- color: #fff;
570
- font-size: 10px;
571
- line-height: 1;
572
- font-style: normal;
573
- padding: 4px 6px;
574
- margin-left: 4px;
575
- vertical-align: top;
576
- top: -8px;
577
- left: -10px;
578
- right: auto;
579
- z-index: 11;
580
- }
581
- #WBCR .factory-checkbox-disabled input,
582
- #WBCR .factory-checkbox-disabled button {
583
- pointer-events: none;
584
- cursor: not-allowed;
585
- opacity: 0.65;
586
- filter: alpha(opacity=65);
587
- -webkit-box-shadow: none;
588
- box-shadow: none;
589
- }
590
- #WBCR #wrio-webp-options h3,
591
- #WBCR #wrio-error-log-options h3 {
592
- font-size: 14px;
593
- margin: 0 0 10px 0;
594
- font-weight: 600;
595
- color: #565656;
596
- }
597
- #WBCR #wrio-webp-options .wrio-webp-options-info,
598
- #WBCR #wrio-error-log-options .wrio-webp-options-info {
599
- color: #8a8787;
600
- font-size: 12px;
601
- }
602
- #WBCR #wrio-webp-options ul,
603
- #WBCR #wrio-error-log-options ul {
604
- padding-left: 0;
605
- }
606
- #WBCR #wrio-webp-options ul li:after,
607
- #WBCR #wrio-error-log-options ul li:after {
608
- content: '';
609
- display: block;
610
- clear: both;
611
- }
612
- #WBCR #wrio-webp-options ul li label,
613
- #WBCR #wrio-error-log-options ul li label {
614
- font-weight: 600;
615
- }
616
- #WBCR #wrio-webp-options ul li .wrio-webp-options-radio,
617
- #WBCR #wrio-error-log-options ul li .wrio-webp-options-radio,
618
- #WBCR #wrio-webp-options ul li .wrio-error-log-options-checkbox,
619
- #WBCR #wrio-error-log-options ul li .wrio-error-log-options-checkbox {
620
- display: block;
621
- float: left;
622
- margin-top: 2px;
623
- margin-right: 8px;
624
- }
625
- #WBCR #wrio-webp-options ul li .wrio-webp-options-radio:focus,
626
- #WBCR #wrio-error-log-options ul li .wrio-webp-options-radio:focus,
627
- #WBCR #wrio-webp-options ul li .wrio-error-log-options-checkbox:focus,
628
- #WBCR #wrio-error-log-options ul li .wrio-error-log-options-checkbox:focus {
629
- outline: none;
630
- box-shadow: none;
631
- }
632
- #WBCR #wrio-webp-options ul li .wrio-webp-options-info,
633
- #WBCR #wrio-error-log-options ul li .wrio-webp-options-info,
634
- #WBCR #wrio-webp-options ul li .wrio-error-log-options-info,
635
- #WBCR #wrio-error-log-options ul li .wrio-error-log-options-info {
636
- padding-left: 25px;
637
- }
638
- @media (max-width: 830px) {
639
- #WBCR .wio [class^="col-"] {
640
- float: none;
641
- margin-bottom: 1.5em;
642
- }
643
- #WBCR .wio .col-1-3,
644
- #WBCR .wio .col-1-2 {
645
- width: auto;
646
- padding: 0 28px;
647
- clear: both;
648
- padding-top: 1em;
649
- }
650
- }
651
- @keyframes wiohello {
652
- 0%,
653
- 100% {
654
- background: #FFF;
655
- }
656
- 50% {
657
- background: #F4F7F9;
658
- }
659
- }
660
- @media (max-width: 1520px) and (min-width: 1381px), (max-width: 1086px) {
661
- #WBCR .wio-columns .col-statistics.col-statistics,
662
- #WBCR .wio-columns .col-chart.col-chart {
663
- width: 50%;
664
- }
665
- }
666
- @media (max-width: 808px) {
667
- #WBCR .wio-columns .col-statistics.col-statistics,
668
- #WBCR .wio-columns .col-chart.col-chart {
669
- width: auto;
670
- float: none;
671
- padding: 0;
672
- }
673
- #WBCR .wio-columns .col-chart.col-chart {
674
- margin-top: 3em;
675
- }
676
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Styles for the Widget to be displayed in the Clearfy plugin
3
+
4
+ * @author Alex Kovalev <alex.kovalevv@gmail.com>
5
+ * @copyright Webcraftic 14.06.2019
6
+ */
7
+ #WBCR {
8
+ /* Doughnut */
9
+ /*@media (max-width: 1380px) and (min-width: 1246px), (max-width: 380px) {
10
+ .wio-overview-chart-container {
11
+ float: none;
12
+ margin-right: 0;
13
+ }
14
+ }
15
+
16
+ @media (max-width: 1380px) and (min-width: 1246px), (max-width: 380px) {
17
+ .wio-overview-chart-container {
18
+ float: none;
19
+ margin-right: 0;
20
+ }
21
+
22
+ .wio-doughnut-legend {
23
+ margin-top: 18px;
24
+ }
25
+
26
+ .wio-global-optim-phrase {
27
+ padding-top: 0;
28
+ width: auto;
29
+ }
30
+ }*/
31
+ }
32
+ #WBCR .factory-bootstrap-446 select.form-control {
33
+ background: #efefef url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E) no-repeat right 5px top 55% !important;
34
+ }
35
+ #WBCR .factory-bootstrap-446 .btn-default.active,
36
+ #WBCR .factory-bootstrap-446 .factory-bootstrap-446 .btn-default:active {
37
+ text-shadow: none;
38
+ color: #fff;
39
+ background-color: #33aad5;
40
+ -webkit-box-shadow: inset 0 1px 1px #0074a2;
41
+ box-shadow: inset 0 1px 3px #0074a2;
42
+ border-top: 1px solid #0074a2;
43
+ border-bottom: 1px solid #0074a2;
44
+ border-left: 1px solid #0074a2;
45
+ }
46
+ #WBCR .factory-bootstrap-446 .btn-group > .btn:last-of-type {
47
+ border-top-right-radius: 3px;
48
+ border-bottom-right-radius: 3px;
49
+ }
50
+ #WBCR .wio-clear {
51
+ clear: both;
52
+ }
53
+ #WBCR #io_folders_statistic-wbcr_clearfy-tab,
54
+ #WBCR #io_nextgen_gallery_statistic-wbcr_clearfy-tab {
55
+ display: none !important;
56
+ }
57
+ #WBCR .wrio-statistic-nav {
58
+ margin: 0;
59
+ background: #efefef;
60
+ }
61
+ #WBCR .wrio-statistic-nav ul {
62
+ margin: 0 0 0 10px;
63
+ }
64
+ #WBCR .wrio-statistic-nav ul li {
65
+ position: relative;
66
+ display: inline-block;
67
+ margin: 0 5px 0 0;
68
+ background: #ffffff;
69
+ box-shadow: 0 -2px 0 #eaeaea;
70
+ }
71
+ #WBCR .wrio-statistic-nav ul li:hover {
72
+ background: #f7f7f7;
73
+ }
74
+ #WBCR .wrio-statistic-nav ul li.active {
75
+ background: #f7f7f7;
76
+ border-top: 1px solid #d4d4d4;
77
+ border-left: 1px solid #d4d4d4;
78
+ border-right: 1px solid #d4d4d4;
79
+ border-bottom: 1px solid #f7f7f7;
80
+ margin-bottom: -1px;
81
+ }
82
+ #WBCR .wrio-statistic-nav ul li.active a {
83
+ color: #222;
84
+ }
85
+ #WBCR .wrio-statistic-nav ul li.active a .wrio-statistic-tab-percent {
86
+ border: 2px dashed #8bc34a;
87
+ color: #5e8237;
88
+ }
89
+ #WBCR .wrio-statistic-nav ul li.active .dashicons,
90
+ #WBCR .wrio-statistic-nav ul li.active .dashicons-before:before {
91
+ color: #ff8b66;
92
+ }
93
+ #WBCR .wrio-statistic-nav ul li .wrio-statistic-tab {
94
+ display: block;
95
+ padding: 10px 20px 10px 20px;
96
+ text-decoration: none;
97
+ color: #d4d4d4;
98
+ font-size: 22px;
99
+ line-height: 2;
100
+ }
101
+ #WBCR .wrio-statistic-nav ul li .wrio-statistic-tab:active,
102
+ #WBCR .wrio-statistic-nav ul li .wrio-statistic-tab:focus {
103
+ background: 0;
104
+ box-shadow: none;
105
+ outline: none;
106
+ }
107
+ #WBCR .wrio-statistic-nav ul li .wrio-statistic-tab .dashicons,
108
+ #WBCR .wrio-statistic-nav ul li .wrio-statistic-tab .dashicons-before:before {
109
+ display: inline-block;
110
+ width: 30px;
111
+ height: 30px;
112
+ font-size: 30px;
113
+ line-height: 1.5;
114
+ margin-right: 15px;
115
+ color: #d4d4d4;
116
+ }
117
+ #WBCR .wrio-statistic-nav ul li .wrio-statistic-tab .wrio-statistic-tab-percent {
118
+ display: inline-block;
119
+ width: 42px;
120
+ height: 42px;
121
+ border-radius: 100px;
122
+ border: 2px dashed #e4e4e4;
123
+ padding: 5px;
124
+ margin-left: 30px;
125
+ font-size: 14px;
126
+ font-weight: 600;
127
+ text-align: center;
128
+ color: #bdbdbd;
129
+ }
130
+ #WBCR .wrio-statistic-nav ul li .wrio-statistic-tab-premium-label:after {
131
+ display: inline-block;
132
+ position: absolute;
133
+ content: 'PRO';
134
+ background: #ff5722;
135
+ border-radius: 4px;
136
+ color: #fff;
137
+ font-size: 10px;
138
+ line-height: 1;
139
+ font-style: normal;
140
+ padding: 4px 6px;
141
+ margin-left: 4px;
142
+ vertical-align: top;
143
+ top: 10px;
144
+ left: auto;
145
+ right: 10px;
146
+ z-index: 11;
147
+ }
148
+ #WBCR .wrio-table {
149
+ width: 100%;
150
+ table-layout: fixed;
151
+ box-sizing: border-box;
152
+ border-spacing: 3px;
153
+ background: #fff;
154
+ border-top: 2px dashed #cac9c9;
155
+ }
156
+ #WBCR .wrio-table th,
157
+ #WBCR .wrio-table td {
158
+ padding: 16px 10px;
159
+ text-align: center;
160
+ }
161
+ #WBCR .wrio-table th {
162
+ background: #f3f3f3;
163
+ color: #777777;
164
+ box-shadow: 0 1px 0 #d8d8d8;
165
+ }
166
+ #WBCR .wrio-table th:nth-child(2n+1) {
167
+ background: #f9f9f9;
168
+ }
169
+ #WBCR .wrio-table tr.wrio-error {
170
+ background-color: #ffe9e9 !important;
171
+ }
172
+ #WBCR .wrio-table .wrio-table-spinner {
173
+ background: url("../img/quick-start-loader.gif") center center no-repeat;
174
+ }
175
+ #WBCR .wrio-table .wrio-table-highlighter {
176
+ display: inline-block;
177
+ padding: 3px 7px;
178
+ background: #f3f3f3;
179
+ }
180
+ #WBCR .wrio-table .wbcr-rio-server-success {
181
+ color: #8CC152;
182
+ }
183
+ #WBCR .wrio-table .wbcr-rio-server-error {
184
+ color: #fb5d49;
185
+ }
186
+ #WBCR .wrio-table .wbcr-rio-server-warning {
187
+ color: #ffb635;
188
+ }
189
+ #WBCR .wrio-table.wbcr-rio-folders-table td:nth-child(3) {
190
+ text-align: left;
191
+ }
192
+ #WBCR .wrio-servers {
193
+ padding: 20px 20px;
194
+ }
195
+ #WBCR .wrio-servers label span {
196
+ display: block;
197
+ font-weight: normal;
198
+ font-size: 12px;
199
+ color: #b7b2b2;
200
+ }
201
+ #WBCR .wrio-servers #wrio-change-optimization-server {
202
+ position: relative;
203
+ display: inline-block;
204
+ max-width: 400px;
205
+ margin-right: 15px;
206
+ margin-bottom: 0;
207
+ border: 1px solid #d2d0d0;
208
+ background-color: #efefef;
209
+ }
210
+ #WBCR .wrio-servers .wrio-servers-info {
211
+ margin: 0 0 0;
212
+ padding: 20px;
213
+ background: #fff;
214
+ }
215
+ #WBCR .wrio-servers .wrio-server-status-wrap {
216
+ display: inline-block;
217
+ margin-top: 8px;
218
+ }
219
+ #WBCR .wrio-servers .wrio-server-status-wrap .wrio-server-status {
220
+ background: transparent;
221
+ color: #fff;
222
+ padding: 3px 5px;
223
+ border-radius: 4px;
224
+ }
225
+ #WBCR .wrio-servers .wrio-server-status-wrap .wrio-server-status.wrio-down {
226
+ background: #ff5722;
227
+ }
228
+ #WBCR .wrio-servers .wrio-server-status-wrap .wrio-server-status.wrio-stable {
229
+ background: #8bc34a;
230
+ }
231
+ #WBCR .wrio-servers .wrio-server-status-wrap .wrio-server-status.wrio-server-check-proccess {
232
+ display: inline-block;
233
+ height: 10px;
234
+ width: 30px;
235
+ background: url("../img/quick-start-loader.gif") center no-repeat;
236
+ }
237
+ #WBCR .wrio-servers .wrio-premium-user-balance-wrap {
238
+ display: inline-block;
239
+ margin-top: 8px;
240
+ margin-left: 10px;
241
+ }
242
+ #WBCR .wrio-servers .wrio-premium-user-balance-wrap .wrio-premium-user-balance {
243
+ color: #fff;
244
+ padding: 3px 5px;
245
+ border-radius: 4px;
246
+ background: #ffc107;
247
+ }
248
+ #WBCR .wrio-servers .wrio-premium-user-balance-wrap .wrio-premium-user-balance-check-proccess {
249
+ display: inline-block;
250
+ height: 10px;
251
+ width: 30px;
252
+ background: url("../img/quick-start-loader.gif") center no-repeat;
253
+ }
254
+ #WBCR .wrio-servers .wrio-premium-user-update-wrap {
255
+ display: inline-block;
256
+ margin-top: 8px;
257
+ margin-left: 10px;
258
+ }
259
+ #WBCR .wrio-servers .wrio-premium-user-update-wrap .wrio-premium-user-update {
260
+ color: #fff;
261
+ padding: 3px 5px;
262
+ border-radius: 4px;
263
+ background: #ffc107;
264
+ }
265
+ #WBCR .wrio-servers .wrio-premium-user-update-wrap .wrio-premium-user-update-check-proccess {
266
+ display: inline-block;
267
+ height: 10px;
268
+ width: 30px;
269
+ background: url("../img/quick-start-loader.gif") center no-repeat;
270
+ }
271
+ #WBCR .wio-columns {
272
+ overflow: hidden;
273
+ padding: 15px 0;
274
+ counter-reset: cols;
275
+ }
276
+ #WBCR .wio-columns [class^="col-"] {
277
+ float: left;
278
+ -webkit-box-sizing: border-box;
279
+ -moz-box-sizing: border-box;
280
+ box-sizing: border-box;
281
+ }
282
+ #WBCR .wio-columns .col-1-3 {
283
+ width: 33.333%;
284
+ padding-left: 28px;
285
+ }
286
+ #WBCR .wio-columns .col-2-3 {
287
+ width: 66.666%;
288
+ padding-left: 28px;
289
+ }
290
+ #WBCR .wio-columns .col-1-2 {
291
+ width: 50%;
292
+ padding: 0 20px;
293
+ }
294
+ #WBCR .wio-columns .col-statistics.col-statistics {
295
+ width: 60%;
296
+ }
297
+ #WBCR .wio-columns .col-chart.col-chart {
298
+ width: 40%;
299
+ position: relative;
300
+ padding: 20px;
301
+ font-size: 12px;
302
+ text-transform: uppercase;
303
+ background: #f1f1f1b3;
304
+ color: #abacaf;
305
+ font-weight: bold;
306
+ border-radius: 5px;
307
+ margin-top: 10px;
308
+ text-align: left;
309
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
310
+ }
311
+ #WBCR .wio-col {
312
+ float: left;
313
+ width: 50%;
314
+ box-sizing: border-box;
315
+ -webkit-flex-basis: 50%;
316
+ -ms-flex-preferred-size: 50%;
317
+ flex-basis: 50%;
318
+ }
319
+ #WBCR .wio-col {
320
+ padding-right: 20px;
321
+ }
322
+ #WBCR .wio-col + .wio-col {
323
+ padding-right: 0;
324
+ padding-left: 50px;
325
+ }
326
+ #WBCR .wio-col:target {
327
+ animation: wiohello 1s 3 linear backwards;
328
+ }
329
+ #WBCR .wio-number-you-optimized {
330
+ margin-bottom: 1.35em;
331
+ overflow: hidden;
332
+ }
333
+ #WBCR .wio-number-you-optimized #wio-total-optimized-attachments-pct {
334
+ color: #828282;
335
+ }
336
+ #WBCR .wio-number-you-optimized .wio-number {
337
+ display: table-cell;
338
+ padding-right: 15px;
339
+ font-size: 48px;
340
+ font-weight: bold;
341
+ line-height: 1;
342
+ vertical-align: middle;
343
+ white-space: nowrap;
344
+ color: #828282;
345
+ }
346
+ #WBCR .wio-number-you-optimized .wio-text {
347
+ display: table-cell;
348
+ vertical-align: middle;
349
+ overflow: hidden;
350
+ font-size: 12px;
351
+ color: #828282;
352
+ }
353
+ #WBCR .wio-number-you-optimized > p {
354
+ display: table;
355
+ }
356
+ #WBCR .wio-bars {
357
+ padding-right: 15px;
358
+ }
359
+ #WBCR .wio-bars p {
360
+ font-size: 12px;
361
+ margin-bottom: 5px;
362
+ }
363
+ #WBCR .wio-bars + .wio-number-you-optimized {
364
+ border-bottom: 0;
365
+ padding-top: 0.85em;
366
+ }
367
+ #WBCR .wio-bars + .wio-number-you-optimized p {
368
+ color: #72a53b;
369
+ }
370
+ #WBCR .wio-bar-negative .wio-progress {
371
+ background: #D2D3D6;
372
+ }
373
+ #WBCR .wio-bar-negative .wio-barnb {
374
+ color: #9d9fa5;
375
+ }
376
+ #WBCR .wio-progress {
377
+ height: 8px;
378
+ transition: width 0.3s;
379
+ /*.wio-bar-negative {
380
+ width: 92% !important;
381
+ }*/
382
+ }
383
+ #WBCR .wio-bar-positive .wio-progress {
384
+ background: #8CC152;
385
+ }
386
+ #WBCR .wio-bar-positive .wio-barnb {
387
+ color: #72a53b;
388
+ }
389
+ #WBCR .wio-bar-primary .wio-progress {
390
+ background: #8CC152;
391
+ }
392
+ #WBCR .wio-bar-primary .wio-barnb {
393
+ color: #72a53b;
394
+ }
395
+ #WBCR .wio-right-outside-number .wio-barnb {
396
+ display: block;
397
+ margin-right: -5.25em;
398
+ text-align: right;
399
+ font-weight: bold;
400
+ line-height: 0.8;
401
+ }
402
+ #WBCR .wio-chart {
403
+ position: relative;
404
+ top: 1px;
405
+ display: inline-block;
406
+ vertical-align: middle;
407
+ }
408
+ #WBCR .wio-chart-container {
409
+ position: relative;
410
+ display: inline-block;
411
+ margin-right: 5px;
412
+ }
413
+ #WBCR .wio-chart-container canvas {
414
+ display: block;
415
+ }
416
+ #WBCR .wio-overview-chart-container {
417
+ float: left;
418
+ margin-right: 20px;
419
+ }
420
+ #WBCR .wio-chart-percent {
421
+ position: absolute;
422
+ left: 0;
423
+ right: 0;
424
+ top: 50%;
425
+ margin-top: -0.5em;
426
+ line-height: 0.8;
427
+ text-align: center;
428
+ font-size: 54px;
429
+ font-weight: bold;
430
+ color: #afafaf;
431
+ }
432
+ #WBCR .wio-chart-percent span {
433
+ font-size: 20px;
434
+ vertical-align: super;
435
+ }
436
+ #WBCR #wio-overview-chart-legend {
437
+ overflow: hidden;
438
+ }
439
+ #WBCR .wio-doughnut-legend li {
440
+ display: inline-block;
441
+ position: relative;
442
+ margin-bottom: 15px;
443
+ border-radius: 5px;
444
+ padding: 3px 8px 2px 31px;
445
+ font-size: 9px;
446
+ cursor: default;
447
+ -webkit-transition: background-color 200ms ease-in-out;
448
+ -moz-transition: background-color 200ms ease-in-out;
449
+ -o-transition: background-color 200ms ease-in-out;
450
+ transition: background-color 200ms ease-in-out;
451
+ }
452
+ #WBCR .wio-doughnut-legend li span {
453
+ display: block;
454
+ position: absolute;
455
+ left: 0;
456
+ top: 0;
457
+ width: 25px;
458
+ height: 25px;
459
+ border-radius: 50%;
460
+ }
461
+ #WBCR .wio-optimize-button {
462
+ min-width: 180px;
463
+ padding: 12px 30px;
464
+ background: #c9deb2;
465
+ color: #586549;
466
+ border: 0;
467
+ box-shadow: none;
468
+ font-size: 14px;
469
+ text-transform: uppercase !important;
470
+ font-weight: bold;
471
+ border-radius: 4px;
472
+ outline: none;
473
+ }
474
+ #WBCR .wio-optimize-button:active {
475
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
476
+ }
477
+ #WBCR .wio-optimize-button:disabled {
478
+ background: #e2edd6;
479
+ color: #a5b295;
480
+ }
481
+ #WBCR .wio-optimize-button.wio-running {
482
+ color: #a57b3c;
483
+ background: #fdd599 url("../img/Spinner-1s-33px.gif") 10px center no-repeat;
484
+ padding-left: 50px;
485
+ }
486
+ #WBCR .wio-global-optim-phrase {
487
+ width: 180px;
488
+ padding-top: 20px;
489
+ font-size: 14px;
490
+ text-align: center;
491
+ }
492
+ #WBCR .wio-total-percent {
493
+ color: #587f2e;
494
+ }
495
+ #WBCR #wio-start-msg-top,
496
+ #WBCR #wio-start-msg-right,
497
+ #WBCR #wio-start-msg-complete {
498
+ display: none;
499
+ }
500
+ #WBCR .wio-text-left {
501
+ text-align: left;
502
+ }
503
+ #WBCR span.wio-num {
504
+ display: inline !important;
505
+ position: inherit !important;
506
+ }
507
+ #WBCR .wio-image-optimize-board {
508
+ padding-bottom: 0 !important;
509
+ }
510
+ #WBCR .wio-page-statistic {
511
+ padding-left: 40px;
512
+ }
513
+ #WBCR .wio-page-statistic .wio-chart-percent {
514
+ margin-top: -1.1em;
515
+ }
516
+ #WBCR .wio-page-total {
517
+ padding: 20px 20px;
518
+ background: #efefef;
519
+ }
520
+ #WBCR .wio-page-total .wrio-calculate-process {
521
+ display: inline-block !important;
522
+ height: 10px;
523
+ width: 30px;
524
+ background: transparent url("../img/quick-start-loader.gif") center no-repeat !important;
525
+ }
526
+ #WBCR .wio-page-total .wrio-total-images {
527
+ font-weight: bold;
528
+ color: #fff;
529
+ padding: 3px 5px;
530
+ border-radius: 4px;
531
+ background: #ffc107;
532
+ }
533
+ #WBCR .wio-page-total span.wrio-total-images-desc {
534
+ display: block;
535
+ font-weight: normal;
536
+ font-size: 12px;
537
+ color: #b7b2b2;
538
+ }
539
+ #WBCR .wrio-optimization-progress {
540
+ background: none;
541
+ padding: 0;
542
+ /*button {
543
+ padding: 5px 10px;
544
+ border: 0;
545
+ font-size: 11px;
546
+ text-transform: uppercase !important;
547
+ font-weight: bold;
548
+ border-radius: 4px;
549
+ outline: none;
550
+ background: @greyButtonBg;
551
+ color: @greyButtonColor;
552
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
553
+
554
+ &:active {
555
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5);
556
+ }
557
+
558
+ &.wbcr-rio-loading {
559
+ width: 56px;
560
+ font-size: 0;
561
+ background: @greyButtonBg url("../img/quick-start-loader.gif") center no-repeat;
562
+ }
563
+
564
+ &.wbcr-rio-selected {
565
+ background: #f3efe2;
566
+ color: #d8d8d8;
567
+
568
+ &:active {
569
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
570
+ }
571
+ }
572
+ }*/
573
+ }
574
+ #WBCR .wrio-optimization-progress h4 {
575
+ font-size: 15px;
576
+ font-weight: 700;
577
+ }
578
+ #WBCR .wrio-optimization-progress .wbcr-rio-warning-message {
579
+ padding: 20px;
580
+ background: #efefef;
581
+ font-size: 15px;
582
+ color: #b7b7b7;
583
+ font-style: italic;
584
+ }
585
+ #WBCR .wio-widget {
586
+ padding: 0 !important;
587
+ }
588
+ #WBCR .wio-widget .wio-chart-percent {
589
+ font-size: 44px;
590
+ line-height: 1;
591
+ }
592
+ #WBCR .wio-widget .wio-bars {
593
+ width: 60%;
594
+ margin-left: 155px;
595
+ }
596
+ #WBCR .wio-widget .col-chart.col-chart {
597
+ width: 100%;
598
+ }
599
+ #WBCR .wio-widget .col-controls {
600
+ width: 45%;
601
+ padding-left: 5px;
602
+ padding-top: 110px;
603
+ }
604
+ #WBCR .wio-widget .wio-doughnut-legend {
605
+ /*padding-top:30px;*/
606
+ text-align: left;
607
+ }
608
+ #WBCR .wio-widget .wio-widget-bottom {
609
+ display: table;
610
+ padding-top: 20px !important;
611
+ width: 100%;
612
+ text-align: right;
613
+ }
614
+ #WBCR .wio-widget .wio-widget-bottom li {
615
+ display: table-cell;
616
+ }
617
+ #WBCR .wio-widget .wio-widget-bottom li:first-child {
618
+ text-align: left;
619
+ }
620
+ #WBCR .factory-checkbox.wrio-checkbox-premium-label:after {
621
+ display: inline-block;
622
+ position: relative;
623
+ content: 'PRO';
624
+ background: #ff5722;
625
+ border-radius: 4px;
626
+ color: #fff;
627
+ font-size: 10px;
628
+ line-height: 1;
629
+ font-style: normal;
630
+ padding: 4px 6px;
631
+ margin-left: 4px;
632
+ vertical-align: top;
633
+ top: -8px;
634
+ left: -10px;
635
+ right: auto;
636
+ z-index: 11;
637
+ }
638
+ #WBCR .factory-checkbox-disabled input,
639
+ #WBCR .factory-checkbox-disabled button {
640
+ pointer-events: none;
641
+ cursor: not-allowed;
642
+ opacity: 0.65;
643
+ filter: alpha(opacity=65);
644
+ -webkit-box-shadow: none;
645
+ box-shadow: none;
646
+ }
647
+ #WBCR #wrio-webp-options h3,
648
+ #WBCR #wrio-error-log-options h3 {
649
+ font-size: 14px;
650
+ margin: 0 0 10px 0;
651
+ font-weight: 600;
652
+ color: #565656;
653
+ }
654
+ #WBCR #wrio-webp-options .wrio-webp-options-info,
655
+ #WBCR #wrio-error-log-options .wrio-webp-options-info {
656
+ color: #8a8787;
657
+ font-size: 12px;
658
+ }
659
+ #WBCR #wrio-webp-options ul,
660
+ #WBCR #wrio-error-log-options ul {
661
+ padding-left: 0;
662
+ }
663
+ #WBCR #wrio-webp-options ul li:after,
664
+ #WBCR #wrio-error-log-options ul li:after {
665
+ content: '';
666
+ display: block;
667
+ clear: both;
668
+ }
669
+ #WBCR #wrio-webp-options ul li label,
670
+ #WBCR #wrio-error-log-options ul li label {
671
+ font-weight: 600;
672
+ }
673
+ #WBCR #wrio-webp-options ul li .wrio-webp-options-radio,
674
+ #WBCR #wrio-error-log-options ul li .wrio-webp-options-radio,
675
+ #WBCR #wrio-webp-options ul li .wrio-error-log-options-checkbox,
676
+ #WBCR #wrio-error-log-options ul li .wrio-error-log-options-checkbox {
677
+ display: block;
678
+ float: left;
679
+ margin-top: 2px;
680
+ margin-right: 8px;
681
+ }
682
+ #WBCR #wrio-webp-options ul li .wrio-webp-options-radio:focus,
683
+ #WBCR #wrio-error-log-options ul li .wrio-webp-options-radio:focus,
684
+ #WBCR #wrio-webp-options ul li .wrio-error-log-options-checkbox:focus,
685
+ #WBCR #wrio-error-log-options ul li .wrio-error-log-options-checkbox:focus {
686
+ outline: none;
687
+ box-shadow: none;
688
+ }
689
+ #WBCR #wrio-webp-options ul li .wrio-webp-options-info,
690
+ #WBCR #wrio-error-log-options ul li .wrio-webp-options-info,
691
+ #WBCR #wrio-webp-options ul li .wrio-error-log-options-info,
692
+ #WBCR #wrio-error-log-options ul li .wrio-error-log-options-info {
693
+ padding-left: 25px;
694
+ }
695
+ @media (max-width: 830px) {
696
+ #WBCR .wio [class^="col-"] {
697
+ float: none;
698
+ margin-bottom: 1.5em;
699
+ }
700
+ #WBCR .wio .col-1-3,
701
+ #WBCR .wio .col-1-2 {
702
+ width: auto;
703
+ padding: 0 28px;
704
+ clear: both;
705
+ padding-top: 1em;
706
+ }
707
+ }
708
+ @keyframes wiohello {
709
+ 0%,
710
+ 100% {
711
+ background: #FFF;
712
+ }
713
+ 50% {
714
+ background: #F4F7F9;
715
+ }
716
+ }
717
+ @media (max-width: 1520px) and (min-width: 1381px), (max-width: 1086px) {
718
+ #WBCR .wio-columns .col-statistics.col-statistics,
719
+ #WBCR .wio-columns .col-chart.col-chart {
720
+ width: 50%;
721
+ }
722
+ }
723
+ @media (max-width: 808px) {
724
+ #WBCR .wio-columns .col-statistics.col-statistics,
725
+ #WBCR .wio-columns .col-chart.col-chart {
726
+ width: auto;
727
+ float: none;
728
+ padding: 0;
729
+ }
730
+ #WBCR .wio-columns .col-chart.col-chart {
731
+ margin-top: 3em;
732
+ }
733
+ }
admin/assets/css/base-statistic.less CHANGED
@@ -1,818 +1,888 @@
1
- /**
2
- * Styles for the Widget to be displayed in the Clearfy plugin
3
-
4
- * @author Alex Kovalev <alex.kovalevv@gmail.com>
5
- * @copyright Webcraftic 14.06.2019
6
- */
7
-
8
- @positiveColor: #8CC152;
9
- @negativeColor: #D2D3D6;
10
- @neutralColor: #828282;
11
-
12
- @errorColor: #fb5d49;
13
- @waringColor: #ffb635;
14
-
15
- @greyButtonBg: #f3f3f3;
16
- @greyButtonColor: #656565;
17
-
18
- @greenButtonBg: #c9deb2;
19
- @greenButtonColor: #586549;
20
-
21
- @orangeButtonBg: #fdd599;
22
- @orangeButtonColor: #a57b3c;
23
-
24
- #WBCR {
25
- .premium-label(@position: relative, @positionTop:-8px, @positionLeft:-10px, @positionRight:auto) {
26
- display: inline-block;
27
- position: @position;
28
- content: 'PRO';
29
- background: #ff5722;
30
- border-radius: 4px;
31
- color: #fff;
32
- font-size: 10px;
33
- line-height: 1;
34
- font-style: normal;
35
- padding: 4px 6px;
36
- margin-left: 4px;
37
- vertical-align: top;
38
- top: @positionTop;
39
- left: @positionLeft;
40
- right: @positionRight;
41
- z-index: 11;
42
- }
43
-
44
- .wio-clear {
45
- clear: both;
46
- }
47
-
48
- // Fix for Clearfy
49
- // This code hides tabs custom folders and nextgen gallery
50
- // -----------------------------------------------
51
- #io_folders_statistic-wbcr_clearfy-tab, #io_nextgen_gallery_statistic-wbcr_clearfy-tab {
52
- display: none !important;
53
- }
54
-
55
- // Styling tabs on statistics pages
56
- // -----------------------------------------------
57
- .wrio-statistic-nav {
58
- margin: 0;
59
- //box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
60
- background: #efefef;
61
-
62
- ul {
63
- margin: 0;
64
-
65
- li {
66
- position: relative;
67
- display: inline-block;
68
- //width: 300px;
69
- margin: 0 0 0 0;
70
- background: #ffffff;
71
- box-shadow: 0 -2px 0 #eaeaea;
72
-
73
- &:hover {
74
- background: #f7f7f7;
75
- }
76
-
77
- &.active {
78
- //box-shadow: 0 -2px 0 #c9deb2;
79
- background: #f7f7f7;
80
- border-top: 1px solid #d4d4d4;
81
- border-left: 1px solid #d4d4d4;
82
- border-right: 1px solid #d4d4d4;
83
- border-bottom: 1px solid #f7f7f7;
84
- margin-bottom: -1px;
85
-
86
- a {
87
- color: #222;
88
-
89
- .wrio-statistic-tab-percent {
90
- border: 2px dashed #8bc34a;
91
- color: #5e8237;
92
- }
93
- }
94
-
95
- .dashicons, .dashicons-before:before {
96
- color: #ff8b66;
97
- }
98
- }
99
-
100
- .wrio-statistic-tab {
101
- display: block;
102
- padding: 10px 20px 10px 20px;
103
- text-decoration: none;
104
- color: #d4d4d4;
105
- font-size: 22px;
106
- line-height: 2;
107
-
108
- &:active, &:focus {
109
- background: 0;
110
- box-shadow: none;
111
- outline: none;
112
- }
113
-
114
- .dashicons, .dashicons-before:before {
115
- display: inline-block;
116
- width: 30px;
117
- height: 30px;
118
- font-size: 30px;
119
- line-height: 1.5;
120
- margin-right: 15px;
121
- color: #d4d4d4;
122
- }
123
-
124
-
125
- .wrio-statistic-tab-percent {
126
- display: inline-block;
127
- width: 42px;
128
- height: 42px;
129
- border-radius: 100px;
130
- border: 2px dashed #e4e4e4;
131
- padding: 5px;
132
- margin-left: 30px;
133
- font-size: 14px;
134
- font-weight: 600;
135
- text-align: center;
136
- color: #bdbdbd;
137
- }
138
- }
139
-
140
- .wrio-statistic-tab-premium-label:after {
141
- .premium-label(absolute, 10px, auto, 10px);
142
- }
143
- }
144
- }
145
- }
146
-
147
- // Table style. The table is used for optimization log
148
- .wrio-table {
149
- width: 100%;
150
- table-layout: fixed;
151
- box-sizing: border-box;
152
- border-spacing: 3px;
153
- background: #fff;
154
- border-top: 2px dashed #cac9c9;
155
-
156
- th, td {
157
- padding: 16px 10px;
158
- text-align: center;
159
- }
160
-
161
- th {
162
- background: #f3f3f3;
163
- color: #777777;
164
- box-shadow: 0 1px 0 rgb(216, 216, 216);
165
-
166
- &:nth-child(2n+1) {
167
- background: #f9f9f9
168
- }
169
- }
170
-
171
- tr.wrio-error {
172
- background-color: #ffe9e9 !important;
173
- }
174
-
175
- .wrio-table-spinner {
176
- background: url("../img/quick-start-loader.gif") center center no-repeat;
177
- }
178
-
179
- .wrio-table-highlighter {
180
- display: inline-block;
181
- padding: 3px 7px;
182
- background: @greyButtonBg;
183
- }
184
-
185
- .wbcr-rio-server-success {
186
- color: @positiveColor;
187
- }
188
-
189
- .wbcr-rio-server-error {
190
- color: @errorColor;
191
- }
192
-
193
- .wbcr-rio-server-warning {
194
- color: @waringColor;
195
- }
196
-
197
- &.wbcr-rio-folders-table {
198
- td:nth-child(3) {
199
- text-align: left;
200
- }
201
- }
202
- }
203
-
204
- .wrio-servers {
205
- padding: 40px 20px;
206
-
207
- label {
208
- span {
209
- display: block;
210
- font-weight: normal;
211
- font-size: 12px;
212
- color: #b7b2b2;
213
- }
214
- }
215
-
216
- #wrio-change-optimization-server {
217
- position: relative;
218
- display: inline-block;
219
- max-width: 400px;
220
- margin-right: 15px;
221
- margin-bottom: 0;
222
- border: 1px solid #d2d0d0;
223
- background: #efefef;
224
- }
225
-
226
- .wrio-servers-info {
227
- margin: 0 0 0;
228
- padding: 20px;
229
- background: #fff;
230
- }
231
-
232
- .wrio-server-status-wrap {
233
- display: inline-block;
234
- margin-top: 8px;
235
-
236
- .wrio-server-status {
237
- background: transparent;
238
- color: #fff;
239
- padding: 3px 5px;
240
- border-radius: 4px;
241
-
242
- &.wrio-down {
243
- background: #ff5722;
244
- }
245
-
246
- &.wrio-stable {
247
- background: #8bc34a;
248
- }
249
-
250
- &.wrio-server-check-proccess {
251
- display: inline-block;
252
- height: 10px;
253
- width: 30px;
254
- background: url("../img/quick-start-loader.gif") center no-repeat;
255
- }
256
- }
257
- }
258
-
259
-
260
- .wrio-premium-user-balance-wrap {
261
- display: inline-block;
262
- margin-top: 8px;
263
- margin-left: 10px;
264
-
265
- .wrio-premium-user-balance {
266
- color: #fff;
267
- padding: 3px 5px;
268
- border-radius: 4px;
269
- background: #ffc107;
270
- }
271
-
272
- .wrio-premium-user-balance-check-proccess {
273
- display: inline-block;
274
- height: 10px;
275
- width: 30px;
276
- background: url("../img/quick-start-loader.gif") center no-repeat;
277
- }
278
- }
279
- }
280
-
281
- .wio-columns {
282
- overflow: hidden;
283
- padding: 15px 0;
284
- counter-reset: cols;
285
-
286
- [class^="col-"] {
287
- float: left;
288
- -webkit-box-sizing: border-box;
289
- -moz-box-sizing: border-box;
290
- box-sizing: border-box;
291
- }
292
-
293
- .col-1-3 {
294
- width: 33.333%;
295
- padding-left: 28px;
296
- }
297
-
298
- .col-2-3 {
299
- width: 66.666%;
300
- padding-left: 28px
301
- }
302
-
303
- .col-1-2 {
304
- width: 50%;
305
- padding: 0 20px;
306
- }
307
-
308
- .col-statistics.col-statistics {
309
- width: 60%;
310
- }
311
-
312
- .col-chart.col-chart {
313
- width: 40%;
314
- position: relative;
315
- padding: 20px;
316
- font-size: 12px;
317
- text-transform: uppercase;
318
- background: #f1f1f1b3;
319
- color: #abacaf;
320
- font-weight: bold;
321
- border-radius: 5px;
322
- margin-top: 10px;
323
- text-align: left;
324
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
325
- }
326
- }
327
-
328
- .wio-col {
329
- float: left;
330
- width: 50%;
331
- box-sizing: border-box;
332
- -webkit-flex-basis: 50%;
333
- -ms-flex-preferred-size: 50%;
334
- flex-basis: 50%;
335
- }
336
-
337
- .wio-col {
338
- padding-right: 20px;
339
- }
340
-
341
- .wio-col + .wio-col {
342
- padding-right: 0;
343
- padding-left: 50px;
344
- }
345
-
346
- .wio-col:target {
347
- animation: wiohello 1s 3 linear backwards;
348
- }
349
-
350
- .wio-number-you-optimized {
351
- margin-bottom: 1.35em;
352
- overflow: hidden;
353
-
354
- #wio-total-optimized-attachments-pct {
355
- color: @neutralColor;
356
- }
357
-
358
- .wio-number {
359
- display: table-cell;
360
- padding-right: 15px;
361
- font-size: 48px;
362
- font-weight: bold;
363
- line-height: 1;
364
- vertical-align: middle;
365
- white-space: nowrap;
366
- color: @neutralColor;
367
- }
368
-
369
- .wio-text {
370
- display: table-cell;
371
- vertical-align: middle;
372
- overflow: hidden;
373
- font-size: 12px;
374
- color: @neutralColor;
375
- }
376
-
377
- & > p {
378
- display: table;
379
- }
380
- }
381
-
382
- .wio-bars {
383
- padding-right: 15px;
384
- }
385
-
386
- .wio-bars p {
387
- font-size: 12px;