Setup event detail page to show only the date a recurring event is on.
authorSteve Sutton <steve@gaslightmedia.com>
Fri, 7 Jun 2019 14:14:50 +0000 (10:14 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Fri, 7 Jun 2019 14:14:50 +0000 (10:14 -0400)
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
views/front/events/agenda.html
views/front/events/agenda_new.html
views/front/events/detail.html

index 6974afc..802e4b6 100644 (file)
@@ -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;
index ee82517..e69448a 100644 (file)
@@ -89,7 +89,7 @@
                                         {$event.intro}
                                         {if $settings.agenda_view_more_enabled}
                                             <div>
-                                                <a class="glm-read-more" href="{$siteBaseUrl}{$pageSlug}/{if !$customPage}{$event.name_slug}/{else}?eventId={$event.id}{/if}">
+                                                <a class="glm-read-more" href="{$siteBaseUrl}{$pageSlug}/{if !$customPage}{$event.name_slug}/?glm_event_from={$date|date_format:"%Y-%m-%d"}{else}?eventId={$event.id}{/if}">
                                                     {if $settings.agenda_view_more_text}{$settings.agenda_view_more_text}{else}Read More{/if}
                                                 </a>
                                             </div>
index 95df8ed..30557f7 100644 (file)
@@ -67,9 +67,11 @@ a.glm-read-more:hover, a.event-read-more:hover {
 
                                 {$showTime = true}
 
-                                <div class="glma-row glm-event-day-event{if $settings.sort_by_featured_in_agenda && $event.featured.value} glm-event-featured{/if}" data-url="{$siteBaseUrl}{$pageSlug}/{if !$customPage}{$event.name_slug}/{else}?eventId={$event.id}{/if}">
+                                <div
+                                    class="glma-row glm-event-day-event{if $settings.sort_by_featured_in_agenda && $event.featured.value} glm-event-featured{/if}"
+                                    data-url="{$siteBaseUrl}{$pageSlug}/{if !$customPage}{$event.name_slug}/?glm_event_from={$date|date_format:"%Y-%m-%d"}{else}?eventId={$event.id}{/if}">
                                     <div class="glma-small-12 {if $event.image}glma-large-9 {/if}glma-columns">
-                                        <a class="glm-link" href="{$siteBaseUrl}{$pageSlug}/{if !$customPage}{$event.name_slug}/{else}?eventId={$event.id}{/if}">
+                                        <a class="glm-link" href="{$siteBaseUrl}{$pageSlug}/{if !$customPage}{$event.name_slug}?glm_event_from={$date|date_format:"%Y-%m-%d"}/{else}?eventId={$event.id}{/if}">
                                             <h2 class="agenda-event-name">{$event.name}</h2>
                                         </a>
 
@@ -93,28 +95,30 @@ a.glm-read-more:hover, a.event-read-more:hover {
                                                         {if $rec.name && $rec.name != 'Imported' && $rec.name != 'Imported Event Schedule' }
                                                             {$rec.name}
                                                         {/if}
-                                                        ( {if $event.times|@count > 1} Occurring {/if}
-                                                        {$rec.from_date.date} <span class="agenda-event-recur-dates">
-                                                          {if $rec.from_date.date != $rec.to_date.date}
-                                                            - {$rec.to_date.date}
-                                                           {else if $rec.specific_dates}
-                                                            - {$rec.specific_dates|@end|date_format:"%m/%d/%Y"}
-                                                          {/if}
+                                                        (
+                                                        {if $event.times|@count > 1} Occurring {/if}
+                                                        {$rec.from_date.date}
+                                                        <span class="agenda-event-recur-dates">
+                                                            {if $rec.from_date.date != $rec.to_date.date}
+                                                                - {$rec.to_date.date}
+                                                            {else if $rec.specific_dates}
+                                                                - {$rec.specific_dates|@end|date_format:"%m/%d/%Y"}
+                                                            {/if}
                                                         </span>
-
-                                                    {if $rec.day_of_week.names|@count < 7 && $rec.day_of_week.names|@count > 0 }
-                                                    <span class="agenda-days-of-week">
-                                                        on
-                                                        {foreach $rec.day_of_week.names as $day}
-                                                            {if $day == "Thursday"}
-                                                                <span class="agenda-event-weekday"> {$day|substr:0:4} </span>
-                                                             {else}
-                                                                <span class="agenda-event-weekday"> {$day|substr:0:3} </span>
-                                                             {/if}
-                                                         {/foreach}
-
-                                                    </span>
-                                                    {/if}
+                                                        {* Recurring week of manth and day of week parts *}
+                                                        {if $rec.day_of_week.names|@count < 7 && $rec.day_of_week.names|@count > 0 }
+                                                            <span class="agenda-days-of-week">
+                                                                on
+                                                                {foreach $rec.day_of_week.names as $day}
+                                                                    {if $day == "Thursday"}
+                                                                        <span class="agenda-event-weekday"> {$day|substr:0:4} </span>
+                                                                     {else}
+                                                                        <span class="agenda-event-weekday"> {$day|substr:0:3} </span>
+                                                                     {/if}
+                                                                 {/foreach}
+
+                                                            </span>
+                                                        {/if}
                                                      )
                                                     </div>
                                                 {/if}
@@ -151,7 +155,9 @@ a.glm-read-more:hover, a.event-read-more:hover {
 
                                     {if $settings.agenda_view_more_enabled}
                                         <div>
-                                            <a class="glm-read-more event-read-more" href="{$siteBaseUrl}{$pageSlug}/{if !$customPage}{$event.name_slug}/{else}?eventId={$event.id}{/if}">
+                                            <a
+                                                class="glm-read-more event-read-more"
+                                                href="{$siteBaseUrl}{$pageSlug}/{if !$customPage}{$event.name_slug}/?glm_event_from={$date|date_format:"%Y-%m-%d"}{else}?eventId={$event.id}{/if}">
                                                 {if $settings.agenda_view_more_text}{$settings.agenda_view_more_text}{else}Read More{/if}
                                             </a>
                                         </div>
index be2f4e8..38219bb 100755 (executable)
                                     <div class="glm-event-date">
                                         <span class="date-tag"></span>
                                         <span class="glm-date-display">
-                                    {if $rec.recurring.value == 1} Occurring {/if}
-
-                                        {$eDate}
-                                        {if $rec.from_date.date != $rec.to_date.date}
-                                            - {$rec.to_date.timestamp|date_format:"%B %e, %Y"}
-                                        {else if $rec.specific_dates}
-                                            - {$rec.specific_dates|@end|date_format:"%B %e, %Y"}
-                                        {/if}
+                                            {*
+                                                Check if event is recurring and $_REQUEST['glm_event_from'] exists.
+                                                If it is then output just the $event.dates.
+                                            *}
+                                            {if isset( $smarty.request.glm_event_from ) && $rec.recurring.value == 1}
+                                                {$event.dates}
+                                            {else}
+                                                {if $rec.recurring.value == 1} Occurring {/if}
+                                                {$eDate}
+                                                {if $rec.from_date.date != $rec.to_date.date}
+                                                    - {$rec.to_date.timestamp|date_format:"%B %e, %Y"}
+                                                {else if $rec.specific_dates}
+                                                    - {$rec.specific_dates|@end|date_format:"%B %e, %Y"}
+                                                {/if}
+                                            {/if}
 
                                         </span>
 
-                                        {if $rec.day_of_week.names|@count < 7 && $rec.day_of_week.names|@count > 0 }
+                                        {*
+                                            Check if $_REQUEST['glm_event_from'] exists.
+                                            Then don't output anything else for dates.
+                                        *}
+                                        {if !isset($smarty.request.glm_event_from) && $rec.day_of_week.names|@count < 7 && $rec.day_of_week.names|@count > 0 }
                                             <span class="agenda-days-of-week">
-                                            on
-                                            {foreach $rec.day_of_week.names as $day}
-                                                {if $day == "Thursday"}
-                                                    <span> {$day|substr:0:4} </span>
-                                                {else}
-                                                    <span> {$day|substr:0:3} </span>
-                                                 {/if}
-                                             {/foreach}
+                                                on
+                                                {if $rec.week_of_month.names|@count < 5 && $rec.week_of_month.names|@count > 0 }
+                                                    {foreach $rec.week_of_month.names as $wom}
+                                                        {$wom}
+                                                    {/foreach}
+                                                {/if}
+                                                {foreach $rec.day_of_week.names as $day}
+                                                    {if $day == "Thursday"}
+                                                        <span> {$day|substr:0:4} </span>
+                                                    {else}
+                                                        <span> {$day|substr:0:3} </span>
+                                                     {/if}
+                                                 {/foreach}
 
                                             </span>
                                         {/if}
                             {if $event.hide_address.name == 'No'}
                                 {if !$event.use_member_location.value && ($event.locations.name || $event.locations.address)}
                                     <div id="glm-event-detail-location">
-                                    {if $event.locations.name}{$event.locations.name}<br>{/if}
-                                    {if $event.locations.address} {$event.locations.address}<br> {/if}
-                                    {if $event.locations.city.name}{$event.locations.city.name}{/if}{if $event.locations.state.value}, {$event.locations.state.value} {/if}
-                                    {if $event.locations.zip} {$event.locations.zip} {/if}
-                                    {if $event.locations.phone} {apply_filters('glm_associate_phone_filter', $event.locations.phone)} {/if}
+                                        {if $event.locations.name}{$event.locations.name}<br>{/if}
+                                        {if $event.locations.address} {$event.locations.address}<br> {/if}
+                                        {if $event.locations.city.name}{$event.locations.city.name}{/if}{if $event.locations.state.value}, {$event.locations.state.value} {/if}
+                                        {if $event.locations.zip} {$event.locations.zip} {/if}
+                                        {if $event.locations.phone} {apply_filters('glm_associate_phone_filter', $event.locations.phone)} {/if}
                                     </div>
                                 {elseif $event.use_member_location.value || $event.other_ref_dest}
                                     <div id="glm-event-detail-location">
-                                    {if $event.member.member} {$event.member.member}<br> {/if}
-                                    {if $event.member.addr1} {$event.member.addr1}<br> {/if}
-                                    {if $event.member.city}{$event.member.city}{/if}{if $event.member.state.value}, {$event.member.state.value}{/if}
-                                    {if $event.member.zip} {$event.member.zip} {/if}
+                                        {if $event.member.member} {$event.member.member}<br> {/if}
+                                        {if $event.member.addr1} {$event.member.addr1}<br> {/if}
+                                        {if $event.member.city}{$event.member.city}{/if}{if $event.member.state.value}, {$event.member.state.value}{/if}
+                                        {if $event.member.zip} {$event.member.zip} {/if}
                                     </div>
                                 {/if}
                             {/if}