From dc38bda0cce5370c260f54ede61e7885b5e26d28 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Fri, 7 Jun 2019 10:14:50 -0400 Subject: [PATCH] Setup event detail page to show only the date a recurring event is on. If the event on detail page is a recurring event and the user just click on the list or calendar from a certain date, then only show that date for the event not the entire range of dates. --- models/front/events/baseAction.php | 26 +++++++++--- views/front/events/agenda.html | 2 +- views/front/events/agenda_new.html | 54 +++++++++++++----------- views/front/events/detail.html | 68 ++++++++++++++++++------------ 4 files changed, 92 insertions(+), 58 deletions(-) diff --git a/models/front/events/baseAction.php b/models/front/events/baseAction.php index 6974afc..802e4b6 100644 --- a/models/front/events/baseAction.php +++ b/models/front/events/baseAction.php @@ -556,6 +556,7 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents { $this->postAddTimes = true; $this->postAddLocations = true; + $fromDate = false; $event = $this->getEntry( $eventId ); if ( $event['url'] ) { if ( !preg_match( '/^http:|https:/', $event['url'] ) ) { @@ -570,18 +571,29 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents $event['ticket_url'] = 'http://' . $event['ticket_url']; } } - //if ( $event['recurrences'][0]['recurring']['value'] ) { - // $nextDate = $this->getNextDate( $event['id'], $fromDate ); - // $event['dates'] = ( $nextDate ) - // ? strftime( '%b %e, %Y', strtotime( $nextDate ) ) - // : strftime( '%b %e, %Y', strtotime( $event['ending_date'] ) ); - //} else { + if ( isset( $_REQUEST['glm_event_from'] ) ) { + $fromDate = filter_var( + $_REQUEST['glm_event_from'], + FILTER_VALIDATE_REGEXP, + array( + 'options' => array( + 'regexp' => '%[0-9]{4}-[0-9]{2}-[0-9]{2}%' + ) + ) + ); + } + if ( $fromDate && $event['recurrences'][0]['recurring']['value'] ) { + $nextDate = $this->getNextDate( $event['id'], $fromDate ); + $event['dates'] = ( $nextDate ) + ? strftime( '%b %e, %Y', strtotime( $nextDate ) ) + : strftime( '%b %e, %Y', strtotime( $event['ending_date'] ) ); + } else { $event['dates'] = $this->getEventDate( strtotime( $event['starting_date'] ), strtotime( $event['ending_date'] ), 'timestamp' ); - //} + } $event['recurDays'] = $this->getEventRecurDays( $event ).' '; $this->postAddTimes = false; $this->postAddLocations = false; diff --git a/views/front/events/agenda.html b/views/front/events/agenda.html index ee82517..e69448a 100644 --- a/views/front/events/agenda.html +++ b/views/front/events/agenda.html @@ -89,7 +89,7 @@ {$event.intro} {if $settings.agenda_view_more_enabled}
- + {if $settings.agenda_view_more_text}{$settings.agenda_view_more_text}{else}Read More{/if}
diff --git a/views/front/events/agenda_new.html b/views/front/events/agenda_new.html index 95df8ed..30557f7 100644 --- a/views/front/events/agenda_new.html +++ b/views/front/events/agenda_new.html @@ -67,9 +67,11 @@ a.glm-read-more:hover, a.event-read-more:hover { {$showTime = true} -