Skip to content

Commit

Permalink
Merge pull request #90 from cmanon/feature/activiteslist-block
Browse files Browse the repository at this point in the history
Feature/activiteslist block
  • Loading branch information
jrfoell committed Mar 26, 2021
2 parents 8a5a9df + 1a8249b commit 66da9fd
Show file tree
Hide file tree
Showing 12 changed files with 194 additions and 17 deletions.
7 changes: 5 additions & 2 deletions readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Contributors: cmanon, jrfoell, lancewillett, dlintott, sebastianerb
Tags: strava, activity, bicycle, cycling, biking, running, run, swimming, swim, paddle, kayak, gps, shortcode, widget, plugin, block, blocks
Requires at least: 4.6
Tested up to: 5.7
Stable tag: 2.7.0
Stable tag: 2.8.0
Requires PHP: 5.3
License: GPLv2 or later

Expand Down Expand Up @@ -32,6 +32,8 @@ Strava Route - embed a route in any page or post. Shows a summary of the route p

Paste in the full route URL from Strava, such as https://www.strava.com/routes/2326567 and click "Embed." A preview map will be shown in the editor, similar to what will be displayed on the front-end. In the side-panel you can selection options to show the image only (without the details table), display markers at the start & finish points, and override the system of measure from your default selection under Settings -> Strava.

Strava Activities List - Shows your most recent activities in a bulleted list.

= Shortcodes =

[activity id=NUMBER] - add to any page or post. Shows a summary of the activity plus a map if a google maps key has been added.
Expand Down Expand Up @@ -119,9 +121,10 @@ On the WP-Strava settings page you cannot currently remove and add another athle
== Changelog ==


= Unreleased =
= 2.8.0 =
Revised `block.json` based on feedback from https://wordpress.org/plugins/developers/block-plugin-validator/
Add PHPCompatibility checks to coding standards (and fixes from recommendations)
Add Activities List Block


= 2.7.0 =
Expand Down
1 change: 1 addition & 0 deletions src/WPStrava.php
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,7 @@ public function register_blocks() {
static $blocks = array(
'WPStrava_Blocks_Activity',
'WPStrava_Blocks_Route',
'WPStrava_Blocks_ActivitiesList',
);

// automatically load dependencies and version
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
/**
* Activities List.
* Activities List Renderer.
* @package WPStrava
*/

Expand All @@ -10,9 +10,18 @@
* @author Justin Foell <[email protected]>
* @since 2.3.0
*/
class WPStrava_ActivitiesList {
public static function get_activities_html( $args ) {
if ( isset( $args['athlete_token'] ) ) {
class WPStrava_ActivitiesListRenderer {

/**
* Get the HTML for an Activities List.
*
* @param array $atts
* @return string HTML for an route.
* @author Justin Foell <[email protected]>
* @since 2.8.0
*/
public function get_html( $atts ) {
if ( isset( $atts['athlete_token'] ) ) {
// Translators: Message shown when using deprecated athlete_token parameter.
return __( 'The <code>athlete_token</code> parameter is deprecated as of WP-Strava version 2 and should be replaced with <code>client_id</code>.', 'wp-strava' );
}
Expand All @@ -26,14 +35,14 @@ public static function get_activities_html( $args ) {
'date_end' => '',
);

$args = wp_parse_args( $args, $defaults );
$atts = wp_parse_args( $atts, $defaults );

$som = WPStrava_SOM::get_som( $args['som'] );
$som = WPStrava_SOM::get_som( $atts['som'] );
$strava_activity = WPStrava::get_instance()->activity;
$activities = array();

try {
$activities = $strava_activity->get_activities( $args );
$activities = $strava_activity->get_activities( $atts );
} catch ( WPStrava_Exception $e ) {
return $e->to_html();
}
Expand All @@ -51,11 +60,11 @@ public static function get_activities_html( $args ) {
// Translators: Shows something like "On <date> <[went 10 miles] [during 2 hours] [climbing 100 feet]>."
__( 'On %1$s %2$s', 'wp-strava' ),
date_i18n( get_option( 'date_format' ), $unixtime ),
self::get_activity_time( $unixtime )
$this->get_activity_time( $unixtime )
);
}

if ( is_numeric( $args['strava_club_id'] ) ) {
if ( is_numeric( $atts['strava_club_id'] ) ) {
$name = $activity->athlete->firstname . ' ' . $activity->athlete->lastname;
$response .= empty( $activity->athlete->id ) ?
" {$name}" :
Expand Down Expand Up @@ -86,7 +95,7 @@ public static function get_activities_html( $args ) {
* @author Justin Foell <[email protected]>
* @since 1.7.1
*/
public static function get_activity_time( $unixtime ) {
private function get_activity_time( $unixtime ) {
if ( WPStrava::get_instance()->settings->hide_time ) {
return '';
}
Expand Down
4 changes: 3 additions & 1 deletion src/WPStrava/ActivitiesListShortcode.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,9 @@ public function __construct() {
*/
public function handler( $atts ) {
$this->add_script = true;
return WPStrava_ActivitiesList::get_activities_html( $atts );

$renderer = new WPStrava_ActivitiesListRenderer();
return $renderer->get_html( $atts );
}

/**
Expand Down
5 changes: 4 additions & 1 deletion src/WPStrava/ActivitiesListWidget.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,10 @@ public function widget( $args, $instance ) {
if ( $title ) {
echo $args['before_title'] . $title . $args['after_title'];
}
echo WPStrava_ActivitiesList::get_activities_html( $activities_args );

$renderer = new WPStrava_ActivitiesListRenderer();
echo $renderer->get_html( $activities_args );

echo $args['after_widget'];
// phpcs:enable WordPress.Security.EscapeOutput.OutputNotEscaped
}
Expand Down
74 changes: 74 additions & 0 deletions src/WPStrava/Blocks/ActivitiesList.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
<?php
/*
* ActivitiesList block.
*/

class WPStrava_Blocks_ActivitiesList implements WPStrava_Blocks_Interface {

/**
* Whether or not to enqueue styles (if shortcode is present).
*
* @var boolean
* @author Justin Foell <[email protected]>
* @since 2.5.0
*/
private $add_script = false;

/**
* Register the wp-strava/activitieslist block.
*
* @author Justin Foell <[email protected]>
* @since 2.2.0
*/
public function register_block() {
register_block_type(
'wp-strava/activitieslist',
array(
'style' => 'wp-strava-block',
'editor_style' => 'wp-strava-block-editor',
'editor_script' => 'wp-strava-block',
'render_callback' => array( $this, 'render_block' ),
'attributes' => array(
'som' => array(
'type' => 'string',
'default' => null,
),
),
)
);
add_action( 'wp_footer', array( $this, 'print_scripts' ) );
}

/**
* Render for this block.
*
* @param array $attributes JSON attributes saved in the HTML comment for this block.
* @param string $content The content from JS save() for this block.
* @return string HTML for this block.
* @author Justin Foell <[email protected]>
* @since 2.2.0
*/
public function render_block( $attributes, $content ) {
$this->add_script = true;

// Transform from block attributes to shortcode standard.
$attributes = array(
'som' => ! empty( $attributes['som'] ) ? $attributes['som'] : null,
);

$renderer = new WPStrava_ActivitiesListRenderer();
return $renderer->get_html( $attributes );
}

/**
* Enqueue style if block is being used.
*
* @author Justin Foell <[email protected]>
* @since 2.5.0
*/
public function print_scripts() {
if ( $this->add_script ) {
wp_enqueue_style( 'wp-strava-style' );
}
}
}
7 changes: 6 additions & 1 deletion src/WPStrava/RouteRenderer.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
<?php
/*
/**
* Route Renderer.
* @package WPStrava
*/

/**
* RouteRenderer has all the markup for the Route Block & Shortcode.
*/
class WPStrava_RouteRenderer {
Expand Down
18 changes: 18 additions & 0 deletions src/blocks/activitieslist/block.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "wp-strava/activitieslist",
"title": "Strava Activities List",
"category": "embed",
"icon": "editor-ul",
"description": "List of Strava Activities",
"keywords": [ "activity", "ride" ],
"textdomain": "wp-strava",
"attributes": {
"som": {
"type": "string",
"default": null
}
},
"editorScript": "file:../../../build/index.js",
"editorStyle": "file:../../../build/editor.css",
"style": "file:../../../build/style.css"
}
52 changes: 52 additions & 0 deletions src/blocks/activitieslist/edit.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/* global wp, wpStrava */
import SOMOverride from '../components/som-override';

const { __ } = wp.i18n;
const { Component } = wp.element;
const { InspectorControls } = wp.editor;
const { PanelBody, ToggleControl, ServerSideRender } = wp.components;

class Edit extends Component {

constructor() {
super( ...arguments );
this.overrideSOM = this.overrideSOM.bind( this );

this.state = {
som: this.props.attributes.som,
};
}

overrideSOM( newSOM ) {
this.setState( { som: newSOM } );
this.props.setAttributes( { som: newSOM } );
}

render() {
const {
som
} = this.state;

return (
<>
<ServerSideRender
block="wp-strava/activitieslist"
attributes={ {
som: som,
} }
/>
<InspectorControls>
<PanelBody
title={ __( 'Display Options', 'wp-strava' ) }
>
<SOMOverride
onChange={ this.overrideSOM }
/>
</PanelBody>
</InspectorControls>
</>
);
}
}

export default Edit;
9 changes: 9 additions & 0 deletions src/blocks/activitieslist/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/* global wp, wpStrava */
import { registerBlockType } from '@wordpress/blocks';
import edit from './edit';
import metadata from './block.json';

metadata.edit = edit;
metadata.save = () => null;

registerBlockType( metadata.name, metadata );
1 change: 1 addition & 0 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
import './blocks/activity';
import './blocks/route';
import './blocks/activitieslist';
4 changes: 2 additions & 2 deletions wp-strava.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* Plugin Name: WP Strava
* Plugin URI: https://wordpress.org/plugins/wp-strava/
* Description: Show your strava.com activity on your WordPress site. Some Icons are Copyright © Yusuke Kamiyamane. All rights reserved. Licensed under a Creative Commons Attribution 3.0 license.
* Version: 2.7.0
* Version: 2.8.0
* Author: Carlos Santa Cruz, Justin Foell, Lance Willett, Daniel Lintott, Sebastian Erb
* License: GPL2
* Text Domain: wp-strava
Expand All @@ -27,7 +27,7 @@
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/

define( 'WPSTRAVA_PLUGIN_VERSION', '2.7.0' );
define( 'WPSTRAVA_PLUGIN_VERSION', '2.8.0' );
define( 'WPSTRAVA_PLUGIN_FILE', __FILE__ );
define( 'WPSTRAVA_PLUGIN_DIR', trailingslashit( dirname( __FILE__ ) ) );
define( 'WPSTRAVA_PLUGIN_URL', plugins_url( '/', __FILE__ ) );
Expand Down

0 comments on commit 66da9fd

Please sign in to comment.