PluginProbe
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin / 1.1.12
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin v1.1.12
1.1.12 1.1.11 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 All 36 releases
← All changes | includes/my-wordpress/integrations/woocommerce.php +35 -36 1.1.4 → 1.1.12 View file →
@@ -325,9 +325,9 @@
325 325 $order = 100;
326 326 foreach ( ( is_wp_error( $terms ) ? array() : (array) $terms ) as $term ) {
327 327 $bands[] = array(
328 328 'id' => 'cat:' . $term->slug,
329 - 'label' => $term->name,
329 + 'label' => openstation_plain_text_title( $term->name ),
330 330 'order' => $order,
331 331 'category' => $term->slug,
332 332 );
333 333 $order += 10;
@@ -1374,9 +1374,9 @@
1374 1374 'rating' => (float) $product->get_average_rating(),
1375 1375 'reviews' => (int) $product->get_review_count(),
1376 1376 'productType' => $type_label,
1377 1377 'variations' => $product->is_type( 'variable' ) ? count( $product->get_children() ) : 0,
1378 - 'categories' => is_wp_error( $categories ) ? array() : array_values( $categories ),
1378 + 'categories' => is_wp_error( $categories ) ? array() : array_map( 'openstation_plain_text_title', array_values( $categories ) ),
1379 1379 'permalink' => (string) $product->get_permalink(),
1380 1380 'editUrl' => (string) get_edit_post_link( $product->get_id(), 'raw' ),
1381 1381 );
1382 1382 }
@@ -1405,9 +1405,9 @@
1405 1405 $product_id = method_exists( $item, 'get_product_id' ) ? (int) $item->get_product_id() : 0;
1406 1406 // Variations edit through their parent product's screen.
1407 1407 $edit_id = $product_id;
1408 1408 $items[] = array(
1409 - 'name' => $item->get_name(),
1409 + 'name' => openstation_plain_text_title( $item->get_name() ),
1410 1410 'quantity' => (int) $item->get_quantity(),
1411 1411 'total' => openstation_my_wordpress_woo_price( $item->get_total(), $order->get_currency() ),
1412 1412 'id' => $product_id,
1413 1413 // A line item whose product has since been deleted has no
@@ -1555,9 +1555,9 @@
1555 1555 foreach ( $ids as $id ) {
1556 1556 $term = get_term( (int) $id, $taxonomy );
1557 1557 if ( $term && ! is_wp_error( $term ) ) {
1558 1558 $out[] = array(
1559 - 'label' => $term->name,
1559 + 'label' => openstation_plain_text_title( $term->name ),
1560 1560 'editUrl' => (string) get_edit_term_link( $term->term_id, $taxonomy ),
1561 1561 );
1562 1562 }
1563 1563 }
@@ -1569,9 +1569,9 @@
1569 1569 foreach ( $ids as $id ) {
1570 1570 $product = wc_get_product( (int) $id );
1571 1571 if ( $product ) {
1572 1572 $out[] = array(
1573 - 'label' => $product->get_name(),
1573 + 'label' => openstation_plain_text_title( $product->get_name() ),
1574 1574 'editUrl' => (string) get_edit_post_link( $product->get_id(), 'raw' ),
1575 1575 );
1576 1576 }
1577 1577 }
@@ -1933,18 +1933,18 @@
1933 1933 /**
1934 1934 * Attach the integration's config to its script handle.
1935 1935 *
1936 1936 * NOTHING is enqueued here, and that is the point. The bundle
1937 - * subscribes to the WP Explorer window's `preview-extras` /
1938 - * `group-extras` actions, so it has to be in the tab before that
1939 - * window's bundle paints — but not one moment sooner. It travels as
1940 - * a companion of `desktop-mode-my-wordpress` (see the `scripts` arg
1941 - * on that window's registration), which means the shell loads it
1942 - * when the window first opens and a merchant who never opens WP
1943 - * Explorer never downloads it at all. The stylesheet travels the
1944 - * same way (the `styles` arg): every selector in it is scoped to
1945 - * surfaces inside the Explorer or the Customer window, so on any
1946 - * document not showing those — every chromeless iframe included —
1937 + * subscribes to the WP Explorer app's `preview-extras` /
1938 + * `group-extras` actions, so it has to be in the tab before the app's
1939 + * client view paints — but not one moment sooner. It travels as a
1940 + * companion of the app window (see
1941 + * `openstation_my_wordpress_woo_app_window_args()` below), which
1942 + * means the shell loads it when the window first opens and a merchant
1943 + * who never opens the explorer never downloads it at all. The
1944 + * stylesheet travels the same way (the `styles` arg): every selector
1945 + * in it is scoped to surfaces inside the explorer or the Customer
1946 + * window, so on any document not showing those —
1947 1947 * it was pure parse weight.
1948 1948 *
1949 1949 * Only for users who can open the site window on a store — everyone
1950 1950 * else pays nothing.
@@ -1978,8 +1978,10 @@
1978 1978 'restNonce' => wp_create_nonce( 'wp_rest' ),
1979 1979 'canOrders' => true === openstation_my_wordpress_woo_orders_permission(),
1980 1980 'canCustomers' => true === openstation_my_wordpress_woo_customers_permission(),
1981 1981 'orderBands' => openstation_my_wordpress_woo_order_bands(),
1982 + // `wc-` slug → label, for the Orders list view.
1983 + 'orderStatuses' => wc_get_order_statuses(),
1982 1984 'productBands' => openstation_my_wordpress_woo_product_bands(),
1983 1985 'couponBands' => openstation_my_wordpress_woo_coupon_bands_with_counts(),
1984 1986 // Only built for a viewer who may see them — the
1985 1987 // band counts are money, and the plan behind them
@@ -2002,32 +2004,29 @@
2002 2004 }
2003 2005 add_action( 'admin_enqueue_scripts', 'openstation_my_wordpress_woo_enqueue', 5 );
2004 2006
2005 2007 /**
2006 - * Attach the bundle and stylesheet to the WP Explorer window as
2007 - * companions.
2008 + * Attach the bundle and stylesheet to the WP Explorer app.
2008 2009 *
2009 - * `scripts` handles load in order immediately before the window's own
2010 - * `script`, so the integration is listening to `preview-extras` /
2011 - * `group-extras` by the time the window bundle fires them — the same
2012 - * guarantee the old boot-time enqueue gave, at the cost of nothing
2013 - * until the window opens.
2010 + * The app fires the `os.my-wordpress.*` seams this bundle subscribes
2011 + * to (`preview-extras`, `group-extras`, `list-tile`, the banding and
2012 + * user filters), and its rows carry the `openstation_woo` /
2013 + * `openstation_woo_customer` facts. `scripts` handles load in order
2014 + * immediately before the window's own script, so the integration is
2015 + * listening by the time the app's client view fires the seams — as a
2016 + * first-open companion, costing nothing until the window opens. The
2017 + * config blob rides the handle (see
2018 + * `openstation_my_wordpress_woo_enqueue()`), so it arrives with the
2019 + * bundle. The `styles` handle keeps its `wp_register_style`
2020 + * dependency on the shared explorer sheet, so its equal-specificity
2021 + * overrides (the ribbon and panel chrome) still win by source order.
2014 2022 *
2015 - * `styles` handles inject on the same first open, in ARRAY ORDER —
2016 - * and that order is the whole ballgame here: this sheet overrides
2017 - * `my-wordpress.css` at EQUAL specificity (the ribbon and panel
2018 - * chrome), which the old enqueue path guaranteed through a
2019 - * `wp_register_style` dependency. The Explorer's registration
2020 - * declares its own sheet first in `styles` (see the comment in
2021 - * `includes/my-wordpress/window.php`), this filter APPENDS, so the
2022 - * Woo sheet lands after it in `<head>` and wins by source order.
2023 - * Prepending here would silently invert the cascade.
2024 - *
2025 - * @param array $window_args Args passed to `openstation_register_window()`.
2023 + * @param array $window_args Args passed to `openstation_register_window()`.
2024 + * @param string $app_id App id.
2026 2025 * @return array
2027 2026 */
2028 -function openstation_my_wordpress_woo_window_args( $window_args ) {
2029 - if ( ! is_array( $window_args ) || ! openstation_my_wordpress_woo_active() ) {
2027 +function openstation_my_wordpress_woo_app_window_args( $window_args, $app_id ) {
2028 + if ( 'my-wordpress' !== (string) $app_id || ! is_array( $window_args ) || ! openstation_my_wordpress_woo_active() ) {
2030 2029 return $window_args;
2031 2030 }
2032 2031
2033 2032 $scripts = isset( $window_args['scripts'] ) ? (array) $window_args['scripts'] : array();
@@ -2040,5 +2039,5 @@
2040 2039 $window_args['styles'] = $styles;
2041 2040
2042 2041 return $window_args;
2043 2042 }
2044 -add_filter( 'openstation_my_wordpress_window_args', 'openstation_my_wordpress_woo_window_args' );
2043 +add_filter( 'openstation_app_window_args', 'openstation_my_wordpress_woo_app_window_args', 10, 2 );