<?xml version="1.0" encoding="UTF-8"?>
<theme name="Default" author_name="Invision Power Services, Inc" author_url="https://www.invisioncommunity.com">
<template template_group="browse" template_name="birthday" template_data="$table, $headers, $rows" template_location="front" template_app="calendar"><![CDATA[{{foreach $rows as $row}}
<li class='ipsGrid_span6 ipsPhotoPanel ipsPhotoPanel_mini ipsClearfix'>
{template="userPhoto" app="core" group="global" params="\IPS\Member::load( $row['member_id'] ), 'mini'"}
<div>
<h3 class='ipsType_normal ipsType_reset ipsTruncate ipsTruncate_line'>{member="name" id="$row['member_id']"}</h3>
<span class='ipsType_light'>
{{if $row['bday_year']}}
{lang="member_age" pluralize="\IPS\Member::load( $row['member_id'] )->age( \IPS\calendar\Date::getDate( \IPS\Request::i()->y ?: NULL, \IPS\Request::i()->m ?: NULL, \IPS\Request::i()->d ?: NULL ) )"}{{endif}}
</span>
</div>
</li>
{{endforeach}}]]></template>
<template template_group="browse" template_name="birthdaysTable" template_data="$table, $headers, $rows, $quickSearch" template_location="front" template_app="calendar"><![CDATA[<div data-baseurl='{$table->baseUrl}' data-resort='{$table->resortKey}' data-controller='core.global.core.table' {{if $table->getPaginationKey() != 'page'}}data-pageParam='{$table->getPaginationKey()}'{{endif}}>
{{if $table->pages > 1}}
<div class="ipsButtonBar ipsPad_half ipsClearfix ipsClear">
<div data-role="tablePagination">
{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit, TRUE, $table->getPaginationKey()"}
</div>
</div>
{{endif}}
{{if count( $rows )}}
<ol class='ipsGrid ipsGrid_collapsePhone ipsPad ipsClear {{foreach $table->classes as $class}}{$class} {{endforeach}}' id='elTable_{$table->uniqueId}' data-role="tableRows">
{template="$table->rowsTemplate[1]" params="$table, $headers, $rows" object="$table->rowsTemplate[0]"}
</ol>
{{else}}
<div class='ipsType_center ipsPad'>
<p class='ipsType_large ipsType_light'>{lang="no_rows_in_table"}</p>
{{if method_exists( $table, 'container' ) AND $table->container() !== NULL}}
{{if $table->container()->can('add')}}
<a href='{$table->container()->url()->setQueryString( 'do', 'add' )}' class='ipsButton ipsButton_primary ipsButton_medium'>
{lang="submit_first_row"}
</a>
{{endif}}
{{endif}}
</div>
{{endif}}
{{if $table->pages > 1}}
<div class="ipsButtonBar ipsPad_half ipsClearfix ipsClear">
<div data-role="tablePagination">
{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit, TRUE, $table->getPaginationKey()"}
</div>
</div>
{{endif}}
</div>]]></template>
<template template_group="browse" template_name="calendarDay" template_data="$calendars, $date, $featured, $birthdays, $birthdayCount, $events, $tomorrow, $yesterday, $today, $thisCalendar, $jump" template_location="front" template_app="calendar"><![CDATA[
<div class='ipsGrid ipsGrid_collapsePhone ipsPager cCalendarNav ipsSpacer_bottom' data-ipsSticky data-ipsSticky-disableIn='phone'>
<div class='ipsGrid_span3 ipsType_left ipsPager_prev'>
<a href="{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&id={$thisCalendar->_id}&y={$yesterday->year}&m={$yesterday->mon}&d={$yesterday->mday}" seoTemplate="calendar_calday" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&y={$yesterday->year}&m={$yesterday->mon}&d={$yesterday->mday}" seoTemplate="calendar_day"}{{endif}}" title='{lang="cal_month_day" sprintf="$yesterday->monthName, $yesterday->mday, $yesterday->year"}' rel='prev nofollow' data-action='changeView'>
<span class='ipsPager_type ipsType_normal'>{lang="cal_month_day_noyear" sprintf="$yesterday->monthName, $yesterday->mday"}</span>
<span class='ipsPager_title ipsType_light'>{$yesterday->year}</span>
</a>
</div>
<div class='ipsGrid_span6 ipsType_center ipsPad cCalendarNav' data-role='calendarNav'>
<h1 class='ipsType_pageTitle ipsType_center'>{lang="cal_month_day" sprintf="$date->monthName, $date->mday, $date->year"}</h1>
<ul class='ipsButton_split ipsType_noBreak'>
<li><a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=month&id={$thisCalendar->_id}&y={$date->year}&m={$date->mon}" seoTemplate="calendar_calmonth" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=month&y={$date->year}&m={$date->mon}" seoTemplate="calendar_month"}{{endif}}' title='{lang="cal_month_title" sprintf="$date->monthName, $date->year"}' class='ipsButton ipsButton_light ipsButton_verySmall' data-action='changeView'>{lang="month"}</a></li>
<li><a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=week&id={$thisCalendar->_id}&w={$date->year}-{$date->mon}-{$date->mday}" seoTemplate="calendar_calweek" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=week&w={$date->year}-{$date->mon}-{$date->mday}" seoTemplate="calendar_week"}{{endif}}' title='{lang="cal_week_title" sprintf="$date->firstDayOfWeek('monthNameShort'), $date->firstDayOfWeek('mday'), $date->firstDayOfWeek('year'), $date->lastDayOfWeek('monthNameShort'), $date->lastDayOfWeek('mday'), $date->lastDayOfWeek('year')"}' class='ipsButton ipsButton_light ipsButton_verySmall' data-action='changeView'>{lang="week"}</a></li>
<li><a href='#' class='ipsButton ipsButton_primary ipsButton_verySmall' title='{lang="cal_month_day" sprintf="$date->monthName, $date->mday, $date->year"}' data-action='changeView'>{lang="day"}</a></li>
<li><a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=stream&id={$thisCalendar->_id}&y={$date->year}&m={$date->mon}" seoTemplate="calendar_calstream" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=stream&y={$date->year}&m={$date->mon}" seoTemplate="calendar_stream"}{{endif}}' title='{lang="cal_month_stream_title" sprintf="$date->monthName, $date->year"}' class='ipsButton ipsButton_light ipsButton_verySmall' data-action='changeView'><span class='ipsResponsive_hidePhone ipsResponsive_inline'>{lang="event_stream"}</span><span class='ipsResponsive_showPhone ipsResponsive_inline'>{lang="event_stream_short"}</span></a></li>
</ul>
</div>
<div class='ipsGrid_span3 ipsType_right ipsPager_next'>
<a href="{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&id={$thisCalendar->_id}&y={$tomorrow->year}&m={$tomorrow->mon}&d={$tomorrow->mday}" seoTemplate="calendar_calday" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&y={$tomorrow->year}&m={$tomorrow->mon}&d={$tomorrow->mday}" seoTemplate="calendar_day"}{{endif}}" title='{lang="cal_month_day" sprintf="$tomorrow->monthName, $tomorrow->mday, $tomorrow->year"}' rel='next nofollow' data-action='changeView'>
<span class='ipsPager_type ipsType_normal'>{lang="cal_month_day_noyear" sprintf="$tomorrow->monthName, $tomorrow->mday"}</span>
<span class='ipsPager_title ipsType_light'>{$tomorrow->year}</span>
</a>
</div>
</div>
{{if count( $birthdays )}}
<div class='ipsColumns ipsColumns_collapseTablet'>
<div class='ipsColumn ipsColumn_fluid'>
{{endif}}
<div class='ipsBox'>
<h2 class='ipsType_sectionTitle ipsType_reset'>{lang="events_happening_today"}</h2>
{{if $events['count'] > 0}}
<ol class='cCalendarDay ipsDataList'>
{{if isset( $events['allDay'] ) && count( $events['allDay'] )}}
<li class='ipsDataItem cCalendarDay_allDay'>
<div class='ipsDataItem_generic ipsDataItem_size5 cCalendarDay_hour cCalendarDay_allDay ipsAreaBackground ipsPad'>
<h2 class='ipsType_reset'>{lang="day_view_all_day"}</h2>
</div>
<div class='ipsDataItem_main ipsPad'>
<div class='cCalendarDay_eventList' data-ipsPatchwork data-ipsPatchwork-minColSize='300' data-ipsPatchwork-maxColSize='500'>
<div data-role='patchworkList'>
{{foreach $events['allDay'] as $event}}
<div data-role='patchworkItem'>
{template="eventBlock" app="calendar" group="view" params="$event, $date, true"}
</div>
{{endforeach}}
</div>
</div>
</div>
</li>
{{endif}}
{{foreach $events as $hour => $hourEvents}}
{{if count( $hourEvents ) && $hour !== 'allDay' && $hour !== 'count'}}
<li class='ipsDataItem'>
<div class='ipsDataItem_generic ipsDataItem_size5 cCalendarDay_hour ipsAreaBackground ipsPad'>
<h2 class='ipsType_reset'>
{{if \IPS\calendar\Date::usesAmPm()}}
{expression="\IPS\calendar\Date::getTwelveHour( $hour )"}<br><span>{expression="\IPS\calendar\Date::getAmPm( $hour )"}</span>
{{else}}
{$hour}<br><span>:00</span>
{{endif}}
</h2>
</div>
<div class='ipsDataItem_main ipsAreaBackground_light ipsPad'>
<div class='cCalendarDay_eventList' data-ipsPatchwork data-ipsPatchwork-minColSize='300' data-ipsPatchwork-maxColSize='500'>
<div data-role='patchworkList'>
{{foreach $hourEvents as $idx => $event}}
<div data-role='patchworkItem'>
{template="eventBlock" app="calendar" group="view" params="$event, $date, true"}
</div>
{{endforeach}}
</div>
</div>
</div>
</li>
{{endif}}
{{endforeach}}
</ol>
{{else}}
<div class='ipsPad ipsAreaBackground ipsSpacer_bottom'><span class='ipsType_light ipsType_large'>{lang="no_events_today"}</span></div>
{{endif}}
</div>
{{if count( $birthdays ) }}
</div>
<div class='ipsColumn ipsColumn_medium'>
{{foreach $birthdays AS $bdayDate => $birthday}}
<h2 class='ipsType_sectionTitle ipsType_reset'>{lang="birthdays_today" pluralize="$birthdayCount[ $bdayDate ]"}</h2>
<ul class='ipsDataList ipsDataList_reducedSpacing'>
{{foreach $birthday AS $member}}
<li class='ipsDataItem ipsClearfix'>
<div class='ipsDataItem_main ipsPhotoPanel ipsPhotoPanel_tiny ipsClearfix'>
{template="userPhoto" app="core" group="global" params="$member, 'tiny'"}
<div>
{$member->link()|raw}
{{if $member->bday_year}}<br>
{lang="member_age" pluralize="$member->age( $date )"}{{endif}}
</div>
</div>
</li>
{{endforeach}}
{{if count($birthday) < $birthdayCount[ $bdayDate ]}}
<li class='ipsDataItem ipsClearfix ipsAreaBackground_light ipsPad ipsPad_half ipsType_center'>
<a data-ipsDialog data-ipsDialog-title='{lang="birthdays_today" pluralize="$birthdayCount[ $bdayDate ]"}' data-ipsDialog-size="narrow" href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=day&id={$thisCalendar->_id}&y={$date->year}&m={$date->mon}&d={$date->mday}&show=birthdays" seoTemplate="calendar_calday" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=day&y={$date->year}&m={$date->mon}&d={$date->mday}&show=birthdays" seoTemplate="calendar_day"}{{endif}}'>{lang="birthdays_view_all"}</a>
</li>
{{endif}}
</ul>
{{endforeach}}
</div>
</div>
{{endif}}]]></template>
<template template_group="browse" template_name="calendarFeatured" template_data="$featured, $date" template_location="front" template_app="calendar"><![CDATA[
{{if count($featured) }}
<hr class='ipsHr'>
<div class='ipsBox'>
<h2 class='ipsType_reset ipsType_sectionTitle'>{lang="featured_events"}</h2>
<div class='ipsPad'>
<div class='ipsCarousel ipsClearfix' data-ipsCarousel>
<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>
<a href='#' class='ipsCarousel_nav ipsHide' data-action='next'><i class='fa fa-chevron-right'></i></a>
</div>
</div>
</div>
{{endif}}]]></template>
<template template_group="browse" template_name="calendarHeader" template_data="$calendars, $thisCalendar, $jump, $downloadLinks" template_location="front" template_app="calendar"><![CDATA[
{{if $thisCalendar and $club = $thisCalendar->club()}}
{{if settings.clubs and settings.clubs_header == 'full'}}
{template="header" app="core" group="clubs" params="$club, $thisCalendar"}
{{endif}}
{{endif}}
<div class="ipsPageHeader ipsPad_half ipsClearfix ipsSpacer_bottom" id='elCalendarsHeader'>
{{if $thisCalendar}}
<div class='ipsPos_right ipsResponsive_noFloat'>
{template="follow" app="core" group="global" params="'calendar', 'calendar', $thisCalendar->id, \IPS\calendar\Event::containerFollowerCount( $thisCalendar )"}
</div>
{{endif}}
<span class="ipsType_pageTitle">
{{if $thisCalendar and $club = $thisCalendar->club()}}
{$thisCalendar->_title}
{{else}}
<a href='#elCalendars_menu' id='elCalendars' data-ipsMenu data-ipsMenu-appendTo="#elCalendarsHeader" class='ipsType_blendLinks'>{{if $thisCalendar}}{$thisCalendar->_title}{{else}}{lang="all_calendars"}{{endif}} <i class='fa fa-caret-down'></i></a>
{{endif}}
<a href='#elCalendarSettings_menu' id='elCalendarSettings' data-ipsMenu data-ipsMenu-alignCenter data-ipsMenu-appendTo="#elCalendarsHeader" class='ipsType_blendLinks'><i class='fa fa-cog'></i></a>
{{if ( $thisCalendar AND $thisCalendar->can('add') ) OR ( !$thisCalendar AND \IPS\calendar\Calendar::canOnAny('add') )}}
{{if $thisCalendar}}
<a href='{url="app=calendar&module=calendar&controller=submit&do=submit&id={$thisCalendar->id}" seoTemplate="calendar_submit"}' class='ipsButton ipsButton_important ipsButton_small ipsResponsive_hidePhone ipsResponsive_inlineBlock'>{lang="create_event"}</a>
{{else}}
<a href='{url="app=calendar&module=calendar&controller=submit" seoTemplate="calendar_submit"}' data-ipsdialog data-ipsdialog-title='{lang="event_container"}' data-ipsdialog-size='narrow' class='ipsButton ipsButton_important ipsButton_small ipsResponsive_hidePhone ipsResponsive_inlineBlock'>{lang="create_event"}</a>
{{endif}}
{{endif}}
<a href='#elCalendarJump' data-ipsMenu data-ipsMenu-menuID='elCalendarJump' data-ipsMenu-closeOnClick='false' class='ipsButton ipsButton_light ipsButton_small ipsResponsive_showDesktop ipsResponsive_inlineBlock'>{lang="jump_to"} <i class='fa fa-caret-down'></i></a>
</span>
</div>
{$jump->customTemplate( array( \IPS\Theme::i()->getTemplate( 'browse' ), 'dateJump' ) )|raw}
<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}}
{{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'>
<li class='ipsMenu_title'>{{if $thisCalendar}}{lang="with_calendar" sprintf="$thisCalendar->_title"}{{else}}{lang="with_all_calendars"}{{endif}}</li>
<li class='ipsMenu_item'><a href='{{if $thisCalendar}}{$downloadLinks['iCalCalendar']}{{else}}{$downloadLinks['iCalAll']}{{endif}}'><i class='fa fa-download'></i> {lang="download_webcal"}</a></li>
<li class='ipsMenu_item'><a href='{expression="str_replace( array( 'http://', 'https://' ), 'webcal://', $thisCalendar ? $downloadLinks['iCalCalendar'] : $downloadLinks['iCalAll'] )"}'><i class='fa fa-calendar'></i> {lang="subscribe_webcal"}</a></li>
</ul>
<hr class='ipsHr'>]]></template>
<template template_group="browse" template_name="calendarMonth" template_data="$calendars, $date, $featured, $birthdays, $events, $today, $thisCalendar, $jump, $startDates=array()" template_location="front" template_app="calendar"><![CDATA[<div class='ipsGrid ipsGrid_collapsePhone ipsPager cCalendarNav ipsSpacer_bottom' data-ipsSticky data-ipsSticky-disableIn='phone'>
<div class='ipsGrid_span3 ipsType_left ipsPager_prev'>
<a href="{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=month&id={$thisCalendar->_id}&y={$date->lastMonth('year')}&m={$date->lastMonth('mon')}" seoTemplate="calendar_calmonth" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&y={$date->lastMonth('year')}&m={$date->lastMonth('mon')}" seoTemplate="calendar_month"}{{endif}}" title='{lang="cal_month_title" sprintf="$date->lastMonth('monthName'), $date->lastMonth('year')"}' rel='prev nofollow' data-action='changeView'>
<span class='ipsPager_type ipsType_normal'>{$date->lastMonth('monthName')}</span>
<span class='ipsPager_title ipsType_light'>{$date->lastMonth('year')}</span>
</a>
</div>
<div class='ipsGrid_span6 ipsType_center ipsPad' data-role='calendarNav'>
<h1 class='ipsType_pageTitle ipsType_center'>{lang="cal_month_title" sprintf="$date->monthName, $date->year"}</h1>
<ul class='ipsButton_split ipsType_noBreak'>
<li><a href='#' class='ipsButton ipsButton_primary ipsButton_verySmall' title='{lang="cal_month_title" sprintf="$date->monthName, $date->year"}' data-action='changeView'>{lang="month"}</a></li>
<li><a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=week&id={$thisCalendar->_id}&w={$date->year}-{$date->mon}-{$date->mday}" seoTemplate="calendar_calweek" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=week&w={$date->year}-{$date->mon}-{$date->mday}" seoTemplate="calendar_week"}{{endif}}' title='{lang="cal_week_title" sprintf="$date->firstDayOfWeek('monthNameShort'), $date->firstDayOfWeek('mday'), $date->firstDayOfWeek('year'), $date->lastDayOfWeek('monthNameShort'), $date->lastDayOfWeek('mday'), $date->lastDayOfWeek('year')"}' class='ipsButton ipsButton_light ipsButton_verySmall' data-action='changeView'>{lang="week"}</a></li>
<li><a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=day&id={$thisCalendar->_id}&y={$date->year}&m={$date->mon}&d={$date->mday}" seoTemplate="calendar_calday" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=day&y={$date->year}&m={$date->mon}&d={$date->mday}" seoTemplate="calendar_day"}{{endif}}' title='{lang="cal_month_day" sprintf="$date->monthName, $date->mday, $date->year"}' class='ipsButton ipsButton_light ipsButton_verySmall' data-action='changeView'>{lang="day"}</a></li>
<li><a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=stream&id={$thisCalendar->_id}&y={$date->year}&m={$date->mon}" seoTemplate="calendar_calstream" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=stream&y={$date->year}&m={$date->mon}" seoTemplate="calendar_stream"}{{endif}}' title='{lang="cal_month_stream_title" sprintf="$date->monthName, $date->year"}' class='ipsButton ipsButton_light ipsButton_verySmall' data-action='changeView'><span class='ipsResponsive_hidePhone ipsResponsive_inline'>{lang="event_stream"}</span><span class='ipsResponsive_showPhone ipsResponsive_inline'>{lang="event_stream_short"}</span></a></li>
</ul>
</div>
<div class='ipsGrid_span3 ipsType_right ipsPager_next'>
<a href="{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=month&id={$thisCalendar->_id}&y={$date->nextMonth('year')}&m={$date->nextMonth('mon')}" seoTemplate="calendar_calmonth" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&y={$date->nextMonth('year')}&m={$date->nextMonth('mon')}" seoTemplate="calendar_month"}{{endif}}" title='{lang="cal_month_title" sprintf="$date->nextMonth('monthName'), $date->nextMonth('year')"}' rel='next nofollow' data-action='changeView'>
<span class='ipsPager_type ipsType_normal'>{$date->nextMonth('monthName')}</span>
<span class='ipsPager_title ipsType_light'>{$date->nextMonth('year')}</span>
</a>
</div>
</div>
<table class='cCalendar ipsBox' data-controller='calendar.front.browse.monthView'>
<tr>
{{foreach \IPS\calendar\Date::getDayNames() as $day }}
<th class='ipsPad_half ipsAreaBackground_dark' data-short='{$day['abbreviated']}' data-veryShort='{$day['letter']}'><span>{$day['full']}</span></th>
{{endforeach}}
</tr>
<tr>
{{for $i=0; $i < $date->firstDayOfMonth('wday'); $i++ }}
<td class='cCalendar_nonDate'> </td>
{{endfor}}
{{for $j=$i+$date->lastDayOfMonth('mday'), $k=1; $i < $j; $i++, $k++ }}
{{$k = str_pad( $k, 2, '0', STR_PAD_LEFT );}}
{{if $i%7 == 0}}
</tr>
<tr>
{{endif}}
<td class='cCalendar_date{{if $k == 1}} cCalendar_firstDay{{endif}}{{if $today->mysqlDatetime( FALSE ) == $date->year . '-' . $date->mon . '-' . $k }} cCalendar_today{{endif}}{{if isset( $events[ $date->year . '-' . $date->mon . '-' . $k ] )}} cCalendar_hasEvents{{endif}}'>
<div>
<a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&id={$thisCalendar->_id}&y={$date->year}&m={$date->mon}&d={$k}&view=day" seoTemplate="calendar_calday" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&y={$date->year}&m={$date->mon}&d={$k}&view=day" seoTemplate="calendar_day"}{{endif}}' class='ipsType_blendLinks cCalendar_dayNumber'>{$k}</a>
{{if ( $thisCalendar AND $thisCalendar->can('add') ) OR ( !$thisCalendar AND \IPS\calendar\Calendar::canOnAny('add') )}}
<a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=submit&do=submit&id={$thisCalendar->_id}&y={$date->year}&m={$date->mon}&d={$k}&view=day" seoTemplate="calendar_submit"}{{else}}{url="app=calendar&module=calendar&controller=submit&y={$date->year}&m={$date->mon}&d={$k}&view=day" seoTemplate="calendar_submit"}{{endif}}' data-ipsTooltip title='{lang="add_event"}' class='ipsButton ipsButton_verySmall ipsButton_primary cCalendar_miniAddEvent'><i class='ipsType_small fa fa-plus'></i></a>
{{endif}}
{{if isset( $events[ $date->year . '-' . $date->mon . '-' . $k ] )}}
<ul class='cEvents_wrapper'>
{{if isset( $events[ $date->year . '-' . $date->mon . '-' . $k ]['ranged'] )}}
<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}'>
<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}}
</ul>
</li>
{{endif}}
{{if isset( $events[ $date->year . '-' . $date->mon . '-' . $k ]['single'] )}}
<li class='cEvents_single'>
<ul class='cEvents'>
{{foreach $events[ $date->year . '-' . $date->mon . '-' . $k ]['single'] as $event }}
<li class='cEvents_event cEvents_style{$event->calendar_id}' data-eventID='{$event->id}'>
<a href='{$event->url()}' data-ipsHover data-ipsHover-target='{$event->url('hovercard')->setQuerystring( 'sd', $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}}
</ul>
</li>
{{endif}}
</ul>
{{endif}}
{{if isset( $birthdays[ $date->mon . $k ] ) AND $birthdays[ $date->mon . $k ] }}
<p class='cCalendar_birthdays ipsType_light'><a class='ipsType_blendLinks' href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&id={$thisCalendar->_id}&y={$date->year}&m={$date->mon}&d={$k}" seoTemplate="calendar_calday" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&y={$date->year}&m={$date->mon}&d={$k}" seoTemplate="calendar_day"}{{endif}}'>{lang="birthdays_count" pluralize="$birthdays[ $date->mon . $k ]"}</a></p>
{{endif}}
</div>
</td>
{{endfor}}
{{for ; $i%7 != 0; $i++}}
<td class='cCalendar_nonDate'> </td>
{{endfor}}
</tr>
</table>]]></template>
<template template_group="browse" template_name="calendarStream" template_data="$calendars, $date, $featured, $events, $thisCalendar, $jump, $pagination" template_location="front" template_app="calendar"><![CDATA[
<div class='ipsGrid ipsGrid_collapsePhone ipsPager cCalendarNav ipsSpacer_bottom' data-ipsSticky data-ipsSticky-disableIn='phone'>
<div class='ipsGrid_span3 ipsType_left ipsPager_prev'>
<a href="{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=stream&id={$thisCalendar->_id}&y={$date->lastMonth('year')}&m={$date->lastMonth('mon')}" seoTemplate="calendar_calstream" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=stream&y={$date->lastMonth('year')}&m={$date->lastMonth('mon')}" seoTemplate="calendar_stream"}{{endif}}" title='{lang="cal_month_stream_title" sprintf="$date->lastMonth('monthName'), $date->lastMonth('year')"}' rel='prev nofollow' data-action='changeView'>
<span class='ipsPager_type ipsType_normal'>{$date->lastMonth('monthName')}</span>
<span class='ipsPager_title ipsType_light'>{$date->lastMonth('year')}</span>
</a>
</div>
<div class='ipsGrid_span6 ipsType_center ipsPad' data-role='calendarNav'>
<h1 class='ipsType_pageTitle ipsType_center'>{lang="cal_month_title" sprintf="$date->monthName, $date->year"}</h1>
<ul class='ipsButton_split ipsType_noBreak'>
<li><a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=month&id={$thisCalendar->_id}&y={$date->year}&m={$date->mon}" seoTemplate="calendar_calmonth" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=month&y={$date->year}&m={$date->mon}" seoTemplate="calendar_month"}{{endif}}' title='{lang="cal_month_title" sprintf="$date->monthName, $date->year"}' class='ipsButton ipsButton_light ipsButton_verySmall' data-action='changeView'>{lang="month"}</a></li>
<li><a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=week&id={$thisCalendar->_id}&w={$date->year}-{$date->mon}-{$date->mday}" seoTemplate="calendar_calweek" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=week&w={$date->year}-{$date->mon}-{$date->mday}" seoTemplate="calendar_week"}{{endif}}' title='{lang="cal_week_title" sprintf="$date->firstDayOfWeek('monthNameShort'), $date->firstDayOfWeek('mday'), $date->firstDayOfWeek('year'), $date->lastDayOfWeek('monthNameShort'), $date->lastDayOfWeek('mday'), $date->lastDayOfWeek('year')"}' class='ipsButton ipsButton_light ipsButton_verySmall' data-action='changeView'>{lang="week"}</a></li>
<li><a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=day&id={$thisCalendar->_id}&y={$date->year}&m={$date->mon}&d={$date->mday}" seoTemplate="calendar_calday" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=day&y={$date->year}&m={$date->mon}&d={$date->mday}" seoTemplate="calendar_day"}{{endif}}' title='{lang="cal_month_day" sprintf="$date->monthName, $date->mday, $date->year"}' class='ipsButton ipsButton_light ipsButton_verySmall' data-action='changeView'>{lang="day"}</a></li>
<li><a href='#' class='ipsButton ipsButton_primary ipsButton_verySmall' title='{lang="cal_month_stream_title" sprintf="$date->monthName, $date->year"}' data-action='changeView'><span class='ipsResponsive_hidePhone ipsResponsive_inline'>{lang="event_stream"}</span><span class='ipsResponsive_showPhone ipsResponsive_inline'>{lang="event_stream_short"}</span></a></li>
</ul>
</div>
<div class='ipsGrid_span3 ipsType_right ipsPager_next'>
<a href="{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=stream&id={$thisCalendar->_id}&y={$date->nextMonth('year')}&m={$date->nextMonth('mon')}" seoTemplate="calendar_calstream" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=stream&y={$date->nextMonth('year')}&m={$date->nextMonth('mon')}" seoTemplate="calendar_stream"}{{endif}}" title='{lang="cal_month_stream_title" sprintf="$date->nextMonth('monthName'), $date->nextMonth('year')"}' rel='next nofollow' data-action='changeView'>
<span class='ipsPager_type ipsType_normal'>{$date->nextMonth('monthName')}</span>
<span class='ipsPager_title ipsType_light'>{$date->nextMonth('year')}</span>
</a>
</div>
</div>
{{if $thisCalendar}}
{template="pagination" group="global" app="core" location="global" params="\IPS\Http\Url::internal( 'app=calendar&module=calendar&controller=view&view=stream&id=' . $thisCalendar->_id . '&y=' . $date->year . '&m=' . $date->mon, NULL, 'calendar_calstream', $thisCalendar->title_seo ), $pagination['pages'], $pagination['page'], $pagination['limit']"}
{{else}}
{template="pagination" group="global" app="core" location="global" params="\IPS\Http\Url::internal( 'app=calendar&module=calendar&controller=view&view=stream&y=' . $date->year . '&m=' . $date->mon, NULL, 'calendar_stream' ), $pagination['pages'], $pagination['page'], $pagination['limit']"}
{{endif}}
<br>
<section class='ipsBox ipsBox_transparent ipsAreaBackground_light ipsPad' id='calendarStream'>
{{if count($events) }}
<div class='ipsList_reset'>
{{foreach $events as $event}}
<div>
{template="eventStreamBlock" app="calendar" group="view" params="$event, $date, TRUE, array( 240, 185 ), TRUE"}
</div>
{{endforeach}}
</div>
{{else}}
<div class='ipsType_light ipsType_large'>{lang="no_events_month"}</div>
{{endif}}
</section>
<br>
{{if $thisCalendar}}
{template="pagination" group="global" app="core" location="global" params="\IPS\Http\Url::internal( 'app=calendar&module=calendar&controller=view&view=stream&id=' . $thisCalendar->_id . '&y=' . $date->year . '&m=' . $date->mon, NULL, 'calendar_calstream', $thisCalendar->title_seo ), $pagination['pages'], $pagination['page'], $pagination['limit']"}
{{else}}
{template="pagination" group="global" app="core" location="global" params="\IPS\Http\Url::internal( 'app=calendar&module=calendar&controller=view&view=stream&y=' . $date->year . '&m=' . $date->mon, NULL, 'calendar_stream' ), $pagination['pages'], $pagination['page'], $pagination['limit']"}
{{endif}}]]></template>
<template template_group="browse" template_name="calendarWeek" template_data="$calendars, $date, $featured, $birthdays, $events, $nextWeek, $lastWeek, $days, $today, $thisCalendar, $jump, $startDates=array()" template_location="front" template_app="calendar"><![CDATA[
<div class='ipsGrid ipsGrid_collapsePhone ipsPager cCalendarNav ipsSpacer_bottom' data-ipsSticky data-ipsSticky-disableIn='phone'>
<div class='ipsGrid_span3 ipsType_left ipsPager_prev'>
<a href="{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=week&id={$thisCalendar->_id}&w={$lastWeek->year}-{$lastWeek->mon}-{$lastWeek->mday}" seoTemplate="calendar_calweek" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=week&w={$lastWeek->year}-{$lastWeek->mon}-{$lastWeek->mday}" seoTemplate="calendar_week"}{{endif}}" title='{lang="cal_week_title" sprintf="$lastWeek->firstDayOfWeek('monthNameShort'), $lastWeek->firstDayOfWeek('mday'), $lastWeek->firstDayOfWeek('year'), $lastWeek->lastDayOfWeek('monthNameShort'), $lastWeek->lastDayOfWeek('mday'), $lastWeek->lastDayOfWeek('year')"}' rel='prev nofollow' data-action='changeView'>
<span class='ipsPager_type ipsType_normal'>{lang="previous_week"}</span>
<span class='ipsPager_title ipsType_light'>
<span class='ipsResponsive_inline ipsResponsive_hidePhone'>
{lang="cal_week_title" sprintf="$lastWeek->firstDayOfWeek('monthNameShort'), $lastWeek->firstDayOfWeek('mday'), $lastWeek->firstDayOfWeek('year'), $lastWeek->lastDayOfWeek('monthNameShort'), $lastWeek->lastDayOfWeek('mday'), $lastWeek->lastDayOfWeek('year')"}
</span>
<span class='ipsResponsive_inline ipsResponsive_showPhone'>
{lang="cal_week_title_wb" sprintf="$lastWeek->firstDayOfWeek('monthNameShort'), $lastWeek->firstDayOfWeek('mday'), $lastWeek->firstDayOfWeek('year')"}
</span>
</span>
</a>
</div>
<div class='ipsGrid_span6 ipsType_center ipsPad' data-role='calendarNav'>
<h1 class='ipsType_pageTitle ipsType_center'>{lang="cal_week_title" sprintf="$date->firstDayOfWeek('monthNameShort'), $date->firstDayOfWeek('mday'), $date->firstDayOfWeek('year'), $date->lastDayOfWeek('monthNameShort'), $date->lastDayOfWeek('mday'), $date->lastDayOfWeek('year')"}</h1>
<ul class='ipsButton_split ipsType_noBreak'>
<li><a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=month&id={$thisCalendar->_id}&y={$date->year}&m={$date->mon}" seoTemplate="calendar_calmonth" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=month&y={$date->year}&m={$date->mon}" seoTemplate="calendar_month"}{{endif}}' title='{lang="cal_month_title" sprintf="$date->monthName, $date->year"}' class='ipsButton ipsButton_light ipsButton_verySmall' data-action='changeView'>{lang="month"}</a></li>
<li><a href='#' class='ipsButton ipsButton_primary ipsButton_verySmall' title='{lang="cal_week_title" sprintf="$date->firstDayOfWeek('monthNameShort'), $date->firstDayOfWeek('mday'), $date->firstDayOfWeek('year'), $date->lastDayOfWeek('monthNameShort'), $date->lastDayOfWeek('mday'), $date->lastDayOfWeek('year')"}' data-action='changeView'>{lang="week"}</a></li>
{{if in_array( $today, $days )}}
<li><a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=day&id={$thisCalendar->_id}&y={$date->year}&m={$date->mon}&d={$today->mday}&view=day" seoTemplate="calendar_calday" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=day&y={$date->year}&m={$date->mon}&d={$today->mday}&view=day" seoTemplate="calendar_day"}{{endif}}' title='{lang="cal_month_day" sprintf="$date->monthName, $today->mday, $date->year"}' class='ipsButton ipsButton_light ipsButton_verySmall' data-action='changeView'>{lang="day"}</a></li>
{{else}}
<li><a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=day&id={$thisCalendar->_id}&y={$date->year}&m={$date->mon}&d=1&view=day" seoTemplate="calendar_calday" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=day&y={$date->year}&m={$date->mon}&d=1&view=day" seoTemplate="calendar_day"}{{endif}}' title='{lang="cal_month_day" sprintf="$date->monthName, $date->mday, $date->year"}' class='ipsButton ipsButton_light ipsButton_verySmall' data-action='changeView'>{lang="day"}</a></li>
{{endif}}
<li><a href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=stream&id={$thisCalendar->_id}&y={$date->year}&m={$date->mon}" seoTemplate="calendar_calstream" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=stream&y={$date->year}&m={$date->mon}" seoTemplate="calendar_stream"}{{endif}}' title='{lang="cal_month_stream_title" sprintf="$date->monthName, $date->year"}' class='ipsButton ipsButton_light ipsButton_verySmall' data-action='changeView'><span class='ipsResponsive_hidePhone ipsResponsive_inline'>{lang="event_stream"}</span><span class='ipsResponsive_showPhone ipsResponsive_inline'>{lang="event_stream_short"}</span></a></li>
</ul>
</div>
<div class='ipsGrid_span3 ipsType_right ipsPager_next'>
<a href="{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&view=week&id={$thisCalendar->_id}&w={$nextWeek->year}-{$nextWeek->mon}-{$nextWeek->mday}" seoTemplate="calendar_calweek" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&view=week&w={$nextWeek->year}-{$nextWeek->mon}-{$nextWeek->mday}" seoTemplate="calendar_week"}{{endif}}" title='{lang="cal_week_title" sprintf="$nextWeek->firstDayOfWeek('monthNameShort'), $nextWeek->firstDayOfWeek('mday'), $nextWeek->firstDayOfWeek('year'), $nextWeek->lastDayOfWeek('monthNameShort'), $nextWeek->lastDayOfWeek('mday'), $nextWeek->lastDayOfWeek('year')"}' rel='next nofollow' data-action='changeView'>
<span class='ipsPager_type ipsType_normal'>{lang="next_week"}</span>
<span class='ipsPager_title ipsType_light'>
<span class='ipsResponsive_inline ipsResponsive_hidePhone'>
{lang="cal_week_title" sprintf="$nextWeek->firstDayOfWeek('monthNameShort'), $nextWeek->firstDayOfWeek('mday'), $nextWeek->firstDayOfWeek('year'), $nextWeek->lastDayOfWeek('monthNameShort'), $nextWeek->lastDayOfWeek('mday'), $nextWeek->lastDayOfWeek('year')"}
</span>
<span class='ipsResponsive_inline ipsResponsive_showPhone'>
{lang="cal_week_title_wb" sprintf="$nextWeek->firstDayOfWeek('monthNameShort'), $nextWeek->firstDayOfWeek('mday'), $nextWeek->firstDayOfWeek('year')"}
</span>
</span>
</a>
</div>
</div>
<div>
<ul class='ipsList_reset cCalendarWeek'>
{{foreach $days as $day}}
<li class='ipsColumns ipsColumns_collapsePhone ipsBox'>
<div class='ipsColumn ipsColumn_wide cCalendarWeek_day {{if $today->year == $day->year AND $today->mon == $day->mon AND $today->mday == $day->mday}} cCalendar_today{{endif}}'>
<div class='ipsPad'>
<h2 class='ipsType_sectionHead'><strong><a class='ipsType_blendLinks' href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&id={$thisCalendar->_id}&y={$day->year}&m={$day->mon}&d={$day->mday}&view=day" seoTemplate="calendar_calday" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&y={$day->year}&m={$day->mon}&d={$day->mday}&view=day" seoTemplate="calendar_day"}{{endif}}'>{$day->dayName}</a></strong></h2>
<p class='ipsType_reset ipsType_light ipsType_uppercase'>{lang="cal_month_day" sprintf="$day->monthName, $day->mday, $day->year"}</p>
</div>
</div>
<div class='ipsColumn ipsColumn_fluid ipsAreaBackground_reset'>
<div class='ipsPad'>
{{if isset( $events[ $day->year . '-' . $day->mon . '-' . $day->mday ] )}}
<ul class='cEvents_wrapper'>
{{if isset( $events[ $day->year . '-' . $day->mon . '-' . $day->mday ]['ranged'] )}}
<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}}'>
<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}}
</ul>
</li>
{{endif}}
{{if isset( $events[ $day->year . '-' . $day->mon . '-' . $day->mday ]['single'] )}}
<li class='cEvents_single'>
<ul class='cEvents'>
{{foreach $events[ $day->year . '-' . $day->mon . '-' . $day->mday ]['single'] as $event }}
<li class='cEvents_event cEvents_style{$event->calendar_id}'>
<a href='{$event->url()}' data-ipsHover data-ipsHover-target='{$event->url('hovercard')->setQuerystring( 'sd', $day->year . '-' . $day->mon . '-' . $day->mday )}'>{$event->title}{{if $event->hidden() === 1}} <i class='fa fa-warning'></i>{{endif}}</a>
</li>
{{endforeach}}
</ul>
</li>
{{endif}}
</ul>
{{else}}
<span class='ipsType_light ipsType_medium'>{lang="no_events_today"}</span>
{{endif}}
{{if isset( $birthdays[ $day->mon . $day->mday ] ) AND $birthdays[ $day->mon . $day->mday ] }}
<p class='cCalendar_birthdays ipsType_light'><a class='ipsType_blendLinks' href='{{if $thisCalendar}}{url="app=calendar&module=calendar&controller=view&id={$thisCalendar->_id}&y={$day->year}&m={$day->mon}&d={$day->mday}&view=day" seoTemplate="calendar_calday" seoTitle="$thisCalendar->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=view&y={$day->year}&m={$day->mon}&d={$day->mday}&view=day" seoTemplate="calendar_day"}{{endif}}'>{lang="birthdays_today" pluralize="$birthdays[ $day->mon . $day->mday ]"}</a></p>
{{endif}}
</div>
</div>
</li>
{{endforeach}}
</ul>
</div>]]></template>
<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 ipsBox_alt'>
{$calendar|raw}
</div>
<ul class="ipsToolList ipsToolList_horizontal ipsResponsive_showPhone ipsResponsive_block ipsClearfix ipsSpacer_top">
{{if ( $thisCalendar AND $thisCalendar->can('add') ) OR ( !$thisCalendar AND \IPS\calendar\Calendar::canOnAny('add') )}}
{{if $thisCalendar}}
<li><a href='{url="app=calendar&module=calendar&controller=submit&calendar={$thisCalendar->id}" seoTemplate="calendar_submit"}' class='ipsButton ipsButton_important ipsButton_normal ipsButton_fullWidth'>{lang="create_event"}</a></li>
{{else}}
<li><a href='{url="app=calendar&module=calendar&controller=submit" seoTemplate="calendar_submit"}' class='ipsButton ipsButton_important ipsButton_normal ipsButton_fullWidth'>{lang="create_event"}</a></li>
{{endif}}
<li><a href='#elCalendarJump' data-ipsMenu data-ipsMenu-menuID='elCalendarJump' data-ipsMenu-closeOnClick='false' class='ipsButton ipsButton_light ipsButton_fullWidth ipsButton_normal'>{lang="jump_to"} <i class='fa fa-caret-down'></i></a></li>
{{endif}}
</ul>
{template="calendarFeatured" group="browse" app="calendar" params="$featured, $date"}]]></template>
<template template_group="browse" template_name="dateJump" template_data="$id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar, $form=NULL" template_location="front" template_app="calendar"><![CDATA[<div id='elCalendarJump' class='ipsMenu ipsMenu_medium ipsHide'>
<form accept-charset='utf-8' class="ipsPad ipsForm ipsForm_vertical" method='post' action='{$action}' data-ipsForm>
<input type="hidden" name="{$id}_submitted" value="1">
{{foreach $hiddenValues as $k => $v}}
<input type="hidden" name="{$k}" value="{$v}">
{{endforeach}}
<ul class='ipsList_reset'>
{{foreach $elements as $collection}}
{{foreach $collection as $input}}
{{if $input instanceof \IPS\Helpers\Form\Date}}
<li class='ipsFieldRow ipsFieldRow_fullWidth'>
<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}
{{endif}}
{{endforeach}}
{{endforeach}}
<li class='ipsFieldRow'>
<input type="submit" class="ipsButton ipsButton_primary ipsButton_fullWidth ipsButton_small" value="{lang="calendar_jump"}">
</li>
<li class='ipsFieldRow'>
<input type="submit" class="ipsButton ipsButton_light ipsButton_fullWidth ipsButton_small" value="{lang="calendar_jump_today"}" name="goto">
</li>
</ul>
</form>
</div>]]></template>
<template template_group="global" template_name="commentTableHeader" template_data="$comment, $event" template_location="front" template_app="calendar"><![CDATA[
<div class='ipsDataList ipsAreaBackground_light ipsClearfix'>
<div class='ipsDataItem'>
<div class='ipsDataItem_generic ipsDataItem_size2'>
{{$date = ( $event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' ) == NULL ) ? $event->lastOccurrence() : $event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' );}}
<time datetime='{$date->mysqlDatetime()}' class='ipsCalendarDate ipsCalendarDate_large'>
<span class='ipsCalendarDate_month'>{$date->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$date->mday}</span>
</time>
</div>
<div class='ipsDataItem_main'>
<h3 class='ipsType_sectionHead'><a href='{$event->url()}'title='{lang="view_this_event" sprintf="$event->title"}'>{$event->title}</a></h3>
<p class='ipsType_normal ipsType_light ipsType_blendLinks ipsType_reset'>{lang="in"} <a href='{$event->container()->url()}'>{$event->container()->_title}</a></p>
{{if $event->container()->allow_reviews}}
{template="rating" group="global" location="front" app="core" params="'large', $event->rating, \IPS\Settings::i()->reviews_rating_out_of"}
{{endif}}
<span class='ipsType_medium ipsType_reset'>{{if $event->container()->allow_comments}} {{if !$event->comments}}<span class='ipsType_light'>{{endif}}<i class='fa fa-comment'></i> {$event->comments}{{endif}}{{if !$event->comments}}</span>{{endif}}</span>
</div>
</div>
</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'), $url"}
{{if $item->map( 500, 100 )}}
<div class='ipsRichEmbed_masthead ipsType_center'>
<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='{$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_double ipsClearfix'>
<div class='ipsPhotoPanel ipsPhotoPanel_medium'>
<span class='cCalendarEmbed_calendar ipsPos_left ipsType_blendLinks'>
<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='{$url}'>{$item->mapped('title')}</a>
</p>
<div class='ipsType_reset ipsType_medium'>
{{if $item->_end_date}}
<dl class='cCalendarEmbed_dates ipsSpacer_top ipsSpacer_half'>
<dt class='ipsType_light'>{lang="from"}</dt>
<dd>
<time content='{expression="$item->_start_date->format( 'Y-m-d' )"}'>
{$item->_start_date->dayName} {$item->_start_date->mday} {$item->_start_date->monthName} {$item->_start_date->year}{{if !$item->all_day}}, {$item->_start_date->localeTime( FALSE )}{{endif}}
</time>
</dd>
<dt class='ipsType_light'>{lang="until"}</dt>
<dd>
<time content='{expression="$item->_end_date->format( 'Y-m-d' )"}'>
{{$sameDay = !( ($item->_start_date->mday != $item->_end_date->mday) or ($item->_start_date->mon != $item->_end_date->mon) or ($item->_start_date->year != $item->_end_date->year) );}}
{{if !$sameDay}}{$item->_end_date->dayName} {$item->_end_date->mday} {$item->_end_date->monthName} {$item->_end_date->year}{{endif}}{{if !$item->all_day}}{{if !$sameDay}}, {{endif}}{$item->_end_date->localeTime( FALSE )}{{endif}}
</time>
</dd>
</dl>
{{else}}
<p class='ipsSpacer_top ipsSpacer_half'>
<time content='{expression="$item->_start_date->format( 'Y-m-d' )"}'>
{$item->_start_date->dayName} {$item->_start_date->mday} {$item->_start_date->monthName} {$item->_start_date->year}{{if !$item->all_day}}, {$item->_start_date->localeTime( FALSE )}{{endif}}
</time>
</p>
{{endif}}
</div>
{{if $desc = $item->truncated(TRUE)}}
<div class='ipsType_richText ipsType_medium ipsSpacer_top ipsSpacer_half' data-truncate='1'>
{$desc|raw}
</div>
{{endif}}
</div>
{{if $item->rsvp}}
{{$attendees = $item->attendees();}}
<hr class='ipsHr'>
<ul class='ipsList_inline ipsSpacer_bottom ipsSpacer_half ipsType_normal'>
{{if isset( $attendees[1][ \IPS\Member::loggedIn()->member_id ] )}}
<li class='ipsType_success'>
<i class='fa fa-check-circle'></i>
{lang="you_are_going"}
</li>
{{elseif isset( $attendees[0][ \IPS\Member::loggedIn()->member_id ] )}}
<li class='ipsType_negative'>
<i class='fa fa-times-circle'></i>
{lang="you_arent_going"}
</li>
{{elseif $item->can('rsvp') && !( $item->rsvp_limit > 0 AND count($attendees[1]) >= $item->rsvp_limit )}}
<li>
<ul class='ipsList_inline ipsList_noSpacing'>
<li>
<a href='{$item->url('rsvp')->setQueryString( 'action', 'yes' )->csrf()}' class='ipsButton ipsButton_important ipsButton_fullWidth ipsButton_verySmall'>{lang="rsvp_attend_event"}</a>
</li>
{{if $item->rsvp_limit == -1}}
<li>
<a href='{$item->url('rsvp')->setQueryString( 'action', 'maybe' )->csrf()}' class='ipsButton ipsButton_link ipsButton_verySmall'>{lang="rsvp_maybe_event"}</a>
</li>
{{endif}}
<li>
<a href='{$item->url('rsvp')->setQueryString( 'action', 'no' )->csrf()}' class='ipsButton ipsButton_link ipsButton_verySmall'>{lang="rsvp_notgoing_event"}</a>
</li>
</ul>
</li>
{{endif}}
<li class='{{if !count($attendees[1])}}ipsType_light{{endif}}'>
<i class='fa fa-user'></i> {lang="x_users_going" pluralize="count($attendees[1])"}
</li>
</ul>
{{endif}}
</div>
{template="embedItemStats" group="embed" app="core" params="$item"}
</div>
</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'), $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='{$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='{$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'>
<div class='ipsPhotoPanel ipsPhotoPanel_small'>
<span class='cCalendarEmbed_calendar ipsPos_left ipsType_blendLinks'>
<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>
{template="embedOriginalItem" group="embed" app="core" params="$item, FALSE, \IPS\Theme::i()->getTemplate( 'global', 'calendar' )->embedEventItemSnippet( $item )"}
</div>
</div>
</div>
</div>
</div>
<div class='ipsType_richText ipsType_medium' data-truncate='3'>
{$comment->truncated(TRUE)|raw}
</div>
{{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'"}
</li>
</ul>
{{endif}}
</div>
</div>]]></template>
<template template_group="global" template_name="embedEventItemSnippet" template_data="$item" template_location="front" template_app="calendar"><![CDATA[
{{if $item->_end_date}}
<dl class='cCalendarEmbed_dates ipsSpacer_top ipsSpacer_half'>
<dt class='ipsType_light'>{lang="from"}</dt>
<dd>
<time content='{expression="$item->_start_date->format( 'Y-m-d' )"}'>
{$item->_start_date->dayName} {$item->_start_date->mday} {$item->_start_date->monthName} {$item->_start_date->year}{{if !$item->all_day}}, {$item->_start_date->localeTime( FALSE )}{{endif}}
</time>
</dd>
<dt class='ipsType_light'>{lang="until"}</dt>
<dd>
<time content='{expression="$item->_end_date->format( 'Y-m-d' )"}'>
{{$sameDay = !( ($item->_start_date->mday != $item->_end_date->mday) or ($item->_start_date->mon != $item->_end_date->mon) or ($item->_start_date->year != $item->_end_date->year) );}}
{{if !$sameDay}}{$item->_end_date->dayName} {$item->_end_date->mday} {$item->_end_date->monthName} {$item->_end_date->year}{{endif}}{{if !$item->all_day}}{{if !$sameDay}}, {{endif}}{$item->_end_date->localeTime( FALSE )}{{endif}}
</time>
</dd>
</dl>
{{else}}
<p class='ipsSpacer_top ipsSpacer_half'>
<time content='{expression="$item->_start_date->format( 'Y-m-d' )"}'>
{$item->_start_date->dayName} {$item->_start_date->mday} {$item->_start_date->monthName} {$item->_start_date->year}{{if !$item->all_day}}, {$item->_start_date->localeTime( FALSE )}{{endif}}
</time>
</p>
{{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'), $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='{$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='{$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'>
<div class='ipsPhotoPanel ipsPhotoPanel_small'>
<span class='cCalendarEmbed_calendar ipsPos_left ipsType_blendLinks'>
<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>
{template="embedOriginalItem" group="embed" app="core" params="$item, FALSE, \IPS\Theme::i()->getTemplate( 'global', 'calendar' )->embedEventItemSnippet( $item )"}
</div>
</div>
</div>
</div>
</div>
{template="rating" app="core" params="'veryLarge', $comment->mapped('rating')" group="global"}
{{if $comment->mapped('votes_total')}}
<p class='ipsType_reset ipsType_medium'>{$comment->helpfulLine()|raw}</p>
{{endif}}
<hr class='ipsHr'>
<div class='ipsType_richText ipsType_medium ipsSpacer_top ipsSpacer_half' data-truncate='3'>
{$comment->truncated(TRUE)|raw}
</div>
{{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'"}
</li>
</ul>
{{endif}}
</div>
</div>]]></template>
<template template_group="global" template_name="manageFollowRow" template_data="$table, $headers, $rows, $includeFirstCommentInCommentCount=TRUE" template_location="front" template_app="calendar"><![CDATA[{{if count( $rows )}}
{{foreach $rows as $row}}
{{$idField = $row::$databaseColumnId;}}
<li class="ipsDataItem ipsDataItem_responsivePhoto {{if $row->unread()}}ipsDataItem_unread{{endif}} {{if method_exists( $row, 'tableClass' ) && $row->tableClass()}}ipsDataItem_{$row->tableClass()}{{endif}} {{if $row->hidden()}}ipsModerated{{endif}}" data-controller='core.front.system.manageFollowed' data-followID='{$row->_followData['follow_area']}-{$row->_followData['follow_rel_id']}'>
<div class='ipsDataItem_generic ipsDataItem_size2 ipsDataItem_imageColumn'>
{{if $row->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )}}
<time datetime='{$row->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate ipsCalendarDate_large'>
<span class='ipsCalendarDate_month'>{$row->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$row->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->mday}</span>
</time>
{{else}}
<time datetime='{$row->lastOccurrence( 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate ipsCalendarDate_large'>
<span class='ipsCalendarDate_month'>{$row->lastOccurrence( 'startDate' )->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$row->lastOccurrence( 'startDate' )->mday}</span>
</time>
{{endif}}
</div>
<div class='ipsDataItem_main ipsPos_middle'>
<h4 class='ipsDataItem_title ipsContained_container'>
{{if $row->mapped('locked')}}
<i class="fa fa-lock"></i>
{{endif}}
{{if $row->mapped('pinned') || $row->mapped('featured') || $row->hidden() === -1 || $row->hidden() === 1}}
<span>
{{if $row->hidden() === -1}}
<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$row->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span>
{{elseif $row->hidden() === 1}}
<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span>
{{endif}}
{{if $row->mapped('pinned')}}
<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span>
{{endif}}
{{if $row->mapped('featured')}}
<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span>
{{endif}}
</span>
{{endif}}
{{if $row->prefix()}}
<span>{template="prefix" group="global" app="core" params="$row->prefix( TRUE ), $row->prefix()"}</span>
{{endif}}
<span class='ipsType_break ipsContained'>
<a href='{$row->url()}'>
{{if $row->mapped('title')}}{$row->mapped('title')}{{else}}<em class="ipsType_light">{lang="content_deleted"}</em>{{endif}}
</a>
</span>
</h4>
<div class='ipsDataItem_meta ipsType_light ipsType_blendLinks' data-ipsTruncate data-ipsTruncate-size='2 lines' data-ipsTruncate-type='remove'>
{{if method_exists( $row, 'tableDescription' )}}
{$row->tableDescription()|raw}
{{else}}
{lang="byline" htmlsprintf="$row->author()->link( $row->warningRef() )"}{datetime="$row->__get( $row::$databaseColumnMap['date'] )"}
{lang="in"} <a href="{$row->container()->url()}">{$row->container()->_title}</a>
{{endif}}
</div>
</div>
<div class='ipsDataItem_generic ipsDataItem_size1 ipsType_center ipsType_large cFollowedContent_anon'>
<span class='ipsBadge ipsBadge_icon ipsBadge_new {{if !$row->_followData['follow_is_anon']}}ipsHide{{endif}}' data-role='followAnonymous' data-ipsTooltip title='{lang="follow_is_anon"}'><i class='fa fa-eye-slash'></i></span>
</div>
<div class='ipsDataItem_generic ipsDataItem_size6 cFollowedContent_info'>
<ul class='ipsList_reset'>
<li title='{lang="follow_when"}' data-role='followDate'><i class='fa fa-clock-o'></i> {datetime="$row->_followData['follow_added']"}</li>
<li title='{lang="follow_how"}' data-role='followFrequency'>
{{if $row->_followData['follow_notify_freq'] == 'none'}}
<i class='fa fa-bell-slash-o'></i>
{{else}}
<i class='fa fa-bell'></i>
{{endif}} {lang="follow_freq_{$row->_followData['follow_notify_freq']}"}
</li>
</ul>
</div>
<div class='ipsDataItem_generic ipsDataItem_size6 ipsType_center cFollowedContent_manage'>
{template="manageFollow" group="system" app="core" params="$row->_followData['follow_app'], $row->_followData['follow_area'], $row->_followData['follow_rel_id']"}
</div>
{{if $table->canModerate()}}
<div class='ipsDataItem_modCheck'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$row->$idField}]" data-actions="{expression="implode( ' ', $table->multimodActions( $row ) )"}" data-state='{{if $row->tableStates()}}{$row->tableStates()}{{endif}}'>
<span></span>
</span>
</div>
{{endif}}
</li>
{{endforeach}}
{{endif}}
]]></template>
<template template_group="global" template_name="rows" template_data="$table, $headers, $rows" template_location="front" template_app="calendar"><![CDATA[{{if count( $rows )}}
{{foreach $rows as $row}}
<li class="ipsDataItem {{if method_exists( $row, 'tableClass' ) && $row->tableClass()}}ipsDataItem_{$row->tableClass()}{{endif}} {{if $row->hidden()}}ipsModerated{{endif}}">
<div class='ipsDataItem_generic ipsDataItem_size3 ipsPos_top'>
{{if $row->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )}}
<time datetime='{$row->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate ipsCalendarDate_large'>
<span class='ipsCalendarDate_month'>{$row->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$row->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->mday}</span>
</time>
{{else}}
<time datetime='{$row->lastOccurrence( 'startDate' )->mysqlDatetime()}' class='ipsCalendarDate ipsCalendarDate_large'>
<span class='ipsCalendarDate_month'>{$row->lastOccurrence( 'startDate' )->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$row->lastOccurrence( 'startDate' )->mday}</span>
</time>
{{endif}}
</div>
<div class='ipsDataItem_main'>
<h4 class='ipsDataItem_title ipsType_sectionHead ipsContained_container'>
{{if $row->mapped('locked')}}
<i class="fa fa-lock"></i>
{{endif}}
{{if $row->mapped('pinned') || $row->mapped('featured') || $row->hidden() === -1 || $row->hidden() === 1}}
{{if $row->hidden() === -1}}
<span class="ipsBadge ipsBadge_small ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{$row->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span>
{{elseif $row->hidden() === 1}}
<span class="ipsBadge ipsBadge_small ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span>
{{endif}}
{{if $row->mapped('pinned')}}
<span class="ipsBadge ipsBadge_small ipsBadge_icon ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span>
{{endif}}
{{if $row->mapped('featured')}}
<span class="ipsBadge ipsBadge_small ipsBadge_icon ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span>
{{endif}}
{{endif}}
{{if $row->prefix()}}
<span>{template="prefix" group="global" app="core" params="$row->prefix( TRUE ), $row->prefix()"}</span>
{{endif}}
<span class='ipsType_break ipsContained'>
<a href='{$row->url()}' class='ipsTruncate ipsTruncate_line' {{if $row->tableHoverUrl}}data-ipsHover{{endif}}>
{{if $row->mapped('title')}}{$row->mapped('title')}{{else}}<em class="ipsType_light">{lang="content_deleted"}</em>{{endif}}
</a>
</span>
</h4>
<div class='ipsDataItem_meta ipsType_light ipsType_blendLinks'>
{$row->eventBlurb()|raw}
</div>
{{if $row->rsvp}}
{{if $attendees = $row->attendees() and isset( $attendees[1][ \IPS\Member::loggedIn()->member_id ] ) }}
<p class='ipsType_large ipsType_success'><strong><i class='fa fa-check-circle'></i> {lang="you_are_going_to_this"}</strong></p>
{{else}}
<p class='ipsType_large ipsType_light ipsFaded'><strong><i class='fa fa-times-circle'></i> {lang="you_are_not_going_to_this"}</strong></p>
{{endif}}
{{if count( $attendees[1] )}}
<ul class='ipsList_inline'>
<li class='ipsType_light'>{lang="rsvp_attend_event"}:</li>
{{foreach $attendees[1] as $idx => $attendee}}
{{if $idx < 6}}
<li>{template="userPhoto" group="global" app="core" params="$attendee, 'tiny', NULL, NULL, TRUE"}</li>
{{endif}}
{{endforeach}}
{{if count( $attendees[1] ) > 5}}
<li class='ipsType_light'>{lang="and_x_more" pluralize="count( $attendees[1] ) - 5"}</li>
{{endif}}
</ul>
{{endif}}
{{endif}}
{{if count( $row->tags() )}}
{template="tags" group="global" app="core" params="$row->tags(), true, true"}
{{endif}}
</div>
<div class='ipsDataItem_generic ipsDataItem_size8'>
{{if $row->container()->allow_reviews}}
{template="rating" group="global" location="front" app="core" params="'large', $row->averageReviewRating(), \IPS\Settings::i()->reviews_rating_out_of, $row->memberReviewRating()"} <span class='ipsType_normal ipsType_light'>({lang="num_reviews" pluralize="$row->reviews"})</span>
{{endif}}
{{if $row->container()->allow_comments}}
<p class='ipsType_normal'>
{{if $row->comments}}
<a href='{$row->url()->setQueryString( 'tab', 'comments' )->setFragment('replies')}'>
{{endif}}
<i class='fa fa-comment'></i> {lang="num_comments" pluralize="$row->comments"}
{{if $row->comments}}
</a>
{{endif}}
</p>
{{endif}}
</div>
{{if $table->canModerate()}}
<div class='ipsDataItem_modCheck'>
{{$idField = $row::$databaseColumnId;}}
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$row->$idField}]" data-actions="{expression="implode( ' ', $table->multimodActions( $row ) )"}" data-state='{{if $row->tableStates()}}{$row->tableStates()}{{endif}}'>
<span></span>
</span>
</div>
{{endif}}
</li>
{{endforeach}}
{{endif}}]]></template>
<template template_group="global" template_name="searchResultCommentSnippet" template_data="$indexData, $nextOccurance, $startDate, $endDate, $allDay, $reviewRating, $condensed" template_location="front" template_app="calendar"><![CDATA[{{if $condensed}}
<time datetime='{$nextOccurance->mysqlDatetime()}' class='ipsCalendarDate ipsCalendarDate_small ipsPos_left'>
<span class='ipsCalendarDate_month'>{$nextOccurance->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$nextOccurance->mday}</span>
</time>
{{else}}
<div class='ipsColumns ipsColumns_collapsePhone ipsColumns_noSpacing'>
<div class='ipsColumn ipsColumn_narrow'>
<time datetime='{$nextOccurance->mysqlDatetime()}' class='ipsCalendarDate ipsCalendarDate_large ipsPos_center'>
<span class='ipsCalendarDate_month'>{$nextOccurance->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$nextOccurance->mday}</span>
</time>
</div>
<div class='ipsColumn ipsColumn_fluid'>
<div class='ipsStream_comment ipsPad'>
<p class='ipsType_reset ipsType_normal'>
<strong class='ipsType_normal'>
<time content='{expression="$startDate->format( 'Y-m-d' )"}'>
{$startDate->dayName} {$startDate->mday} {$startDate->monthName} {$startDate->year}{{if !$allDay}}, {$startDate->localeTime( FALSE )}{{endif}}
</time>
{{if $endDate}}
{lang="until_lc"}
{{$sameDay = !( ($startDate->mday != $endDate->mday) or ($startDate->mon != $endDate->mon) or ($startDate->year != $endDate->year) );}}
<time content='{expression="$endDate->format( 'Y-m-d' )"}'>
{{if !$sameDay}}{$endDate->dayName} {$endDate->mday} {$endDate->monthName} {$endDate->year}{{endif}}{{if !$allDay}}{{if !$sameDay}}, {{endif}}{$endDate->localeTime( FALSE )}{{endif}}
</time>
{{endif}}
</strong>
</p>
{{if $reviewRating !== NULL}}
{template="rating" app="core" params="'medium', $reviewRating" group="global"}
{{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}}>
{expression="\IPS\Content\Search\Result::preDisplay( $indexData['index_content'] )" raw="true"}
</div>
{{endif}}
</div>
</div>
</div>
{{endif}}]]></template>
<template template_group="global" template_name="searchResultEventSnippet" template_data="$indexData, $itemData, $nextOccurance, $startDate, $endDate, $allDay, $condensed" template_location="front" template_app="calendar"><![CDATA[{{if $condensed}}
<time datetime='{$nextOccurance->mysqlDatetime()}' class='ipsCalendarDate ipsCalendarDate_small ipsPos_left'>
<span class='ipsCalendarDate_month'>{$nextOccurance->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$nextOccurance->mday}</span>
</time>
{{else}}
<div class='ipsColumns ipsColumns_collapsePhone'>
<div class='ipsColumn ipsColumn_narrow'>
<time datetime='{$nextOccurance->mysqlDatetime()}' class='ipsCalendarDate ipsCalendarDate_large ipsPos_center'>
<span class='ipsCalendarDate_month'>{$nextOccurance->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$nextOccurance->mday}</span>
</time>
</div>
<div class='ipsColumn ipsColumn_fluid ipsStream_snippetInfo'>
<strong class='ipsType_normal'>
<time content='{expression="$startDate->format( 'Y-m-d' )"}'>
{$startDate->dayName} {$startDate->mday} {$startDate->monthName} {$startDate->year}{{if !$allDay}}, {$startDate->localeTime( FALSE )}{{endif}}
</time>
{{if $endDate}}
{lang="until_lc"}
{{$sameDay = !( ($startDate->mday != $endDate->mday) or ($startDate->mon != $endDate->mon) or ($startDate->year != $endDate->year) );}}
<time content='{expression="$endDate->format( 'Y-m-d' )"}'>
{{if !$sameDay}}{$endDate->dayName} {$endDate->mday} {$endDate->monthName} {$endDate->year}{{endif}}{{if !$allDay}}{{if !$sameDay}}, {{endif}}{$endDate->localeTime( FALSE )}{{endif}}
</time>
{{endif}}
</strong>
{{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}}>
{expression="\IPS\Content\Search\Result::preDisplay( $indexData['index_content'] )" raw="true"}
</div>
{{endif}}
</div>
</div>
{{endif}}]]></template>
<template template_group="livesearch" template_name="calendar" template_data="$calendar" template_location="admin" template_app="calendar"><![CDATA[<li class='ipsPad_half ipsClearfix' data-role='result'>
<a href='{url="app=calendar&module=calendars&controller=calendars&do=form&id="}{$calendar->id}' class='ipsPos_left'>{$calendar->_title}</a>
</li>
]]></template>
<template template_group="modcp" template_name="approvalQueueItem" template_data="$item, $ref, $container, $title" template_location="front" template_app="calendar"><![CDATA[<div id="elApprovePanel" class='ipsBox'>
<article class="ipsClearfix ipsClear">
<div class='ipsPad'>
<p class="ipsPos_right ipsPad_half">
<a href='{$item->url()}' class='ipsType_normal ipsType_light'>
<i class='fa fa-{$item::$icon}'></i> {lang="$item::$title"}
</a>
</p>
<div class="ipsPhotoPanel ipsPhotoPanel_small ipsClearfix">
{template="userPhoto" group="global" params="$item->author()"}
<div>
<a href="#user{$item->author()->member_id}_menu" id="user{$item->author()->member_id}" class="ipsType_sectionHead" data-ipsmenu="">{$item->author()->name} <i class="fa fa-caret-down"></i></a>
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsHide" id="user{$item->author()->member_id}_menu">
{{if \IPS\Member::loggedIn()->modPermission('mod_can_warn')}}
<li class='ipsMenu_item'><a href='{url="app=core&module=system&controller=warnings&do=warn&id={$item->author()->member_id}&ref={$ref}" seoTemplate="warn_add" seoTitle="$item->author()->members_seo_name"}' data-ipsDialog data-ipsDialog-title="{lang="warn_member" sprintf="$item->author()->name"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="warning_issued"}" data-role="warnUserDialog">{lang="warn_user"}</a></li>
{{endif}}
{{if $item->author()->member_id != \IPS\Member::loggedIn()->member_id}}
{{if $item->author()->members_bitoptions['bw_is_spammer']}}
<li class='ipsMenu_item' data-ipsMenuValue='spamFlagButton'><a href='{url="app=core&module=system&controller=moderation&do=flagAsSpammer&id={$item->author()->member_id}&s=0" seoTemplate="flag_as_spammer" seoTitle="$item->author()->members_seo_name" csrf="true"}' data-confirm data-confirmSubMessage="{lang="spam_unflag_confirm"}">{lang="spam_unflag"}</a></li>
{{else}}
<li class='ipsMenu_item' data-ipsMenuValue='spamFlagButton'><a href='{url="app=core&module=system&controller=moderation&do=flagAsSpammer&id={$item->author()->member_id}&s=1" seoTemplate="flag_as_spammer" seoTitle="$item->author()->members_seo_name" csrf="true"}' data-confirm>{lang="spam_flag"}</a></li>
{{endif}}
{{endif}}
<li class="ipsMenu_item"><a href='{url="app=core&module=messaging&controller=messenger&do=compose&to={$item->author()->member_id}" seoTemplate="messenger_compose"}' data-ipsDialog data-ipsDialog-title='{lang="compose_new"}' data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="message_sent"}">{lang="message_send"}</a></li>
</ul>
{{if $container}}
<p class='ipsType_reset'>{lang="posted_in_container"} <a href="{$container->url()}">{$container->_title}</a></p>
{{endif}}
<p class="ipsType_light ipsType_reset">{lang="date_replied" htmlsprintf="\IPS\DateTime::ts( $item->mapped('date') )->html(FALSE)"}</p>
</p>
<p class='ipsType_normal ipsType_reset'>
<time content='{expression="$item->_start_date->format( 'Y-m-d' )"}'>
{{if $item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )}}
{$item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->calendarDate()}{{if !$item->all_day}}, {$item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->localeTime( FALSE )} {{endif}}
{{else}}
{$item->lastOccurrence( 'startDate' )->calendarDate()}{{if !$item->all_day}} {$item->lastOccurrence( 'startDate' )->localeTime( FALSE )} {{endif}}
{{endif}}
</time>
{{if $item->_end_date}}
<i class='fa fa-arrow-circle-right ipsType_large ipsType_light'></i>
<time content='{expression="$item->_end_date->format( 'Y-m-d' )"}'>
{{if $item->nextOccurrence( $item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' ) ?: \IPS\calendar\Date::getDate(), 'endDate' )}}
{$item->nextOccurrence( $item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' ) ?: \IPS\calendar\Date::getDate(), 'endDate' )->calendarDate()}{{if !$item->all_day}}, {$item->nextOccurrence( $item->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' ) ?: \IPS\calendar\Date::getDate(), 'endDate' )->localeTime( FALSE )}{{endif}}
{{else}}
{$item->lastOccurrence( 'endDate' )->calendarDate()}{{if !$item->all_day}} {$item->lastOccurrence( 'endDate' )->localeTime( FALSE )}{{endif}}
{{endif}}
</time>
{{endif}}
</p>
</div>
</div>
</div>
<div class='ipsAreaBackground_light ipsPad'>
<div class='ipsBox'>
<h2 class="ipsType_sectionTitle ipsType_blendLinks"><a href="{$item->url()}">{$title}</a></h2>
<div class="ipsType_richText ipsPost ipsType_normal ipsPad">
{$item->content()|raw}
</div>
</div>
</div>
</article>
</div>
]]></template>
<template template_group="submit" template_name="calendarSelector" template_data="$form" template_location="front" template_app="calendar"><![CDATA[<div class='ipsPad'>
{$form|raw}
</div>]]></template>
<template template_group="submit" template_name="datesForm" template_data="$name, $value, $timeZones, $error=''" template_location="front" template_app="calendar"><![CDATA[
<div data-controller='calendar.front.submit.dates' id='eventDateSelection' class='ipsAreaBackground ipsPad'>
{{if $error}}
<div class="ipsMessage ipsMessage_error">{lang="$error"}</div>
{{endif}}
<div class='ipsGrid ipsGrid_collapsePhone'>
<div class='ipsGrid_span5 ipsType_center ipsBox' id='elDateGrid_start'>
<h2 class='ipsType_sectionTitle ipsType_reset'>{lang="submit_event_start"}</h2>
<div class='ipsPad'>
<div class='cCalendarSubmit_field'>
<i class='fa fa-calendar'></i>
<input type="date" data-summaryControl name="event_dates[start_date]" value="{{if $value['start_date'] instanceof \IPS\DateTime}}{$value['start_date']->format('Y-m-d')}{{else}}{$value['start_date']}{{endif}}" data-preferredFormat="{{if $value['start_date'] instanceof \IPS\DateTime}}{$value['start_date']->fullYearLocaleDate()}{{else}}{$value['start_date']}{{endif}}" required aria-required='true' class="ipsField_short" data-control="date" placeholder='{expression="str_replace( array( 'YYYY', 'MM', 'DD' ), array( \IPS\Member::loggedIn()->language()->addToStack('_date_format_yyyy'), \IPS\Member::loggedIn()->language()->addToStack('_date_format_mm'), \IPS\Member::loggedIn()->language()->addToStack('_date_format_dd') ), str_replace( 'Y', 'YY', \IPS\Member::loggedIn()->language()->preferredDateFormat() ) )"}'>
</div>
<div class='cCalendarSubmit_field' id='start_time_wrap'>
<i class='fa fa-clock-o'></i>
<input name="event_dates[start_time]" id="start_time" type="time" size='12' class="ipsField_short" placeholder="{lang="_time_format_hhmm"}" step='60' min='00:00' value="{$value['start_time']}">
</div>
<br><br>
<ul class='ipsList_inline'>
<li>
<span class='ipsCustomInput'>
<input type="checkbox" role="checkbox" name="event_dates[single_day]" {{if isset($value['single_day']) AND $value['single_day']}}checked aria-checked='true'{{endif}} value="1" id="check_single_day">
<span></span>
</span> <label for='check_single_day'>{lang="event_single_day"}</label>
</li>
<li>
<span class='ipsCustomInput'>
<input type="checkbox" role="checkbox" name="event_dates[all_day]" {{if isset($value['all_day']) AND $value['all_day']}}checked aria-checked='true'{{endif}} value="1" id="check_all_day">
<span></span>
</span> <label for='check_all_day'>{lang="event_all_day"}</label>
</li>
</ul>
</div>
</div>
<div class='ipsGrid_span2 ipsType_center' id='elDateGrid_arrow'>
<strong><i class='fa fa-angle-right'></i></strong>
</div>
<div class='ipsGrid_span5 ipsType_center ipsBox' id='elDateGrid_end'>
<h2 class='ipsType_sectionTitle ipsType_reset'>{lang="submit_event_end"}</h2>
<div class='ipsPad'>
<div class='cCalendarSubmit_field' id='event_end_date_wrap'>
<i class='fa fa-calendar'></i>
<input type="date" name="event_dates[end_date]" value="{{if $value['end_date'] instanceof \IPS\DateTime}}{$value['end_date']->format('Y-m-d')}{{else}}{$value['end_date']}{{endif}}" data-preferredFormat="{{if $value['end_date'] instanceof \IPS\DateTime}}{$value['end_date']->fullYearLocaleDate()}{{else}}{{if $value['start_date'] instanceof \IPS\DateTime}}{$value['start_date']->fullYearLocaleDate()}{{else}}{$value['end_date']}{{endif}}{{endif}}" class="ipsField_short" data-control="date" id="event_end_date" placeholder='{expression="mb_strtoupper( str_replace( 'Y', 'YY', \IPS\Member::loggedIn()->language()->preferredDateFormat() ) )"}'>
</div>
<div class='cCalendarSubmit_field' id='end_time_wrap'>
<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="{{if isset( $value['end_time'] )}}{$value['end_time']}{{endif}}">
</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 !isset( $value['end_time'] ) OR !$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>
<br>
<div class='ipsBox ipsPad ipsType_center'>
<strong class='ipsType_light'>{lang="submit_event_summary"}</strong>
<p class='ipsType_large ipsType_reset'>
<span data-role='dateSummary'></span>
</p>
<p class='ipsType_normal' id='elRepeatRow_hidden'>
<span class='ipsCustomInput'>
<input type='checkbox' role='checkbox' name='event_dates[event_repeat]' value='1' id="elRepeatCb" {{if isset($value['event_repeat']) AND $value['event_repeat']}}checked aria-checked='true'{{endif}}>
<span></span>
</span> <label for='elRepeatCb'>{lang="submit_event_repeats_check"}</label>
</p>
<div id='elRepeatRow_shown' class='ipsJS_hide'>
<br>
<strong class='ipsType_light'>{lang="submit_event_repeats"}</strong>
<p class='ipsType_normal ipsType_reset'>
<span id='elRecurEdit' data-ipsMenu data-ipsMenu-closeOnClick='false' data-ipsMenu-appendTo="#eventDateSelection" class='ipsType_normal ipsCursor_pointer'><span data-role='recurringSummary'></span> <i class='fa fa-caret-down'></i></span> <a href='#' id='elRecurRemove' class='ipsType_small'>[{lang="submit_event_remove_repeat"}]</a>
</p>
</div>
</div>
<p class='ipsType_right ipsType_small ipsType_light ipsType_blendLinks' id='elTimezone'>
<a href='#elTimezoneSelector_menu' id='elTimezoneSelector' data-ipsMenu data-ipsMenu-closeOnClick="false" data-ipsMenu-appendTo="#eventDateSelection"><i class='fa fa-globe'></i> {lang="event_timezone"}: <em data-role="timezone_display"></em> <i class='fa fa-caret-down'></i></a>
</p>
<div id='elTimezoneSelector_menu' class='ipsHide ipsMenu'>
<div class='ipsPad'>
<select name="event_dates[event_timezone]" id="event_timezone">
{{foreach $timeZones as $k => $v}}
<option value='{$k}' {{if $value['event_timezone'] == $k }}selected{{endif}} data-abbreviated="{$v['short']}">{$v['text']}</option>
{{endforeach}}
</select>
</div>
<div class='ipsAreaBackground_light ipsClearfix ipsPad ipsType_center'>
<button class='ipsButton ipsButton_primary ipsButton_verySmall' role='button' data-action="updateTimezone">{lang="change"}</button>
</div>
</div>
<div id='elRecurEdit_menu' class='ipsHide ipsMenu ipsMenu_wide ipsPad'>
<ul>
<li class='ipsFieldRow'>
<label class='ipsFieldRow_label' for=''>{lang="event_rpm_repeats"}</label>
<div class='ipsFieldRow_content'>
{template="select" group="forms" app="core" location="front" params="'event_dates[event_repeats]', $value['event_repeats'], FALSE, array( 'daily' => \IPS\Member::loggedIn()->language()->addToStack('event_rpm_repeats_daily'), 'weekly' => \IPS\Member::loggedIn()->language()->addToStack('event_rpm_repeats_weekly'), 'monthly' => \IPS\Member::loggedIn()->language()->addToStack('event_rpm_repeats_monthly'), 'yearly' => \IPS\Member::loggedIn()->language()->addToStack('event_rpm_repeats_yearly') ), FALSE, '', FALSE, array( 'daily' => array( 'repeatFreqPer_day' ), 'weekly' => array( 'elRepeatOn', 'repeatFreqPer_week' ), 'monthly' => array( 'repeatFreqPer_month' ), 'yearly' => array( 'repeatFreqPer_year' ) ), 'event_repeats'"}
</div>
</li>
<li class='ipsFieldRow'>
<label class='ipsFieldRow_label' for=''>{lang="event_rpm_repeatevery"}</label>
<div class='ipsFieldRow_content'>
{template="select" group="forms" app="core" location="front" params="'event_dates[event_repeat_freq]', $value['event_repeat_freq'], FALSE, array_combine( range( 1, 30 ), range( 1, 30 ) ), FALSE, '', FALSE, array(), 'event_repeat_freq'"}
<span id='repeatFreqPer_day' {{if $value['event_repeats'] and $value['event_repeats'] != 'daily'}}style="display:none"{{endif}}>{lang="event_rpm_repeatevery_day"}</span>
<span id='repeatFreqPer_week' {{if $value['event_repeats'] != 'weekly'}}style="display:none"{{endif}}>{lang="event_rpm_repeatevery_week"}</span>
<span id='repeatFreqPer_month' {{if $value['event_repeats'] != 'monthly'}}style="display:none"{{endif}}>{lang="event_rpm_repeatevery_month"}</span>
<span id='repeatFreqPer_year' {{if $value['event_repeats'] != 'yearly'}}style="display:none"{{endif}}>{lang="event_rpm_repeatevery_year"}</span>
</div>
</li>
<li class='ipsFieldRow' id='elRepeatOn'>
<span class='ipsFieldRow_label'>{lang="event_rpm_repeaton"}</span>
<ul class='ipsFieldRow_content ipsList_reset'>
{{foreach \IPS\calendar\Date::getDayNames() as $day }}
<li class='ipsFieldRow_inlineCheckbox'>
<span class='ipsCustomInput'>
<input type="checkbox" role="checkbox" name="event_dates[repeat_freq_on_{$day['ical']}]" value="1" id="check_repeat_freq_on_{$day['ical']}" data-iCal='{$day['ical']}' {{if ( isset( $value['repeat_freq_on_' . $day['ical'] ] ) AND $value['repeat_freq_on_' . $day['ical'] ] )}}checked aria-checked='true'{{endif}}>
<span></span>
</span> <label for="check_repeat_freq_on_{$day['ical']}">{$day['abbreviated']}</label>
</li>
{{endforeach}}
</ul>
</li>
<li class='ipsFieldRow'>
<span class='ipsFieldRow_label' for=''>{lang="event_rpm_ends"}</span>
<ul class='ipsFieldRow_content ipsField_fieldList'>
<li>
<span class='ipsCustomInput'>
<input type='radio' name='event_dates[repeat_end]' id='event_repeat_end_never' value='never'{{if !$value['repeat_end_occurrences'] AND !$value['repeat_end_date']}} checked{{endif}}>
<span></span>
</span>
<div class='ipsField_fieldList_content'>
<label for="event_repeat_end_never">{lang="event_rpm_ends_never"}</label>
</div>
</li>
<li>
<span class='ipsCustomInput'>
<input type='radio' name='event_dates[repeat_end]' id='event_repeat_end_afterx' value='after'{{if $value['repeat_end_occurrences']}} checked{{endif}}>
<span></span>
</span>
<div class='ipsField_fieldList_content'>
<label for="event_repeat_end_afterx">{lang="event_rpm_ends_afterx"}</label> <input type='number' name='event_dates[repeat_end_occurrences]' class='cCalendar_shortInput' size='4' min='1' value='{$value['repeat_end_occurrences']}'> {lang="event_rpm_ends_occurrencesx"}
</div>
</li>
<li>
<span class='ipsCustomInput'>
<input type='radio' name='event_dates[repeat_end]' id='event_repeat_end_ondate' value='date'{{if $value['repeat_end_date']}} checked{{endif}}>
<span></span>
</span>
<div class='ipsField_fieldList_content'>
<label for="event_repeat_end_ondate">{lang="event_rpm_ends_date"}</label> <input type='date' name='event_dates[repeat_end_date]' class='cCalendar_shortInput' size='10' value='{{if $value['repeat_end_date'] instanceof \IPS\calendar\Date}}{$value['repeat_end_date']->mysqlDatetime( FALSE )}{{endif}}'>
</div>
</li>
</ul>
</li>
<li class='ipsFieldRow'>
<div class='ipsFieldRow_content ipsType_center'>
<button type='button' class='ipsButton ipsButton_light' role='button' data-action="updateRepeat">{lang="ok"}</button>
</div>
</li>
</ul>
</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 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( mt_rand() )"}">
{{endif}}
<div class='ipsBox'>
<ul class='ipsForm ipsForm_vertical'>
{{foreach $elements as $collection}}
{{foreach $collection as $inputName => $input}}
{{if $inputName == 'event_dates'}}
{$input->html()|raw}
{{endif}}
{{endforeach}}
{{endforeach}}
</ul>
<ul class='ipsForm ipsPad ipsForm_vertical'>
{{foreach $elements as $collection}}
{{foreach $collection as $inputName => $input}}
{{if $inputName != 'event_dates'}}
{$input|raw}
{{endif}}
{{endforeach}}
{{endforeach}}
</ul>
<br>
<div class='ipsAreaBackground ipsPad ipsType_center'>
<button type='submit' class='ipsButton ipsButton_large ipsButton_primary'>{lang="submit_event"}</button>
</div>
</div>
</form>]]></template>
<template template_group="submit" template_name="submitPage" template_data="$output, $pageHeader, $calendar=NULL" template_location="front" template_app="calendar"><![CDATA[
{{if $calendar and $club = $calendar->club()}}
{{if settings.clubs and settings.clubs_header == 'full'}}
{template="header" app="core" group="clubs" params="$club, $calendar"}
{{endif}}
{{endif}}
{template="pageHeader" group="global" app="core" params="$pageHeader"}
{$output|raw}]]></template>
<template template_group="venue" template_name="upcomingStream" template_data="$date, $events, $venue" template_location="front" template_app="calendar"><![CDATA[
<div class='ipsGrid ipsGrid_collapsePhone ipsPager cCalendarNav ipsSpacer_bottom' data-ipsSticky data-ipsSticky-disableIn='phone'>
<div class='ipsGrid_span3 ipsType_left ipsPager_prev'>
<a href="{{if $venue}}{url="app=calendar&module=calendar&controller=venue&id={$venue->_id}&y={$date->lastMonth('year')}&m={$date->lastMonth('mon')}" seoTemplate="calendar_venue" seoTitle="$venue->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=venue&y={$date->lastMonth('year')}&m={$date->lastMonth('mon')}" seoTemplate="calendar_venue"}{{endif}}" title='{lang="cal_month_stream_title" sprintf="$date->lastMonth('monthName'), $date->lastMonth('year')"}' rel='prev nofollow' data-action='changeView'>
<span class='ipsPager_type ipsType_normal'>{$date->lastMonth('monthName')}</span>
<span class='ipsPager_title ipsType_light'>{$date->lastMonth('year')}</span>
</a>
</div>
<div class='ipsGrid_span6 ipsType_center ipsPad' data-role='calendarNav'>
<h1 class='ipsType_pageTitle ipsType_center'>{lang="cal_month_title" sprintf="$date->monthName, $date->year"}</h1>
</div>
<div class='ipsGrid_span3 ipsType_right ipsPager_next'>
<a href="{{if $venue}}{url="app=calendar&module=calendar&controller=venue&id={$venue->_id}&y={$date->nextMonth('year')}&m={$date->nextMonth('mon')}" seoTemplate="calendar_venue" seoTitle="$venue->title_seo"}{{else}}{url="app=calendar&module=calendar&controller=venue&y={$date->nextMonth('year')}&m={$date->nextMonth('mon')}" seoTemplate="calendar_venue"}{{endif}}" title='{lang="cal_month_stream_title" sprintf="$date->nextMonth('monthName'), $date->nextMonth('year')"}' rel='next nofollow' data-action='changeView'>
<span class='ipsPager_type ipsType_normal'>{$date->nextMonth('monthName')}</span>
<span class='ipsPager_title ipsType_light'>{$date->nextMonth('year')}</span>
</a>
</div>
</div>
<section class='ipsAreaBackground ipsPad' id='venueStream'>
{{if count($events) }}
<div>
<div class='ipsList_reset'>
{{foreach $events as $event}}
<div>
{template="eventStreamBlock" app="calendar" group="view" params="$event, $date, TRUE, array( 240, 185 ), TRUE"}
</div>
{{endforeach}}
</div>
</div>
{{else}}
<div class='ipsType_light ipsType_large'>{lang="no_events_month"}</div>
{{endif}}
</section>]]></template>
<template template_group="venue" template_name="view" template_data="$venue, $upcoming=array(), $past=array(), $address=NULL" template_location="front" template_app="calendar"><![CDATA[<div>
<section>
<div class='ipsColumns ipsColumns_collapsePhone'>
<aside class='ipsColumn ipsColumn_wide'>
{$venue->map( 270, 270 )|raw}
<div class='ipsAreaBackground_light'>
{{if $address}}
<div class='ipsPad_half ipsAreaBackground'>
<h3 class='ipsType_minorHeading'>
<strong>{lang="venue_address"}</strong>
</h3>
{$address|raw}
</div>
{{endif}}
</div>
{{if \IPS\Member::loggedIn()->member_id}}
<ul class="ipsToolList ipsClearfix ipsSpacer_both">
<li class='ipsToolList_primaryAction'>
<a class="ipsButton ipsButton_medium ipsButton_important ipsButton_fullWidth" href="{url="app=calendar&module=calendar&controller=submit&venue={$venue->id}" seoTemplate="calendar_submit"}" data-ipsDialog data-ipsdialog-size="narrow">{lang="create_event"}</a>
</li>
</ul>
{{endif}}
</aside>
<div class='ipsColumn ipsColumn_fluid'>
<div class='ipsBox ipsPad ipsClearfix'>
{{if $venue->description}}
<h2 class='ipsType_sectionHead ipsSpacer_bottom'>{lang="venue_details"}</h2>
<div class='ipsType_medium'>
<div class='ipsClear ipsType_normal ipsType_richText ipsType_break'>
{$venue->description|raw}
</div>
</div>
<br>
{{endif}}
<h2 class='ipsType_sectionHead ipsSpacer_bottom'>{lang="venue_upcoming_events"}</h2>
<div data-controller='calendar.front.venue.main'>
{{if $upcoming}}
{$upcoming|raw}
{{else}}
{lang="venues_no_upcoming_events"}
{{endif}}
</div>
</div>
</div>
</div>
</section>
</div>]]></template>
<template template_group="view" template_name="attendees" template_data="$event" template_location="front" template_app="calendar"><![CDATA[<div class="ipsPrint">
<h1>{setting="board_name"}</h1>
<h2>{lang="event_attendees" sprintf="$event->title"}</h2>
<h4 class='date'>
{$event->_start_date->dayName} {$event->_start_date->mday} {$event->_start_date->monthName}, {$event->_start_date->year}{{if !$event->all_day}}, {$event->_start_date->localeTime( FALSE )}{{endif}}
{{if $event->_end_date}} - {$event->_end_date->dayName} {$event->_end_date->mday} {$event->_end_date->monthName}, {$event->_end_date->year} {{if !$event->all_day}}, {$event->_end_date->localeTime( FALSE )}{{endif}}{{endif}}
</h4>
<div></div>
<div></div>
<h3>{lang="event_rsvp_attendees"}</h3>
<ul>
{{if count( $event->attendees( \IPS\calendar\Event::RSVP_YES ) ) }}
{{foreach $event->attendees( \IPS\calendar\Event::RSVP_YES ) as $attendee }}
<li>{$attendee->name}</li>
{{endforeach}}
{{else}}
<li><em>{lang="no_rsvps_yet"}</em></li>
{{endif}}
</ul>
{{if count( $event->attendees( \IPS\calendar\Event::RSVP_MAYBE ) ) }}
<div></div>
<h3>{lang="rsvp_maybe_attendees"}</h3>
<ul>
{{foreach $event->attendees( \IPS\calendar\Event::RSVP_MAYBE ) as $attendee }}
<li>{$attendee->name}</li>
{{endforeach}}
</ul>
{{endif}}
{{if count( $event->attendees( \IPS\calendar\Event::RSVP_NO ) ) }}
<div></div>
<h3>{lang="rsvp_notgoing_attendees"}</h3>
<ul>
{{foreach $event->attendees( \IPS\calendar\Event::RSVP_NO ) as $attendee }}
<li>{$attendee->name}</li>
{{endforeach}}
</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="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}}
<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'>
{{$commentCount=0; $timeLastRead = $event->timeLastRead(); $lined = FALSE;}}
{{foreach $comments as $comment}}
{{if !$lined and $timeLastRead and $timeLastRead->getTimestamp() < $comment->mapped('date')}}
{{if $lined = TRUE and $commentCount}}
<hr class="ipsCommentUnreadSeperator">
{{endif}}
{{endif}}
{{$commentCount++;}}
{$comment->html()|raw}
{{endforeach}}
{template="commentMultimod" app="core" group="global" params="$event"}
</form>
{{else}}
<p class='ipsType_normal ipsType_light ipsType_center' data-role='noComments'>{lang="no_comments"}</p>
{{endif}}
</div>
{{if $event->commentPageCount() > 1}}
<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'] || !\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()}}
{{if $event->locked()}}
<p class='ipsType_reset ipsType_warning ipsComposeArea_warning ipsSpacer_bottom ipsSpacer_half'><i class='fa fa-info-circle'></i> {lang="event_locked_can_comment"}</p>
{{endif}}
{$event->commentForm()|raw}
{{else}}
{{if $event->locked()}}
{template="commentUnavailable" group="forms" location="front" app="core" params="'event_locked_cannot_comment'"}
{{elseif \IPS\Member::loggedIn()->restrict_post}}
{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>
{{endif}}
</div>]]></template>
<template template_group="view" template_name="coverPhotoOverlay" template_data="$event" template_location="front" template_app="calendar"><![CDATA[<div class='cEvent_details'>
<h1 class='ipsType_pageTitle ipsContained_container ipsTruncate ipsTruncate_line'>
{{if $event->prefix()}}
<span>{template="prefix" group="global" app="core" params="$event->prefix( TRUE ), $event->prefix()"}</span>
{{endif}}
{{if $event->locked()}}<span><i class='fa fa-lock'></i></span> {{endif}}
{{if $event->mapped('pinned') || $event->mapped('featured') || $event->hidden() === -1 || $event->hidden() === 1 || $event->hidden() === -2}}
<span>
{{if $event->hidden() === -1}}
<span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{$event->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span>
{{elseif $event->hidden() === -2}}
<span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{$event->deletedBlurb()}'><i class='fa fa-trash'></i></span></span>
{{elseif $event->hidden() === 1}}
<span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span>
{{endif}}
{{if $event->mapped('pinned')}}
<span class="ipsBadge ipsBadge_icon ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span>
{{endif}}
{{if $event->mapped('featured')}}
<span class="ipsBadge ipsBadge_icon ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span>
{{endif}}
</span>
{{endif}}
{{if $event->canEdit()}}
<span class='ipsType_break ipsContained' data-controller="core.front.core.moderation">
<span data-role="editableTitle" title='{lang="click_hold_edit"}' class='ipsPageHead_barText'>{$event->title}</span>
</span>
{{else}}
<span class='ipsType_break ipsContained'>
<span class='ipsPageHead_barText'>{$event->title}</span>
</span>
{{endif}}
</h1>
<p class='ipsType_normal ipsType_reset ipsPageHead_barText_small'>
<time content='{expression="$event->_start_date->format( 'Y-m-d' )"}'>
{{if $event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )}}
{$event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->calendarDate()}{{if !$event->all_day}}, {$event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->localeTime( FALSE )} {{endif}}
{{else}}
{$event->lastOccurrence( 'startDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'startDate' )->localeTime( FALSE )} {{endif}}
{{endif}}
</time>
{{if $event->_end_date}}
<i class='fa fa-arrow-circle-right ipsType_large ipsType_light'></i>
<time content='{expression="$event->_end_date->format( 'Y-m-d' )"}'>
{{$sameDay = !( ($event->_start_date->mday != $event->_end_date->mday) or ($event->_start_date->mon != $event->_end_date->mon) or ($event->_start_date->year != $event->_end_date->year) );}}
{{if $event->nextOccurrence( $event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' ) ?: \IPS\calendar\Date::getDate(), 'endDate' )}}
{{if !$sameDay}}
{$event->nextOccurrence( $event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' ) ?: \IPS\calendar\Date::getDate(), 'endDate' )->calendarDate()}
{{endif}}
{{if !$event->all_day}}
{{if !$sameDay}}, {{endif}}
{$event->nextOccurrence( $event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' ) ?: \IPS\calendar\Date::getDate(), 'endDate' )->localeTime( FALSE )}
{{endif}}
{{else}}
{$event->lastOccurrence( 'endDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'endDate' )->localeTime( FALSE )}{{endif}}
{{endif}}
</time>
{{endif}}
</p>
</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.global.core.coverPhoto' data-coverOffset='{$coverPhoto->offset}'>
{{if $coverPhoto->file}}
<div class='ipsCoverPhoto_container'>
<img src='{$coverPhoto->file->url}' class='ipsCoverPhoto_photo'>
</div>
{{endif}}
<div class='ipsColumns'>
<div class='ipsColumn ipsColumn_fixed ipsColumn_veryNarrow ipsPos_center'>
<img src='{$event->author()->photo}' class="ipsUserPhoto ipsUserPhoto_mini" alt=''>
</div>
<div class='ipsColumn ipsColumn_fluid'>
<h2 class='ipsType_pageTitle ipsType_blendLinks ipsPageHead_barText ipsPageHead_barText_small'><a href='{$event->url()}' title='{$event->title}'>{truncate="$event->title" length="18"}{{if $event->hidden() === 1}} <span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span>{{endif}}</a></h2>
</div>
</div>
</div>
<br>
<div class='ipsPad ipsClearfix'>
<h3 class='ipsType_reset'>
{{$startDate = $event->nextOccurrence( $date, 'startDate' );}}
{{if $revertToFirst AND $startDate AND $startDate->mon > $date->mon}}
{{$startDate = $event->nextOccurrence( \IPS\calendar\Date::getDate( $date->year, $date->mon, 1 ), 'startDate' );}}
{{endif}}
{{if $startDate}}
{{$nextEndDate = $event->nextOccurrence( $startDate ?: $date, 'endDate' );}}
{{$sameDay = ( $nextEndDate AND $startDate->calendarDate() == $nextEndDate->calendarDate() );}}
{$startDate->calendarDate()}{{if !$event->all_day}} {$startDate->localeTime( FALSE )} {{endif}}
{{if $event->_end_date AND $event->nextOccurrence( $startDate ?: $date, 'endDate' ) }}
<i class='fa fa-arrow-circle-right ipsType_large ipsType_light'></i>
{{if !$sameDay}}
{$event->nextOccurrence( $startDate ?: $date, 'endDate' )->calendarDate()}
{{endif}}
{{if !$event->all_day}}
{{if !$sameDay}} {{endif}}
{$event->nextOccurrence( $startDate ?: $date, 'endDate' )->localeTime( FALSE )}
{{endif}}
{{endif}}
{{else}}
{$event->lastOccurrence( 'startDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'startDate' )->localeTime( FALSE )} {{endif}}
{{if $event->_end_date AND $event->lastOccurrence( 'endDate' ) }}
<i class='fa fa-arrow-circle-right ipsType_large ipsType_light'></i> {$event->lastOccurrence( 'endDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'endDate' )->localeTime( FALSE )}{{endif}}
{{endif}}
{{endif}}
</h3>
{{if $event->recurring}}<p class='ipsType_reset ipsType_normal ipsType_light'>{$event->_recurring_text}</p><br>{{endif}}
<div class='ipsType_richText ipsType_medium' {{if ( \IPS\Request::i()->isAjax() or $truncate ) && $event->content}}data-ipsTruncate data-ipsTruncate-type='remove' data-ipsTruncate-size='5 lines'{{endif}}>
{{if $event->content}}
{{if \IPS\Request::i()->isAjax() or $truncate}}
{$event->truncated()|raw}
{{else}}
{$event->content|raw}
{{endif}}
{{endif}}
<p class='ipsType_medium ipsType_richText ipsSpacer_both'><a href='{$event->url()}'>{lang="event_details"}</a></p>
</div>
{{if $map !== FALSE AND $event->map( $map[0], $map[1] )}}
<div class='ipsAreaBackground_light cCalendarBlock_map ipsPad_half'>
{$event->map( $map[0], $map[1] )|raw}
</div>
{{endif}}
<br>
<a href='{$event->container()->url()}' class='ipsPos_right ipsResponsive_noFloat cEvents_event cEvents_eventSmall cEvents_style{$event->container()->id}'>{$event->container()->_title}</a>
{{if $event->container()->allow_comments}}<a href='{$event->url()->setQueryString( 'tab', 'comments' )}' class='ipsType_medium ipsType_noBreak'>{lang="event_comment_count" pluralize="$event->comments"}</a>{{endif}}
{{if $event->container()->allow_comments AND $event->container()->allow_reviews}}·{{endif}}
{{if $event->container()->allow_reviews}}<a href='{$event->url()->setQueryString( 'tab', 'reviews' )}' class='ipsType_medium ipsType_noBreak'>{lang="event_review_count" pluralize="$event->reviews"}</a>{{endif}}
{{if $event->rsvp }}
<hr class='ipsHr'>
<h4 class='ipsType_reset'><strong>{lang="event_rsvp_attendees_list" pluralize="$event->attendeeCount( \IPS\calendar\Event::RSVP_YES )"}</strong></h4>
{{if count( $event->attendees( \IPS\calendar\Event::RSVP_YES, 5 ) )}}
<ul class='ipsList_inline ipsList_noSpacing ipsSpacer_top ipsSpacer_half'>
{{foreach $event->attendees( \IPS\calendar\Event::RSVP_YES, 5 ) as $attendee}}
<li>{template="userPhoto" app="core" group="global" params="$attendee, 'tiny'"}</li>
{{endforeach}}
</ul>
{{endif}}
{{endif}}
</div>
</div>]]></template>
<template template_group="view" template_name="eventBlocks" template_data="$events" template_location="front" template_app="calendar"><![CDATA[
<ul class='ipsDataList ipsDataList_reducedSpacing'>
{{foreach $events as $event}}
<li class='ipsDataItem'>
<div class='ipsDataItem_icon cCalendar_date_overlay'>
{{$nextOccurrence = $event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' ) ?: $event->lastOccurrence();}}
<time datetime='{$nextOccurrence->mysqlDatetime()}' class='ipsCalendarDate'>
<span class='ipsCalendarDate_month'>{$nextOccurrence->monthNameShort}</span>
<span class='ipsCalendarDate_date'>{$nextOccurrence->mday}</span>
</time>
</div>
<div class='ipsDataItem_main'>
<a href="{$event->url()}" title='{lang="view_this_event" sprintf="$event->title"}'>{$event->title}</a><br>
<span class='ipsType_light ipsType_medium'>{lang="byline_nodate" sprintf="$event->author()->name"}</span><br>
</div>
</li>
{{endforeach}}
</ul>]]></template>
<template template_group="view" template_name="eventSidebar" template_data="$event, $attendees, $tabId='', $address=NULL" template_location="front" template_app="calendar"><![CDATA[
{{if $address || $event->map( 250, 150 )}}
<div class='ipsBox ipsPad_half ipsSpacer_bottom'>
{{if $event->map( 250, 150 )}}
<div class='ipsType_center ipsSpacer_bottom ipsSpacer_half'>
{$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>
</h3>
{$address|raw}
{{endif}}
</div>
{{endif}}
{{if $event->rsvp }}
<div class='ipsBox'>
{template="rsvpControls" group="view" params="$event, $attendees"}
<h3 class='ipsType_reset ipsType_sectionHead ipsHide'>{lang="event_rsvp_attendees"}</h3>
<div class='ipsTabs ipsTabs_small ipsTabs_stretch ipsClearfix' id='elAttendees{$tabId}' data-ipsTabBar data-ipsTabBar-contentArea='#elAttendees{$tabId}_content'>
<a href='#elAttendees{$tabId}' data-action='expandTabs'><i class='fa fa-caret-down'></i></a>
<ul role="tablist">
<li>
<a href='#ipsTabs_elAttendees{$tabId}_elGoing_panel' id='elGoing' class='ipsTabs_item ipsTabs_activeItem ipsType_center' role="tab" aria-selected='true'>{lang="rsvp_attendees"} {{if count($attendees[1])}}({expression="count($attendees[1])"}){{endif}}</a>
</li>
{{if $event->rsvp_limit == -1}}
<li>
<a href='#ipsTabs_elAttendees{$tabId}_elMaybe_panel' id='elMaybe' class='ipsTabs_item ipsType_center' 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_item ipsType_center' role="tab" aria-selected='false'>{lang="rsvp_notgoing_attendees"} {{if count($attendees[0])}}({expression="count($attendees[0])"}){{endif}}</a>
</li>
</ul>
</div>
<div id='elAttendees{$tabId}_content' class='ipsTabs_panels'>
<div id="ipsTabs_elAttendees{$tabId}_elGoing_panel" class='ipsTabs_panel ipsAreaBackground_reset ipsPad'>
{{if count($attendees[1]) }}
<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>
{{else}}
<p class='ipsType_light ipsPad ipsType_center'>
{lang="no_rsvps_yet"}
</p>
{{endif}}
</div>
{{if $event->rsvp_limit == -1}}
<div id="ipsTabs_elAttendees{$tabId}_elMaybe_panel" class='ipsTabs_panel ipsAreaBackground_reset ipsPad'>
{{if count($attendees[2]) }}
<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>
{{else}}
<p class='ipsType_light ipsPad ipsType_center'>{lang="no_maybe_rsvps_yet"}</p>
{{endif}}
</div>
{{endif}}
<div id="ipsTabs_elAttendees{$tabId}_elNotGoing_panel" class='ipsTabs_panel ipsAreaBackground_reset ipsPad'>
{{if count($attendees[0]) }}
<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>
{{else}}
<p class='ipsType_light ipsPad ipsType_center'>{lang="no_decline_rsvps_yet"}</p>
{{endif}}
</div>
{{if count($attendees[0]) OR count($attendees[1]) OR count($attendees[2]) }}
<div class='ipsPad ipsType_center'>
<a href='{$event->url('downloadRsvp')->csrf()}' class='ipsButton ipsButton_verySmall ipsButton_link ipsButton_fullWidth' rel="noindex, nofollow" ><i class='fa fa-arrow-circle-o-down'></i> {lang="rsvp_download"}</a>
</div>
{{endif}}
</div>
</div>
{{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.global.core.coverPhoto' data-coverOffset='{$coverPhoto->offset}'>
{{if $coverPhoto->file}}
<div class='ipsCoverPhoto_container'>
<img src='{$coverPhoto->file->url}' class='ipsCoverPhoto_photo'>
</div>
{{endif}}
<div class='ipsColumns'>
<div class='ipsColumn ipsColumn_fixed ipsColumn_veryNarrow ipsPos_center'>
<img src='{$event->author()->photo}' class="ipsUserPhoto ipsUserPhoto_mini" alt=''>
</div>
<div class='ipsColumn ipsColumn_fluid'>
<h2 class='ipsType_pageTitle ipsType_blendLinks ipsPageHead_barText ipsPageHead_barText_small'><a href='{$event->url()}' title='{$event->title}'>{$event->title}{{if $event->hidden() === 1}} <span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span>{{endif}}</a></h2>
</div>
</div>
</div>
{{if $map !== FALSE AND $event->map( $map[0], $map[1] )}}
<div class='ipsAreaBackground_light cCalendarBlock_map ipsPad_half ipsPos_right ipsBox'>
{$event->map( $map[0], $map[1] )|raw}
</div>
{{endif}}
<br>
<div class='eventStreamDate ipsPos_left'>
<a href='{$event->url()}'>
{{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>
<div class='ipsPad ipsClearfix'>
<h3 class='ipsType_reset'>
<time itemprop='startDate' content='{expression="$event->_start_date->format( 'Y-m-d' )"}'>
{{if $event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )}}
{$event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->calendarDate()}{{if !$event->all_day}}, {$event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' )->localeTime( FALSE )} {{endif}}
{{else}}
{$event->lastOccurrence( 'startDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'startDate' )->localeTime( FALSE )} {{endif}}
{{endif}}
</time>
{{if $event->_end_date}}
<i class='fa fa-arrow-circle-right ipsType_large ipsType_light'></i>
<time itemprop='endDate' content='{expression="$event->_end_date->format( 'Y-m-d' )"}'>
{{$sameDay = !( ($event->_start_date->mday != $event->_end_date->mday) or ($event->_start_date->mon != $event->_end_date->mon) or ($event->_start_date->year != $event->_end_date->year) );}}
{{if $event->nextOccurrence( $event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' ) ?: \IPS\calendar\Date::getDate(), 'endDate' )}}
{{if !$sameDay}}{$event->nextOccurrence( $event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' ) ?: \IPS\calendar\Date::getDate(), 'endDate' )->calendarDate()}{{endif}}{{if !$event->all_day}}{{if !$sameDay}}, {{endif}}{$event->nextOccurrence( $event->nextOccurrence( \IPS\calendar\Date::getDate(), 'startDate' ) ?: \IPS\calendar\Date::getDate(), 'endDate' )->localeTime( FALSE )}{{endif}}
{{else}}
{$event->lastOccurrence( 'endDate' )->calendarDate()}{{if !$event->all_day}} {$event->lastOccurrence( 'endDate' )->localeTime( FALSE )}{{endif}}
{{endif}}
</time>
{{endif}}
</h3>
{{if $event->recurring}}<p class='ipsType_reset ipsType_normal ipsType_light'>{$event->_recurring_text}</p><br>{{endif}}
<div class='ipsType_richText ipsType_medium' {{if ( \IPS\Request::i()->isAjax() or $truncate ) && $event->content}}data-ipsTruncate data-ipsTruncate-type='remove' data-ipsTruncate-size='5 lines'{{endif}}>
{{if $event->content}}
{{if \IPS\Request::i()->isAjax() or $truncate}}
{$event->truncated()|raw}
{{else}}
{$event->content|raw}
{{endif}}
{{endif}}
<p class='ipsType_medium ipsType_richText ipsSpacer_both'><a href='{$event->url()}'>{lang="event_details"}</a></p>
</div>
</div>
<a href='{$event->container()->url()}' class='ipsResponsive_noFloat cEvents_event cEvents_eventSmall cEvents_style{$event->container()->id}'>{$event->container()->_title}</a>
{{if $event->container()->allow_comments}}<a href='{$event->url()->setQueryString( 'tab', 'comments' )}' class='ipsType_medium ipsType_noBreak'>{lang="event_comment_count" pluralize="$event->comments"}</a>{{endif}}
{{if $event->container()->allow_comments AND $event->container()->allow_reviews}}·{{endif}}
{{if $event->container()->allow_reviews}}<a href='{$event->url()->setQueryString( 'tab', 'reviews' )}' class='ipsType_medium ipsType_noBreak'>{lang="event_review_count" pluralize="$event->reviews"}</a>{{endif}}
{{if $event->rsvp }}
<hr class='ipsHr'>
<h4 class='ipsType_reset'><strong>{lang="event_rsvp_attendees_list" pluralize="$event->attendeeCount( \IPS\calendar\Event::RSVP_YES )"}</strong></h4>
{{if count( $event->attendees( \IPS\calendar\Event::RSVP_YES, 5 ) )}}
<ul class='ipsList_inline ipsList_noSpacing ipsSpacer_top ipsSpacer_half'>
{{foreach $event->attendees( \IPS\calendar\Event::RSVP_YES, 5 ) as $attendee}}
<li>{template="userPhoto" app="core" group="global" params="$attendee, 'tiny'"}</li>
{{endforeach}}
</ul>
{{endif}}
{{endif}}
</div>]]></template>
<template template_group="view" template_name="reminder" template_data="$event, $reminder, $buttonClass=''" template_location="front" template_app="calendar"><![CDATA[<div data-controller='calendar.front.view.reminderButton' data-reminderID='{$event->id}'>
{template="reminderButton" app="calendar" group="view" params="$event, $reminder, $buttonClass"}
</div>]]></template>
<template template_group="view" template_name="reminderButton" template_data="$event, $reminder=NULL, $buttonClass=''" template_location="front" template_app="calendar"><![CDATA[{{if member.member_id}}
{{if $reminder}}
<a class="ipsButton ipsButton_primary ipsButton_verySmall {$buttonClass}" data-role="reminderButton" data-reminder="true" href="{url="app=calendar&module=calendar&controller=event&id={$event->id}&do=setReminder" csrf="true"}" title="{lang="event_edit_reminder"}" data-ipsTooltip class="ipsType_blendLinks ipsType_noUnderline" data-ipsHover data-ipsHover-cache='false' data-ipsHover-onClick><i class='fa fa-bell'></i> {lang="event_edit_reminder"} <i class='fa fa-caret-down'></i></a>
{{else}}
<a class="ipsButton ipsButton_light ipsButton_verySmall {$buttonClass}" data-role="reminderButton" data-reminder="false" href="{url="app=calendar&module=calendar&controller=event&id={$event->id}&do=setReminder" csrf="true"}" title="{lang="event_set_reminder_tip"}" data-ipsTooltip class="ipsType_blendLinks ipsType_noUnderline" data-ipsHover data-ipsHover-cache='false' data-ipsHover-onClick>{lang="event_set_reminder"}</a>
{{endif}}
{{endif}}]]></template>
<template template_group="view" template_name="reminderForm" template_data="$id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar, $form=NULL" template_location="front" template_app="calendar"><![CDATA[<form {{if \IPS\Request::i()->isAjax() }}data-controller='calendar.front.view.reminderForm'{{endif}} accept-charset='utf-8' class="ipsForm {$class}" action="{$action}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}} {{foreach $attributes as $k => $v}}{$k}="{$v}"{{endforeach}} data-ipsForm >
<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( mt_rand() )"}">
{{endif}}
<div class="ipsPad">
<h2 class='ipsType_sectionHead'>{expression="\IPS\Output::i()->title"}</h2>
<br><br>
<ul class='ipsList_reset'>
{{foreach $elements as $collection}}
{{foreach $collection as $input}}
{{if is_string( $input )}}
{$input|raw}
<hr class='ipsHr'>
{{elseif $input instanceof \IPS\Helpers\Form\Checkbox}}
{$input->html($form)|raw}
{{else}}
{$input->rowHtml($form)|raw}
{{endif}}
{{endforeach}}
{{endforeach}}
</ul>
</div>
<div class="ipsAreaBackground ipsPad">
{$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'>
{{if $event->reviewForm()}}
{{if $event->locked()}}
<strong class='ipsType_warning'><i class='fa fa-info-circle'></i> {lang="item_locked_can_review"}</strong>
{{endif}}
<div id='elEventReviewForm'>
{$event->reviewForm()|raw}
</div>
{{else}}
{{if $event->hasReviewed()}}
<!-- Already reviewed -->
{{elseif $event->locked()}}
{template="commentUnavailable" group="forms" location="front" app="core" params="'item_locked_cannot_review'"}
{{elseif \IPS\Member::loggedin()->restrict_post}}
{{if \IPS\Member::loggedIn()->restrict_post == -1}}
{template="reviewUnavailable" group="forms" location="front" app="core" params="'restricted_cannot_comment'"}
{{else}}
{template="reviewUnavailable" group="forms" location="front" app="core" params="'restricted_cannot_comment', \IPS\Member::loggedIn()->warnings(5,NULL,'rpa'), \IPS\Member::loggedIn()->restrict_post"}
{{endif}}
{{elseif \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings']}}
{template="reviewUnavailable" group="forms" location="front" app="core" params="'unacknowledged_warning_cannot_post', \IPS\Member::loggedIn()->warnings( 1, FALSE )"}
{{endif}}
{{endif}}
{{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}
</div>
{{endif}}
<div class="ipsClearfix ipsPos_right ipsResponsive_hidePhone">
<ul class="ipsButtonRow ipsClearfix">
<li data-action="tableFilter">
<a href="{$event->url()->setQueryString( array( 'tab' => 'reviews', 'page' => 1, 'sort' => 'helpful' ) )}" class="{{if !isset( request.sort ) or request.sort != 'newest'}}ipsButtonRow_active{{endif}}" data-action="filterClick">{lang="most_helpful"}</a>
</li>
<li data-action="tableFilter">
<a href="{$event->url()->setQueryString( array( 'tab' => 'reviews', 'page' => 1, 'sort' => 'newest' ) )}" class="{{if isset( request.sort ) and request.sort == 'newest'}}ipsButtonRow_active{{endif}}" data-action="filterClick">{lang="newest"}</a>
</li>
</ul>
</div>
</div>
<div data-role='commentFeed' data-controller='core.front.core.moderation'>
<form action="{$event->url()->csrf()->setQueryString( 'do', 'multimodReview' )}" method="post" data-ipsPageAction data-role='moderationTools'>
{{$reviewCount=0; $timeLastRead = $event->timeLastRead(); $lined = FALSE;}}
{{foreach $event->reviews() as $review}}
{{if !$lined and $timeLastRead and $timeLastRead->getTimestamp() < $review->mapped('date')}}
{{if $lined = TRUE and $reviewCount}}
<hr class="ipsCommentUnreadSeperator">
{{endif}}
{{endif}}
{{$reviewCount++;}}
{$review->html()|raw}
{{endforeach}}
{template="commentMultimod" app="core" group="global" params="$event, 'review'"}
</form>
</div>
{{if $event->reviewPageCount() > 1}}
<div>
{$event->reviewPagination( array( 'tab', 'sort' ) )|raw}
</div>
{{endif}}
{{elseif !$event->canReview()}}
<p class="ipsType_normal ipsType_light ipsType_reset" data-role="noReviews">{lang="no_reviews"}</p>
{{endif}}
</div>]]></template>
<template template_group="view" template_name="rsvpControls" template_data="$event, $attendees" template_location="front" template_app="calendar"><![CDATA[<!-- Don't use IDs here, this template is called twice in view -->
{{if \IPS\Member::loggedIn()->member_id AND ( isset( $attendees[0][ \IPS\Member::loggedIn()->member_id ] ) OR isset( $attendees[1][ \IPS\Member::loggedIn()->member_id ] ) OR isset( $attendees[2][ \IPS\Member::loggedIn()->member_id ] ) )}}
<div class='{{if isset( $attendees[1][ \IPS\Member::loggedIn()->member_id ] )}}ipsAreaBackground_positive{{elseif isset( $attendees[0][ \IPS\Member::loggedIn()->member_id ] )}}ipsAreaBackground_negative{{else}}ipsAreaBackground_reset{{endif}} ipsPad'>
<p class='ipsType_large ipsType_center ipsType_reset'>
<strong>
{{if isset( $attendees[1][ \IPS\Member::loggedIn()->member_id ] )}}
<span><i class='fa fa-check-circle'></i> {lang="you_are_going"}</span>
{{elseif isset( $attendees[0][ \IPS\Member::loggedIn()->member_id ] )}}
<span>{lang="you_arent_going"}</span>
{{else}}
{lang="confirm_attendance"}
{{endif}}
</strong>
</p>
<ul class="ipsToolList ipsToolList_vertical ipsSpacer_top ipsSpacer_half">
{{if isset( $attendees[2][ \IPS\Member::loggedIn()->member_id ] )}}
<li>
<a href='{$event->url('rsvp')->setQueryString( 'action', 'yes' )->csrf()}' class='ipsButton ipsButton_important ipsButton_fullWidth'>{lang="rsvp_attend_event"}</a>
</li>
<li>
<a href='{$event->url('rsvp')->setQueryString( 'action', 'no' )->csrf()}' class='ipsButton ipsButton_link ipsButton_fullWidth ipsButton_verySmall'>{lang="rsvp_notgoing_event"}</a>
</li>
{{elseif isset( $attendees[0][ \IPS\Member::loggedIn()->member_id ] )}}
<li class='ipsType_center'>
<a href='{$event->url('rsvp')->setQueryString( 'action', 'leave' )->csrf()}' class='ipsType_blendLinks ipsType_noUnderline ipsFaded'>{lang="rsvp_change"}</a>
</li>
{{else}}
<li class='ipsType_center'>
<a href='{$event->url('rsvp')->setQueryString( 'action', 'leave' )->csrf()}' class='ipsType_blendLinks ipsType_noUnderline ipsFaded'>{lang="rsvp_leave_event"}</a>
</li>
{{endif}}
</ul>
</div>
{{elseif $event->can('rsvp')}}
<div class='ipsAreaBackground_reset ipsPad'>
{{if $event->rsvp_limit > 0 AND count($attendees[1]) >= $event->rsvp_limit}}
<div class='ipsMessage ipsMessage_info'>{lang="rsvp_limit_reached"}</div>
{{else}}
{{if $event->rsvp_limit > 0}}<div class='ipsMessage ipsMessage_info'>{lang="rsvp_limit_info" pluralize="count($attendees[1])" sprintf="$event->rsvp_limit"}</div>{{endif}}
<a href='{$event->url('rsvp')->setQueryString( 'action', 'yes' )->csrf()}' class='ipsButton ipsButton_important ipsButton_fullWidth'>{lang="rsvp_attend_event"}</a>
<br>
<div class='ipsGrid'>
{{if $event->rsvp_limit == -1}}<div class='ipsGrid_span6'><a href='{$event->url('rsvp')->setQueryString( 'action', 'maybe' )->csrf()}' class='ipsButton ipsButton_link ipsButton_fullWidth ipsButton_verySmall'>{lang="rsvp_maybe_event"}</a></div>{{endif}}
<div class='ipsGrid_span{{if $event->rsvp_limit == -1}}6{{else}}12{{endif}}'><a href='{$event->url('rsvp')->setQueryString( 'action', 'no' )->csrf()}' class='ipsButton ipsButton_link ipsButton_fullWidth ipsButton_verySmall'>{lang="rsvp_notgoing_event"}</a></div>
</div>
{{endif}}
</div>
{{endif}}]]></template>
<template template_group="view" template_name="view" template_data="$event, $commentsAndReviews, $attendees, $address=NULL, $reminder=NULL" template_location="front" template_app="calendar"><![CDATA[
{{if $club = $event->container()->club()}}
{{if settings.clubs and settings.clubs_header == 'full'}}
{template="header" app="core" group="clubs" params="$club, $event->container()"}
{{endif}}
<div id='elClubContainer'>
{{endif}}
<div>
<header class='ipsClearfix ipsSpacer_bottom'>
<div id="elEventHeader">{$event->coverPhoto()|raw}</div>
<div id='elEventHeader_details' class='ipsClearfix ipsAreaBackground ipsPad'>
<a href='{$event->container()->url()}' class='ipsPos_right ipsResponsive_noFloat cEvents_event cEvents_eventSmall cEvents_style{$event->container()->id}'>{$event->container()->_title}</a>
<div class="ipsPhotoPanel ipsPhotoPanel_tiny ipsPhotoPanel_notPhone ipsClearfix">
{template="userPhoto" app="core" group="global" params="$event->author(), 'tiny'"}
<div>
<p class="ipsType_reset ipsType_normal ipsType_blendLinks">
{lang="event_created_by" htmlsprintf="$event->author()->link( $event->warningRef() )"}
</p>
{{if $event->container()->allow_reviews}}
<div>
{template="rating" group="global" location="front" app="core" params="'large', $event->averageReviewRating(), \IPS\Settings::i()->reviews_rating_out_of, $event->memberReviewRating()"} <span class='ipsType_medium ipsType_light'>({lang="num_reviews" pluralize="$event->reviews"})</span>
</div>
{{endif}}
</div>
</div>
</div>
</header>
<section>
{{if $event->hidden() === 1 and $event->canUnhide()}}
<div class="ipsMessage ipsMessage_warning ipsSpacer_top">
<p class="ipsType_reset">{lang="event_pending_approval"}</p>
<ul class='ipsList_inline ipsSpacer_top'>
<li><a href="{$event->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unhide' ) )}" class="ipsButton ipsButton_positive ipsButton_verySmall" title='{lang="approve_title_event"}'><i class="fa fa-check"></i> {lang="approve"}</a></li>
{{if $event->canDelete()}}
<li><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete' ) )}' data-confirm title='{lang="event_delete_title"}' class='ipsButton ipsButton_negative ipsButton_verySmall'><i class='fa fa-times'></i> {lang="delete"}</a></li>
{{endif}}
</ul>
</div>
{{endif}}
{template="contentItemMessages" group="global" app="core" params="$event->getMessages(), $event"}
{{if $event->rsvp || $address || $event->map( 270, 270 ) }}
<div class='ipsColumns ipsColumns_collapsePhone'>
<aside class='ipsColumn ipsColumn_wide'>
<div>
{template="eventSidebar" group="view" params="$event, $attendees, 'Mob', $address"}
</div>
</aside>
<div class='ipsColumn ipsColumn_fluid'>
{{endif}}
<div class='ipsBox ipsPad ipsClearfix'>
{{if $event->recurring}}
<div class='ipsClearfix'>
{{endif}}
<ul class="ipsList_inline ipsPos_right ipsResponsive_noFloat ipsResponsive_hidePhone">
{{if $event->canRemind()}}
<li>
{template="reminder" app="calendar" group="view" params="$event, $reminder"}
</li>
{{endif}}
<li>
{template="promote" app="core" group="global" params="$event"}
</li>
<li>
{template="follow" app="core" group="global" params="'calendar', 'event', $event->id, $event->followers()->count( TRUE )"}
</li>
</ul>
{{if $event->recurring}}
<p class='ipsType_medium ipsType_light ipsType_reset'><i class='fa fa-repeat'></i> {$event->_recurring_text}</p>
</div>
{{endif}}
<h2 class='ipsType_sectionHead ipsSpacer_bottom'>{lang="event_details"}</h2>
{{if count( $event->tags() ) OR ( $event->canEdit() AND $event::canTag( NULL, $event->container() ) )}}
{template="tags" group="global" app="core" params="$event->tags(), FALSE, FALSE, ( $event->canEdit() AND $event::canTag( NULL, $event->container() ) ) ? $event->url() : NULL"}
<br>
{{endif}}
<div class='ipsComment_content ipsType_medium'>
<div class='ipsClear ipsType_normal ipsType_richText ipsType_break'>
{$event->content()|raw}
</div>
</div>
{{if $event->_album}}
<br>
<div class='ipsAreaBackground_light ipsPad_half'>
<h3 class='ipsType_normal ipsType_reset ipsSpacer_bottom ipsSpacer_half'>{lang="event_images"}</h3>
{$event->_album|raw}
</div>
{{endif}}
<div class='ipsItemControls'>
{{if \IPS\IPS::classUsesTrait( $event, 'IPS\Content\Reactable' ) and settings.reputation_enabled}}
{template="reputation" app="core" group="global" params="$event"}
{{endif}}
<ul class='ipsToolList ipsToolList_horizontal ipsPos_left ipsClearfix ipsResponsive_noFloat ipsItemControls_left'>
{{if ( $event->canEdit() or $event->canFeature() or $event->canUnfeature() or $event->canHide() or $event->canUnhide() or $event->canMove() or $event->canLock() or $event->canUnlock() or $event->canDelete() ) or ( $event->hidden() == -2 AND \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') )}}
<li>
<a href='#elEventActions_menu' id='elEventActions' class='ipsButton ipsButton_light ipsButton_verySmall ipsButton_fullWidth' data-ipsMenu>{lang="manage_event"} <i class='fa fa-caret-down'></i></a>
<ul id='elEventActions_menu' class='ipsMenu ipsMenu_auto ipsHide'>
{{if \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') AND $event->hidden() == -2}}
<li class='ipsMenu_item'><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'restore' ) )}' data-confirm data-confirmSubMessage='{lang="restore_as_visible_desc"}'>{lang="restore_as_visible"}</a></li>
<li class='ipsMenu_item'><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'restoreAsHidden' ) )}' data-confirm data-confirmSubMessage='{lang="restore_as_hidden_desc"}'>{lang="restore_as_hidden"}</a></li>
<li class='ipsMenu_item'><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete', 'immediate' => 1 ) )}' data-confirm data-confirmSubMessage='{lang="delete_immediately_desc"}'>{lang="delete_immediately"}</a></li>
{{else}}
{{if $event->canEdit()}}
<li class='ipsMenu_item'><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'edit' ) )}' title="{lang="calendar_edit_details_title"}">{lang="calendar_edit_details"}</a></li>
{{endif}}
{{if $event->canFeature()}}
<li class='ipsMenu_item'><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'feature' ) )}' title='{lang="feature_title_event"}'>{lang="feature"}</a></li>
{{endif}}
{{if $event->canUnfeature()}}
<li class='ipsMenu_item'><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unfeature' ) )}' title='{lang="unfeature_title_event"}'>{lang="unfeature"}</a></li>
{{endif}}
{{if $event->canHide()}}
<li class='ipsMenu_item'><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'hide' ) )}' title='{lang="hide_title_event"}' data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
{{endif}}
{{if $event->canUnhide()}}
<li class='ipsMenu_item'><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unhide' ) )}' title='{{if $event->hidden() === 1}}{lang="approve_title_event"}{{else}}{lang="unhide_title_event"}{{endif}}'>{{if $event->hidden() === 1}}{lang="approve"}{{else}}{lang="unhide"}{{endif}}</a></li>
{{endif}}
{{if $event->canLock()}}
<li class='ipsMenu_item'><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'lock' ) )}' title='{lang="lock_title_event"}'>{lang="lock"}</a></li>
{{endif}}
{{if $event->canUnlock()}}
<li class='ipsMenu_item'><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unlock' ) )}' title='{lang="unlock_title_event"}'>{lang="unlock"}</a></li>
{{endif}}
{{if $event->canMove()}}
<li class='ipsMenu_item'><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'move' ) )}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title="{lang="move"}" title='{lang="event_move_title"}'>{lang="move"}</a></li>
{{endif}}
{{if $event->canDelete()}}
<li class='ipsMenu_item'><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete' ) )}' data-confirm title='{lang="calendar_delete_title"}'>{lang="delete"}</a></li>
{{endif}}
{{if $event->canOnMessage( 'add' )}}
<li class='ipsMenu_item'><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'messageForm' ) )}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}'>{lang="add_message"}</a></li>
{{endif}}
{{if \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
<li class='ipsMenu_sep'><hr></li>
<li class="ipsMenu_item"><a href='{$event->url()->csrf()->setQueryString( array( 'do' => 'modLog' ) )}' data-ipsDialog data-ipsDialog-title='{lang="moderation_history"}'>{lang="moderation_history"}</a></li>
{{endif}}
{{endif}}
</ul>
</li>
{{endif}}
{{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>
{{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>
{{endif}}
</ul>
</div>
<div class="ipsResponsive_showPhone ipsResponsive_block">
{{if $event->canRemind()}}
<div class='ipsSpacer_bottom ipsSpacer_half'>
{template="reminder" app="calendar" group="view" params="$event, $reminder, 'ipsButton_fullWidth'"}
</div>
{{endif}}
<div class='ipsSpacer_bottom ipsSpacer_half'>
{template="follow" app="core" group="global" params="'calendar', 'event', $event->id, $event->followers()->count( TRUE )"}
</div>
<div class='ipsSpacer_bottom ipsSpacer_half'>
{template="promote" app="core" group="global" params="$event"}
</div>
</div>
</div>
{{if $event->rsvp || $address || $event->map( 270, 270 )}}
</div>
</div>
{{endif}}
{{if count( $event->shareLinks() )}}
<div class='ipsSpacer_both'>
{template="sharelinks" app="core" group="global" params="$event"}
</div>
{{endif}}
</section>
{{if $commentsAndReviews}}
<br>
{{if $event->container()->allow_reviews && $event->container()->allow_comments}}
<a id="replies"></a>
<h2 class='ipsHide'>{lang="user_feedback"}</h2>
{{endif}}
{$commentsAndReviews|raw}
{{endif}}
</div>
{{if $event->container()->club()}}
</div>
{{endif}}]]></template>
<template template_group="widgets" template_name="recentReviews" template_data="$reviews, $orientation='vertical'" template_location="front" template_app="calendar"><![CDATA[<h3 class='ipsType_reset ipsWidget_title'>{lang="block_recentReviews"}</h3>
<div class='ipsWidget_inner'>
{{if $orientation == 'vertical'}}
<div class='ipsPad_half'>
{{if !empty( $reviews ) }}
<ul class='ipsDataList ipsDataList_reducedSpacing'>
{{foreach $reviews as $review}}
<li class='ipsDataItem'>
<div class='ipsDataItem_icon'>
{template="userPhoto" app="core" group="global" params="$review->author(), 'tiny'"}
</div>
<div class='ipsDataItem_main ipsType_break ipsContained'>
<a href="{$review->item()->url()}" title='{lang="view_this_event" sprintf="$review->item()->title"}' class='ipsTruncate ipsTruncate_line'>{$review->item()->title}</a><br>
<span class='ipsType_light ipsType_medium'>{lang="byline_nodate" htmlsprintf="$review->author()->link()"}</span><br>
{template="rating" group="global" location="front" app="core" params="'small', $review->rating, \IPS\Settings::i()->reviews_rating_out_of"}
<span class='ipsType_small ipsType_reset'><time datetime="{$review->mapped('date')}">{datetime="$review->mapped('date')" norelative="true"}</time></span>
</div>
</li>
{{endforeach}}
</ul>
{{else}}
<div class='ipsType_light ipsPad_half ipsType_center'>{lang="no_recent_reviews"}</div>
{{endif}}
</div>
{{else}}
{{if !empty( $reviews ) }}
<ul class='ipsDataList ipsDataList_reducedSpacing'>
{{foreach $reviews as $review}}
<li class='ipsDataItem'>
<div class='ipsDataItem_icon'>
{template="userPhoto" app="core" group="global" params="$review->author(), 'tiny'"}
</div>
<div class='ipsDataItem_main ipsType_break ipsContained'>
<a href="{$review->item()->url()}" title='{lang="view_this_event" sprintf="$review->item()->title"}' class='ipsTruncate ipsTruncate_line'>{$review->item()->title}</a><br>
<span class='ipsType_light ipsType_medium'>{lang="byline_nodate" htmlsprintf="$review->author()->link()"}</span>, <span class='ipsType_small ipsType_reset ipsType_light'><time datetime="{$review->mapped('date')}">{datetime="$review->mapped('date')" norelative="true"}</time></span><br>
<div class='ipsType_medium ipsType_richText' data-ipsTruncate data-ipsTruncate-type='remove' data-ipsTruncate-size='2 lines' data-ipsTruncate-watch='false'>
{template="rating" group="global" location="front" app="core" params="'small', $review->rating, \IPS\Settings::i()->reviews_rating_out_of"} {$review->truncated()|raw}
</div>
</div>
</li>
{{endforeach}}
</ul>
{{else}}
<div class='ipsType_light ipsPad_half ipsType_center'>{lang="no_recent_reviews"}</div>
{{endif}}
{{endif}}
</div>]]></template>
<template template_group="widgets" template_name="todaysBirthdays" template_data="$members, $count, $today, $orientation='vertical'" template_location="front" template_app="calendar"><![CDATA[<h3 class='ipsType_reset ipsWidget_title'>{lang="block_todaysBirthdays"}</h3>
<div class='ipsWidget_inner {{if $orientation !== 'vertical'}}ipsPad{{else}}ipsPad_half{{endif}}'>
{{if $orientation == 'vertical'}}
{{if !empty($members) }}
<ol class='ipsDataList ipsDataList_reducedSpacing'>
{{foreach $members as $member}}
<li class='ipsDataItem'>
<div class='ipsDataItem_main ipsPhotoPanel ipsPhotoPanel_tiny ipsClearfix'>
{template="userPhoto" app="core" group="global" params="$member, 'tiny'"}
<div>
{$member->link()|raw}
{{if $member->bday_year}}<br><span class='ipsType_light'>{lang="member_age" pluralize="$member->age()"}</span>{{endif}}
</div>
</div>
</li>
{{endforeach}}
</ol>
{{else}}
<div class='ipsType_light ipsPad_half ipsType_center'>{lang="no_members_birthday_today"}</div>
{{endif}}
{{else}}
{{if !empty($members) }}
<ol class='ipsList_inline ipsList_noSpacing'>
{{foreach $members as $idx => $member}}
<li>
{$member->link()|raw} {{if $member->bday_year}} <span class='ipsType_light'>{lang="member_age" pluralize="$member->age()"}</span>{{endif}}{{if $idx != count( $members ) - 1}},{{endif}}
</li>
{{endforeach}}
</ol>
{{else}}
<div class='ipsType_light ipsPad_half ipsType_center'>{lang="no_members_birthday_today"}</div>
{{endif}}
{{endif}}
</div>
{{if $count > count($members)}}
<div class='ipsWidget_inner ipsPad_half ipsWidget_bottomBar'>
<div class='ipsType_center ipsAreaBackground_light ipsPad_half'>
<a data-ipsDialog data-ipsDialog-title='{lang="birthdays_today" pluralize="$count"}' data-ipsDialog-size="narrow" href='{url="app=calendar&module=calendar&controller=view&view=day&y={$today->year}&m={$today->mon}&d={$today->mday}&show=birthdays" seoTemplate="calendar_day"}'>{lang="birthdays_view_all"}</a>
</div>
</div>
{{endif}}
]]></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'}}
<div class='ipsPad_half'>
{{endif}}
{{if !empty( $events ) }}
<ul class='ipsDataList ipsDataList_reducedSpacing'>
{{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>
{{else}}
<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>
{{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'>
{{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' ) }}
{{$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}}
{{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>
{{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>
{{endif}}
</div>
</li>
{{endforeach}}
</ul>
{{else}}
<div class='ipsType_light ipsPad_half ipsType_center'>{lang="no_upcoming_events"}</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) {
/* Submit screen */
.cCalendarSubmit_field {
width: 100%;
}
.cCalendarSubmit_field input {
max-width: 100% !important;
width: 100% !important;
}
/* Calendar views */
.cCalendar th span,
.ipsButton.cCalendar_miniAddEvent {
display: none;
}
/* Day view */
.cCalendarDay .cCalendarDay_hour > h2 {
text-align: left;
padding: 10px;
font-size: 22px;
line-height: 22px;
}
}
/* TABLETS */
@media screen and (min-width: 768px) and (max-width: 979px) {
.cCalendar th:after {
content: attr(data-short);
}
}
/* PHONES */
@media screen and (max-width: 767px) {
/* Submit screen */
#elDateGrid_arrow {
padding-top: 0;
}
#elDateGrid_arrow .fa {
font-size: 80px;
line-height: 70px;
}
#elDateGrid_arrow .fa:before {
content: '\f107';
}
/* Calendar header */
#elCalendarsHeader .ipsType_pageTitle {
display: block;
margin-top: 10px;
}
.cCalendarNav .ipsType_pageTitle {
font-size: 20px;
margin-top: 0;
}
.cCalendarNav [data-role='calendarNav'] {
margin-top: -140px;
}
.cCalendarNav .ipsPager_prev a,
.cCalendarNav .ipsPager_next a {
display: inline-block;
}
.cCalendarNav .ipsPager_prev {
margin-top: 70px;
float: left;
}
html[dir="rtl"] .cCalendarNav .ipsPager_prev {
float: right;
}
.cCalendarNav .ipsPager_next {
margin-top: -67px;
float: right;
}
html[dir="rtl"] .cCalendarNav .ipsPager_next {
float: left;
}
/* Calendar views */
.cCalendar td {
height: 40px;
border: 0;
padding: 0px;
border-bottom: 1px solid rgba(0,0,0,0.04);
}
.cCalendar td > div {
padding-bottom: 0;
min-height: 0;
}
.cCalendar td.cCalendar_today {
background: transparent;
border: 0;
}
.cCalendar th:after {
content: attr(data-veryShort);
}
.cCalendar_birthdays {
display: none;
}
.cCalendar .cEvents {
display: none;
}
.cCalendar .cCalendar_dayNumber {
display: block;
text-align: center;
margin: 1px auto;
height: 40px;
width: 100%;
padding:4px;
line-height: 26px;
font-size: 12px;
border-radius: 15px;
}
.cCalendar .cCalendar_hasEvents .cCalendar_dayNumber {
border: 2px solid rgba(0,0,0,0.12);
background: rgba(0,0,0,0.04);
}
.cCalendar .cCalendar_hasEvents.cCalendar_today .cCalendar_dayNumber {
background: #f8eeeb;
}
.cCalendar td.cCalendar_today .cCalendar_dayNumber {
background: #fff7f5;
border: 2px solid #cd3816;
color: #cd3816;
}
/* WEEK VIEW */
.cCalendarWeek_day {
margin-bottom: 0 !important;
}
/* EVENT VIEW */
#elEventHeader {
text-align: center;
}
#elEventHeader .ipsUserPhoto {
display: none;
}
#elEventHeader_details {
text-align: center;
}
html[dir="ltr"] #elEventHeader_details .ipsPhotoPanel > div {
margin-left: 0;
}
html[dir="rtl"] #elEventHeader_details .ipsPhotoPanel > div {
margin-right: 0;
}
#elEventHeader_details time, #elEventHeader_details p.cEvent_to {
float: none;
display: inline-block;
min-width: 100%;
}
#elEventHeader_details time .cEvent_dayNum {
font-size: inherit;
font-weight: normal;
float: none;
line-height: inherit;
letter-spacing: 0;
}
html[dir="ltr"] #elEventHeader_details time .cEvent_dayNum {
margin-right: 0;
}
html[dir="rtl"] #elEventHeader_details time .cEvent_dayNum {
margin-left: 0;
}
#elEventHeader_details time .cEvent_dayNum,
#elEventHeader_details time .cEvent_day,
#elEventHeader_details time .cEvent_date {
display: inline;
font-size: 15px;
}
#elEventHeader_details time .cEvent_day {
display: block;
}
#elEventHeader_details time p {
display: block;
float: none;
}
#elEventHeader_details time p .fa-arrow-circle-right:before{
content:"\f0ab";
}
.cCalendarBlock .cCalendarBlock_map {
display: block;
float: none;
}
}]]></css>
<css css_location="front" css_app="calendar" css_attributes="" css_path="." css_name="calendar.css"><![CDATA[.cCalendar {
width: 100%;
table-layout: fixed;
}
.ipsType_sectionTitle + .cCalendar {
margin-top: -12px;
}
.cCalendarIcon {
display: inline-block;
width: 18px;
height: 18px;
border-radius: 3px;
vertical-align: middle;
}
html[dir="ltr"] .cCalendarIcon {
margin-right: 5px;
}
html[dir="rtl"] .cCalendarIcon {
margin-left: 5px;
}
.cCalendarNav .ipsType_pageTitle {
font-size: 30px;
margin: -20px 0 7px 0;
}
.cCalendar td {
width: 14.285%;
min-height: 100px;
border: 1px solid rgba(0,0,0,0.04);
vertical-align: top;
padding: 7px;
}
.cCalendar td > div {
height: 100%;
min-height: 100px;
position: relative;
}
.cCalendar td.cCalendar_nonDate {
background: #dedede;
}
.cCalendar td.cCalendar_today, .cCalendarWeek div.cCalendar_today {
/*border: 3px solid #9f3d3b;*/
background: #262e33;
color: #fff;
}
.cCalendarWeek div.cCalendar_today h2.ipsType_sectionHead {
color: #fff;
}
.cCalendar_dayNumber {
font-size: 14px;
font-weight: bold;
display: inline-block;
}
.ipsButton.cCalendar_miniAddEvent {
height: 15px;
line-height: 14px;
padding: 0 2px;
opacity: 0;
{prefix="transition" value="0.2s all ease-in-out"}
}
.cCalendar td:hover .cCalendar_miniAddEvent {
opacity: 0.5;
}
.cCalendar td .cCalendar_miniAddEvent:hover {
opacity: 1;
}
.cCalendar_birthdays {
font-size: 11px;
text-transform: uppercase;
margin: 0;
}
.cCalendar td .cCalendar_birthdays {
position: absolute;
bottom: 0px;
padding: 0;
}
.cCalendarWeek > li {
margin-bottom: 15px;
}
.cCalendarWeek > li:last-child {
margin-bottom: 0;
}
.cCalendarWeek .cEvents + .cCalendar_birthdays {
margin-top: 10px;
}
/* EVENT STYLES */
.cEvents_wrapper, .cEvents {
margin: 0;
padding: 0;
list-style: none;
}
.cEvents_event {
margin-bottom: 5px;
}
a.cEvents_event, .cEvents_event a, .cEvents_event.cEvents_empty span {
display: block;
line-height: 26px;
height: 26px;
font-size: 13px;
margin-bottom: 2px;
padding: 0 8px 0 10px;
color: #fff;
border-radius: 20px;
white-space: nowrap;
overflow: hidden;
background: {theme="area_background_dark"};
}
html[dir="rtl"] a.cEvents_event,
html[dir="rtl"] .cEvents_event a,
html[dir="rtl"] .cEvents_event.cEvents_empty span {
padding: 0 10px 0 8px;
}
a.cEvents_style_blank, .cEvents_style_blank a, .cCalendarIcon.cEvents_style_blank {
background-color: transparent;
border: 1px solid rgba(0,0,0,0.1);
}
a.cEvents_event.cEvents_eventSmall, .cEvents_event.cEvents_eventSmall a, .cEvents_event.cEvents_eventSmall.cEvents_empty span {
font-size: 12px;
padding: 0 8px;
line-height: 26px;
height: 26px;
display: inline-block;
}
.cEvents_time {
font-size: 10px;
text-transform: uppercase;
opacity: 0.7;
letter-spacing: -1px;
color: #ebebeb;
}
.cEvents_event.cEvents_empty span {
background: transparent;
}
/* Single event special styles */
.cEvents_single .cEvents_event a {
border-radius: 20px;
}
/* Ranged event special styles */
.cEvents_ranged .cEvents_event a {
border-radius: 0;
}
html[dir="ltr"] .cEvents_ranged .cEvents_event:not( .cEvents_first ) a {
margin-left: -7px;
padding-left: 8px;
}
html[dir="rtl"] .cEvents_ranged .cEvents_event:not( .cEvents_first ) a {
margin-right: -7px;
padding-right: 8px;
}
html[dir="ltr"] .cEvents_ranged .cEvents_event:not( .cEvents_last ) a {
margin-right: -8px;
}
html[dir="rtl"] .cEvents_ranged .cEvents_event:not( .cEvents_last ) a {
margin-left: -8px;
}
html[dir="ltr"] .cEvents_ranged .cEvents_event.cEvents_first a {
border-top-left-radius: 20px;
border-bottom-left-radius: 20px;
}
html[dir="ltr"] .cEvents_ranged .cEvents_event.cEvents_last a {
border-top-right-radius: 20px;
border-bottom-right-radius: 20px;
}
html[dir="rtl"] .cEvents_ranged .cEvents_event.cEvents_first a {
border-top-right-radius: 20px;
border-bottom-right-radius: 20px;
}
html[dir="rtl"] .cEvents_ranged .cEvents_event.cEvents_last a {
border-top-left-radius: 20px;
border-bottom-left-radius: 20px;
}
/* Hide details in all but the first in each row */
tr td:not( :first-child ):not( .cCalendar_firstDay ) .cEvents_ranged .cEvents_event:not( .cEvents_first ) a,
tr td:not( :first-child ):not( .cCalendar_firstDay ) .cEvents_ranged .cEvents_event:not( .cEvents_first ) a span {
font-size: 0;
}
tr td:not( :first-child ):not( .cCalendar_firstDay ) .cEvents_ranged .cEvents_event:not( .cEvents_first ) a img {
display: none;
}
.cCalendarCarousel .cCalendarBlock {
width: 400px;
height: 380px;
overflow: hidden;
}
/* EVENT VIEW */
#elEventHeader .ipsCoverPhoto {
height: 155px;
padding-top: 65px;
background-size: cover;
}
#elEventHeader_details {
background: #222;
color: #fff;
}
#elEventHeader_details .ipsRating.ipsRating_large {
margin-top: 0;
}
#elEventHeader_details .cEvents_event {
margin-top: 5px;
}
#elEventHeader > .ipsCoverPhotoMinimal {
padding-top: 25px;
height: 100px;
}
.cEvent_to {
font-size: 28px;
margin: 6px 15px;
}
#elAttendeesMob {
padding-left: 0;
padding-right: 0;
padding-top: 0;
border-top: 1px solid #e0e0e0;
}
/* DAY VIEW */
.cCalendarDay_hour {
vertical-align: top;
}
.cCalendarDay .cCalendarDay_hour > h2 {
font-size: 54px;
font-weight: 300;
text-align: right;
margin-top: 10px;
}
html[dir="rtl"] .cCalendarDay .cCalendarDay_hour > h2 {
text-align: right;
}
.cCalendarDay .cCalendarDay_hour > h2 span {
font-size: 14px;
text-transform: uppercase;
}
.cCalendarDay_hour.cCalendarDay_allDay > h2 {
font-size: 28px;
line-height: 30px;
margin-top: 0;
}
.cCalendarDay > .ipsDataItem {
border-bottom: 2px solid rgba(0,0,0,0.2);
}
.ipsDataItem.cCalendarDay_allDay {
border-bottom: 6px solid #000;
}
.cCalendarDay_eventList > li {
margin-bottom: 15px;
}
/* STREAM VIEW */
.cCalendarBlock .ipsPageHead_special {
height: 80px;
padding-top: 45px;
}
.cCalendarBlock .ipsType_pageTitle {
font-size: 18px;
}
.cCalendarBlock_map {
height: 200px;
text-align: center;
margin: 10px auto;
}
#event_timezone option {
width: 400px;
white-space: nowrap;
}
.cCalendar_shortInput {
width: auto !important;
padding: 2px !important;
}
/* Submit screen */
.cCalendarSubmit_field {
display: inline-block;
position: relative;
margin-bottom: 5px;
}
html[dir="ltr"] .cCalendarSubmit_field input {
padding-left: 35px !important;
}
html[dir="rtl"] .cCalendarSubmit_field input {
padding-right: 35px !important;
}
.cCalendarSubmit_field .fa {
position: absolute;
color: #9f3d3b;
top: 9px;
font-size: 20px;
}
html[dir="ltr"] .cCalendarSubmit_field .fa {
left: 10px;
}
html[dir="rtl"] .cCalendarSubmit_field .fa {
right: 10px;
}
#elDateGrid_arrow {
font-size: 120px;
opacity: 0.2;
padding-top: 20px;
overflow: hidden;
}
#elTimezone {
margin-bottom: 0;
}
#event_remind_me input[type="number"]
{
max-width: 60px;
}
.eventStreamDate .cCalendarEmbed_calendar {
background: #f5f5f5;
}
.eventStreamDate .ipsCalendarDate {
width: 80px;
margin: 10px;
display: block;
border: 1px solid rgba(0,0,0,0.2);
background: #fafafa;
padding: 8px 0;
border-radius: 3px;
overflow: hidden;
}
.eventStreamDate .ipsCalendarDate {
background: #fff;
}
.eventStreamDate .ipsCalendarDate > span {
display: block;
text-align: center;
}
.eventStreamDate .ipsCalendarDate_month {
color: #a93848;
text-transform: uppercase;
font-size: 20px;
line-height: 1;
font-weight: 500;
}
.eventStreamDate .ipsCalendarDate_date {
font-size: 40px;
line-height: 42px;
font-weight: 300;
color: #333;
}]]></css>
<css css_location="front" css_app="calendar" css_attributes="" css_path="." css_name="embed.css">.ipsRichEmbed_phone .ipsRichEmbed .cCalendarEmbed_calendar {
float: none !important;
width: 100%;
}
.ipsRichEmbed .ipsCalendarDate {
width: 75px;
height: 75px;
padding: 7px 0;
background: #fff;
}
.ipsRichEmbed .ipsPhotoPanel_small .ipsCalendarDate {
width: 55px;
height: 55px;
}
.ipsRichEmbed_phone .ipsRichEmbed .ipsCalendarDate {
width: 100%;
margin-bottom: 7px;
height: 65px;
}
.ipsRichEmbed .ipsCalendarDate_month {
font-size: 18px;
font-weight: 500;
}
.ipsRichEmbed .ipsPhotoPanel_small .ipsCalendarDate_month {
font-size: 13px;
}
.ipsRichEmbed_phone .ipsRichEmbed .ipsCalendarDate_month {
font-size: 16px;
}
.ipsRichEmbed .ipsCalendarDate_date {
font-size: 40px;
font-weight: 300;
line-height: 45px;
}
.ipsRichEmbed .ipsPhotoPanel_small .ipsCalendarDate_date {
font-size: 26px;
line-height: 30px;
}
.ipsRichEmbed_phone .ipsRichEmbed .ipsCalendarDate_date {
font-size: 32px;
}
.cCalendarEmbed_dates {
margin: 0;
}
.cCalendarEmbed_dates dt {
float: left;
width: 50px;
text-align: right;
}
html[dir="ltr"] .cCalendarEmbed_dates dt {
margin-right: 10px;
}
html[dir="rtl"] .cCalendarEmbed_dates dt {
margin-left: 10px;
}</css>
<css css_location="front" css_app="calendar" css_attributes="" css_path="." css_name="profile.css"><![CDATA[.cCalendarDate {
width: 80px;
display: block;
border: 1px solid rgba(0,0,0,0.2);
background: #fff;
padding: 8px 0;
border-radius: 3px;
overflow: hidden;
}
.cCalendarDate {
background: #fff;
}
.cCalendarDate > span {
display: block;
text-align: center;
}
.cCalendarDate_month {
color: #a93848;
text-transform: uppercase;
font-size: 20px;
line-height: 1;
font-weight: 500;
}
.cCalendarDate_date {
font-size: 36px;
line-height: 36px;
font-weight: 300;
color: #333;
}]]></css>
</theme>