Skip to content
This repository has been archived by the owner on Feb 23, 2024. It is now read-only.

Commit

Permalink
Release: 10.9.3 (#10725)
Browse files Browse the repository at this point in the history
* Empty commit for release pull request

* Fix "On sale" badge class (#10634)

* Fix "On sale" badge class for shop

* Add class to sale badge

* Remove client side navigation from Products beta block (#10636)

* Remove client side navigation from Products beta block

Changes:
- Removed the `add_navigation_id_directive` method and its associated filter. This method previously added a `data-wc-navigation-id` attribute to the query block for client-side navigation, which is no longer required.
- Removed the `add_navigation_link_directives` method and its associated filter. This method previously added interactive directives to pagination links inside the Query Pagination block. This specific functionality has been removed as it is no longer needed.
- Introduced a new method `mark_block_as_interactive`, which is designed to mark the Product Query as an interactive region so that interactive elements can work inside it. This is achieved using the 'data-wc-interactive' attribute.

* add data-wc-interactive to product button block

* Remove unnecessary code

As we have added `data-wc-interactive` on Product button therefore we don't need to add it in Product Query block.

* Boolean attribute doesn't need explicit value equal to true

* Skip failing i18n-related E2E tests

* Skip failing i18n-related E2E test

---------

Co-authored-by: Luigi <gigitux@gmail.com>
Co-authored-by: Niels Lange <info@nielslange.de>

* Update WooCommerce Blocks brand assets (#10622)

* Update testing instructions

* Update changelog

* Fix version number of testing instructions

* Update testing notes

* Update testing ZIP file

* Update version number

* Empty commit for release pull request

* Load Interactivity API in `bootstrap.php` (#10657)

* load Interactivity API in Bootstrap.php file

* fix comment

* update visibility function

* remove blank line

* remove comment

* remove logic to not load Interactivity API

* Empty commit for release pull request

* Add readme file

* Update testing instructions

* Change versions

* Update zip

* Update 1092.md

* Update 1092.md

* Make View Cart link displayed below the Add to Cart button (#10675)

* Update testing instructions

* Update testing notes

* Fix: Made migration migrate block templates in the current theme (#10641)

* Fix: Made migration migrate block templates in the current theme

* Update src/BlockTemplatesController.php

Co-authored-by: Paulo Arromba <17236129+wavvves@users.noreply.github.com>

* Move migration and status codes to BlockTemplateMigrationUtils

---------

Co-authored-by: Paulo Arromba <17236129+wavvves@users.noreply.github.com>

* Fix: sync_endpoint_with_page should use a matching slug if it exists instead of creating a new page (#10640)

* Fix/10530 Inconsistent new install behaviour for templates when using block themes (#10608)

* Skipped requests regarding WP/WC setup, to avoid issues with the pages not existing yet when migrating page content to templates.

* Skipped requests regarding WP-CLI to avoid issues with the pages not existing yet when migrating page content to templates.

* Added check for woocommerce_db_version option

* Add check for occurred migration to skip template injection

* corrected if clause

* Update src/BlockTemplatesController.php

Co-authored-by: Mike Jolley <mike.jolley@me.com>

* Added maintenance mode to migration exception. Added trace value to has_migrated options

* Merge with new migration logic.

* Set correct post terms for wp_template content

* updated comment

---------

Co-authored-by: Mike Jolley <mike.jolley@me.com>

* Update ZIP file

* Update testing notes

* Update testing notes

* Update testing notes

* Update testing notes

* Update woocommerce.zip file

* Revert "Fix: sync_endpoint_with_page should use a matching slug if it exists instead of creating a new page (#10640)"

This reverts commit c68583b.

* Update testing notes

* Update ZIP file

* Update changelog

* Empty commit for release pull request

* Add changelog to readme.txt

* Update plugin version in several files

* Revert dequeue add-to-cart-variation script which is needed to properly handle variable products in single product page (#10723)

* Add the testing notes for 10.9.3

* Update 1093.md

* Fix md lint error

---------

Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Alba Rincón <albarin@users.noreply.github.com>
Co-authored-by: Manish Menaria <the.manish.menaria@gmail.com>
Co-authored-by: Luigi <gigitux@gmail.com>
Co-authored-by: Niels Lange <info@nielslange.de>
Co-authored-by: Tom Cafferkey <tjcafferkey@gmail.com>
Co-authored-by: Karol Manijak <20098064+kmanijak@users.noreply.github.com>
Co-authored-by: Mike Jolley <mike.jolley@me.com>
Co-authored-by: Paulo Arromba <17236129+wavvves@users.noreply.github.com>
Co-authored-by: Alexandre Lara <allexandrelara@gmail.com>
  • Loading branch information
11 people authored Aug 24, 2023
1 parent 13d33e5 commit a917c98
Show file tree
Hide file tree
Showing 16 changed files with 340 additions and 146 deletions.
1 change: 1 addition & 0 deletions assets/js/atomic/blocks/product-elements/button/style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
white-space: normal;
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
gap: $gap-small;

Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"description": "WooCommerce blocks for the Gutenberg editor.",
"homepage": "https://woocommerce.com/",
"type": "wordpress-plugin",
"version": "10.9.1",
"version": "10.9.3",
"keywords": [
"gutenberg",
"woocommerce",
Expand Down
74 changes: 74 additions & 0 deletions docs/internal-developers/testing/releases/1092.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Testing notes and ZIP for release 10.9.2

Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.com/woocommerce/woocommerce-blocks/files/12397992/woocommerce-gutenberg-products-block.zip)

## WooCommerce Core

### Bug Fixes

#### Load Interactivity API in `bootstrap.php`. [#10657](https://github.com/woocommerce/woocommerce-blocks/pull/10657)

> **Note**
> Ignore the first step if testing in WooCommerce Core.
1. Install this custom build of WooCommerce that includes this patch: [woocommerce.zip](https://github.com/woocommerce/woocommerce-blocks/files/12397185/woocommerce.zip).
2. Make sure that `WooCommerce Blocks` plugin is not active.
3. Open the Site Editor and ensure that you are using the blockified template on the Product Catalog template.
4. Visit the `/shop` page and ensure that the Product Button(Add to Cart) works as expected.

#### Make View Cart link displayed below the Add to Cart button. [#10675](https://github.com/woocommerce/woocommerce-blocks/pull/10675)

1. Edit Product Catalog template
2. Add Products (Beta) block if it's not there already
3. Save and go to frontend
4. Add a simple product to cart
5. Expected: "View Cart" link appears BELOW the Add to Cart button

<table>
<tr>
<td>Before:
<br><br>
<img width="955" alt="image" src="https://github.com/woocommerce/woocommerce-blocks/assets/20098064/6debf2e7-b529-4c45-828b-9705686f08a3">
</td>
<td>After:
<br><br>
<img width="956" alt="image" src="https://github.com/woocommerce/woocommerce-blocks/assets/20098064/a1b7cb06-0ac0-40d8-b865-5c87977016a8">
</td>
</tr>
</table>

## Should be tested by the development team exclusively

### Bug Fixes

#### Fix: Made migration migrate block templates in the current theme. [#10641](https://github.com/woocommerce/woocommerce-blocks/pull/10641)

1. Install a theme that uses block templates. In my case I used FotaWP.
2. Go to Appearance > Edit > Templates and reset the cart/checkout templates to default.
3. Delete has_migrated_cart and has_migrated_checkout options from your options database.
4. View a page on the store.
5. Confirm by viewing the cart and checkout pages that they inherited the block template from the theme. In this case for instance, instead of the default distraction free template we had, you'll see something like this:

![Screenshot 2023-08-17 at 12 55 00](https://github.com/woocommerce/woocommerce-blocks/assets/90977/bf55ff6c-e8f7-440e-99ed-ec1e676a988b)

#### Fix/10530 Inconsistent new install behaviour for templates when using block themes. [#10608](https://github.com/woocommerce/woocommerce-blocks/pull/10608)

1. Get a new env ready to install WP/WC using WP-CLI. You can use this [quick docker setup](https://github.com/woocommerce/woocommerce-blocks/files/12394720/new-test-env.zip)
2. Alias or copy this branch, built ready to use as a plugin into the env
3. Using WP-CLI set up WC using the following command sequence (alter args to suit your case)

```sh
wp config create --dbname=wordpress --dbuser=wordpress --dbpass=wordpress --dbhost=db --force
wp core install --url=http://localhost --title='WP Staging' --admin_user=admin --admin_password=pass --admin_email=admin@wp.loc
wp option set blog_public 0
wp plugin activate woocommerce-blocks
wp plugin install woocommerce --version=6.0.0
wp plugin activate woocommerce
wp plugin install wordpress-importer --activate
wp import ./wp-content/plugins/woocommerce/sample-data/sample_products.xml --authors=skip
wp plugin update woocommerce
```

4. Visit the store for the first time, head to Appearance > Editor > Templates > Manage all templates verify that Cart and Checkout have customizations saved
5. Open each one and verify they contain the shortcode version
6. Test the complete checkout flow.
33 changes: 33 additions & 0 deletions docs/internal-developers/testing/releases/1093.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Testing notes and ZIP for release 10.9.3

Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.com/woocommerce/woocommerce-blocks/files/12432284/woocommerce-gutenberg-products-block.zip)

## WooCommerce Core

### Bug Fixes

#### Add to Cart: fix the problem that variable products couldn't be added to cart [#10657](https://github.com/woocommerce/woocommerce-blocks/pull/10657)

1. Make sure you're using blockified Single Product template
2. Go to frontend
3. Go to product page for variable product (e.g. Hoodie when using sample products)
4. Choose Color and With Logo
5. Make sure Price appears when you chose the options
6. Add the product to Cart
7. Make sure product is added to cart correctly and there's no error

##### Before

<https://github.com/woocommerce/woocommerce-blocks/assets/20469356/7b90f169-263c-4c26-8ee9-70004756d128>

##### After

<https://github.com/woocommerce/woocommerce-blocks/assets/20469356/51ba5589-83cd-4cd1-8956-b8c59f44ce5b>








2 changes: 2 additions & 0 deletions docs/internal-developers/testing/releases/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,8 @@ Every release includes specific testing instructions for new features and bug fi
- [10.8.3](./1083.md)
- [10.9.0](./1090.md)
- [10.9.1](./1091.md)
- [10.9.2](./1092.md)
- [10.9.3](./1093.md)

<!-- FEEDBACK -->

Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "@woocommerce/block-library",
"title": "WooCommerce Blocks",
"author": "Automattic",
"version": "10.9.1",
"version": "10.9.3",
"description": "WooCommerce blocks for the Gutenberg editor.",
"homepage": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/",
"keywords": [
Expand Down
17 changes: 16 additions & 1 deletion readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Tags: gutenberg, woocommerce, woo commerce, products, blocks, woocommerce blocks
Requires at least: 6.3
Tested up to: 6.3
Requires PHP: 7.3
Stable tag: 10.9.1
Stable tag: 10.9.3
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Expand Down Expand Up @@ -81,6 +81,21 @@ Release and roadmap notes available on the [WooCommerce Developers Blog](https:/

== Changelog ==

= 10.9.3 - 2023-08-24 =

#### Bug Fixes

- Add to Cart: fix the problem that variable products couldn't be added to cart

= 10.9.2 - 2023-08-21 =

#### Bug Fixes

- Load Interactivity API in `bootstrap.php`. ([10657](https://github.com/woocommerce/woocommerce-blocks/pull/10657))
- Add to Cart button: fix the layout of View Cart link showing after adding product to cart. ([10675](https://github.com/woocommerce/woocommerce-blocks/pull/10675))
- Fixed checkout and cart page migration routine for users of block themes so that block templates are also migrated. ([10641](https://github.com/woocommerce/woocommerce-blocks/pull/10641))
- Fixed a bug causing Cart and Checkout Blocks to be used by default instead of shortcode versions on WC updates. ([10608](https://github.com/woocommerce/woocommerce-blocks/pull/10608))

= 10.9.1 - 2023-08-17 =

#### Enhancements
Expand Down
115 changes: 9 additions & 106 deletions src/BlockTemplatesController.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php
namespace Automattic\WooCommerce\Blocks;

use Automattic\Jetpack\Constants;
use Automattic\WooCommerce\Blocks\Domain\Package;
use Automattic\WooCommerce\Blocks\Templates\CartTemplate;
use Automattic\WooCommerce\Blocks\Templates\CheckoutTemplate;
Expand All @@ -10,6 +11,7 @@
use Automattic\WooCommerce\Blocks\Utils\BlockTemplateUtils;
use Automattic\WooCommerce\Blocks\Templates\OrderConfirmationTemplate;
use Automattic\WooCommerce\Blocks\Utils\SettingsUtils;
use Automattic\WooCommerce\Blocks\Utils\BlockTemplateMigrationUtils;
use \WP_Post;

/**
Expand Down Expand Up @@ -766,117 +768,18 @@ function_exists( 'is_shop' ) &&
* Migrates page content to templates if needed.
*/
public function maybe_migrate_content() {
if ( ! $this->has_migrated_page( 'cart' ) ) {
$this->migrate_page( 'cart', CartTemplate::get_placeholder_page() );
}
if ( ! $this->has_migrated_page( 'checkout' ) ) {
$this->migrate_page( 'checkout', CheckoutTemplate::get_placeholder_page() );
}
}

/**
* Check if a page has been migrated to a template.
*
* @param string $page_id Page ID.
* @return boolean
*/
protected function has_migrated_page( $page_id ) {
return (bool) get_option( 'has_migrated_' . $page_id, false );
}

/**
* Prepare default page template.
*
* @param \WP_Post $page Page object.
* @return string
*/
protected function get_default_migrate_page_template( $page ) {
$default_template_content = $this->get_block_template_part( 'header' );
$default_template_content .= '
<!-- wp:group {"layout":{"inherit":true}} -->
<div class="wp-block-group">
<!-- wp:heading {"level":1} -->
<h1 class="wp-block-heading">' . wp_kses_post( $page->post_title ) . '</h1>
<!-- /wp:heading -->
' . wp_kses_post( $page->post_content ) . '
</div>
<!-- /wp:group -->
';
$default_template_content .= $this->get_block_template_part( 'footer' );

return $default_template_content;
}

/**
* Migrates a page to a template if needed.
*
* @param string $page_id Page ID.
* @param \WP_Post $page Page object.
*/
protected function migrate_page( $page_id, $page ) {
if ( ! $page || empty( $page->post_content ) ) {
update_option( 'has_migrated_' . $page_id, '1' );
// Migration should occur on a normal request to ensure every requirement is met.
// We are postponing it if WP is in maintenance mode, installing, WC installing or if the request is part of a WP-CLI command.
if ( wp_is_maintenance_mode() || ! get_option( 'woocommerce_db_version', false ) || Constants::is_defined( 'WP_SETUP_CONFIG' ) || Constants::is_defined( 'WC_INSTALLING' ) || Constants::is_defined( 'WP_CLI' ) ) {
return;
}

// Use the page template if it exists, which we'll use over our default template if found.
$existing_page_template = BlockTemplateUtils::get_block_template( get_stylesheet() . '//page', 'wp_template' );

if ( $existing_page_template && ! empty( $existing_page_template->content ) && strstr( $existing_page_template->content, 'wp:post-content' ) ) {
// Massage the original content into something we can use. Replace post content with a group block.
$pattern = '/(<!--\s*)wp:post-content(.*?)(\/-->)/';
$replacement = '
<!-- wp:group $2 -->
<div class="wp-block-group">' . wp_kses_post( $page->post_content ) . '</div>
<!-- /wp:group -->
';
$template_content = preg_replace( $pattern, $replacement, $existing_page_template->content );
} else {
$template_content = $this->get_default_migrate_page_template( $page );
}

$new_page_template = BlockTemplateUtils::get_block_template( 'woocommerce/woocommerce//' . $page_id, 'wp_template' );

// Check template validity--template must exist, and custom template must not be present already.
if ( ! $new_page_template || $new_page_template->wp_id ) {
update_option( 'has_migrated_' . $page_id, '1' );
return;
if ( ! BlockTemplateMigrationUtils::has_migrated_page( 'cart' ) ) {
BlockTemplateMigrationUtils::migrate_page( 'cart', CartTemplate::get_placeholder_page() );
}

$new_page_template_id = wp_insert_post(
[
'post_name' => $new_page_template->slug,
'post_type' => 'wp_template',
'post_status' => 'publish',
'tax_input' => array(
'wp_theme' => $new_page_template->theme,
),
'meta_input' => array(
'origin' => $new_page_template->source,
),
'post_content' => $template_content,
],
true
);

if ( ! is_wp_error( $new_page_template_id ) ) {
update_option( 'has_migrated_' . $page_id, '1' );
}
}

/**
* Returns the requested template part.
*
* @param string $part The part to return.
*
* @return string
*/
protected function get_block_template_part( $part ) {
$template_part = BlockTemplateUtils::get_block_template( get_stylesheet() . '//' . $part, 'wp_template_part' );
if ( ! $template_part || empty( $template_part->content ) ) {
return '';
if ( ! BlockTemplateMigrationUtils::has_migrated_page( 'checkout' ) ) {
BlockTemplateMigrationUtils::migrate_page( 'checkout', CheckoutTemplate::get_placeholder_page() );
}
return $template_part->content;
}

/**
Expand Down
1 change: 0 additions & 1 deletion src/BlockTypes/ProductButton.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ protected function enqueue_assets( array $attributes ) {
*/
public function dequeue_add_to_cart_scripts() {
wp_dequeue_script( 'wc-add-to-cart' );
wp_dequeue_script( 'wc-add-to-cart-variation' );
}

/**
Expand Down
8 changes: 8 additions & 0 deletions src/Domain/Bootstrap.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ public function __construct( Container $container ) {
protected function init() {
$this->register_dependencies();
$this->register_payment_methods();
$this->load_interactivity_api();

// This is just a temporary solution to make sure the migrations are run. We have to refactor this. More details: https://github.com/woocommerce/woocommerce-blocks/issues/10196.
if ( $this->package->get_version() !== $this->package->get_version_stored_on_db() ) {
Expand Down Expand Up @@ -225,6 +226,13 @@ function() {
);
}

/**
* Load and set up the Interactivity API if enabled.
*/
protected function load_interactivity_api() {
require_once __DIR__ . '/../Interactivity/load.php';
}

/**
* Register core dependencies with the container.
*/
Expand Down
2 changes: 1 addition & 1 deletion src/Package.php
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ public static function container( $reset = false ) {
NewPackage::class,
function ( $container ) {
// leave for automated version bumping.
$version = '10.9.1';
$version = '10.9.3';
return new NewPackage(
$version,
dirname( __DIR__ ),
Expand Down
7 changes: 7 additions & 0 deletions src/Templates/CartTemplate.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<?php
namespace Automattic\WooCommerce\Blocks\Templates;

use Automattic\WooCommerce\Blocks\Utils\BlockTemplateMigrationUtils;

/**
* CartTemplate class.
*
Expand Down Expand Up @@ -32,6 +34,11 @@ public static function get_placeholder_page() {
* @return boolean
*/
protected function is_active_template() {

if ( ! BlockTemplateMigrationUtils::has_migrated_page( 'cart' ) ) {
return false;
}

global $post;
$placeholder = $this->get_placeholder_page();
return null !== $placeholder && $post instanceof \WP_Post && $placeholder->post_name === $post->post_name;
Expand Down
Loading

0 comments on commit a917c98

Please sign in to comment.