PluginProbe
Image Optimizer – Compress Images and Convert to WebP or AVIF / 1.7.6
Image Optimizer – Compress Images and Convert to WebP or AVIF v1.7.6
1.7.7 1.7.6 1.7.5 1.7.4 trunk 1.0.0 1.0.1 1.0.2 1.1.0 1.2.0 1.2.1 1.3.0 1.4.0 1.4.1 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 All 33 releases
image-optimization / vendor / elementor / wp-one-package / src / Admin / Components / ManageDashboardWidget.php

ManageDashboardWidget.php in Image Optimizer – Compress Images and Convert to WebP or AVIF 1.7.6, at vendor/elementor/wp-one-package/src/Admin/Components/ManageDashboardWidget.php

152 lines 3.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace ElementorOne\Admin\Components;
4
5 use ElementorOne\Admin\Helpers\Utils;
6 use ElementorOne\Admin\Services\ManageWidgetState;
7
8 if ( ! defined( 'ABSPATH' ) ) {
9 exit; // Exit if accessed directly.
10 }
11
12 /**
13 * Class ManageDashboardWidget
14 * Registers and enqueues the Site Management dashboard widget
15 */
16 class ManageDashboardWidget {
17
18 public const WIDGET_ID = 'elementor-manage-dashboard';
19 public const MOUNT_NODE_ID = 'elementor-manage-dashboard-widget';
20 public const ASSET_HANDLE = 'elementor-one-manage-dashboard-widget';
21
22 /**
23 * Instance
24 * @var ManageDashboardWidget|null
25 */
26 private static ?ManageDashboardWidget $instance = null;
27
28 /**
29 * Get instance
30 * @return ManageDashboardWidget|null
31 */
32 public static function instance(): ?ManageDashboardWidget {
33 if ( ! self::$instance ) {
34 self::$instance = new self();
35 }
36
37 return self::$instance;
38 }
39
40 /**
41 * ManageDashboardWidget constructor
42 * @return void
43 */
44 private function __construct() {
45 add_action( 'wp_dashboard_setup', [ $this, 'register_widget' ], 99 );
46 add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_assets' ] );
47 }
48
49 /**
50 * Register dashboard widget
51 * @return void
52 */
53 public function register_widget() {
54 if ( ! current_user_can( 'manage_options' ) ) {
55 return;
56 }
57
58 add_meta_box(
59 self::WIDGET_ID,
60 $this->get_widget_title(),
61 [ $this, 'render_widget' ],
62 'dashboard',
63 'column3',
64 'high'
65 );
66 }
67
68 /**
69 * Get widget title markup
70 * @return string
71 */
72 private function get_widget_title(): string {
73 return '<span class="elementor-manage-dashboard-widget__title"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
74 <path d="M12 1.5C6.20101 1.5 1.5 6.20101 1.5 12C1.5 17.799 6.20101 22.5 12 22.5C17.799 22.5 22.5 17.799 22.5 12C22.5 6.20101 17.799 1.5 12 1.5ZM8.85 17.25H6.75V6.75H8.85V17.25ZM17.25 17.25H10.95V15.15H17.25V17.25ZM17.25 13.0488H10.95V10.9488H17.25V13.0488ZM17.25 8.85H10.95V6.75H17.25V8.85Z" fill="black"/>
75 </svg>' . esc_html__( 'Site Management', 'elementor-one' ) . '</span>';
76 }
77
78 /**
79 * Render widget mount node
80 * @return void
81 */
82 public function render_widget() {
83 printf(
84 '<div id="%1$s" class="elementor-manage-dashboard-widget"></div>',
85 esc_attr( self::MOUNT_NODE_ID )
86 );
87 }
88
89 /**
90 * Enqueue widget assets
91 * @param string $hook
92 * @return void
93 */
94 public function enqueue_assets( $hook ) {
95 if ( 'index.php' !== $hook || ! current_user_can( 'manage_options' ) ) {
96 return;
97 }
98
99 $resolved = ManageWidgetState::resolve_with_meta();
100 $state = $resolved['state'];
101
102 if ( ManageWidgetState::STATE_ACTIVE === $state ) {
103 return;
104 }
105
106 $this->enqueue_skeleton_assets( $resolved );
107 }
108
109 /**
110 * Enqueue skeleton widget assets
111 * @param array{state: string, isWidgetDelegated: bool} $resolved
112 * @return void
113 */
114 private function enqueue_skeleton_assets( array $resolved ) {
115 $state = $resolved['state'];
116 $package_version = Utils::get_latest_package_version();
117 $asset_file = ELEMENTOR_ONE_ASSETS_PATH . 'manage-dashboard-widget.asset.php';
118 $asset = file_exists( $asset_file ) ? include $asset_file : [
119 'dependencies' => [],
120 'version' => $package_version,
121 ];
122
123 wp_enqueue_script(
124 self::ASSET_HANDLE,
125 ELEMENTOR_ONE_ASSETS_URL . 'manage-dashboard-widget.js',
126 $asset['dependencies'],
127 $asset['version'],
128 true
129 );
130
131 wp_enqueue_style(
132 self::ASSET_HANDLE,
133 ELEMENTOR_ONE_ASSETS_URL . 'manage-dashboard-widget.css',
134 [],
135 $package_version
136 );
137
138 wp_add_inline_script(
139 self::ASSET_HANDLE,
140 'window.elementorOneManageWidgetData = ' . wp_json_encode( [
141 'state' => $state,
142 'isRTL' => is_rtl(),
143 'links' => [
144 'updatesPage' => admin_url( 'update-core.php' ),
145 ],
146 'isWidgetDelegated' => $resolved['isWidgetDelegated'],
147 ] ) . ';',
148 'before'
149 );
150 }
151 }
152