mirror of
https://github.com/10h30/wp-strava.git
synced 2026-07-11 18:56:18 +09:00
Merge pull request #90 from cmanon/feature/activiteslist-block
Feature/activiteslist block
This commit is contained in:
+5
-2
@@ -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
|
||||
|
||||
@@ -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.
|
||||
@@ -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 =
|
||||
|
||||
@@ -202,6 +202,7 @@ class WPStrava {
|
||||
static $blocks = array(
|
||||
'WPStrava_Blocks_Activity',
|
||||
'WPStrava_Blocks_Route',
|
||||
'WPStrava_Blocks_ActivitiesList',
|
||||
);
|
||||
|
||||
// automatically load dependencies and version
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/**
|
||||
* Activities List.
|
||||
* Activities List Renderer.
|
||||
* @package WPStrava
|
||||
*/
|
||||
|
||||
@@ -10,9 +10,18 @@
|
||||
* @author Justin Foell <justin@foell.org>
|
||||
* @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 <justin@foell.org>
|
||||
* @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' );
|
||||
}
|
||||
@@ -26,14 +35,14 @@ class WPStrava_ActivitiesList {
|
||||
'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();
|
||||
}
|
||||
@@ -51,11 +60,11 @@ class WPStrava_ActivitiesList {
|
||||
// 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}" :
|
||||
@@ -86,7 +95,7 @@ class WPStrava_ActivitiesList {
|
||||
* @author Justin Foell <justin@foell.org>
|
||||
* @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 '';
|
||||
}
|
||||
@@ -44,7 +44,9 @@ class WPStrava_ActivitiesListShortcode {
|
||||
*/
|
||||
public function handler( $atts ) {
|
||||
$this->add_script = true;
|
||||
return WPStrava_ActivitiesList::get_activities_html( $atts );
|
||||
|
||||
$renderer = new WPStrava_ActivitiesListRenderer();
|
||||
return $renderer->get_html( $atts );
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -42,7 +42,10 @@ class WPStrava_ActivitiesListWidget extends WP_Widget {
|
||||
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
|
||||
}
|
||||
|
||||
@@ -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 <justin@foell.org>
|
||||
* @since 2.5.0
|
||||
*/
|
||||
private $add_script = false;
|
||||
|
||||
/**
|
||||
* Register the wp-strava/activitieslist block.
|
||||
*
|
||||
* @author Justin Foell <justin@foell.org>
|
||||
* @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 <justin@foell.org>
|
||||
* @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 <justin@foell.org>
|
||||
* @since 2.5.0
|
||||
*/
|
||||
public function print_scripts() {
|
||||
if ( $this->add_script ) {
|
||||
wp_enqueue_style( 'wp-strava-style' );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,10 @@
|
||||
<?php
|
||||
/*
|
||||
/**
|
||||
* Route Renderer.
|
||||
* @package WPStrava
|
||||
*/
|
||||
|
||||
/**
|
||||
* RouteRenderer has all the markup for the Route Block & Shortcode.
|
||||
*/
|
||||
class WPStrava_RouteRenderer {
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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;
|
||||
@@ -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,2 +1,3 @@
|
||||
import './blocks/activity';
|
||||
import './blocks/route';
|
||||
import './blocks/activitieslist';
|
||||
|
||||
+2
-2
@@ -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
|
||||
@@ -27,7 +27,7 @@ along with this program; if not, write to the Free Software
|
||||
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__ ) );
|
||||
|
||||
Reference in New Issue
Block a user