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/my-wordpress/assets.php +51 -14 1.0.11.1.10 View file →
@@ -17,27 +17,64 @@
17 17 function openstation_my_wordpress_register_assets() {
18 18 $version = OPENSTATION_VERSION;
19 19 $suffix = openstation_asset_suffix();
20 20
21 + /*
22 + * `os-files` is a real dependency, not decoration. Every tile in
23 + * this window is an `<os-tile>` wearing the canonical
24 + * `.os-file-tile` chrome that `desktop-files.css` declares, and
25 + * this stylesheet overrides a handful of those declarations at
26 + * EQUAL specificity — most visibly `.os-my-wordpress__media-tile`,
27 + * which has to undo `position: absolute` + the fixed 88×104 box so
28 + * media thumbnails flow inside their CSS Grid.
29 + *
30 + * Equal specificity means source order decides, and source order is
31 + * not ours to assume: any handle depending on this one that is
32 + * enqueued before `openstation_enqueue_assets()` runs (the
33 + * WooCommerce integration enqueues its companion stylesheet at
34 + * `admin_enqueue_scripts` priority 5) pulls this file into
35 + * `WP_Dependencies::$to_do` ahead of `os-files`. The overrides then
36 + * lose, every media tile is absolutely positioned with no offsets,
37 + * and the whole grid stacks in one corner.
38 + *
39 + * Declaring the dependency makes the order a fact rather than a
40 + * coincidence. `Tests_OpenStation_TileStylesheetOrder` holds it.
41 + */
21 42 $css_path = OPENSTATION_DIR . 'assets/css/my-wordpress.css';
22 43 wp_register_style(
23 44 'desktop-mode-my-wordpress',
24 45 OPENSTATION_URL . 'assets/css/my-wordpress.css',
25 - array( 'os-variables', 'dashicons' ),
46 + array( 'os-variables', 'dashicons', 'os-files' ),
26 47 file_exists( $css_path ) ? (string) filemtime( $css_path ) : $version
27 48 );
28 49
29 - $js_path = OPENSTATION_DIR . 'assets/js/my-wordpress' . $suffix . '.js';
30 - wp_register_script(
31 - 'desktop-mode-my-wordpress',
32 - OPENSTATION_URL . 'assets/js/my-wordpress' . $suffix . '.js',
33 - array( 'wp-i18n' ),
34 - file_exists( $js_path ) ? (string) filemtime( $js_path ) : $version,
35 - true
36 - );
37 - wp_set_script_translations(
38 - 'desktop-mode-my-wordpress',
39 - 'desktop-mode',
40 - OPENSTATION_DIR . 'languages'
41 - );
50 + // No script handle any more: the legacy window bundle is gone. The
51 + // explorer's JS is the `my-wordpress` app's client view, registered
52 + // by the App Framework host.
53 + unset( $suffix );
42 54 }
43 55 add_action( 'init', 'openstation_my_wordpress_register_assets', 5 );
56 +
57 +/**
58 + * Ride the explorer's shared stylesheet on the WP Explorer app.
59 + *
60 + * `my-wordpress.css` is shell infrastructure, not one window's skin:
61 + * the hover card, the article slots, the footprint surface and the
62 + * folder windows' preview pane all paint with its `os-my-wordpress__*`
63 + * classes (desktop themes target them at palette level). The app
64 + * renders those same surfaces, so the sheet travels with its window as
65 + * a first-open companion — one stylesheet, every consumer.
66 + *
67 + * @param array $window_args Args passed to `openstation_register_window()`.
68 + * @param string $app_id App id.
69 + * @return array
70 + */
71 +function openstation_my_wordpress_app_style( $window_args, $app_id ) {
72 + if ( 'my-wordpress' !== (string) $app_id || ! is_array( $window_args ) ) {
73 + return $window_args;
74 + }
75 + $styles = isset( $window_args['styles'] ) ? (array) $window_args['styles'] : array();
76 + $styles[] = 'desktop-mode-my-wordpress';
77 + $window_args['styles'] = $styles;
78 + return $window_args;
79 +}
80 +add_filter( 'openstation_app_window_args', 'openstation_my_wordpress_app_style', 10, 2 );