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.2 (#10672)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>

* Move migration and status codes to BlockTemplateMigrationUtils

---------

Co-authored-by: Paulo Arromba <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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

---------

Co-authored-by: Luigi Teschio <[email protected]>
Co-authored-by: github-actions <[email protected]>
Co-authored-by: Manish Menaria <[email protected]>
Co-authored-by: Karol Manijak <[email protected]>
Co-authored-by: Niels Lange <[email protected]>
Co-authored-by: Mike Jolley <[email protected]>
Co-authored-by: Paulo Arromba <[email protected]>
  • Loading branch information
8 people authored Aug 22, 2023
1 parent 416d5a7 commit 279b4fd
Show file tree
Hide file tree
Showing 14 changed files with 301 additions and 145 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.2",
"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 [email protected]
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.
1 change: 1 addition & 0 deletions docs/internal-developers/testing/releases/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ 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)

<!-- 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.2",
"description": "WooCommerce blocks for the Gutenberg editor.",
"homepage": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/",
"keywords": [
Expand Down
12 changes: 11 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.2
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0.html

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

== Changelog ==

= 10.9.2 - 2023-08-21 =

#### Bug Fixes

#### 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
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.2';
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
7 changes: 7 additions & 0 deletions src/Templates/CheckoutTemplate.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;

/**
* CheckoutTemplate class.
*
Expand Down Expand Up @@ -41,6 +43,11 @@ public static function get_template_title() {
* @return boolean
*/
public function is_active_template() {

if ( ! BlockTemplateMigrationUtils::has_migrated_page( 'checkout' ) ) {
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 279b4fd

Please sign in to comment.