← All changes
|
includes/my-wordpress/integrations/woocommerce.php
+35
-36
1.1.5
→
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 ); | |