Version 5.0.0 beta 5

This commit is contained in:
Neo committed 2025-12-19 17:04:22 -08:00
1 parent 2f24f9de48
commit 57d9db6ce2
218 files changed
+5331 -7416

No files matched your search

+11 -11
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="calendar">
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.main.js" javascript_type="controller" javascript_version="5000030" javascript_position="1000250"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.main.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000250"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -110,7 +110,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.monthView.js" javascript_type="controller" javascript_version="5000030" javascript_position="1000250"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.monthView.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000250"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -229,7 +229,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/overview" javascript_name="ips.overview.eventList.js" javascript_type="controller" javascript_version="5000030" javascript_position="1000300"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/overview" javascript_name="ips.overview.eventList.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000300"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -347,7 +347,7 @@ var PER_PAGE = 16;
}
});
}(jQuery, _));]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/overview" javascript_name="ips.overview.nearMe.js" javascript_type="controller" javascript_version="5000030" javascript_position="1000300"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/overview" javascript_name="ips.overview.nearMe.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000300"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -711,7 +711,7 @@ var PER_PAGE = 16;
}
});
}(jQuery, _));]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/overview" javascript_name="ips.overview.search.js" javascript_type="controller" javascript_version="5000030" javascript_position="1000300"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/overview" javascript_name="ips.overview.search.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000300"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1265,7 +1265,7 @@ var PER_PAGE = 16;
});
}(jQuery, _));
]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.dates.js" javascript_type="controller" javascript_version="5000030" javascript_position="1000100"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.dates.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1813,7 +1813,7 @@ var PER_PAGE = 16;
}
});
}(jQuery, _));]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/venue" javascript_name="ips.venue.main.js" javascript_type="controller" javascript_version="5000030" javascript_position="1000200"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/venue" javascript_name="ips.venue.main.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000200"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1920,7 +1920,7 @@ var PER_PAGE = 16;
}
});
}(jQuery, _));]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.reminderButton.js" javascript_type="controller" javascript_version="5000030" javascript_position="1000150"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.reminderButton.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2003,7 +2003,7 @@ var PER_PAGE = 16;
}
});
}(jQuery, _));]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.reminderForm.js" javascript_type="controller" javascript_version="5000030" javascript_position="1000150">/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.reminderForm.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2113,7 +2113,7 @@ var PER_PAGE = 16;
});
}(jQuery, _));
</file>
<file javascript_app="calendar" javascript_location="front" javascript_path="templates" javascript_name="ips.calendar.templates.js" javascript_type="framework" javascript_version="5000030" javascript_position="1000050"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="templates" javascript_name="ips.calendar.templates.js" javascript_type="framework" javascript_version="5000031" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*/
@@ -2122,7 +2122,7 @@ var PER_PAGE = 16;
ips.templates.set('calendar.reminder.loading', " \
<div class='ipsLoading ipsLoading--tiny'></div>\
");]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.overview.js" javascript_type="template" javascript_version="5000030" javascript_position="1000050"><![CDATA[ips.templates.set("eventLoading", `
<file javascript_app="calendar" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.overview.js" javascript_type="template" javascript_version="5000031" javascript_position="1000050"><![CDATA[ips.templates.set("eventLoading", `
<li class='ipsData__item ipsData__item--loading'>
<div class="ipsData__image"></div>
<div class="ipsData__content">
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="calendar" version="5000030">
<app key="calendar" version="5000031">
<word key="__app_calendar" js="0">Events</word>
<word key="frontnavigation_calendar" js="0">Events</word>
<word key="__indefart_calendar_event_comment" js="0">a comment on an event</word>
+79 -79
View File
@@ -348,7 +348,7 @@
<i></i>
{{endif}}
<div class='ipsCalendarDate'>
{{if $event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )}}
{{if $event->nextOccurrence( $date, 'startDate' )}}
<span class='ipsCalendarDate__month'>{lang="_date_month_short" pluralize="$event->nextOccurrence( $date, 'startDate' )->format( 'n' )"}</span>
<span class='ipsCalendarDate__date'>{$event->nextOccurrence( $date, 'startDate' )->format( 'd' )}</span>
{{else}}
@@ -459,7 +459,7 @@
{{endif}}
{{endif}}
</div>
<h4 class='ipsData__title'><a href='{$event->url()}'>{$event->title}</a></h4>
<h3 class='ipsData__title'><a href='{$event->url()}'>{$event->title}</a></h3>
<p class="ipsData__desc">{$event->truncated(TRUE, 400)}</p>
</div>
{{if $event->container()->club() !== NULL || $event->venue || $event->location}}
@@ -489,7 +489,7 @@
{{if \count( $featured )}}
<section class="ipsBox cEvents__overview-featured">
<header class="ipsBox__header">
<h3>Featured Events</h3>
<h2>Featured Events</h2>
{template="carouselNavigation" group="global" app="core" params="'carousel--events-featured'"}
</header>
<i-data>
@@ -510,7 +510,7 @@
{{$image = \IPS\File::get('core_Clubs', $event->container()->club()->profile_photo );}}
{{endif}}
<div class='ipsData__item'>
<li class='ipsData__item'>
<a href="{$event->url()}" class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>{$event->title}</span></a>
<figure class="ipsData__image">
{{if $image}}
@@ -533,9 +533,9 @@
{{if $event->_happening}}
<div class='ipsBadge'>{$event->_happening}</div>
{{endif}}
<h4 class='ipsData__title'>
<h3 class='ipsData__title'>
<a href="{$event->url()}">{$event->title}</a>
</h4>
</h3>
<p class='i-font-weight_500 i-font-size_-2 i-text-transform_uppercase'>
<time datetime='{expression="$event->_start_date->format( 'Y-m-d' )"}'>
{{if $event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )}}
@@ -614,7 +614,7 @@
</ul>
{{endif}}
</div>
</div>]]></template>
</li>]]></template>
<template template_group="events" template_name="nearMe" template_data="$nearme, $mapMarkers" template_location="front" template_app="calendar"><![CDATA[<section class='ipsBox' data-controller='calendar.front.overview.nearMe' {{if settings.googlemaps AND !settings.mapbox}}data-nearme-use-google data-googlemaps-api-key='{setting="google_maps_api_key"}'{{endif}}>
<header class='ipsBox__header'>
<h2>{lang="events_happening_near_you"}</h2>
@@ -624,7 +624,7 @@
</label>
</header>
<div class='ipsBox__content'>
<p class='i-padding_3 i-color_soft'>{lang="showing_events_near_you"} <a href='{url="app=calendar&do=search&form_submitted=1&lat=0&lon=0"}' data-role='nearMeLink' data-action='moreNearMe'>{lang="see_more_events_near_you"} <i class='fa-solid fa-angle-right'></i></a></p>
<p class='i-padding_3 i-color_soft'>{lang="showing_events_near_you"} <a href='{url="app=calendar&do=search&form_submitted=1&lat=0&lon=0"}' data-role='nearMeLink' data-action='moreNearMe' class="i-font-weight_500 i-text-decoration_underline">{lang="see_more_events_near_you"} <i class='fa-solid fa-angle-right'></i></a></p>
<div class='ipsJS_hide' data-role='locationEvents'>
{template="nearMeContent" group="events" app="calendar" params="$nearme, $mapMarkers"}
</div>
@@ -652,7 +652,7 @@
<section class='ipsBox i-margin-bottom_block'>
<h2 class='ipsBox__header'>{lang="events_online_events"}</h2>
<div class='i-padding_3 i-background_2 i-border-end-start-radius_box i-border-end-end-radius_box'>
<ul class='ipsEventList'>
<ul class='ipsEventList ipsData ipsData--grid ipsData--events-list'>
{{foreach $events as $event}}
{template="event" app="calendar" group="events" params="$event, 'small'"}
{{endforeach}}
@@ -692,7 +692,7 @@
</div>
</div>
<div class='cEvents__searchMap cEvents__searchMap--loading event' data-role='searchResultsMap' {{if $mapMarkers}}data-markers="{$mapMarkers}"{{endif}}></div>
<ul class='ipsEventList {{if !\count( $results )}}ipsHide{{endif}}' data-role='searchResults'>
<ul class='ipsEventList ipsData ipsData--grid ipsData--events-list {{if !\count( $results )}}ipsHide{{endif}}' data-role='searchResults'>
{template="searchResults" app="calendar" group="events" params="$results"}
</ul>
<div class='i-padding_2'>
@@ -1371,39 +1371,46 @@
{{foreach $elements[''] as $key => $input}}
{{if $key === 'location'}}
<li class='cEvents__search__field cEvents__search__field--location'>
<label class='cEvents__search__label'>{lang="events_search_location"}</label>
<div class='cEvents__search__searchWrap i-flex i-gap_1'>
{{if $byLocation}}
{{$input->options['placeholder'] = \IPS\Member::loggedIn()->language()->addToStack( "events_search_your_location" );}}
{{$input->options['disabled'] = TRUE;}}
{$input->html()|raw}
<a href='#' class='ipsEventSearch__searchLocation i-align-self_center i-font-size_-2 i-font-weight_600 i-color_soft i-flex_00 ipsJS_show' hidden data-action='useMyLocation'><i class='fa-solid fa-crosshairs'></i> <span>{lang="events_search_use_location"}</span></a>
<a href='#' class='ipsEventSearch__searchLocation i-align-self_center i-font-size_-2 i-font-weight_600 i-color_soft i-flex_00 ipsJS_show' data-action='cancelLocation'><span>{lang="events_search_cancel_location"}</span></a>
{{else}}
{$input->html()|raw}
<a href='#' class='ipsEventSearch__searchLocation i-align-self_center i-font-size_-2 i-font-weight_600 i-color_soft i-flex_00 ipsJS_show' data-action='useMyLocation'><i class='fa-solid fa-crosshairs'></i> <span>{lang="events_search_use_location"}</span></a>
<a href='#' class='ipsEventSearch__searchLocation i-align-self_center i-font-size_-2 i-font-weight_600 i-color_soft i-flex_00 ipsJS_show' hidden data-action='cancelLocation'><span>{lang="events_search_cancel_location"}</span></a>
{{endif}}
<div class="i-flex i-justify-content_space-between">
<label class='cEvents__search__label' for="elInput_location">{lang="events_search_location"}</label>
<div class='i-flex i-gap_1'>
{{if $byLocation}}
{{$input->options['placeholder'] = \IPS\Member::loggedIn()->language()->addToStack( "events_search_your_location" );}}
{{$input->options['disabled'] = TRUE;}}
<button type="button" class='ipsEventSearch__searchLocation' hidden data-action='useMyLocation'><i class='fa-solid fa-crosshairs'></i> <span>{lang="events_search_use_location"}</span></button>
<button type="button" class='ipsEventSearch__searchLocation' data-action='cancelLocation'><span>{lang="events_search_cancel_location"}</span></button>
{{else}}
<button type="button" class='ipsEventSearch__searchLocation' data-action='useMyLocation'><i class='fa-solid fa-crosshairs'></i> <span>{lang="events_search_use_location"}</span></button>
<button type="button" class='ipsEventSearch__searchLocation' hidden data-action='cancelLocation'><span>{lang="events_search_cancel_location"}</span></button>
{{endif}}
</div>
</div>
{$input->html()|raw}
</li>
{{elseif $key === 'show'}}
<li class='cEvents__search__field cEvents__search__field--show'>
<label class='cEvents__search__label'>{lang="events_search_type"}</label>
{$input->html()|raw}
<label class="cEvents__search__input">
<span class='cEvents__search__label'>{lang="events_search_type"}</span>
{$input->html()|raw}
</label>
</li>
{{elseif $key === 'date'}}
<li class='cEvents__search__field cEvents__search__field--date cEvents__search__field--from'>
<label class='cEvents__search__label'>{lang="events_search_from"}</label>
{$input->start->html()|raw}
<label class="cEvents__search__input">
<span class='cEvents__search__label'>{lang="events_search_from"}</span>
{$input->start->html()|raw}
</label>
</li>
<li class='cEvents__search__field cEvents__search__field--date cEvents__search__field--to'>
<label class='cEvents__search__label'>{lang="events_search_to"}</label>
{$input->end->html()|raw}
<label class="cEvents__search__input">
<span class='cEvents__search__label'>{lang="events_search_to"}</span>
{$input->end->html()|raw}
</label>
</li>
{{endif}}
{{endforeach}}
<li class='cEvents__search__field cEvents__search__field--submit'>
<button type='submit' class='ipsButton ipsButton--primary i-width_100p'>{lang="events_search_search"}</button>
<button type='submit' class='ipsButton ipsButton--large ipsButton--primary i-width_100p'><i class="fa-solid fa-magnifying-glass"></i><span>{lang="events_search_search"}</span></button>
</li>
</ul>
</form>]]></template>
@@ -1857,7 +1864,7 @@
{template="shareButton" app="core" group="sharelinks" params="$event"}
{{endif}}
{{if $event->canRemind()}}
{template="reminder" app="calendar" group="view" params="$event, $reminder"}
{template="reminder" app="calendar" group="view" params="$event, $event->getReminder()"}
{{endif}}
{{if \IPS\Application::appIsEnabled('cloud')}}
{template="spam" app="cloud" group="spam" params="$event"}
@@ -2072,24 +2079,18 @@
<div data-ips-hook="rsvpWrapper" class='ipsBox ipsPull'>
{template="rsvpControls" group="view" params="$event, $attendees"}
<h3 class='ipsTitle ipsTitle--h3 ipsHide'>{lang="event_rsvp_attendees"}</h3>
<div class='ipsTabs ipsTabs_small ipsTabs--stretch' id='elAttendees{$tabId}' data-ipsTabBar data-ipsTabBar-contentArea='#elAttendees{$tabId}_content'>
<ul data-ips-hook="rsvpTabs" role="tablist">
<li>
<a href='#ipsTabs_elAttendees{$tabId}_elGoing_panel' id='elGoing' class='ipsTabs__tab ipsTabs__tab--active' role="tab" aria-selected='true'>{{if $event->hasPassed()}}{lang="rsvp_attendees_past"}{{else}}{lang="rsvp_attendees"}{{endif}} {{if \count($attendees[1])}}({expression="\count($attendees[1])"}){{endif}}</a>
</li>
<i-tabs class='ipsTabs ipsTabs--small ipsTabs--stretch' id='ipsTabs_elAttendees{$tabId}' data-ipsTabBar data-ipsTabBar-contentArea='#ipsTabs_elAttendees{$tabId}_content'>
<div data-ips-hook="rsvpTabs" role="tablist">
<button type="button" id='ipsTabs_elAttendees{$tabId}_elGoing' class='ipsTabs__tab' role="tab" aria-controls="ipsTabs_elAttendees{$tabId}_elGoing_panel" aria-selected='true'>{{if $event->hasPassed()}}{lang="rsvp_attendees_past"}{{else}}{lang="rsvp_attendees"}{{endif}} {{if \count($attendees[1])}}({expression="\count($attendees[1])"}){{endif}}</button>
{{if $event->rsvp_limit == -1}}
<li>
<a href='#ipsTabs_elAttendees{$tabId}_elMaybe_panel' id='elMaybe' class='ipsTabs__tab' role="tab" aria-selected='false'>{lang="rsvp_maybe_attendees"} {{if \count($attendees[2])}}({expression="\count($attendees[2])"}){{endif}}</a>
</li>
{{endif}}
<li>
<a href='#ipsTabs_elAttendees{$tabId}_elNotGoing_panel' id='elNotGoing' class='ipsTabs__tab' role="tab" aria-selected='false'>{lang="rsvp_notgoing_attendees"} {{if \count($attendees[0])}}({expression="\count($attendees[0])"}){{endif}}</a>
</li>
</ul>
<button type="button" id='ipsTabs_elAttendees{$tabId}_elMaybe' class='ipsTabs__tab' role="tab" aria-controls="ipsTabs_elAttendees{$tabId}_elMaybe_panel" aria-selected='false'>{lang="rsvp_maybe_attendees"} {{if \count($attendees[2])}}({expression="\count($attendees[2])"}){{endif}}</button>
{{endif}}
<button type="button" id='ipsTabs_elAttendees{$tabId}_elNotGoing' class='ipsTabs__tab' role="tab" aria-controls="ipsTabs_elAttendees{$tabId}_elNotGoing_panel" aria-selected='false'>{lang="rsvp_notgoing_attendees"} {{if \count($attendees[0])}}({expression="\count($attendees[0])"}){{endif}}</button>
</div>
{template="tabScrollers" app="core" group="global" location="global"}
</div>
<div id='elAttendees{$tabId}_content' class='ipsTabs__panels ipsTabs__panels--padded'>
<div data-ips-hook="rsvpAttendees" id="ipsTabs_elAttendees{$tabId}_elGoing_panel" class='ipsTabs__panel'>
</i-tabs>
<div id='ipsTabs_elAttendees{$tabId}_content' class='ipsTabs__panels ipsTabs__panels--padded'>
<div data-ips-hook="rsvpAttendees" id="ipsTabs_elAttendees{$tabId}_elGoing_panel" class='ipsTabs__panel' role="tabpanel" aria-labelledby="ipsTabs_elAttendees{$tabId}_elGoing">
{{if \count($attendees[1]) }}
<ul class='ipsGrid ipsGrid--event-attendees i-basis_40'>
{{foreach $attendees[1] as $attendee}}
@@ -2115,7 +2116,7 @@
{{endif}}
</div>
{{if $event->rsvp_limit == -1}}
<div data-ips-hook="rsvpMaybeWrapper" id="ipsTabs_elAttendees{$tabId}_elMaybe_panel" class='ipsTabs__panel'>
<div data-ips-hook="rsvpMaybeWrapper" id="ipsTabs_elAttendees{$tabId}_elMaybe_panel" class='ipsTabs__panel' role="tabpanel" aria-labelledby="ipsTabs_elAttendees{$tabId}_elMaybe" hidden>
{{if \count($attendees[2]) }}
<ul data-ips-hook="rsvpMaybe" class='ipsGrid ipsGrid--event-attendees i-basis_40'>
{{foreach $attendees[2] as $attendee}}
@@ -2141,7 +2142,7 @@
{{endif}}
</div>
{{endif}}
<div data-ips-hook="rsvpNotGoingWrapper" id="ipsTabs_elAttendees{$tabId}_elNotGoing_panel" class='ipsTabs__panel'>
<div data-ips-hook="rsvpNotGoingWrapper" id="ipsTabs_elAttendees{$tabId}_elNotGoing_panel" class='ipsTabs__panel' role="tabpanel" aria-labelledby="ipsTabs_elAttendees{$tabId}_elNotGoing" hidden>
{{if \count($attendees[0]) }}
<ul data-ips-hook="rsvpNotGoing" class='ipsGrid ipsGrid--event-attendees i-basis_40'>
{{foreach $attendees[0] as $attendee}}
@@ -2984,7 +2985,6 @@ tr td:not(:first-child):not(.cCalendar_firstDay) .cEvents_ranged .cEvents_event:
.ipsData--events-featured .ipsCalendarDate{
width: 3.3em;
position: absolute;
top: 6em;
inset-inline-start: 1.5em;
}
@@ -2998,29 +2998,37 @@ tr td:not(:first-child):not(.cCalendar_firstDay) .cEvents_ranged .cEvents_event:
.cEvents__search {
display: flex;
flex-wrap: wrap;
align-items: flex-end;
gap: 1em;
gap: 1.8em 1em;
}
.cEvents__search > *{
flex: 1 1 100%;
}
.ipsEventSearch__searchLocation{
flex: 0 0 auto;
font-weight: 600;
font-size: .9em;
align-self: start;
}
.ipsEventSearch__searchLocation:hover{
text-decoration: underline;
}
.cEvents__search__field--date {
flex-basis: 280px;
flex-basis: 150px;
}
.cEvents__search__field--date input{
max-width: none;
width: 100%;
}
.cEvents__search__label {
color: var(--i-color_hard);
font-size: 11px;
text-transform: uppercase;
display: block;
font-weight: 500;
margin-bottom: 0.4em;
font-weight: 600;
margin-bottom: .5em;
}
.cEvents__search__searchWrap :is([type="text"], [type="search"]) {
@@ -3050,29 +3058,22 @@ tr td:not(:first-child):not(.cCalendar_firstDay) .cEvents_ranged .cEvents_event:
}
/* Listing */
.ipsData--events-list .ipsCalendarDate{
position: absolute;
width: 50px;
top: 10px;
inset-inline-start: 10px;
.cEvent__onlineLogo{
inset: auto;
bottom: 5px;
inset-inline-end: 5px;
background: var(--i-background_1);
padding: 8px 12px;
pointer-events: none;
border-start-start-radius: var(--i-box--bo-ra);
}
.cEvent__onlineLogo{
inset: auto;
bottom: 5px;
inset-inline-end: 5px;
background: var(--i-background_1);
padding: 8px 12px;
pointer-events: none;
border-start-start-radius: var(--i-box--bo-ra);
.cEvent__onlineLogo svg{
display: block;
width: auto;
height: 12px;
}
.cEvent__onlineLogo svg{
display: block;
width: auto;
height: 12px;
}
/* Near me section */
.ipsEventsNearMe__map{
padding: 10px;
@@ -3139,8 +3140,7 @@ tr td:not(:first-child):not(.cCalendar_firstDay) .cEvents_ranged .cEvents_event:
}
.cEvents__monthNav__year {
font-size: .85em;
opacity: .5;
font-size: .9em;
}
.cEvents__skeleton--map {
+2 -1
View File
@@ -279,5 +279,6 @@
"5000027": "5.0.0 Beta 2",
"5000028": "5.0.0 Beta 2",
"5000029": "5.0.0 Beta 3",
"5000030": "5.0.0 Beta 4"
"5000030": "5.0.0 Beta 4",
"5000031": "5.0.0 Beta 5"
}
@@ -155,14 +155,6 @@ class event extends Controller
/* Online User Location */
Session::i()->setLocation( $this->event->url(), $this->event->onlineListPermissions(), 'loc_calendar_viewing_event', array( $this->event->title => FALSE ) );
/* Reminder */
$reminder = NULL;
try
{
$reminder = Db::i()->select( '*', 'calendar_event_reminders', array( 'reminder_event_id=? and reminder_member_id=?', $this->event->id, (int) Member::loggedIn()->member_id ) )->first();
}
catch ( UnderflowException $e ) {}
/* Address */
$address = NULL;
$location = NULL;
@@ -186,13 +178,28 @@ class event extends Controller
'@type' => "Event",
'url' => (string) $this->event->url(),
'name' => $this->event->mapped('title'),
'description' => $this->event->truncated( TRUE, NULL ),
'description' => $this->event->truncated( TRUE, NULL ) ?? "",
'eventStatus' => "EventScheduled",
'organizer' => array(
'@type' => 'Person',
'name' => $this->event->author()->name,
'image' => $this->event->author()->get_photo( TRUE, TRUE )
),
'startDate' => $this->event->nextOccurrence( Date::getDate(), 'startDate' ) ?
$this->event->nextOccurrence( Date::getDate(), 'startDate' )->format( $format ) :
$this->event->lastOccurrence( 'startDate' )->format( $format )
);
if( $this->event->author()->member_id )
{
Output::i()->jsonLd['event']['organizer']['url'] = (string) $this->event->author()->url();
}
if( $image = $this->event->coverPhotoFile() )
{
Output::i()->jsonLd['event']['image'] = (string) $image->url;
}
if( $this->event->_end_date )
{
Output::i()->jsonLd['event']['endDate'] = $this->event->nextOccurrence( $this->event->nextOccurrence( Date::getDate(), 'startDate' ) ?: Date::getDate(), 'endDate' ) ?
@@ -210,13 +217,10 @@ class event extends Controller
);
}
if( $this->event->coverPhoto()->file )
{
Output::i()->jsonLd['event']['image'] = (string) $this->event->coverPhoto()->file->url;
}
if( $this->event->rsvp )
{
Output::i()->jsonLd['event']['eventAttendanceMode'] = 'https://schema.org/MixedEventAttendanceMode';
if( count( $attendees[1] ) )
{
Output::i()->jsonLd['event']['attendee'] = array();
@@ -249,6 +253,8 @@ class event extends Controller
{
Output::i()->jsonLd['event']['location']['name'] = $addressName;
}
Output::i()->jsonLd['event']['eventAttendanceMode'] = 'https://schema.org/OfflineEventAttendanceMode';
}
/* If not, default to events URL */
else
@@ -268,10 +274,12 @@ class event extends Controller
'@type' => 'VirtualLocation',
'url' => $this->event->url
);
Output::i()->jsonLd['event']['eventAttendanceMode'] = 'https://schema.org/OnlineEventAttendanceMode';
}
/* Display */
Output::i()->output = Theme::i()->getTemplate( 'view' )->view( $this->event, $commentsAndReviews, $attendees, $address, $reminder );
Output::i()->output = Theme::i()->getTemplate( 'view' )->view( $this->event, $commentsAndReviews, $attendees, $address, $this->event->getReminder() );
return null;
}
@@ -484,12 +492,7 @@ class event extends Controller
}
/* Existing reminder? */
$existing = NULL;
try
{
$existing = Db::i()->select( '*', 'calendar_event_reminders', array( 'reminder_event_id=? and reminder_member_id=?', $this->event->id, (int) Member::loggedIn()->member_id ) )->first();
}
catch ( UnderflowException $e ) {}
$existing = $this->event->getReminder();
/* Build the form */
@@ -520,9 +523,14 @@ class event extends Controller
Db::i()->update( 'core_tasks', array( 'enabled' => 1 ), array( '`key`=?', 'eventreminders' ) );
$message = 'event_reminder_added';
Output::i()->redirect( $this->event->url(), $message );
if( Request::i()->isAjax() )
{
Output::i()->sendOutput( Theme::i()->getTemplate( 'view', 'calendar', 'front' )->reminderButton( $this->event, $this->event->getReminder() ) );
}
else
{
Output::i()->redirect( $this->event->url(), 'event_reminder_added' );
}
}
/* Display */
@@ -573,16 +581,6 @@ class event extends Controller
*/
protected function reminderButton() : void
{
/* Existing reminder? */
$existing = NULL;
try
{
$existing = Db::i()->select( '*', 'calendar_event_reminders', array( 'reminder_event_id=? and reminder_member_id=?', $this->event->id, (int)Member::loggedIn()->member_id ) )->first();
}
catch ( UnderflowException $e )
{
}
Output::i()->sendOutput( Theme::i()->getTemplate( 'view', 'calendar', 'front' )->reminderButton( $this->event, $existing ) );
Output::i()->sendOutput( Theme::i()->getTemplate( 'view', 'calendar', 'front' )->reminderButton( $this->event, $this->event->getReminder() ) );
}
}
@@ -602,7 +602,15 @@ class view extends Controller
}
/* Sort */
$startDate = Date::getDate();
if( !isset( Request::i()->get ) or Request::i()->get == 'byMonth' )
{
$startDate = Date::getDate( Request::i()->y ?: null, Request::i()->m ?: null, 1, 12 );
}
else
{
$startDate = Date::getDate();
}
@usort( $events, function( $a, $b ) use ( $startDate )
{
if( $a->nextOccurrence( $startDate, 'startDate' ) === NULL )
@@ -645,7 +653,7 @@ class view extends Controller
{
foreach( $events as $idx => $event )
{
$eventHtml .= Theme::i()->getTemplate( 'events', 'calendar' )->event( $event );
$eventHtml .= Theme::i()->getTemplate( 'events', 'calendar' )->event( $event, 'normal', $startDate );
}
}
else
@@ -0,0 +1,22 @@
{
"id": 5000031,
"name": "5.0.0 Beta 5",
"steps": {
"queries": false,
"lang": false,
"theme": true,
"themeeditor": false,
"javascript": false,
"emailTemplates": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,29 @@
{
"html": {
"added": [],
"edited": [
"front\/events\/event",
"front\/events\/featured",
"front\/events\/featuredEvent",
"front\/events\/nearMe",
"front\/events\/online",
"front\/events\/searchResultsWrapper",
"front\/overview\/searchBar",
"front\/view\/coverPhotoOverlay",
"front\/view\/eventSidebar"
],
"removed": []
},
"css": {
"added": [],
"edited": [
"front\/calendar.css"
],
"removed": []
},
"resources": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -2553,6 +2553,27 @@ class Event extends Item implements Embeddable,
return ( ( $this->_start_date->getTimestamp() - 86400 ) > time() );
}
/**
* Return the existing reminder, if the member has one set
*
* @param Member|null $member
* @return array|null
*/
public function getReminder( ?Member $member=null ) : ?array
{
$member = $member ?: Member::loggedIn();
if( $member->member_id )
{
try
{
return Db::i()->select( '*', 'calendar_event_reminders', array( 'reminder_event_id=? and reminder_member_id=?', $this->id, (int) $member->member_id ) )->first();
}
catch( UnderflowException ){}
}
return null;
}
/**
* Venue
*