woocommerce/plugins/woocommerce-blocks/patterns/hero-product-chessboard.php

121 lines
7.2 KiB
PHP
Raw Normal View History

<?php
/**
* Title: Hero Product Chessboard
* Slug: woocommerce-blocks/hero-product-chessboard
* Categories: WooCommerce
*/
[Store Customization] Update patterns to use the AI selected verticals for images (https://github.com/woocommerce/woocommerce-blocks/pull/10796) * Add the Verticals API client * Add tests * Refactor error handling * Create first version of the prompt class * Improve Vertical selector and add tests * Remove testing code * Update class comment * Add PatternImages class * Pass the dictionary as param * Add tests * Add `get_pattern_images` function and use it on patterns * Add the Jetpack Connection Package as a dependency for WooCommerce Blocks. * Introduce the new Configuration Class for registering and enabling the Jetpack connection for sites and users. * Introduce the Connection class for making requests to the GPT AI API. * Update the get_jwt_token method. * Update the error messages for the get_jwt_token method. * Update the register_site method. * Update the Configuration class structure and add Dependency Injection. * Update structure for the Connection Class. * Update the return type for the get_jwt_token method. * Update method visibility for get_site_id * Update the name and params for methods within the Connection Class * Add tests for the Connecction class. * Update the Constructor for the Configuration class. * Add the Patterns class. * Move the get_image_url function to the PatternImages class and update the call in all patterns to address errors. * Remove the functions.php file * Update the VerticalsSelector class. * Update the constructor for PatternImages. * Update the Store API Route for Patterns. * Update the create_patterns_content method to ensure it returns the results of update_option. * Add the new Patterns route to the RoutesController class. * Update the route path and remove the business description validation as that is done via create_patterns_content * Introduce the PatternsSchema * Update the prompt, errors messages and output format for the Verticals Selector. * Fix the missing file error for the Patterns Dictionary. * Introduce the new get_patterns_dictionary method and update the create_patterns_content method to better handle errors. * Update the returned response for the endpoint. * Add the get_item_response method to the PatternsSchema class. * Update response for when allow_ai_connection option is not set. * Enable authentication for the endpoint. * Modify and temporarily remove some failing tests for the AI API: a separate PR will be opened to clear those out later. * Add validation to the verticals_id. * Remove reference to the src/Patterns/functions.php file. * Update `alt` to be more generic, since the displayed images will vary * Store Customization > Schedule an action to update the patterns content whenever the business description is changed (https://github.com/woocommerce/woocommerce-blocks/pull/10956) * Introduce the new OptionUpdate class. * Update the path to action schduler and add a file_exists check before attempting to schedule the action. * Update the content in patterns from the BlockPatterns class instead. * Remove return comment --------- Co-authored-by: Alba Rincón <alba.rincon@automattic.com> --------- Co-authored-by: Patricia Hillebrandt <patriciahillebrandt@gmail.com>
2023-09-19 07:05:44 +00:00
use Automattic\WooCommerce\Blocks\Patterns\PatternsHelper;
[Store Customization] Update patterns to use the AI selected verticals for images (https://github.com/woocommerce/woocommerce-blocks/pull/10796) * Add the Verticals API client * Add tests * Refactor error handling * Create first version of the prompt class * Improve Vertical selector and add tests * Remove testing code * Update class comment * Add PatternImages class * Pass the dictionary as param * Add tests * Add `get_pattern_images` function and use it on patterns * Add the Jetpack Connection Package as a dependency for WooCommerce Blocks. * Introduce the new Configuration Class for registering and enabling the Jetpack connection for sites and users. * Introduce the Connection class for making requests to the GPT AI API. * Update the get_jwt_token method. * Update the error messages for the get_jwt_token method. * Update the register_site method. * Update the Configuration class structure and add Dependency Injection. * Update structure for the Connection Class. * Update the return type for the get_jwt_token method. * Update method visibility for get_site_id * Update the name and params for methods within the Connection Class * Add tests for the Connecction class. * Update the Constructor for the Configuration class. * Add the Patterns class. * Move the get_image_url function to the PatternImages class and update the call in all patterns to address errors. * Remove the functions.php file * Update the VerticalsSelector class. * Update the constructor for PatternImages. * Update the Store API Route for Patterns. * Update the create_patterns_content method to ensure it returns the results of update_option. * Add the new Patterns route to the RoutesController class. * Update the route path and remove the business description validation as that is done via create_patterns_content * Introduce the PatternsSchema * Update the prompt, errors messages and output format for the Verticals Selector. * Fix the missing file error for the Patterns Dictionary. * Introduce the new get_patterns_dictionary method and update the create_patterns_content method to better handle errors. * Update the returned response for the endpoint. * Add the get_item_response method to the PatternsSchema class. * Update response for when allow_ai_connection option is not set. * Enable authentication for the endpoint. * Modify and temporarily remove some failing tests for the AI API: a separate PR will be opened to clear those out later. * Add validation to the verticals_id. * Remove reference to the src/Patterns/functions.php file. * Update `alt` to be more generic, since the displayed images will vary * Store Customization > Schedule an action to update the patterns content whenever the business description is changed (https://github.com/woocommerce/woocommerce-blocks/pull/10956) * Introduce the new OptionUpdate class. * Update the path to action schduler and add a file_exists check before attempting to schedule the action. * Update the content in patterns from the BlockPatterns class instead. * Remove return comment --------- Co-authored-by: Alba Rincón <alba.rincon@automattic.com> --------- Co-authored-by: Patricia Hillebrandt <patriciahillebrandt@gmail.com>
2023-09-19 07:05:44 +00:00
$image1 = PatternsHelper::get_image_url( $images, 0, 'images/pattern-placeholders/plant-white-leaf-flower-vase-green.jpg' );
$image2 = PatternsHelper::get_image_url( $images, 1, 'images/pattern-placeholders/table-wood-house-chair-floor-window.jpg' );
$first_title = $content['titles'][0]['default'] ?? '';
$second_title = $content['titles'][1]['default'] ?? '';
$third_title = $content['titles'][2]['default'] ?? '';
$first_description = $content['descriptions'][0]['default'] ?? '';
$second_description = $content['descriptions'][1]['default'] ?? '';
$third_description = $content['descriptions'][2]['default'] ?? '';
?>
<!-- wp:group {"align":"full","style":{"spacing":{"margin":{"top":"0px","bottom":"80px"}}},"layout":{"type":"constrained"}} -->
<div class="wp-block-group alignfull" style="margin-top:0px;margin-bottom:80px">
<!-- wp:columns {"align":"full","style":{"spacing":{"padding":{"top":"0","right":"0","bottom":"0","left":"0"},"blockGap":{"top":"0","left":"0"}}}} -->
<div class="wp-block-columns alignfull" style="padding-top:0;padding-right:0;padding-bottom:0;padding-left:0">
<!-- wp:column -->
<div class="wp-block-column">
[Store Customization] Update patterns to use the AI selected verticals for images (https://github.com/woocommerce/woocommerce-blocks/pull/10796) * Add the Verticals API client * Add tests * Refactor error handling * Create first version of the prompt class * Improve Vertical selector and add tests * Remove testing code * Update class comment * Add PatternImages class * Pass the dictionary as param * Add tests * Add `get_pattern_images` function and use it on patterns * Add the Jetpack Connection Package as a dependency for WooCommerce Blocks. * Introduce the new Configuration Class for registering and enabling the Jetpack connection for sites and users. * Introduce the Connection class for making requests to the GPT AI API. * Update the get_jwt_token method. * Update the error messages for the get_jwt_token method. * Update the register_site method. * Update the Configuration class structure and add Dependency Injection. * Update structure for the Connection Class. * Update the return type for the get_jwt_token method. * Update method visibility for get_site_id * Update the name and params for methods within the Connection Class * Add tests for the Connecction class. * Update the Constructor for the Configuration class. * Add the Patterns class. * Move the get_image_url function to the PatternImages class and update the call in all patterns to address errors. * Remove the functions.php file * Update the VerticalsSelector class. * Update the constructor for PatternImages. * Update the Store API Route for Patterns. * Update the create_patterns_content method to ensure it returns the results of update_option. * Add the new Patterns route to the RoutesController class. * Update the route path and remove the business description validation as that is done via create_patterns_content * Introduce the PatternsSchema * Update the prompt, errors messages and output format for the Verticals Selector. * Fix the missing file error for the Patterns Dictionary. * Introduce the new get_patterns_dictionary method and update the create_patterns_content method to better handle errors. * Update the returned response for the endpoint. * Add the get_item_response method to the PatternsSchema class. * Update response for when allow_ai_connection option is not set. * Enable authentication for the endpoint. * Modify and temporarily remove some failing tests for the AI API: a separate PR will be opened to clear those out later. * Add validation to the verticals_id. * Remove reference to the src/Patterns/functions.php file. * Update `alt` to be more generic, since the displayed images will vary * Store Customization > Schedule an action to update the patterns content whenever the business description is changed (https://github.com/woocommerce/woocommerce-blocks/pull/10956) * Introduce the new OptionUpdate class. * Update the path to action schduler and add a file_exists check before attempting to schedule the action. * Update the content in patterns from the BlockPatterns class instead. * Remove return comment --------- Co-authored-by: Alba Rincón <alba.rincon@automattic.com> --------- Co-authored-by: Patricia Hillebrandt <patriciahillebrandt@gmail.com>
2023-09-19 07:05:44 +00:00
<!-- wp:cover {"url":"<?php echo esc_url( $image1 ); ?>","dimRatio":0,"focalPoint":{"x":0.54,"y":0.52},"isDark":false,"style":{"color":{}}} -->
<div class="wp-block-cover is-light">
[Store Customization] Update patterns to use the AI selected verticals for images (https://github.com/woocommerce/woocommerce-blocks/pull/10796) * Add the Verticals API client * Add tests * Refactor error handling * Create first version of the prompt class * Improve Vertical selector and add tests * Remove testing code * Update class comment * Add PatternImages class * Pass the dictionary as param * Add tests * Add `get_pattern_images` function and use it on patterns * Add the Jetpack Connection Package as a dependency for WooCommerce Blocks. * Introduce the new Configuration Class for registering and enabling the Jetpack connection for sites and users. * Introduce the Connection class for making requests to the GPT AI API. * Update the get_jwt_token method. * Update the error messages for the get_jwt_token method. * Update the register_site method. * Update the Configuration class structure and add Dependency Injection. * Update structure for the Connection Class. * Update the return type for the get_jwt_token method. * Update method visibility for get_site_id * Update the name and params for methods within the Connection Class * Add tests for the Connecction class. * Update the Constructor for the Configuration class. * Add the Patterns class. * Move the get_image_url function to the PatternImages class and update the call in all patterns to address errors. * Remove the functions.php file * Update the VerticalsSelector class. * Update the constructor for PatternImages. * Update the Store API Route for Patterns. * Update the create_patterns_content method to ensure it returns the results of update_option. * Add the new Patterns route to the RoutesController class. * Update the route path and remove the business description validation as that is done via create_patterns_content * Introduce the PatternsSchema * Update the prompt, errors messages and output format for the Verticals Selector. * Fix the missing file error for the Patterns Dictionary. * Introduce the new get_patterns_dictionary method and update the create_patterns_content method to better handle errors. * Update the returned response for the endpoint. * Add the get_item_response method to the PatternsSchema class. * Update response for when allow_ai_connection option is not set. * Enable authentication for the endpoint. * Modify and temporarily remove some failing tests for the AI API: a separate PR will be opened to clear those out later. * Add validation to the verticals_id. * Remove reference to the src/Patterns/functions.php file. * Update `alt` to be more generic, since the displayed images will vary * Store Customization > Schedule an action to update the patterns content whenever the business description is changed (https://github.com/woocommerce/woocommerce-blocks/pull/10956) * Introduce the new OptionUpdate class. * Update the path to action schduler and add a file_exists check before attempting to schedule the action. * Update the content in patterns from the BlockPatterns class instead. * Remove return comment --------- Co-authored-by: Alba Rincón <alba.rincon@automattic.com> --------- Co-authored-by: Patricia Hillebrandt <patriciahillebrandt@gmail.com>
2023-09-19 07:05:44 +00:00
<img class="wp-block-cover__image-background" alt="<?php esc_attr_e( 'Placeholder image used to represent a product being showcased in a hero section. 1 out of 2.', 'woo-gutenberg-products-block' ); ?>" src="<?php echo esc_url( $image1 ); ?>" style="object-position:54% 52%" data-object-fit="cover" data-object-position="54% 52%"/>
<div class="wp-block-cover__inner-container">
<!-- wp:paragraph {"align":"center","placeholder":"Write title…","fontSize":"large"} -->
<p class="has-text-align-center has-large-font-size"> </p>
<!-- /wp:paragraph -->
</div>
</div>
<!-- /wp:cover -->
</div>
<!-- /wp:column -->
<!-- wp:column {"verticalAlignment":"center","style":{"spacing":{"padding":{"top":"0","right":"0","bottom":"0","left":"0"}}},"layout":{"type":"constrained"}} -->
<div class="wp-block-column is-vertically-aligned-center" style="padding-top:0;padding-right:0;padding-bottom:0;padding-left:0">
<!-- wp:group {"align":"full","style":{"spacing":{"padding":{"top":"0px","right":"60px","bottom":"0px","left":"60px"},"margin":{"top":"var:preset|spacing|40","bottom":"var:preset|spacing|40"}}}} -->
<div class="wp-block-group alignfull" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40);padding-top:0px;padding-right:60px;padding-bottom:0px;padding-left:60px">
<!-- wp:heading {"textAlign":"left","level":2} -->
<h2 class="wp-block-heading has-text-align-left has-large-font-size"><strong><?php echo esc_html( $third_title ); ?></strong></h3>
<!-- /wp:heading -->
<!-- wp:paragraph {"style":{"spacing":{"margin":{"bottom":"var:preset|spacing|40"}}}} -->
<p style="margin-bottom:var(--wp--preset--spacing--40)"><?php echo esc_html( $third_description ); ?></p>
<!-- /wp:paragraph -->
<!-- wp:buttons {"style":{"spacing":{"margin":{"top":"64px"}}}} -->
<div class="wp-block-buttons" style="margin-top:64px">
<!-- wp:button {"textAlign":"left"} -->
<div class="wp-block-button has-custom-font-size">
<a class="wp-block-button__link has-text-align-left wp-element-button" href="<?php echo esc_url( get_permalink( wc_get_page_id( 'shop' ) ) ); ?>">Shop now</a>
</div>
<!-- /wp:button -->
</div>
<!-- /wp:buttons -->
</div>
<!-- /wp:group -->
</div>
<!-- /wp:column -->
</div>
<!-- /wp:columns -->
<!-- wp:columns {"verticalAlignment":"center","align":"full","style":{"spacing":{"padding":{"top":"0","right":"0","bottom":"0","left":"0"},"blockGap":{"top":"0","left":"0"},"margin":{"top":"0","bottom":"0"}}}} -->
<div class="wp-block-columns alignfull are-vertically-aligned-center" style="margin-top:0;margin-bottom:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0">
<!-- wp:column {"verticalAlignment":"center","style":{"spacing":{"padding":{"top":"0","right":"0","bottom":"0","left":"0"}}}} -->
<div class="wp-block-column is-vertically-aligned-center" style="padding-top:0;padding-right:0;padding-bottom:0;padding-left:0">
<!-- wp:group {"style":{"spacing":{"padding":{"right":"50px","left":"50px","top":"50px","bottom":"50px"},"blockGap":"32px"}},"layout":{"type":"constrained"}} -->
<div class="wp-block-group" style="padding-top:50px;padding-right:50px;padding-bottom:50px;padding-left:50px">
<!-- wp:group {"style":{"spacing":{"blockGap":"16px"}},"layout":{"type":"flex","orientation":"vertical"}} -->
<div class="wp-block-group">
<!-- wp:heading {"level":6,"style":{"typography":{"textTransform":"capitalize"}}} -->
<h6 class="wp-block-heading" style="text-transform:capitalize"><strong><?php echo esc_html( $first_title ); ?></strong></h6>
<!-- /wp:heading -->
<!-- wp:paragraph {"style":{"spacing":{"padding":{"top":"0","right":"0","bottom":"0","left":"0"},"margin":{"top":"var:preset|spacing|20","right":"0","bottom":"0","left":"0"}}}} -->
<p style="margin-top:var(--wp--preset--spacing--20);margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0"><?php echo esc_html( $first_description ); ?></p>
<!-- /wp:paragraph -->
</div>
<!-- /wp:group -->
<!-- wp:group {"style":{"dimensions":{"minHeight":""},"spacing":{"blockGap":"16px"}},"layout":{"type":"flex","orientation":"vertical"}} -->
<div class="wp-block-group">
<!-- wp:heading {"level":6,"style":{"typography":{"textTransform":"capitalize"}}} -->
<h6 class="wp-block-heading" style="text-transform:capitalize"><strong><?php echo esc_html( $second_title ); ?></strong></h6>
<!-- /wp:heading -->
<!-- wp:paragraph {"style":{"spacing":{"margin":{"top":"var:preset|spacing|20"}}}} -->
<p style="margin-top:var(--wp--preset--spacing--20)"><?php echo esc_html( $second_description ); ?></p>
<!-- /wp:paragraph -->
</div>
<!-- /wp:group -->
</div>
<!-- /wp:group -->
</div>
<!-- /wp:column -->
<!-- wp:column {"verticalAlignment":"center"} -->
<div class="wp-block-column is-vertically-aligned-center">
[Store Customization] Update patterns to use the AI selected verticals for images (https://github.com/woocommerce/woocommerce-blocks/pull/10796) * Add the Verticals API client * Add tests * Refactor error handling * Create first version of the prompt class * Improve Vertical selector and add tests * Remove testing code * Update class comment * Add PatternImages class * Pass the dictionary as param * Add tests * Add `get_pattern_images` function and use it on patterns * Add the Jetpack Connection Package as a dependency for WooCommerce Blocks. * Introduce the new Configuration Class for registering and enabling the Jetpack connection for sites and users. * Introduce the Connection class for making requests to the GPT AI API. * Update the get_jwt_token method. * Update the error messages for the get_jwt_token method. * Update the register_site method. * Update the Configuration class structure and add Dependency Injection. * Update structure for the Connection Class. * Update the return type for the get_jwt_token method. * Update method visibility for get_site_id * Update the name and params for methods within the Connection Class * Add tests for the Connecction class. * Update the Constructor for the Configuration class. * Add the Patterns class. * Move the get_image_url function to the PatternImages class and update the call in all patterns to address errors. * Remove the functions.php file * Update the VerticalsSelector class. * Update the constructor for PatternImages. * Update the Store API Route for Patterns. * Update the create_patterns_content method to ensure it returns the results of update_option. * Add the new Patterns route to the RoutesController class. * Update the route path and remove the business description validation as that is done via create_patterns_content * Introduce the PatternsSchema * Update the prompt, errors messages and output format for the Verticals Selector. * Fix the missing file error for the Patterns Dictionary. * Introduce the new get_patterns_dictionary method and update the create_patterns_content method to better handle errors. * Update the returned response for the endpoint. * Add the get_item_response method to the PatternsSchema class. * Update response for when allow_ai_connection option is not set. * Enable authentication for the endpoint. * Modify and temporarily remove some failing tests for the AI API: a separate PR will be opened to clear those out later. * Add validation to the verticals_id. * Remove reference to the src/Patterns/functions.php file. * Update `alt` to be more generic, since the displayed images will vary * Store Customization > Schedule an action to update the patterns content whenever the business description is changed (https://github.com/woocommerce/woocommerce-blocks/pull/10956) * Introduce the new OptionUpdate class. * Update the path to action schduler and add a file_exists check before attempting to schedule the action. * Update the content in patterns from the BlockPatterns class instead. * Remove return comment --------- Co-authored-by: Alba Rincón <alba.rincon@automattic.com> --------- Co-authored-by: Patricia Hillebrandt <patriciahillebrandt@gmail.com>
2023-09-19 07:05:44 +00:00
<!-- wp:cover {"url":"<?php echo esc_url( $image2 ); ?>","dimRatio":0,"focalPoint":{"x":0.33,"y":0.06},"style":{"color":{}}} -->
<div class="wp-block-cover">
[Store Customization] Update patterns to use the AI selected verticals for images (https://github.com/woocommerce/woocommerce-blocks/pull/10796) * Add the Verticals API client * Add tests * Refactor error handling * Create first version of the prompt class * Improve Vertical selector and add tests * Remove testing code * Update class comment * Add PatternImages class * Pass the dictionary as param * Add tests * Add `get_pattern_images` function and use it on patterns * Add the Jetpack Connection Package as a dependency for WooCommerce Blocks. * Introduce the new Configuration Class for registering and enabling the Jetpack connection for sites and users. * Introduce the Connection class for making requests to the GPT AI API. * Update the get_jwt_token method. * Update the error messages for the get_jwt_token method. * Update the register_site method. * Update the Configuration class structure and add Dependency Injection. * Update structure for the Connection Class. * Update the return type for the get_jwt_token method. * Update method visibility for get_site_id * Update the name and params for methods within the Connection Class * Add tests for the Connecction class. * Update the Constructor for the Configuration class. * Add the Patterns class. * Move the get_image_url function to the PatternImages class and update the call in all patterns to address errors. * Remove the functions.php file * Update the VerticalsSelector class. * Update the constructor for PatternImages. * Update the Store API Route for Patterns. * Update the create_patterns_content method to ensure it returns the results of update_option. * Add the new Patterns route to the RoutesController class. * Update the route path and remove the business description validation as that is done via create_patterns_content * Introduce the PatternsSchema * Update the prompt, errors messages and output format for the Verticals Selector. * Fix the missing file error for the Patterns Dictionary. * Introduce the new get_patterns_dictionary method and update the create_patterns_content method to better handle errors. * Update the returned response for the endpoint. * Add the get_item_response method to the PatternsSchema class. * Update response for when allow_ai_connection option is not set. * Enable authentication for the endpoint. * Modify and temporarily remove some failing tests for the AI API: a separate PR will be opened to clear those out later. * Add validation to the verticals_id. * Remove reference to the src/Patterns/functions.php file. * Update `alt` to be more generic, since the displayed images will vary * Store Customization > Schedule an action to update the patterns content whenever the business description is changed (https://github.com/woocommerce/woocommerce-blocks/pull/10956) * Introduce the new OptionUpdate class. * Update the path to action schduler and add a file_exists check before attempting to schedule the action. * Update the content in patterns from the BlockPatterns class instead. * Remove return comment --------- Co-authored-by: Alba Rincón <alba.rincon@automattic.com> --------- Co-authored-by: Patricia Hillebrandt <patriciahillebrandt@gmail.com>
2023-09-19 07:05:44 +00:00
<img class="wp-block-cover__image-background" alt="<?php esc_attr_e( 'Placeholder image used to represent a product being showcased in a hero section. 2 out of 2.', 'woo-gutenberg-products-block' ); ?>" src="<?php echo esc_url( $image2 ); ?>" style="object-position:33% 6%" data-object-fit="cover" data-object-position="33% 6%"/>
<div class="wp-block-cover__inner-container">
<!-- wp:paragraph {"align":"center","placeholder":"Write title…","fontSize":"large"} -->
<p class="has-text-align-center has-large-font-size"> </p>
<!-- /wp:paragraph -->
</div>
</div>
<!-- /wp:cover -->
</div>
<!-- /wp:column -->
</div>
<!-- /wp:columns -->
</div>
<!-- /wp:group -->