diff --git a/readme.txt b/readme.txt index 79d1489..705255c 100755 --- a/readme.txt +++ b/readme.txt @@ -118,6 +118,7 @@ Fix missing translation domain on "Save Changes" in settings. https://wordpress. Refined styles for responsive tables https://wordpress.org/support/topic/responsive-strava-activity-table/ Add activity description under image (if set) https://wordpress.org/support/topic/show-activity-description/ Add preview of activity in the block editor using server-side render +Add System of Measure override in Activity Block display options = 2.4.0 = diff --git a/src/WPStrava/Blocks/Activity.php b/src/WPStrava/Blocks/Activity.php index e624e98..20d4a47 100644 --- a/src/WPStrava/Blocks/Activity.php +++ b/src/WPStrava/Blocks/Activity.php @@ -41,6 +41,10 @@ class WPStrava_Blocks_Activity implements WPStrava_Blocks_Interface { 'type' => 'boolean', 'default' => false, ), + 'som' => array( + 'type' => 'string', + 'default' => null, + ), ), ) ); @@ -68,9 +72,10 @@ class WPStrava_Blocks_Activity implements WPStrava_Blocks_Interface { if ( $matches[1] ) { // Transform from block attributes to shortcode standard. $attributes = array( + 'id' => $matches[1], 'image_only' => isset( $attributes['imageOnly'] ) ? $attributes['imageOnly'] : false, 'markers' => isset( $attributes['displayMarkers'] ) ? $attributes['displayMarkers'] : false, - 'id' => $matches[1], + 'som' => ! empty( $attributes['som'] ) ? $attributes['som'] : null, ); $renderer = new WPStrava_ActivityRenderer(); diff --git a/src/blocks/activity/edit.js b/src/blocks/activity/edit.js index e8f80bc..8cb73ec 100644 --- a/src/blocks/activity/edit.js +++ b/src/blocks/activity/edit.js @@ -1,6 +1,7 @@ /* global wp, wpStrava */ import EmbedPlaceholder from './embed-placeholder'; import EmbedControls from './embed-controls'; +import SOMOverride from './som-override'; const { __ } = wp.i18n; const { Component } = wp.element; @@ -17,11 +18,13 @@ class Edit extends Component { this.switchBackToURLInput = this.switchBackToURLInput.bind( this ); this.toggleImageOnly = this.toggleImageOnly.bind( this ); this.toggleDisplayMarkers = this.toggleDisplayMarkers.bind( this ); + this.overrideSOM = this.overrideSOM.bind( this ); this.state = { url: this.props.attributes.url, imageOnly: this.props.attributes.imageOnly, displayMarkers: this.props.attributes.displayMarkers, + som: this.props.attributes.som, editingURL: isEmpty( this.props.attributes.url ) ? true : false, }; } @@ -48,12 +51,18 @@ class Edit extends Component { this.props.setAttributes( { displayMarkers: checked } ); } + overrideSOM( newSOM ) { + this.setState( { som: newSOM } ); + this.props.setAttributes( { som: newSOM } ); + } + render() { const { url, editingURL, imageOnly, displayMarkers, + som } = this.state; // Newly inserted block or we've clicked the edit button. @@ -82,6 +91,7 @@ class Edit extends Component { url: url, imageOnly: imageOnly, displayMarkers: displayMarkers, + som: som, } } /> @@ -98,6 +108,10 @@ class Edit extends Component { checked={ displayMarkers } onChange={ (checked ) => this.toggleDisplayMarkers( checked ) } /> + this.overrideSOM( value ) } + som={ som } + /> diff --git a/src/blocks/activity/index.js b/src/blocks/activity/index.js index 7781147..6209cf0 100644 --- a/src/blocks/activity/index.js +++ b/src/blocks/activity/index.js @@ -18,7 +18,11 @@ registerBlockType( 'wp-strava/activity', { displayMarkers: { type: 'boolean', default: false, - } + }, + som: { + type: 'string', + default: null, + }, }, edit, save: () => null, diff --git a/src/blocks/activity/som-override.js b/src/blocks/activity/som-override.js new file mode 100644 index 0000000..b64c434 --- /dev/null +++ b/src/blocks/activity/som-override.js @@ -0,0 +1,55 @@ +/** + * WordPress dependencies + */ +import { + Button, + ButtonGroup, +} from '@wordpress/components'; +import { __ } from '@wordpress/i18n'; + +export default function SOMOverride( { + som, + onChange, +} ) { + + function updateSOM( som ) { + return () => { + onChange( som ); + }; + } + + return ( + <> +
+

+ { __( 'System of Measure (override from settings)' ) } +

+
+ + + + + +
+
+ + ); +}