PluginProbe
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin / 1.1.10
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin v1.1.10
1.1.10 1.1.9 1.1.8 1.1.7 1.1.6 1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.1 1.0.0 0.9.8 0.9.7 0.9.6 0.9.4 0.9.5 0.9.3 0.9.2 0.9.1 0.9.0 0.8.9 0.8.8 0.8.7 All 34 releases
← All changes | includes/widgets/heartbeat.php +48 -45 0.9.81.1.10 View file →
@@ -1,9 +1,9 @@
1 1 <?php
2 2 /**
3 - * Desktop Mode — Heartbeat widget (built-in, lazy-loaded).
3 + * OpenStation — Heartbeat widget (built-in, lazy-loaded).
4 4 *
5 - * Dogfoods the public `desktop_mode_register_widget()` API for a
5 + * Dogfoods the public `openstation_register_widget()` API for a
6 6 * built-in widget: the metadata + script handle live here, the
7 7 * JS + CSS ship as their own Vite bundle
8 8 * (`assets/js/widget-heartbeat[.min].js` and matching `.css`).
9 9 * The shell's widgets `server-sync` only loads them when the user
@@ -9,9 +9,9 @@
9 9 * The shell's widgets `server-sync` only loads them when the user
10 10 * adds the widget or the picker is opened — main bundle keeps
11 11 * none of the heart's code.
12 12 *
13 - * @package WPDesktopMode
13 + * @package OpenStation
14 14 */
15 15
16 16 defined( 'ABSPATH' ) || exit;
17 17
@@ -19,34 +19,34 @@
19 19 * Register the JS bundle as a script handle so it can be loaded
20 20 * lazily via `wp_register_script()` / its URL. The CSS file
21 21 * emitted by Vite alongside the JS is registered as its own
22 22 * style handle and eagerly enqueued by
23 - * desktop_mode_enqueue_heartbeat_widget_styles() below — the
23 + * openstation_enqueue_heartbeat_widget_styles() below — the
24 24 * widget server-sync only injects the JS, so the stylesheet must
25 25 * ship ahead of time for the chrome to paint with the JS.
26 26 */
27 -function desktop_mode_register_heartbeat_widget_assets() {
28 - $suffix = desktop_mode_asset_suffix();
29 - $version = defined( 'DESKTOP_MODE_VERSION' ) ? DESKTOP_MODE_VERSION : '0';
27 +function openstation_register_heartbeat_widget_assets() {
28 + $suffix = openstation_asset_suffix();
29 + $version = defined( 'OPENSTATION_VERSION' ) ? OPENSTATION_VERSION : '0';
30 30
31 - $js_path = DESKTOP_MODE_DIR . 'assets/js/widget-heartbeat' . $suffix . '.js';
32 - $css_path = DESKTOP_MODE_DIR . 'assets/js/widget-heartbeat' . $suffix . '.css';
31 + $js_path = OPENSTATION_DIR . 'assets/js/widget-heartbeat' . $suffix . '.js';
32 + $css_path = OPENSTATION_DIR . 'assets/js/widget-heartbeat' . $suffix . '.css';
33 33
34 34 wp_register_style(
35 - 'desktop-mode-heartbeat-widget',
36 - DESKTOP_MODE_URL . 'assets/js/widget-heartbeat' . $suffix . '.css',
35 + 'os-heartbeat-widget',
36 + OPENSTATION_URL . 'assets/js/widget-heartbeat' . $suffix . '.css',
37 37 array(),
38 38 file_exists( $css_path ) ? (string) filemtime( $css_path ) : $version
39 39 );
40 40 wp_register_script(
41 - 'desktop-mode-heartbeat-widget',
42 - DESKTOP_MODE_URL . 'assets/js/widget-heartbeat' . $suffix . '.js',
41 + 'os-heartbeat-widget',
42 + OPENSTATION_URL . 'assets/js/widget-heartbeat' . $suffix . '.js',
43 43 array( 'wp-hooks' ),
44 44 file_exists( $js_path ) ? (string) filemtime( $js_path ) : $version,
45 45 true
46 46 );
47 47 }
48 -add_action( 'init', 'desktop_mode_register_heartbeat_widget_assets', 5 );
48 +add_action( 'init', 'openstation_register_heartbeat_widget_assets', 5 );
49 49
50 50 /**
51 51 * Register the widget itself. Sizing constraints + chrome metadata
52 52 * (label / description / icon) live here so the framework knows
@@ -52,35 +52,38 @@
52 52 * (label / description / icon) live here so the framework knows
53 53 * the widget exists at picker-render time, before the JS bundle
54 54 * is even fetched.
55 55 */
56 -function desktop_mode_register_heartbeat_widget() {
57 - if ( ! function_exists( 'desktop_mode_register_widget' ) ) {
56 +function openstation_register_heartbeat_widget() {
57 + if ( ! function_exists( 'openstation_register_widget' ) ) {
58 58 return;
59 59 }
60 - desktop_mode_register_widget( 'desktop-mode/heartbeat', array(
61 - 'label' => __( 'Heartbeat', 'desktop-mode' ),
62 - 'description' => __(
63 - 'A gently beating heart that pulses with the WordPress Heartbeat. The bar fills as the next tick approaches.',
64 - 'desktop-mode'
65 - ),
66 - 'icon' => 'dashicons-heart',
67 - 'script' => 'desktop-mode-heartbeat-widget',
68 - 'movable' => true,
69 - 'resizable' => false,
70 - 'min_width' => 310,
71 - 'max_width' => 310,
72 - 'min_height' => 230,
73 - 'max_height' => 230,
74 - 'default_width' => 310,
75 - 'default_height' => 230,
76 - ) );
60 + openstation_register_widget(
61 + 'desktop-mode/heartbeat',
62 + array(
63 + 'label' => __( 'Heartbeat', 'desktop-mode' ),
64 + 'description' => __(
65 + 'A gently beating heart that pulses with the WordPress Heartbeat. The bar fills as the next tick approaches.',
66 + 'desktop-mode'
67 + ),
68 + 'icon' => 'dashicons-heart',
69 + 'script' => 'os-heartbeat-widget',
70 + 'movable' => true,
71 + 'resizable' => false,
72 + 'min_width' => 310,
73 + 'max_width' => 310,
74 + 'min_height' => 230,
75 + 'max_height' => 230,
76 + 'default_width' => 310,
77 + 'default_height' => 230,
78 + )
79 + );
77 80 }
78 -add_action( 'init', 'desktop_mode_register_heartbeat_widget', 6 );
81 +add_action( 'init', 'openstation_register_heartbeat_widget', 6 );
79 82
80 83 /**
81 84 * Eagerly enqueue the widget's CSS handle when the current
82 - * request runs in Desktop Mode and is not a chromeless iframe
85 + * request runs in OpenStation and is not a chromeless iframe
83 86 * load. The JS bundle stays lazy and loads via the widget
84 87 * server-sync the first time the picker opens or the widget
85 88 * mounts.
86 89 *
@@ -98,20 +101,20 @@
98 101 * themselves — sending the stylesheet there is dead weight. Note
99 102 * that classic-override pages (`?desktop_mode_classic=1`) are
100 103 * not excluded: they skip the shell but still receive the
101 104 * (1.9 KB) stylesheet. The
102 - * `desktop_mode_heartbeat_widget_eager_css` filter lets a
105 + * `openstation_heartbeat_widget_eager_css` filter lets a
103 106 * site owner opt out entirely without forking the plugin.
104 107 */
105 -function desktop_mode_enqueue_heartbeat_widget_styles() {
106 - if ( function_exists( 'desktop_mode_is_enabled' ) && ! desktop_mode_is_enabled() ) {
108 +function openstation_enqueue_heartbeat_widget_styles() {
109 + if ( function_exists( 'openstation_is_enabled' ) && ! openstation_is_enabled() ) {
107 110 return;
108 111 }
109 112 // Chromeless requests render content inside an iframe owned
110 113 // by a shell elsewhere — they never mount widgets themselves.
111 114 if (
112 - function_exists( 'desktop_mode_is_chromeless_request' )
113 - && desktop_mode_is_chromeless_request()
115 + function_exists( 'openstation_is_chromeless_request' )
116 + && openstation_is_chromeless_request()
114 117 ) {
115 118 return;
116 119 }
117 120 /**
@@ -116,18 +119,18 @@
116 119 }
117 120 /**
118 121 * Whether to enqueue the heartbeat widget's stylesheet on
119 122 * this request. Defaults to `true` for shell requests in
120 - * Desktop Mode. Sites that never plan to ship the heartbeat
123 + * OpenStation. Sites that never plan to ship the heartbeat
121 124 * widget can return `false` and save the ~0.66 KB gzipped
122 125 * stylesheet roundtrip.
123 126 *
124 127 * @param bool $eager Default `true` once the chromeless +
125 - * desktop-mode gates above have passed.
128 + * openstation gates above have passed.
126 129 */
127 - $eager = (bool) apply_filters( 'desktop_mode_heartbeat_widget_eager_css', true );
130 + $eager = (bool) apply_filters( 'openstation_heartbeat_widget_eager_css', true );
128 131 if ( ! $eager ) {
129 132 return;
130 133 }
131 - wp_enqueue_style( 'desktop-mode-heartbeat-widget' );
134 + wp_enqueue_style( 'os-heartbeat-widget' );
132 135 }
133 -add_action( 'admin_enqueue_scripts', 'desktop_mode_enqueue_heartbeat_widget_styles', 20 );
136 +add_action( 'admin_enqueue_scripts', 'openstation_enqueue_heartbeat_widget_styles', 20 );