Version 4.3.0

This commit is contained in:
Neo committed 2025-12-19 05:47:12 -08:00
1 parent 96997ddd8e
commit fe1acf984a
1349 files changed
+116159 -67711

No files matched your search

+168 -99
View File
@@ -167,13 +167,15 @@
<h2 class='ipsType_reset ipsType_sectionTitle'>{lang="featured_events"}</h2>
<div class='ipsPad'>
<div class='ipsCarousel ipsClearfix' data-ipsCarousel>
<ul class='cCalendarCarousel ipsClearfix' data-role="carouselItems">
{{foreach $featured as $event}}
<li class='ipsCarousel_item'>
{template="eventBlock" app="calendar" group="view" params="$event, $date, true, false"}
</li>
{{endforeach}}
</ul>
<div class='ipsCarousel_inner'>
<ul class='cCalendarCarousel ipsClearfix' data-role="carouselItems">
{{foreach $featured as $event}}
<li class='ipsCarousel_item'>
{template="eventBlock" app="calendar" group="view" params="$event, $date, true, false"}
</li>
{{endforeach}}
</ul>
</div>
<span class='ipsCarousel_shadow ipsCarousel_shadowLeft'></span>
<span class='ipsCarousel_shadow ipsCarousel_shadowRight'></span>
<a href='#' class='ipsCarousel_nav ipsHide' data-action='prev'><i class='fa fa-chevron-left'></i></a>
@@ -219,7 +221,11 @@
<ul class='ipsMenu ipsMenu_auto ipsHide' id='elCalendars_menu'>
<li class='ipsMenu_item'><a href='{url="app=calendar&module=calendar&controller=view" seoTemplate="calendar"}'><span class='cCalendarIcon cEvents_style_blank'></span> {lang="all_calendars"}</a></li>
{{foreach $calendars as $calendar}}
<li class='ipsMenu_item'><a href='{$calendar->url()}'><span class='cCalendarIcon cEvents_style{$calendar->id}'></span> {$calendar->_title}</a></li>
{{if $club = $calendar->club()}}
<li class='ipsMenu_item'><a href='{$calendar->url()}'><span class='cCalendarIcon cEvents_style_blank'></span> {lang="club_node" sprintf="$club->name, $calendar->_title"}</a></li>
{{else}}
<li class='ipsMenu_item'><a href='{$calendar->url()}'><span class='cCalendarIcon cEvents_style{$calendar->id}'></span> {$calendar->_title}</a></li>
{{endif}}
{{endforeach}}
</ul>
<ul class='ipsMenu ipsMenu_auto ipsHide' id='elCalendarSettings_menu'>
@@ -282,7 +288,7 @@
<li class='cEvents_ranged'>
<ul class='cEvents'>
{{foreach $events[ $date->year . '-' . $date->mon . '-' . $k ]['ranged'] as $event }}
<li class='cEvents_event cEvents_style{$event->calendar_id}{{if $event->nextOccurrence( \IPS\calendar\Date::getDate( $date->year, $date->mon, $k ), 'startDate' ) AND $event->nextOccurrence( \IPS\calendar\Date::getDate( $date->year, $date->mon, $k ), 'startDate' )->mysqlDatetime( FALSE ) == $date->year . '-' . $date->mon . '-' . $k }}{{$startDates[ $event->id ] = $date->year . '-' . $date->mon . '-' . $k;}} cEvents_first{{endif}}{{if $event->nextOccurrence( \IPS\calendar\Date::getDate( $date->year, $date->mon, $k ) ?: $event->nextOccurrence( \IPS\calendar\Date::getDate( $date->year, $date->mon, $k ), 'startDate' ), 'endDate' ) AND $event->nextOccurrence( \IPS\calendar\Date::getDate( $date->year, $date->mon, $k ) ?: $event->nextOccurrence( \IPS\calendar\Date::getDate( $date->year, $date->mon, $k ), 'startDate' ), 'endDate' )->mysqlDatetime( FALSE ) == $date->year . '-' . $date->mon . '-' . $k }} cEvents_last{{endif}}' data-eventID='{$event->id}'>
<li class='cEvents_event cEvents_style{$event->calendar_id}{{if $event->nextOccurrence( \IPS\calendar\Date::getDate( $date->year, $date->mon, $k ), 'startDate' ) AND $event->nextOccurrence( \IPS\calendar\Date::getDate( $date->year, $date->mon, $k ), 'startDate' )->mysqlDatetime( FALSE, TRUE ) == $date->year . '-' . $date->mon . '-' . $k }}{{$startDates[ $event->id ] = $date->year . '-' . $date->mon . '-' . $k;}} cEvents_first{{endif}}{{if $event->nextOccurrence( \IPS\calendar\Date::getDate( $date->year, $date->mon, $k ) ?: $event->nextOccurrence( \IPS\calendar\Date::getDate( $date->year, $date->mon, $k ), 'startDate' ), 'endDate' ) AND $event->nextOccurrence( \IPS\calendar\Date::getDate( $date->year, $date->mon, $k ) ?: $event->nextOccurrence( \IPS\calendar\Date::getDate( $date->year, $date->mon, $k ), 'startDate' ), 'endDate' )->mysqlDatetime( FALSE, TRUE ) == $date->year . '-' . $date->mon . '-' . $k }} cEvents_last{{endif}}' data-eventID='{$event->id}'>
<a href='{$event->url()}' data-ipsHover data-ipsHover-target='{$event->url('hovercard')->setQuerystring( 'sd', isset( $startDates[ $event->id ] ) ? $startDates[ $event->id ] : $date->year . '-' . $date->mon . '-' . $k )}' title='{$event->title}'>{{if !$event->all_day}}<span class='cEvents_time'>{$event->_start_date->localeTime( FALSE )}</span> {{endif}}{truncate="$event->title" length="15"}{{if $event->hidden() === 1}} <i class='fa fa-warning'></i>{{endif}}</a>
</li>
{{endforeach}}
@@ -425,7 +431,7 @@
<li class='cEvents_ranged'>
<ul class='cEvents'>
{{foreach $events[ $day->year . '-' . $day->mon . '-' . $day->mday ]['ranged'] as $event }}
<li class='cEvents_event cEvents_style{$event->calendar_id}{{if $event->nextOccurrence( $day, 'startDate' ) AND $event->nextOccurrence( $day, 'startDate' )->mysqlDatetime( FALSE ) == $day->mysqlDatetime( FALSE ) }}{{$startDates[ $event->id ] = $day->mysqlDatetime( FALSE );}} cEvents_first{{endif}}{{if $event->nextOccurrence( $day ?: $event->nextOccurrence( $day, 'startDate' ), 'endDate' ) AND $event->nextOccurrence( $day ?: $event->nextOccurrence( $day, 'startDate' ), 'endDate' )->mysqlDatetime( FALSE ) == $day->mysqlDatetime( FALSE ) }} cEvents_last{{endif}}'>
<li class='cEvents_event cEvents_style{$event->calendar_id}{{if $event->nextOccurrence( $day, 'startDate' ) AND $event->nextOccurrence( $day, 'startDate' )->mysqlDatetime( FALSE, TRUE ) == $day->mysqlDatetime( FALSE ) }}{{$startDates[ $event->id ] = $day->mysqlDatetime( FALSE );}} cEvents_first{{endif}}{{if $event->nextOccurrence( $day ?: $event->nextOccurrence( $day, 'startDate' ), 'endDate' ) AND $event->nextOccurrence( $day ?: $event->nextOccurrence( $day, 'startDate' ), 'endDate' )->mysqlDatetime( FALSE, TRUE ) == $day->mysqlDatetime( FALSE ) }} cEvents_last{{endif}}'>
<a href='{$event->url()}' data-ipsHover data-ipsHover-target='{$event->url('hovercard')->setQuerystring( 'sd', isset( $startDates[ $event->id ] ) ? $startDates[ $event->id ] : $day->mysqlDatetime( FALSE ) )}'>{$event->title}{{if $event->hidden() === 1}} <i class='fa fa-warning'></i>{{endif}}</a>
</li>
{{endforeach}}
@@ -459,7 +465,7 @@
<template template_group="browse" template_name="calendarWrapper" template_data="$calendar, $calendars, $thisCalendar, $jump, $date, $featured, $downloadLinks" template_location="front" template_app="calendar"><![CDATA[
{template="calendarHeader" group="browse" app="calendar" params="$calendars, $thisCalendar, $jump, $downloadLinks"}
<div data-controller='calendar.front.browse.main' class='ipsSpacer_top'>
<div data-controller='calendar.front.browse.main' class='ipsSpacer_top ipsBox_alt'>
{$calendar|raw}
</div>
@@ -486,7 +492,7 @@
{{foreach $collection as $input}}
{{if $input instanceof \IPS\Helpers\Form\Date}}
<li class='ipsFieldRow ipsFieldRow_fullWidth'>
<input type="date" data-control="date" placeholder="{lang="jump_to_placeholder"}" name='{$input->name}' id='{$input->htmlId}' {{if $input->required === TRUE}}required{{endif}} value="{{if $input->defaultValue instanceof \IPS\DateTime}}{$input->defaultValue->format('Y-m-d')}{{endif}}">
<input type="date" data-control="date" name='{$input->name}' id='{$input->htmlId}' {{if $input->required === TRUE}}required{{endif}} value="{{if $input->defaultValue instanceof \IPS\DateTime}}{$input->defaultValue->format('Y-m-d')}{{endif}}">
</li>
{{else}}
{$input->rowHtml($form)|raw}
@@ -525,35 +531,36 @@
</div>]]></template>
<template template_group="global" template_name="embedEvent" template_data="$item, $url, $image=NULL" template_location="front" template_app="calendar"><![CDATA[
<div data-embedInfo-maxSize='500' class='ipsRichEmbed'>
{template="embedHeader" group="embed" app="core" params="$item, \IPS\Member::loggedIn()->language()->addToStack( 'x_created_event_in', FALSE, array( 'sprintf' => array( $item->author()->name, $item->container()->_title ) ) ), $item->mapped('date')"}
{template="embedHeader" group="embed" app="core" params="$item, \IPS\Member::loggedIn()->language()->addToStack( 'x_created_event_in', FALSE, array( 'sprintf' => array( $item->author()->name, $item->container()->_title ) ) ), $item->mapped('date'), $url"}
{{if $item->map( 500, 100 )}}
<div class='ipsRichEmbed_masthead ipsType_center'>
<a href='{$item->url()}' title='{$item->mapped('title')}'>
<a href='{$url}' title='{$item->mapped('title')}'>
{$item->map( 500, 100 )|raw}
</a>
</div>
{{elseif $item->coverPhoto() && $item->coverPhoto()->file}}
{{$photo = $item->coverPhoto()->file;}}
<div class='ipsRichEmbed_masthead ipsRichEmbed_mastheadBg ipsType_center'>
<a href='{$item->url()}' title='{$item->mapped('title')}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $photo->url )"}") '>
<a href='{$url}' title='{$item->mapped('title')}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $photo->url )"}") '>
<img src='{$photo->url}' alt='{$item->mapped('title')}' class='ipsHide'>
</a>
</div>
{{endif}}
<div class='ipsPad ipsClearfix'>
<div class='ipsPad_double ipsClearfix'>
<div class='ipsPhotoPanel ipsPhotoPanel_medium'>
<span class='cCalendarEmbed_calendar ipsPos_left ipsType_blendLinks'>
<a href='{$item->url()}'>
<time datetime='{$item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'>
<span class='ipsCalendarDate_month'>{$item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->mday}</span>
<a href='{$url}'>
{{$nextOccurrence = $item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' ) ?: $event->lastOccurrence( 'startDate' );}}
<time datetime='{$nextOccurrence->mysqlDatetime()}' class='ipsCalendarDate'>
<span class='ipsCalendarDate_month'>{$nextOccurrence->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$nextOccurrence->mday}</span>
</time>
</a>
</span>
<div>
<p class='ipsRichEmbed_itemTitle ipsType_reset ipsTruncate ipsTruncate_line ipsType_blendLinks'>
<a href='{$item->url()}'>{$item->mapped('title')}</a>
<a href='{$url}'>{$item->mapped('title')}</a>
</p>
<div class='ipsType_reset ipsType_medium'>
{{if $item->_end_date}}
@@ -630,20 +637,20 @@
</div>]]></template>
<template template_group="global" template_name="embedEventComment" template_data="$comment, $item, $url" template_location="front" template_app="calendar"><![CDATA[
<div data-embedInfo-maxSize='500' class='ipsRichEmbed'>
{template="embedHeader" group="embed" app="core" params="$comment, \IPS\Member::loggedIn()->language()->addToStack( 'x_commented_event', FALSE, array( 'sprintf' => array( $comment->author()->name ) ) ), $comment->mapped('date')"}
<div class='ipsPad'>
{template="embedHeader" group="embed" app="core" params="$comment, \IPS\Member::loggedIn()->language()->addToStack( 'x_commented_event', FALSE, array( 'sprintf' => array( $comment->author()->name ) ) ), $comment->mapped('date'), $url"}
<div class='ipsPad_double'>
<div class='ipsRichEmbed_originalItem ipsAreaBackground_reset ipsSpacer_bottom ipsType_blendLinks'>
<div>
{{if $item->map( 500, 100 )}}
<div class='ipsRichEmbed_masthead ipsRichEmbed_masthead_small ipsType_center'>
<a href='{$item->url()}' title='{$item->mapped('title')}'>
<a href='{$url}' title='{$item->mapped('title')}'>
{$item->map( 500, 100 )|raw}
</a>
</div>
{{elseif $item->coverPhoto() && $item->coverPhoto()->file}}
{{$photo = $item->coverPhoto()->file;}}
<div class='ipsRichEmbed_masthead ipsRichEmbed_masthead_small ipsRichEmbed_mastheadBg ipsType_center'>
<a href='{$item->url()}' title='{$item->mapped('title')}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $photo->url )"}") '>
<a href='{$url}' title='{$item->mapped('title')}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $photo->url )"}") '>
<img src='{$photo->url}' alt='{$item->mapped('title')}' class='ipsHide'>
</a>
</div>
@@ -651,10 +658,11 @@
<div class='ipsPad'>
<div class='ipsPhotoPanel ipsPhotoPanel_small'>
<span class='cCalendarEmbed_calendar ipsPos_left ipsType_blendLinks'>
<a href='{$item->url()}'>
<time datetime='{$item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'>
<span class='ipsCalendarDate_month'>{$item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->mday}</span>
<a href='{$url}'>
{{$nextOccurrence = $item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' ) ?: $event->lastOccurrence( 'startDate' );}}
<time datetime='{$nextOccurrence->mysqlDatetime()}' class='ipsCalendarDate'>
<span class='ipsCalendarDate_month'>{$nextOccurrence->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$nextOccurrence->mday}</span>
</time>
</a>
</span>
@@ -670,7 +678,7 @@
{$comment->truncated(TRUE)|raw}
</div>
{{if \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and count( $comment->reactions() ) and settings.reputation_enabled}}
{{if settings.reputation_enabled AND \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) AND count( $comment->reactions() )}}
<ul class='ipsList_inline ipsSpacer_top ipsSpacer_half'>
<li>
{template="reactionOverview" app="core" group="global" params="$comment, TRUE, 'small'"}
@@ -705,20 +713,20 @@
{{endif}}]]></template>
<template template_group="global" template_name="embedEventReview" template_data="$comment, $item, $url" template_location="front" template_app="calendar"><![CDATA[
<div data-embedInfo-maxSize='500' class='ipsRichEmbed'>
{template="embedHeader" group="embed" app="core" params="$comment, \IPS\Member::loggedIn()->language()->addToStack( 'x_reviewed_event', FALSE, array( 'sprintf' => array( $comment->author()->name ) ) ), $comment->mapped('date')"}
<div class='ipsPad'>
{template="embedHeader" group="embed" app="core" params="$comment, \IPS\Member::loggedIn()->language()->addToStack( 'x_reviewed_event', FALSE, array( 'sprintf' => array( $comment->author()->name ) ) ), $comment->mapped('date'), $url"}
<div class='ipsPad_double'>
<div class='ipsRichEmbed_originalItem ipsAreaBackground_reset ipsSpacer_bottom ipsType_blendLinks'>
<div>
{{if $item->map( 500, 100 )}}
<div class='ipsRichEmbed_masthead ipsRichEmbed_masthead_small ipsType_center'>
<a href='{$item->url()}' title='{$item->mapped('title')}'>
<a href='{$url}' title='{$item->mapped('title')}'>
{$item->map( 500, 100 )|raw}
</a>
</div>
{{elseif $item->coverPhoto() && $item->coverPhoto()->file}}
{{$photo = $item->coverPhoto()->file;}}
<div class='ipsRichEmbed_masthead ipsRichEmbed_masthead_small ipsRichEmbed_mastheadBg ipsType_center'>
<a href='{$item->url()}' title='{$item->mapped('title')}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $photo->url )"}") '>
<a href='{$url}' title='{$item->mapped('title')}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $photo->url )"}") '>
<img src='{$photo->url}' alt='{$item->mapped('title')}' class='ipsHide'>
</a>
</div>
@@ -726,10 +734,11 @@
<div class='ipsPad'>
<div class='ipsPhotoPanel ipsPhotoPanel_small'>
<span class='cCalendarEmbed_calendar ipsPos_left ipsType_blendLinks'>
<a href='{$item->url()}'>
<time datetime='{$item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'>
<span class='ipsCalendarDate_month'>{$item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->mday}</span>
<a href='{$url}'>
{{$nextOccurrence = $item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' ) ?: $event->lastOccurrence( 'startDate' );}}
<time datetime='{$nextOccurrence->mysqlDatetime()}' class='ipsCalendarDate'>
<span class='ipsCalendarDate_month'>{$nextOccurrence->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$nextOccurrence->mday}</span>
</time>
</a>
</span>
@@ -750,7 +759,7 @@
{$comment->truncated(TRUE)|raw}
</div>
{{if \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and count( $comment->reactions() ) and settings.reputation_enabled}}
{{if settings.reputation_enabled AND \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) AND count( $comment->reactions() )}}
<ul class='ipsList_inline ipsSpacer_top ipsSpacer_half'>
<li>
{template="reactionOverview" app="core" group="global" params="$comment, TRUE, 'small'"}
@@ -869,7 +878,7 @@
{{endif}}
</div>
<div class='ipsDataItem_main'>
<h4 class='ipsDataItem_title ipsType_sectionHead ipsType_break'>
<h4 class='ipsDataItem_title ipsType_sectionHead ipsContained_container'>
{{if $row->mapped('locked')}}
<i class="fa fa-lock"></i>
{{endif}}
@@ -889,7 +898,7 @@
{{endif}}
{{if $row->prefix()}}
{template="prefix" group="global" app="core" params="$row->prefix( TRUE ), $row->prefix()"}
<span>{template="prefix" group="global" app="core" params="$row->prefix( TRUE ), $row->prefix()"}</span>
{{endif}}
<span class='ipsType_break ipsContained'>
@@ -924,11 +933,8 @@
{{endif}}
{{endif}}
{{if count( $row->tags() )}}
<ul class='ipsTags ipsList_inline'>
{{foreach $row->tags() as $tag}}
<li><a href="{url="app=core&module=search&controller=search&tags={$tag}" seoTemplate="tags"}">{$tag}</a></li>
{{endforeach}}
</ul>
&nbsp;&nbsp;
{template="tags" group="global" app="core" params="$row->tags(), true, true"}
{{endif}}
</div>
<div class='ipsDataItem_generic ipsDataItem_size8'>
@@ -993,7 +999,7 @@
{{endif}}
{{if trim( $indexData['index_content'] ) !== ''}}
<div class='ipsType_richText ipsType_break ipsType_medium ipsSpacer_top ipsSpacer_half' {{if !( \IPS\Dispatcher::i()->application->directory == 'core' and \IPS\Dispatcher::i()->module and \IPS\Dispatcher::i()->module->key == 'search' )}}data-ipsTruncate data-ipsTruncate-type='remove' data-ipsTruncate-size='3 lines' data-ipsTruncate-watch='false'{{else}}data-searchable data-findTerm{{endif}}>
{$indexData['index_content']|raw}
{expression="\IPS\Content\Search\Result::preDisplay( $indexData['index_content'] )" raw="true"}
</div>
{{endif}}
</div>
@@ -1029,7 +1035,7 @@
{{if trim( $indexData['index_content'] ) !== ''}}
<div class='ipsSpacer_top ipsSpacer_half ipsType_richText ipsType_break ipsType_medium' {{if !( \IPS\Dispatcher::i()->application->directory == 'core' and \IPS\Dispatcher::i()->module and \IPS\Dispatcher::i()->module->key == 'search' )}}data-ipsTruncate data-ipsTruncate-type='remove' data-ipsTruncate-size='2 lines' data-ipsTruncate-watch='false'{{else}}data-searchable data-findTerm{{endif}}>
{$indexData['index_content']|raw}
{expression="\IPS\Content\Search\Result::preDisplay( $indexData['index_content'] )" raw="true"}
</div>
{{endif}}
</div>
@@ -1154,6 +1160,15 @@
<i class='fa fa-clock-o'></i>
<input name="event_dates[end_time]" id="end_time" type="time" size='12' class="ipsField_short" placeholder="{lang="_time_format_hhmm"}" step='60' min='00:00' value="{$value['end_time']}">
</div>
<br><br>
<ul class='ipsList_inline' id='end_date_controls'>
<li>
<span class='ipsCustomInput'>
<input type="checkbox" role="checkbox" name="event_dates[no_end_time]" {{if !$value['end_time']}}checked aria-checked='true'{{endif}} value="1" id="check_no_end_time">
<span></span>
</span> <label for='check_no_end_time'>{lang="no_end_time"}</label>
</li>
</ul>
</div>
</div>
</div>
@@ -1269,14 +1284,14 @@
</div>
</div>]]></template>
<template template_group="submit" template_name="submitForm" template_data="$id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class=''" template_location="front" template_app="calendar"><![CDATA[
<form accept-charset='utf-8' class="ipsForm {$class}" action="{$action}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}} data-ipsForm>
<form accept-charset='utf-8' class="ipsForm {$class}" action="{$action}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}} data-ipsForm data-ipsFormSubmit>
<input type="hidden" name="{$id}_submitted" value="1">
{{foreach $hiddenValues as $k => $v}}
<input type="hidden" name="{$k}" value="{$v}">
{{endforeach}}
{{if $uploadField}}
<input type="hidden" name="MAX_FILE_SIZE" value="{$uploadField}">
<input type="hidden" name="plupload" value="{expression="md5( uniqid() )"}">
<input type="hidden" name="plupload" value="{expression="md5( mt_rand() )"}">
{{endif}}
<div class='ipsBox'>
@@ -1439,14 +1454,16 @@
</ul>
{{endif}}
</div>]]></template>
<template template_group="view" template_name="comments" template_data="$event" template_location="front" template_app="calendar"><![CDATA[<div class='' data-controller='core.front.core.commentFeed, core.front.core.ignoredComments' {{if settings.auto_polling_enabled}}data-autoPoll{{endif}} data-baseURL='{$event->url()}' {{if $event->isLastPage()}}data-lastPage{{endif}} data-feedID='event-{$event->id}' id='comments'>
<template template_group="view" template_name="comments" template_data="$event" template_location="front" template_app="calendar"><![CDATA[
<div class='' data-controller='core.front.core.commentFeed, core.front.core.ignoredComments' {{if settings.auto_polling_enabled}}data-autoPoll{{endif}} data-baseURL='{$event->url()}' {{if $event->isLastPage()}}data-lastPage{{endif}} data-feedID='event-{$event->id}' id='comments'>
{template="featuredComments" group="global" app="core" params="$event->featuredComments(), $event->url()->setQueryString('tab', 'comments')->setQueryString('recommended', 'comments')"}
{template="commentMultimodHeader" app="core" group="global" params="$event, '#comments'"}
{{if $event->commentPageCount() > 1}}
{$event->commentPagination( array( 'tab' ) )|raw}
<br><br>
{{endif}}
{template="featuredComments" group="global" app="core" params="$event->featuredComments(), $event->url()->setQueryString('tab', 'comments')->setQueryString('recommended', 'comments')"}
<div data-role='commentFeed' data-controller='core.front.core.moderation'>
{{if ( $comments = $event->comments( NULL, NULL, 'date', 'asc', NULL, NULL, NULL, NULL, FALSE, isset( \IPS\Request::i()->showDeleted ) ) and count( $comments ) )}}
<form action="{$event->url()->csrf()->setQueryString( 'do', 'multimodComment' )}" method="post" data-ipsPageAction data-role='moderationTools'>
@@ -1470,7 +1487,7 @@
<hr class='ipsHr'>
{$event->commentPagination( array( 'tab' ) )|raw}
{{endif}}
{{if $event->commentForm() || $event->locked() || \IPS\Member::loggedIn()->restrict_post || \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings']}}
{{if $event->commentForm() || $event->locked() || \IPS\Member::loggedIn()->restrict_post || \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings'] || !\IPS\Member::loggedIn()->checkPostsPerDay()}}
<a id='replyForm'></a>
<div data-role='replyArea' class='ipsBox ipsBox_transparent ipsAreaBackground ipsPad {{if !$event->canComment()}}cTopicPostArea_noSize{{endif}} ipsSpacer_top'>
{{if $event->commentForm()}}
@@ -1485,6 +1502,8 @@
{template="commentUnavailable" group="forms" location="front" app="core" params="'restricted_cannot_comment', \IPS\Member::loggedIn()->warnings(5,NULL,'rpa'), \IPS\Member::loggedIn()->restrict_post"}
{{elseif \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings']}}
{template="commentUnavailable" group="forms" location="front" app="core" params="'unacknowledged_warning_cannot_post', \IPS\Member::loggedIn()->warnings( 1, FALSE )"}
{{elseif !\IPS\Member::loggedIn()->checkPostsPerDay()}}
{template="commentUnavailable" group="forms" location="front" app="core" params="'member_exceeded_posts_per_day'"}
{{endif}}
{{endif}}
</div>
@@ -1548,7 +1567,7 @@
</div>]]></template>
<template template_group="view" template_name="eventBlock" template_data="$event, $date, $truncate=FALSE, $map=array( 300, 200 ), $revertToFirst=FALSE" template_location="front" template_app="calendar"><![CDATA[{{$coverPhoto = $event->coverPhoto();}}
<div class='cCalendarBlock ipsAreaBackground_reset ipsBox'>
<div class='ipsPageHead_special ipsCoverPhoto' data-controller='core.front.core.coverPhoto' data-coverOffset='{$coverPhoto->offset}'>
<div class='ipsPageHead_special ipsCoverPhoto' data-controller='core.global.core.coverPhoto' data-coverOffset='{$coverPhoto->offset}'>
{{if $coverPhoto->file}}
<div class='ipsCoverPhoto_container'>
<img src='{$coverPhoto->file->url}' class='ipsCoverPhoto_photo'>
@@ -1643,6 +1662,14 @@
{$event->map( 250, 150 )|raw}
</div>
{{endif}}
{{if $event->venue}}
<div class='ipsSpacer_bottom'>
<h3 class='ipsType_minorHeading'>
<strong>{lang="event_venue_name"}</strong>
</h3>
{lang="calendar_venue_{$event->venue()->id}" escape="true"}
</div>
{{endif}}
{{if $address}}
<h3 class='ipsType_minorHeading'>
<strong>{lang="event_address"}</strong>
@@ -1678,10 +1705,14 @@
<ul class='ipsGrid ipsList_reset'>
{{foreach $attendees[1] as $attendee}}
<li class='ipsGrid_span3'>
{{if \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members' ) ) }}
<a href='{$attendee->url()}' title="{$attendee->name}" data-ipsTooltip>
{{endif}}
<img src='{$attendee->photo}' class='ipsUserPhoto ipsUserPhoto_mini' alt=''>
<span class='ipsHide'>{$attendee->name}</span>
{{if \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members' ) ) }}
</a>
{{endif}}
</li>
{{endforeach}}
</ul>
@@ -1697,10 +1728,14 @@
<ul class='ipsGrid ipsList_reset'>
{{foreach $attendees[2] as $attendee}}
<li class='ipsGrid_span3'>
{{if \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members' ) ) }}
<a href='{$attendee->url()}' title="{$attendee->name}" data-ipsTooltip>
{{endif}}
<img src='{$attendee->photo}' class='ipsUserPhoto ipsUserPhoto_mini' alt=''>
<span class='ipsHide'>{$attendee->name}</span>
{{if \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members' ) ) }}
</a>
{{endif}}
</li>
{{endforeach}}
</ul>
@@ -1714,10 +1749,14 @@
<ul class='ipsGrid ipsList_reset'>
{{foreach $attendees[0] as $attendee}}
<li class='ipsGrid_span3'>
{{if \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members' ) ) }}
<a href='{$attendee->url()}' title="{$attendee->name}" data-ipsTooltip>
{{endif}}
<img src='{$attendee->photo}' class='ipsUserPhoto ipsUserPhoto_mini' alt=''>
<span class='ipsHide'>{$attendee->name}</span>
{{if \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members' ) ) }}
</a>
{{endif}}
</li>
{{endforeach}}
</ul>
@@ -1736,7 +1775,7 @@
{{endif}}]]></template>
<template template_group="view" template_name="eventStreamBlock" template_data="$event, $date, $truncate=FALSE, $map=array( 300, 200 ), $revertToFirst=FALSE" template_location="front" template_app="calendar"><![CDATA[{{$coverPhoto = $event->coverPhoto();}}
<div class='cCalendarBlock ipsAreaBackground_reset ipsBox ipsPad'>
<div class='ipsPageHead_special ipsCoverPhoto' data-controller='core.front.core.coverPhoto' data-coverOffset='{$coverPhoto->offset}'>
<div class='ipsPageHead_special ipsCoverPhoto' data-controller='core.global.core.coverPhoto' data-coverOffset='{$coverPhoto->offset}'>
{{if $coverPhoto->file}}
<div class='ipsCoverPhoto_container'>
<img src='{$coverPhoto->file->url}' class='ipsCoverPhoto_photo'>
@@ -1759,9 +1798,15 @@
<br>
<div class='eventStreamDate ipsPos_left'>
<a href='{$event->url()}'>
<time datetime='{$event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'>
<span class='ipsCalendarDate_month'>{$event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->mday}</span>
{{if $event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )}}
<time datetime='{$event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'>
<span class='ipsCalendarDate_month'>{$event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->mday}</span>
{{else}}
<time datetime='{$event->lastOccurrence( 'startDate' )->mysqlDatetime()}{{if !$event->all_day}} {$event->lastOccurrence( 'startDate' )->mysqlDatetime( FALSE )} {{endif}}' class='ipsCalendarDate'>
<span class='ipsCalendarDate_month'>{$event->lastOccurrence( 'startDate' )->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$event->lastOccurrence( 'startDate' )->mday}</span>
{{endif}}
</time>
</a>
</div>
@@ -1830,8 +1875,8 @@
<input type="hidden" name="{$k}" value="{$v}">
{{endforeach}}
{{if $uploadField}}
<input type="hidden" name="MAX_FILE_SIZE" value="{$uploadField}">
<input type="hidden" name="plupload" value="{expression="md5( uniqid() )"}">
<input type="hidden" name="MAX_FILE_SIZE" value="{$uploadField}">
<input type="hidden" name="plupload" value="{expression="md5( mt_rand() )"}">
{{endif}}
<div class="ipsPad">
<h2 class='ipsType_sectionHead'>{expression="\IPS\Output::i()->title"}</h2>
@@ -1855,7 +1900,8 @@
{$actionButtons[0]|raw} {{if isset( $actionButtons[1] )}}{$actionButtons[1]|raw}{{endif}}
</div>
</form>]]></template>
<template template_group="view" template_name="reviews" template_data="$event" template_location="front" template_app="calendar"><![CDATA[<div data-controller='core.front.core.commentFeed' {{if settings.auto_polling_enabled}}data-autoPoll{{endif}} data-commentsType='reviews' data-baseURL='{$event->url()}' {{if $event->isLastPage('reviews')}}data-lastPage{{endif}} data-feedID='event-{$event->id}-reviews' id='reviews'>
<template template_group="view" template_name="reviews" template_data="$event" template_location="front" template_app="calendar"><![CDATA[
<div data-controller='core.front.core.commentFeed' {{if settings.auto_polling_enabled}}data-autoPoll{{endif}} data-commentsType='reviews' data-baseURL='{$event->url()}' {{if $event->isLastPage('reviews')}}data-lastPage{{endif}} data-feedID='event-{$event->id}-reviews' id='reviews'>
{{if $event->reviewForm()}}
{{if $event->locked()}}
<strong class='ipsType_warning'><i class='fa fa-info-circle'></i> {lang="item_locked_can_review"}</strong>
@@ -1881,6 +1927,7 @@
{{if count( $event->reviews( NULL, NULL, NULL, 'desc', NULL, NULL, NULL, NULL, isset( \IPS\Request::i()->showDeleted ) ) )}}
{{if !$event->hasReviewed()}}<hr class='ipsHr'>{{endif}}
<div class="ipsClearfix ipsSpacer_bottom">
{template="commentMultimodHeader" app="core" group="global" params="$event, '#reviews', 'review'"}
{{if $event->reviewPageCount() > 1}}
<div class="ipsPos_left ipsResponsive_noFloat">
{$event->reviewPagination( array( 'tab', 'sort' ) )|raw}
@@ -2120,14 +2167,14 @@
</li>
{{endif}}
{{if $event->canReport() }}
{{if $event->canReportOrRevoke() === TRUE}}
<li>
<a href='{$event->url('report')}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="report_event"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}" title="{lang="report_event"}" class='ipsButton ipsButton_link ipsButton_verySmall ipsButton_fullWidth'>{lang="report_event"}</a>
</li>
{{endif}}
<li><a href='{$event->url('download')}' rel="noindex, nofollow" title='{lang="download_ical_title"}' class='ipsButton ipsButton_link ipsButton_verySmall ipsButton_fullWidth'>{lang="download_ical"}</a></li>
{{if $event->venue() and $event->venue()->can( 'view' )}}
<li><a href="{$event->venue()->url()}" class='ipsButton ipsButton_link ipsButton_verySmall ipsButton_fullWidth'>{lang="calendar_more_events_at_x" sprintf=" $event->venue()->_title"}</a></li>
<li><a href="{$event->venue()->url()}" class='ipsButton ipsButton_link ipsButton_verySmall ipsButton_fullWidth'>{lang="calendar_more_events_at_x" sprintf="$event->venue()->_title"}</a></li>
{{endif}}
{{if $event->author() == \IPS\Member::loggedIn() and \IPS\calendar\Calendar::canOnAny('add')}}
<li><a href='{url="app=calendar&module=calendar&controller=submit&do=copy&event_id={$event->id}"}' rel="noindex, nofollow" title='' class='ipsButton ipsButton_link ipsButton_verySmall ipsButton_fullWidth'>{lang="add_similar_event"}</a></li>
@@ -2265,70 +2312,87 @@
]]></template>
<template template_group="widgets" template_name="upcomingEvents" template_data="$events, $today, $orientation='vertical'" template_location="front" template_app="calendar"><![CDATA[<h3 class='ipsType_reset ipsWidget_title'>{lang="block_upcomingEvents"}</h3>
<div class='ipsWidget_inner'>
{{if $orientation == 'vertical'}}
{{if $orientation == 'vertical'}}
<div class='ipsPad_half'>
{{endif}}
{{if !empty( $events ) }}
{{endif}}
{{if !empty( $events ) }}
<ul class='ipsDataList ipsDataList_reducedSpacing'>
{{foreach $events as $event}}
{{foreach $events as $event}}
<li class='ipsDataItem ipsClearfix'>
<div class='ipsDataItem_icon cCalendar_date_overlay'>
{{if $event->nextOccurrence( $today, 'startDate' )}}
<time datetime='{$event->nextOccurrence( $today, 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'>
<span class='ipsCalendarDate_month' data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="%b">{$event->nextOccurrence( $today, 'startDate' )->monthNameShort}</span>
<span class='ipsCalendarDate_date' data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="%d">{$event->nextOccurrence( $today, 'startDate' )->mday}</span>
</time>
<time datetime='{$event->nextOccurrence( $today, 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'>
<span class='ipsCalendarDate_month' data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="%b">{$event->nextOccurrence( $today, 'startDate' )->monthNameShort}</span>
<span class='ipsCalendarDate_date' data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="%d">{$event->nextOccurrence( $today, 'startDate' )->mday}</span>
</time>
{{else}}
<time datetime='{$event->lastOccurrence( 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'>
<span class='ipsCalendarDate_month' data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( $today, 'startDate' )->format('c')}" data-format="%b">{$event->lastOccurrence( 'startDate' )->monthNameShort}</span>
<span class='ipsCalendarDate_date' data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( $today, 'startDate' )->format('c')}" data-format="%d">{$event->lastOccurrence( 'startDate' )->mday}</span>
</time>
<time datetime='{$event->lastOccurrence( 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate'>
<span class='ipsCalendarDate_month' data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'startDate' )->format('c')}" data-format="%b">{$event->lastOccurrence( 'startDate' )->monthNameShort}</span>
<span class='ipsCalendarDate_date' data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'startDate' )->format('c')}" data-format="%d">{$event->lastOccurrence( 'startDate' )->mday}</span>
</time>
{{endif}}
</div>
<div class='ipsDataItem_main cWidgetComments'>
{{if $event->container()->allow_comments && $orientation == 'vertical'}}
<div class="ipsCommentCount ipsPos_right {{if $event->comments === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="num_replies" pluralize="$event->comments"}'>{expression="$event->comments"}</div>
<div class="ipsCommentCount ipsPos_right {{if $event->comments === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="num_replies" pluralize="$event->comments"}'>{expression="$event->comments"}</div>
{{endif}}
<div class='ipsType_break ipsContained'>
<a href="{$event->url()}" title='{lang="view_this_event" sprintf="$event->title"}'>{$event->title}</a>
</div>
<strong class='ipsType_small'>
{{$sameDay = (bool) ( $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' ) and $event->nextOccurrence( $today, 'startDate' )->calendarDate() == $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->calendarDate() );}}
{{if $event->nextOccurrence( $today, 'startDate' )}}
<span data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"} {{endif}}">{$event->nextOccurrence( $today, 'startDate' )->calendarDate()}{{if !$event->all_day}} {$event->nextOccurrence( $today, 'startDate' )->localeTime( FALSE )} {{endif}}</span>
{{if $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' ) }}
{{if $orientation == 'vertical'}}<br>{{endif}}
<span class='ipsType_light ipsType_unbold'>{lang="until"}</span>{{if $orientation == 'vertical' and !$sameDay}}<br>{{endif}}
{{if !$sameDay}}<span data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"}{{endif}}">{$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->calendarDate()}{{endif}}{{if !$event->all_day}} {$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->localeTime( FALSE )}{{endif}}</span>
{{endif}}
<span data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $today, 'startDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"} {{endif}}">{$event->nextOccurrence( $today, 'startDate' )->calendarDate()}{{if !$event->all_day}} {$event->nextOccurrence( $today, 'startDate' )->localeTime( FALSE )} {{endif}}</span>
{{if $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' ) }}
{{$sameDay = (bool) ( $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' ) and ( $event->nextOccurrence( $today, 'startDate' ) and $event->nextOccurrence( $today, 'startDate' )->calendarDate() == $event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->calendarDate() ) );}}
{{if $orientation == 'vertical'}}<br>{{endif}}
<span class='ipsType_light ipsType_unbold'>{lang="until"}</span>{{if $orientation == 'vertical' and !$sameDay}}<br>{{endif}}
{{if !$sameDay}}
<span data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"}{{endif}}">
{$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->calendarDate()}
{{if !$event->all_day}} {$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->localeTime( FALSE )}{{endif}}
</span>
{{else}}
{{if !$event->all_day}}
<span data-controller="core.global.core.datetime" data-time="{$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"}">
{$event->nextOccurrence( $event->nextOccurrence( $today, 'startDate' ) ?: $today, 'endDate' )->localeTime( FALSE )}
</span>
{{endif}}
{{endif}}
{{endif}}
{{else}}
<span data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'startDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"} {{endif}}">{$event->lastOccurrence( 'startDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'startDate' )->localeTime( FALSE )} </span>{{endif}}
{{if $event->lastOccurrence( 'endDate' ) }}
{{if $orientation == 'vertical'}}<br>{{endif}}
<span class='ipsType_light ipsType_unbold'>{lang="until"}</span>{{if $orientation == 'vertical'}}<br>{{endif}}
<span data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'endDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"}{{endif}}">{$event->lastOccurrence( 'endDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'endDate' )->localeTime( FALSE )}{{endif}}</span>
{{endif}}
<span data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'startDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"} {{endif}}">{$event->lastOccurrence( 'startDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'startDate' )->localeTime( FALSE )} </span>{{endif}}
{{if $event->lastOccurrence( 'endDate' ) }}
{{if $orientation == 'vertical'}}<br>{{endif}}
<span class='ipsType_light ipsType_unbold'>{lang="until"}</span>{{if $orientation == 'vertical'}}<br>{{endif}}
<span data-controller="core.global.core.datetime" data-time="{$event->lastOccurrence( 'endDate' )->format('c')}" data-format="{expression="\IPS\calendar\Date::calendarDateFormat()"}{{if !$event->all_day}} {expression="\IPS\calendar\Date::localeTimeFormat( FALSE )"}{{endif}}">{$event->lastOccurrence( 'endDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'endDate' )->localeTime( FALSE )}{{endif}}</span>
{{endif}}
{{endif}}
</strong>
<br>
{{if $event->container()->allow_comments && $orientation == 'horizontal'}}
<span class="{{if $event->comments === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="num_replies" pluralize="$event->comments"}'><i class='fa fa-comment'></i> {expression="$event->comments"}</span>&nbsp;&nbsp;
<span class="{{if $event->comments === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="num_replies" pluralize="$event->comments"}'><i class='fa fa-comment'></i> {expression="$event->comments"}</span>&nbsp;&nbsp;
{{endif}}
{{if $orientation == 'horizontal'}}
<div class='ipsType_medium ipsType_richText' data-ipsTruncate data-ipsTruncate-type='remove' data-ipsTruncate-size='2 lines' data-ipsTruncate-watch='false'>
{$event->truncated()|raw}
</div>
<div class='ipsType_medium ipsType_richText' data-ipsTruncate data-ipsTruncate-type='remove' data-ipsTruncate-size='2 lines' data-ipsTruncate-watch='false'>
{$event->truncated()|raw}
</div>
{{endif}}
</div>
</li>
{{endforeach}}
{{endforeach}}
</ul>
{{else}}
{{else}}
<div class='ipsType_light ipsPad_half ipsType_center'>{lang="no_upcoming_events"}</div>
{{endif}}
{{if $orientation == 'vertical'}}
</div>
{{endif}}
{{if $orientation == 'vertical'}}
</div>
{{endif}}
</div>]]></template>
<css css_location="front" css_app="calendar" css_attributes="" css_path="." css_name="calendar_responsive.css"><![CDATA[/* BOTH */
@media screen and (max-width: 979px) {
@@ -2774,6 +2838,11 @@ tr td:not( :first-child ):not( .cCalendar_firstDay ) .cEvents_ranged .cEvents_ev
margin-top: 5px;
}
#elEventHeader > .ipsCoverPhotoMinimal {
padding-top: 25px;
height: 100px;
}
.cEvent_to {
font-size: 28px;
margin: 6px 15px;