From d18130226603761a6acfdd693f76adacab2a8c25 Mon Sep 17 00:00:00 2001 From: Justin Foell <630830+jrfoell@users.noreply.github.com> Date: Fri, 24 Sep 2021 10:22:49 -0500 Subject: [PATCH 1/3] Add activities tranform for embed --- src/WPStrava/Blocks/Activity.php | 3 ++- src/blocks/activity/index.js | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/WPStrava/Blocks/Activity.php b/src/WPStrava/Blocks/Activity.php index f39a9b5..58d5f51 100644 --- a/src/WPStrava/Blocks/Activity.php +++ b/src/WPStrava/Blocks/Activity.php @@ -48,6 +48,7 @@ class WPStrava_Blocks_Activity implements WPStrava_Blocks_Interface { ), ) ); + add_action( 'wp_footer', array( $this, 'print_scripts' ) ); } @@ -68,7 +69,7 @@ class WPStrava_Blocks_Activity implements WPStrava_Blocks_Interface { $this->add_script = true; $matches = array(); - preg_match( '/\/activities\/([0-9].*)$/', $attributes['url'], $matches ); + preg_match( '#/activities/([0-9].*)$#', $attributes['url'], $matches ); if ( $matches[1] ) { // Transform from block attributes to shortcode standard. $attributes = array( diff --git a/src/blocks/activity/index.js b/src/blocks/activity/index.js index 70a50a1..333c154 100644 --- a/src/blocks/activity/index.js +++ b/src/blocks/activity/index.js @@ -1,9 +1,27 @@ /* global wp, wpStrava */ -import { registerBlockType } from '@wordpress/blocks'; +import { registerBlockType, createBlock } from '@wordpress/blocks'; import edit from './edit'; import metadata from './block.json'; metadata.edit = edit; metadata.save = () => null; +metadata.transforms = { + from: [ + { + type: "raw", + priority: 10, + isMatch: ( node ) => + node.nodeName === "P" && + node.innerText.startsWith( "https://www.strava.com/activities/" ), + + transform: function( node ) { + return createBlock( metadata.name, { + url: node.innerText, + } ); + } + } + ] +}; + registerBlockType( metadata.name, metadata ); From ccf9231c43c8d47ffcdb32604cd8a535422f2fda Mon Sep 17 00:00:00 2001 From: Justin Foell <630830+jrfoell@users.noreply.github.com> Date: Fri, 24 Sep 2021 10:26:48 -0500 Subject: [PATCH 2/3] Add transforms for routes --- src/WPStrava/Blocks/Route.php | 3 ++- src/blocks/route/index.js | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/WPStrava/Blocks/Route.php b/src/WPStrava/Blocks/Route.php index 98affcd..59e8410 100644 --- a/src/WPStrava/Blocks/Route.php +++ b/src/WPStrava/Blocks/Route.php @@ -48,6 +48,7 @@ class WPStrava_Blocks_Route implements WPStrava_Blocks_Interface { ), ) ); + add_action( 'wp_footer', array( $this, 'print_scripts' ) ); } @@ -68,7 +69,7 @@ class WPStrava_Blocks_Route implements WPStrava_Blocks_Interface { $this->add_script = true; $matches = array(); - preg_match( '/\/routes\/([0-9].*)$/', $attributes['url'], $matches ); + preg_match( '#/routes/([0-9].*)$#', $attributes['url'], $matches ); if ( $matches[1] ) { // Transform from block attributes to shortcode standard. $attributes = array( diff --git a/src/blocks/route/index.js b/src/blocks/route/index.js index 70a50a1..70c398b 100644 --- a/src/blocks/route/index.js +++ b/src/blocks/route/index.js @@ -1,9 +1,27 @@ /* global wp, wpStrava */ -import { registerBlockType } from '@wordpress/blocks'; +import { registerBlockType, createBlock } from '@wordpress/blocks'; import edit from './edit'; import metadata from './block.json'; metadata.edit = edit; metadata.save = () => null; +metadata.transforms = { + from: [ + { + type: "raw", + priority: 10, + isMatch: ( node ) => + node.nodeName === "P" && + node.innerText.startsWith( "https://www.strava.com/routes/" ), + + transform: function( node ) { + return createBlock( metadata.name, { + url: node.innerText, + } ); + } + } + ] +}; + registerBlockType( metadata.name, metadata ); From 22ff8c89ca08404691c4a5e94292e4768a88e131 Mon Sep 17 00:00:00 2001 From: Justin Foell <630830+jrfoell@users.noreply.github.com> Date: Fri, 24 Sep 2021 10:30:48 -0500 Subject: [PATCH 3/3] Added transforms for segments --- src/WPStrava/Blocks/Segment.php | 3 ++- src/blocks/segment/index.js | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/WPStrava/Blocks/Segment.php b/src/WPStrava/Blocks/Segment.php index 89bcb62..07c9ae1 100644 --- a/src/WPStrava/Blocks/Segment.php +++ b/src/WPStrava/Blocks/Segment.php @@ -48,6 +48,7 @@ class WPStrava_Blocks_Segment implements WPStrava_Blocks_Interface { ), ) ); + add_action( 'wp_footer', array( $this, 'print_scripts' ) ); } @@ -68,7 +69,7 @@ class WPStrava_Blocks_Segment implements WPStrava_Blocks_Interface { $this->add_script = true; $matches = array(); - preg_match( '/\/segments\/([0-9].*)$/', $attributes['url'], $matches ); + preg_match( '#/segments/([0-9].*)$#', $attributes['url'], $matches ); if ( $matches[1] ) { // Transform from block attributes to shortcode standard. $atts = array( diff --git a/src/blocks/segment/index.js b/src/blocks/segment/index.js index 70a50a1..bea5f17 100644 --- a/src/blocks/segment/index.js +++ b/src/blocks/segment/index.js @@ -1,9 +1,27 @@ /* global wp, wpStrava */ -import { registerBlockType } from '@wordpress/blocks'; +import { registerBlockType, createBlock } from '@wordpress/blocks'; import edit from './edit'; import metadata from './block.json'; metadata.edit = edit; metadata.save = () => null; +metadata.transforms = { + from: [ + { + type: "raw", + priority: 10, + isMatch: ( node ) => + node.nodeName === "P" && + node.innerText.startsWith( "https://www.strava.com/segments/" ), + + transform: function( node ) { + return createBlock( metadata.name, { + url: node.innerText, + } ); + } + } + ] +}; + registerBlockType( metadata.name, metadata );