Files
IPB/applications/blog/data/theme.xml
T
2025-12-19 16:57:00 -08:00

1800 lines
90 KiB
XML

<?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="categories" template_data="$currentCategory=NULL" template_location="front" template_app="blog"><![CDATA[ {{$categories = $currentCategory ? $currentCategory->children( 'view', NULL, FALSE ) : \IPS\blog\Category::roots();}}
{{if !\IPS\blog\Category::theOnlyNode( array(), TRUE, FALSE ) and \count( $categories )}}
<div id='elBlogCategoriesBlock' class='ipsWidget ipsWidget--vertical'>
<h3 class='ipsWidget__header'>{{if $currentCategory}}{lang="blog_subcategories"}{{else}}{lang="categories"}{{endif}}</h3>
<div class='ipsWidget__content'>
<div class='ipsSideMenu ipsSideMenu--truncate ipsCategoriesMenu'>
<ul class='ipsSideMenu__list'>
{{foreach $categories as $category}}
<li>
<a href="{$category->url()}" class='ipsSideMenu_item'>
<span class='ipsSideMenu__text'>{$category->_title}</span>
<span class='ipsSideMenu_itemCount'>{number="$category->childrenCount()"}</span>
</a>
</li>
{{endforeach}}
</ul>
</div>
</div>
</div>
{{endif}}
]]></template>
<template template_group="browse" template_name="featuredEntries" template_data="$featured" template_location="front" template_app="blog"><![CDATA[
<section class='ipsBox ipsPull'>
<header class='ipsBox__header'>
<h2>{lang="featured_entries"}</h2>
{template="carouselNavigation" group="global" app="core" params="'blogs-featured-entries'"}
</header>
<div class='ipsBox__content'>
<i-data>
<div class='ipsData ipsData--featured ipsData--carousel ipsData--blogs-featured-entries' id='blogs-featured-entries' tabindex="0">
{{foreach $featured as $entry}}
<article class='ipsData__item {$entry->ui( 'css' )} {{if $entry->hidden() OR $entry->status === 'draft'}}ipsModerated{{endif}}' {{if $entry->unread()}}data-ips-unread{{else}}data-ips-read{{endif}} {$entry->ui( 'dataAttributes' )}>
<a href='{$entry->url()}' class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>{lang="read_more_about" sprintf="$entry->name"}</span></a>
<a href="{$entry->url()}" title='{lang="read_more_about" sprintf="$entry->name"}' class='ipsData__image'>
{{if $entry->cover_photo}}
<img src='{file="$entry->cover_photo" extension="blog_Entries"}' alt='' loading='lazy'>
{{else}}
{template="defaultThumb" app="core" location="front" group="global" params=""}
{{endif}}
</a>
<div class='ipsData__content'>
<div class='ipsData__main'>
{{if !\IPS\Request::i()->id}}
<div class='i-color_soft i-link-color_inherit i-font-weight_600'><a href="{$entry->container()->url()}">{$entry->container()->_title}</a></div>
{{elseif $entry->category_id}}
<div class="i-color_soft i-link-color_inherit i-font-weight_600"><a href="{$entry->category()->url()}">{$entry->category()->name}</a></div>
{{endif}}
<div class='ipsData__title'>
{{if $entry->prefix()}}
{template="prefix" group="global" app="core" params="$entry->prefix( TRUE ), $entry->prefix()"}
{{endif}}
<div class='ipsBadges'>
{{foreach $entry->badges() as $badge}}{$badge|raw}{{endforeach}}
</div>
{{if $entry->unread()}}
<a href='{$entry->url('getNewComment')}' class='ipsIndicator' data-ipsTooltip title="{lang="unread_blog"}"><span class="ipsInvisible">{lang="unread_blog"}</span></a>
{{endif}}
<h3>
<a href="{$entry->url()}" title="{lang="read_more_about" sprintf="$entry->name"}" data-role="newsTitle">{wordbreak="$entry->name"}</a>
</h3>
</div>
<section class='ipsData__desc'>{$entry->truncated(TRUE)|raw}</section>
</div>
<div class="ipsData__extra">
<ul class='ipsData__stats'>
{{foreach $entry->stats(TRUE) as $k => $v}}
<li data-stat-type="{$k}">
{{if $k === "comments"}}
<span><a href='{$entry->url()}#comments' title='{lang="view_comments"}'>{number="$v"} {lang="blog_{$k}" pluralize="$v"}</a></span>
{{else}}
<span>{number="$v"} {lang="blog_{$k}" pluralize="$v"}</span>
{{endif}}
</li>
{{endforeach}}
</ul>
<div class='ipsData__last'>
{template="userPhoto" app="core" params="$entry->author(), 'fluid'" group="global"}
<ul class='ipsData__last-text'>
<li class='ipsData__last-primary'>
{{if $entry->category_id}}
{lang="entry_name_with_cat" htmlsprintf="$entry->author()->link(),$entry->category()->link()"}
{{else}}
<a href="{$entry->author()->url()}">{$entry->author()->name}</a>
{{endif}}
</li>
<li class='ipsData__last-secondary'>{datetime="$entry->date"}</li>
</ul>
</div>
</div>
</div>
</article>
{{endforeach}}
</div>
</i-data>
</div>
</section>]]></template>
<template template_group="browse" template_name="index" template_data="$table, $featured, $blogs=array(), $viewMode=NULL, $category=NULL" template_location="front" template_app="blog"><![CDATA[<header class="ipsPageHeader ipsPageHeader--blogs-index">
<div class="ipsPageHeader__row">
<div data-ips-hook="header" class='ipsPageHeader__primary'>
<h1 data-ips-hook="title" class='ipsPageHeader__title'>{lang="blogs"}</h1>
</div>
{{if \count( $blogs ) || \IPS\blog\Blog::canCreate()}}
<div data-ips-hook="buttons">
{template="indexButtons" group="browse" params="$blogs, $viewMode, FALSE, $category"}
</div>
{{endif}}
</div>
</header>
{{if \count( $featured )}}
{template="featuredEntries" group="browse" params="$featured"}
{{endif}}
{{if \count( $blogs ) || \IPS\blog\Blog::canCreate()}}
<div class="ipsResponsive_showPhone">
{template="indexButtons" group="browse" params="$blogs, $viewMode, TRUE, $category"}
</div>
{{endif}}
<div class='ipsBox ipsPull'>
{$table|raw}
</div>]]></template>
<template template_group="browse" template_name="indexButtons" template_data="$blogs=array(), $viewMode=NULL, $forMobile=FALSE, $category=NULL" template_location="front" template_app="blog"><![CDATA[{{if \count( $blogs ) || \IPS\blog\Blog::canCreate()}}
<ul class='ipsButtons ipsButtons--main {{if !$forMobile}}ipsResponsive_hidePhone{{endif}}'>
{{if \count( $blogs )}}
{{if \count( $blogs ) > 1}}
<li>
<a href='{url="app=blog&module=blogs&controller=browse&page=1&filter=my_blogs&sortby=blog_last_edate" seoTemplate="blogs"}' data-ipsMenu id='elMyBlogs' class='ipsButton ipsButton--text'><span>{lang="my_blogs"}</span><i class='fa-solid fa-caret-down'></i></a>
<ul class='ipsMenu ipsMenu_normal ipsHide' id='elMyBlogs_menu'>
{{foreach $blogs as $blog}}
<li class='ipsMenu_item'>
<a href='{$blog->url()}'>{$blog->_title}</a>
</li>
{{endforeach}}
</ul>
</li>
{{endif}}
{{if \IPS\blog\Blog::canCreate()}}
<li>
<a href='{url="app=blog&module=blogs&controller=create" seoTemplate="blog_create"}' data-ipsDialog data-ipsDialog-title='{lang="create_blog"}' class='ipsButton ipsButton--text'><span>{lang="create_new_blog"}</span></a>
</li>
{{endif}}
{{elseif \IPS\blog\Blog::canCreate()}}
<li>
<a class="ipsButton ipsButton--primary" href="{url="app=blog&module=blogs&controller=create" seoTemplate="blog_create"}"><span>{lang="create_blog"}</span></a>
</li>
{{endif}}
{{if \count( $blogs ) AND \IPS\blog\Blog::canOnAny( 'add' )}}
<li>
{{if \count( $blogs ) > 1}}
<a class="ipsButton ipsButton--primary" href="#elCreateEntry_menu" data-ipsMenu id='elCreateEntry'><span>{lang="add_entry"}</span><i class='fa-solid fa-caret-down'></i></a>
<ul class='ipsMenu ipsMenu_normal ipsHide' id='elCreateEntry_menu'>
<li class='ipsMenu_title'>{lang="add_entry_to"}</li>
{{foreach $blogs as $blog}}
{{if $blog->disabled != 1}}
<li class='ipsMenu_item'>
<a href='{url="app=blog&module=blogs&controller=submit&id={$blog->id}" seoTemplate="blog_submit"}'>{$blog->_title}</a>
</li>
{{endif}}
{{endforeach}}
</ul>
{{else}}
{{foreach $blogs as $blog}}
{{if $blog->disabled != 1}}
<a class="ipsButton ipsButton--primary" href="{url="app=blog&module=blogs&controller=submit&id={$blog->id}" seoTemplate="blog_submit"}" rel='nofollow noindex'>{lang="add_entry"}</a>
{{endif}}
{{endforeach}}
{{endif}}
</li>
{{endif}}
</ul>
{{endif}}]]></template>
<template template_group="browse" template_name="indexGrid" template_data="$entries, $featured, $blogs, $pagination, $viewMode, $category" template_location="front" template_app="blog"><![CDATA[<header class="ipsPageHeader ipsPageHeader--blogs-grid">
<div class="ipsPageHeader__row">
<div data-ips-hook="header" class='ipsPageHeader__primary'>
<h1 data-ips-hook="title" class='ipsPageHeader__title'>{lang="blogs"}</h1>
</div>
{{if \count( $blogs ) || \IPS\blog\Blog::canCreate()}}
<div data-ips-hook="buttons">
{template="indexButtons" group="browse" params="$blogs, $viewMode, FALSE, $category"}
</div>
{{endif}}
</div>
</header>
{{if \count( $featured )}}
{template="featuredEntries" group="browse" params="$featured"}
{{endif}}
{{if \count( $blogs ) || \IPS\blog\Blog::canCreate()}}
<div class="ipsResponsive_showPhone">
{template="indexButtons" group="browse" params="$blogs, $viewMode, TRUE, $category"}
</div>
{{endif}}
<section class='ipsBox ipsPull'>
{{if \count($entries)}}
<i-data>
<div class="ipsData ipsData--grid ipsData--blog-entries">
{{foreach $entries as $id => $entry}}
{template="indexGridEntry" app="blog" location="front" group="browse" params="$entry, true"}
{{endforeach}}
</div>
</i-data>
{{else}}
<p class="ipsEmptyMessage">{lang="no_entries_yet"}</p>
{{endif}}
</section>
{{if $pagination['pages'] > 1}}
{template="pagination" app="core" location="global" group="global" params="$pagination['url'], $pagination['pages'], $pagination['page'], $pagination['perpage'], TRUE, 'page'"}
{{endif}}]]></template>
<template template_group="browse" template_name="indexGridEntry" template_data="$entry, $primary=false, $table=false" template_location="front" template_app="blog"><![CDATA[<article class='ipsData__item {$entry->ui( 'css' )} {{if $entry->hidden() OR $entry->status === 'draft'}}ipsModerated{{endif}}' {{if $entry->unread()}}data-ips-unread{{else}}data-ips-read{{endif}} {$entry->ui( 'dataAttributes' )}>
<a href='{$entry->url()}' class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>{lang="read_more_about" sprintf="$entry->name"}</span></a>
<a href="{$entry->url()}" title='{lang="read_more_about" sprintf="$entry->name"}' class='ipsData__image'>
{{if $entry->cover_photo}}
<img src='{file="$entry->cover_photo" extension="blog_Entries"}' alt='' loading='lazy'>
{{else}}
<div class="ipsFallbackImage" aria-hidden="true"></div>
{{endif}}
</a>
<div class='ipsData__content'>
<div class='ipsData__main'>
{{if !\IPS\Request::i()->id}}
<div class='i-color_soft i-link-color_inherit i-font-weight_600'><a href="{$entry->container()->url()}">{$entry->container()->_title}</a></div>
{{elseif $entry->category_id}}
<div class="i-color_soft i-link-color_inherit i-font-weight_600"><a href="{$entry->category()->url()}">{$entry->category()->name}</a></div>
{{endif}}
<div class='ipsData__title'>
{{if $entry->prefix()}}
{template="prefix" group="global" app="core" params="$entry->prefix( TRUE ), $entry->prefix()"}
{{endif}}
<div class='ipsBadges'>
{{foreach $entry->badges() as $badge}}{$badge|raw}{{endforeach}}
</div>
{{if $entry->unread()}}
<a href='{$entry->url('getNewComment')}' class='ipsIndicator' data-ipsTooltip title="{lang="unread_blog"}"><span class="ipsInvisible">{lang="unread_blog"}</span></a>
{{endif}}
<h3>
<a href="{$entry->url()}" title="{lang="read_more_about" sprintf="$entry->name"}" data-role="newsTitle">{wordbreak="$entry->name"}</a>
</h3>
</div>
<section class='ipsData__desc'>{$entry->truncated(TRUE)|raw}</section>
</div>
<div class="ipsData__extra">
<ul class='ipsData__stats'>
{{foreach $entry->stats(TRUE) as $k => $v}}
<li data-stat-type="{$k}">
{{if $k === "comments"}}
<span><a href='{$entry->url()}#comments' title='{lang="view_comments"}'>{number="$v"} {lang="blog_{$k}" pluralize="$v"}</a></span>
{{else}}
<span>{number="$v"} {lang="blog_{$k}" pluralize="$v"}</span>
{{endif}}
</li>
{{endforeach}}
</ul>
<div class='ipsData__last'>
{template="userPhoto" app="core" params="$entry->author(), 'fluid'" group="global"}
<ul class='ipsData__last-text'>
<li class='ipsData__last-primary'>
{{if $entry->category_id}}
{lang="entry_name_with_cat" htmlsprintf="$entry->author()->link(),$entry->category()->link()"}
{{else}}
<a href="{$entry->author()->url()}">{$entry->author()->name}</a>
{{endif}}
</li>
<li class='ipsData__last-secondary'>{datetime="$entry->date"}</li>
</ul>
</div>
</div>
{{if $table and $table->canModerate()}}
{{$idField = $entry::$databaseColumnId;}}
<input type='checkbox' data-role='moderation' name="moderate[{$entry->$idField}]" data-actions="{expression="implode( ' ', $table->multimodActions( $entry ) )"}" data-state='{{if $entry->tableStates()}}{$entry->tableStates()}{{endif}}' class='ipsInput ipsInput--toggle'>
{{endif}}
</div>
</article>]]></template>
<template template_group="browse" template_name="rows" template_data="$table, $headers, $blogs" template_location="front" template_app="blog"><![CDATA[{{if \count( $blogs )}}
{{foreach $blogs as $blog}}
{{$coverPhoto = $blog->coverPhoto();}}
<li class='ipsData__blog-item ipsColumns ipsColumns--lines'>
<div class='ipsColumns__secondary i-basis_380 i-background_2 i-text-align_center cBlogInfo {$blog->ui( 'css' )}' {$blog->ui( 'dataAttributes' )}>
<a href='{$blog->url()}' class='ipsCoverPhoto ipsCoverPhoto--blog-listing' data-url="{$blog->url()->csrf()}" style='--offset:{$coverPhoto->offset}' aria-hidden="true" tabindex="-1">
{{if $coverPhoto->file}}
<div class='ipsCoverPhoto__container'>
<img src='{$coverPhoto->file->url}' class='ipsCoverPhoto__image' alt='' loading='lazy'>
</div>
{{else}}
<div class='ipsCoverPhoto__container'>
<div class="ipsFallbackImage" style="--i-empty-image-random--ba-co: {$blog->coverPhotoBackgroundColor()};"></div>
</div>
{{endif}}
</a>
<div class='i-padding_3'>
<h3 class='ipsTitle ipsTitle--h3'>
<a href='{$blog->url()}' title='{lang="go_to_blog" sprintf="$blog->_title"}'>{$blog->_title}</a>
</h3>
<div class='i-font-weight_500 i-color_soft i-margin-top_1'>
{{if $blog->owner() instanceof \IPS\Member}}
{lang="blog_by" htmlsprintf="$blog->owner()->link(), $blog->category()->link()"}
{{elseif $club = $blog->club()}}
<i class='fa-solid fa-users'></i> {lang="club_blog_for" sprintf="$club->name"}
{{else}}
<i class='fa-solid fa-users'></i> {lang="group_blog_by" htmlsprintf="\IPS\Member::loggedIn()->language()->addToStack( 'blogs_groupblog_name_' . $blog->id ), $blog->category()->link()"}
{{endif}}
</div>
<ul class='ipsList ipsList--stacked ipsList--fill i-margin-top_3'>
<li><span class="ipsList__value">{$blog->_items}</span> <span class="ipsList__label">{lang="blog_entries" pluralize="$blog->_items"}</span></li>
<li><span class="ipsList__value">{$blog->_comments}</span> <span class="ipsList__label">{lang="blog_comments" pluralize="$blog->_comments"}</span></li>
<li><span class="ipsList__value">{$blog->num_views}</span> <span class="ipsList__label">{lang="blog_views" pluralize="$blog->num_views"}</span></li>
</ul>
{{if $blog->description}}
<div class='ipsTruncate_x ipsHide' style='--line-clamp: 9'>{template="richText" group="global" app="core" location="global" params="$blog->description"}</div>
{{endif}}
</div>
</div>
<div class='ipsColumns__primary i-padding_3'>
{{if $blog->latestEntry()}}
<div class='i-flex'>
<div class='i-flex_11'>
<div class='ipsTitle ipsTitle--h4'>
{$blog->latestEntry()->caption}
<div class='ipsBadges'>
{{foreach $blog->latestEntry()->badges() as $badge}}{$badge|raw}{{endforeach}}
</div>
<h3>
<a href='{$blog->latestEntry()->url( "getPrefComment" )}' title='{lang="view_this_entry" sprintf="$blog->latestEntry()->name"}'>
{{if $blog->latestEntry()->unread()}}
<span class='ipsIndicator' data-ipsTooltip title="{lang="unread_blog"}"></span>
{{endif}}
{$blog->latestEntry()->name}
</a>
</h3>
</div>
<div class='ipsPhotoPanel ipsPhotoPanel--small i-margin-top_1 i-margin-bottom_2'>
{template="userPhoto" app="core" params="$blog->latestEntry()->author(), ''" group="global"}
<div class='ipsPhotoPanel__text'>
<p class='i-color_soft i-link-color_inherit'>{lang="latest_entry_by" htmlsprintf="trim( $blog->latestEntry()->author()->link() )"} {datetime="$blog->latestEntry()->date"}</p>
</div>
</div>
</div>
{{if $table->canModerate()}}
<input type='checkbox' data-role='moderation' name="moderate[{$blog->id}]" data-actions="{expression="implode( ' ', $table->multimodActions( $blog ) )"}" data-state='' class='ipsInput ipsInput--toggle'>
{{endif}}
</div>
<div class='ipsRichText cBlogInfo_content' data-controller="core.front.core.lightboxedImages">
{$blog->latestEntry()->content()|raw}
</div>
{{else}}
<p class='ipsEmptyMessage'>{lang="no_entries_yet"}</p>
{{endif}}
{{$recentEntries = iterator_to_array( $blog->_recentEntries );}}
{{if \count( $recentEntries ) > 1}}
<h4 class='ipsTitle ipsTitle--h5 ipsTitle--margin i-margin-top_4'>{lang="recent_entries"}</h4>
<ul class='ipsBlogs__blog-listing-entries'>
{{foreach $recentEntries as $entry}}
<li>
{template="userPhoto" app="core" params="$entry->author(), 'fluid'" group="global"}
<div class='i-flex_11 i-flex i-gap_2 i-row-gap_0 i-flex-wrap_wrap'>
<h4 class='{{if $entry->unread()}}font-weight_700{{else}}i-font-weight_500{{endif}} i-flex_11'>
{{if $entry->unread()}}
<a href='{$entry->url()}' title='{lang="view_this_entry" sprintf="$entry->name"}' class='ipsIndicator'></a>
{{endif}}
<a href='{$entry->url( "getPrefComment" )}' title='{lang="view_this_entry" sprintf="$entry->name"}'>
{$entry->name}
</a>
</h4>
{{if !( $blog->owner() instanceof \IPS\Member )}}
<p class='i-font-size_-1 i-color_soft'>{lang="byline" htmlsprintf="trim( $blog->latestEntry()->author()->link() )"} {datetime="$blog->latestEntry()->date"}</p>
{{endif}}
</div>
</li>
{{endforeach}}
</ul>
{{endif}}
</div>
</li>
{{endforeach}}
{{else}}
<li><p class="ipsEmptyMessage">{lang="no_results"}</p></li>
{{endif}}]]></template>
<template template_group="dashboard" template_name="overview" template_data="$data" template_location="admin" template_app="blog"><![CDATA[<i-data>
<ul class="ipsData ipsData--table ipsData--dashboard-overview">
{{foreach $data as $k => $v}}
<li class="ipsData__item">
<span class="i-basis_180">
<strong>{lang="$k"}</strong>
</span>
<span class="">
{$v}
</span>
</li>
{{endforeach}}
</ul>
</i-data>]]></template>
<template template_group="global" template_name="blogCategoryLink" template_data="$category" template_location="front" template_app="blog"><![CDATA[<a href="{$category->url()}">{$category->_title}</a>]]></template>
<template template_group="global" template_name="categoryLink" template_data="$category" template_location="front" template_app="blog"><![CDATA[<a href="{$category->url()}" class="i-font-weight_600">{$category->name}</a>]]></template>
<template template_group="global" template_name="commentTableHeader" template_data="$comment, $entry" template_location="front" template_app="blog"><![CDATA[<!-- This template is used when viewing Profile > See my activity > Blog Entries -->
<div class='i-flex i-gap_2'>
<div class='i-flex_00 i-basis_40'>
{template="userPhoto" group="global" app="core" params="$entry->author()"}
</div>
<div class='i-flex_11'>
<h3 class='ipsTitle ipsTitle--h3'>
<a href='{$entry->url( "getPrefComment" )}' title='{lang="view_this_entry" sprintf="$entry->mapped('title')"}'>
{$entry->mapped('title')}
</a>
</h3>
<p class='i-link-color_inherit'>{lang="in"} <a href='{$entry->container()->url()}'>{$entry->container()->_title}</a></p>
<p class='i-color_soft i-link-color_inherit'>
{{if $entry->container()->owner() instanceof \IPS\Member}}
{lang="blog_by" htmlsprintf="$entry->container()->owner()->link(), $entry->container()->category()->link()"}
{{elseif $club = $entry->container()->club()}}
<i class='fa-solid fa-users'></i> {lang="club_blog_for" sprintf="$club->name"}
{{else}}
<i class='fa-solid fa-users'></i> {lang="group_blog_by" htmlsprintf="\IPS\Member::loggedIn()->language()->addToStack( 'blogs_groupblog_name_' . $entry->container()->id ), $entry->container()->category()->link()"}
{{endif}}
</p>
</div>
</div>]]></template>
<template template_group="global" template_name="embedBlogs" template_data="$blog, $url" template_location="front" template_app="blog"><![CDATA[<div class='ipsRichEmbed ipsRichEmbed--blog'>
<div class='ipsRichEmbed_header'>
{{if !( $blog->owner() instanceof \IPS\Member ) and \count( $blog->contributors() )}}
<div>
<p class='i-font-weight_600 i-color_hard ipsTruncate_1'>
<a href='{$blog->url()}'>{$blog->_title}</a>
</p>
{{if $blog->latestEntry()}}
<p class='i-color_soft ipsTruncate_1 i-link-color_inherit'>
<a href='{$blog->url()}'>{lang="blog_last_entry_date" htmlsprintf="\IPS\DateTime::ts( $blog->latestEntry()->mapped('date') )->html( false )"}</a>
</p>
{{endif}}
</div>
{{else}}
<div class='ipsPhotoPanel ipsPhotoPanel--tiny'>
{template="userPhoto" app="core" group="global" params="$blog->owner(), 'tiny'"}
<div class='ipsPhotoPanel__text'>
<p class='ipsPhotoPanel__primary ipsTruncate_1'>
<a href='{$blog->url()}'>{lang="x_created_blog" sprintf="$blog->owner()->name"}</a>
</p>
{{if $blog->latestEntry()}}
<p class='ipsPhotoPanel__secondary ipsTruncate_1'>
<a href='{$blog->url()}'>{lang="blog_last_entry_date" htmlsprintf="\IPS\DateTime::ts( $blog->latestEntry()->mapped('date') )->html( false )"}</a>
</p>
{{endif}}
</div>
</div>
{{endif}}
<a href='{$blog->url()}' class='ipsRichEmbed_openItem'><i class='fa-solid fa-arrow-up-right-from-square'></i></a>
</div>
{{if $blog->coverPhoto() && $blog->coverPhoto()->file}}
{{$photo = $blog->coverPhoto()->file;}}
<a href='{$blog->url()}' class='ipsRichEmbed_masthead' title='{$blog->_title}'>
<img src='{$photo->url}' alt='{$blog->_title}' loading="lazy">
</a>
{{endif}}
<div class='ipsRichEmbed__content'>
<ul class='ipsList ipsList--inline'>
<li>{lang="num_blog_entries" pluralize="$blog->_items"}</li>
<li>{lang="num_blog_comments" pluralize="$blog->_comments"}</li>
<li>{lang="num_blog_views" pluralize="$blog->num_views"}</li>
</ul>
{{if $blog->description}}
<div class='ipsRichEmbed__snippet'>
{$blog->description|raw}
</div>
{{endif}}
{{if $blog->latestEntry()}}
<hr class='ipsHr'>
<p class='i-margin-top_2'>
<span class='i-color_soft'>{lang="latest_entry"}:</span> <a href='{$blog->latestEntry()->url( "getPrefComment" )}' title="{$blog->latestEntry()->mapped('title')}">{$blog->latestEntry()->mapped('title')}</a>
</p>
{{endif}}
</div>
{{if !( $blog->owner() instanceof \IPS\Member ) and \count( $blog->contributors() )}}
<div class='ipsRichEmbed_moreInfo'>
<h3 class='ipsMinorTitle ipsTruncate_1 i-link-color_inherit'>{lang="num_contributors_to_this" pluralize="\count( $blog->contributors() )"}</h3>
<ul class='ipsList ipsList--inline i-gap_0 i-margin-top_2'>
{{foreach $blog->contributors() as $idx => $contributor}}
<li>
{template="userPhoto" group="global" app="core" params="$contributor['member'], 'mini'"}<span class='ipsNotification'>{$contributor['contributions']}</span>
</li>
{{endforeach}}
</ul>
</div>
{{endif}}
</div>]]></template>
<template template_group="global" template_name="embedEntry" template_data="$entry, $blog, $url" template_location="front" template_app="blog"><![CDATA[
<div class='ipsRichEmbed ipsRichEmbed--blog-entry'>
{template="embedHeader" group="embed" app="core" params="$entry, $entry->mapped('title'), $entry->mapped('date'), $url"}
{{if $entry->coverPhoto() && $entry->coverPhoto()->file}}
{{$photo = $entry->coverPhoto()->file;}}
<a href='{$entry->url( "getPrefComment" )}' title='{$entry->_title}' class='ipsRichEmbed_masthead'>
<img src='{$photo->url}' alt='{$entry->_title}' loading="lazy">
</a>
{{elseif $blog->coverPhoto() && $blog->coverPhoto()->file}}
{{$photo = $blog->coverPhoto()->file;}}
<a href='{$blog->url()}' title='{$blog->_title}' class='ipsRichEmbed_masthead'>
<img src='{$photo->url}' alt='{$blog->_title}' loading="lazy">
</a>
{{endif}}
<div class='ipsRichEmbed__content'>
<div>
{template="embedEntryItemSnippet" group="global" app="blog" params="$blog"}
<div class='ipsRichEmbed__snippet'>
{$entry->truncated(TRUE)|raw}
</div>
</div>
{template="embedItemStats" group="embed" app="core" params="$entry"}
</div>
</div>]]></template>
<template template_group="global" template_name="embedEntryComment" template_data="$comment, $entry, $blog, $url" template_location="front" template_app="blog"><![CDATA[
<div class='ipsRichEmbed ipsRichEmbed--blog-comment'>
{template="embedHeader" group="embed" app="core" params="$comment, $entry->mapped('title'), $comment->mapped('date'), $url"}
<div class='ipsRichEmbed__content'>
<div class='ipsRichEmbed_originalItem'>
<div>
{{if $entry->coverPhoto() && $entry->coverPhoto()->file}}
{{$photo = $entry->coverPhoto()->file;}}
<a href='{$entry->url( "getPrefComment" )}' title='{$entry->_title}' class='ipsRichEmbed_masthead'>
<img src='{$photo->url}' alt='{$entry->_title}' loading='lazy'>
</a>
{{elseif $blog->coverPhoto() && $blog->coverPhoto()->file}}
{{$photo = $blog->coverPhoto()->file;}}
<a href='{$blog->url()}' title='{$blog->_title}' class='ipsRichEmbed_masthead'>
<img src='{$photo->url}' alt='{$blog->_title}' class='ipsHide'>
</a>
{{endif}}
<div class='ipsRichEmbed__content'>
{template="embedOriginalItem" group="embed" app="core" params="$entry, TRUE, \IPS\Theme::i()->getTemplate( 'global', 'blog' )->embedEntryItemSnippet( $blog )"}
</div>
</div>
</div>
<div class='ipsRichEmbed__snippet'>
{$comment->truncated(TRUE)|raw}
</div>
{{if settings.reputation_enabled AND \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and \count( $comment->reactions() )}}
<ul class='ipsList ipsList--inline i-margin-top_2'>
<li>
{template="reactionOverview" app="core" group="global" params="$comment, TRUE, 'small'"}
</li>
</ul>
{{endif}}
</div>
</div>]]></template>
<template template_group="global" template_name="embedEntryItemSnippet" template_data="$blog" template_location="front" template_app="blog"><![CDATA[
<p class='i-font-weight_600 i-color_hard'>
{lang="from_the_blog"} "{$blog->_title}"
</p>]]></template>
<template template_group="global" template_name="profileBlogRows" template_data="$table, $headers, $blogs, $showSmall" template_location="front" template_app="blog"><![CDATA[{{foreach $blogs AS $blog}}
<li class='ipsInnerBox ipsInnerBox--padding {$blog->ui( 'css' )}' {$blog->ui( 'dataAttributes' )}>
<div class='ipsColumns i-align-items_center'>
<div class='ipsColumns__primary'>
<h3 class='ipsTitle ipsTitle--h4'>
<a href='{$blog->url()}'>{$blog->_title}</a> {{if $showSmall && !($blog->owner() instanceof \IPS\Member)}} <span class='i-color_soft' data-ipsTooltip title='{lang="this_is_group"}'><i class='fa-solid fa-users'></i> {lang="byline_nodate" sprintf="\IPS\Member::loggedIn()->language()->addToStack( 'blogs_groupblog_name_' . $blog->id )"}</span>{{endif}}
</h3>
</div>
<div class='ipsColumns__secondary'>
<ul class='ipsList ipsList--inline ipsList--label-value'>
<li><span class='ipsList__value'>{$blog->_items}</span><span class='ipsList__label'>{lang="blog_entries" pluralize="$blog->_items"}</span></li>
<li><span class='ipsList__value'>{$blog->_comments}</span><span class='ipsList__label'>{lang="blog_comments" pluralize="$blog->_comments"}</span></li>
<li><span class='ipsList__value'>{$blog->num_views}</span><span class='ipsList__label'>{lang="blog_views" pluralize="$blog->num_views"}</span></li>
</ul>
</div>
</div>
{{if $blog->latestEntry()}}
<div class='i-margin-top_2 i-border-top_1 i-padding-top_2'>
<a href='{$blog->latestEntry()->url( "getPrefComment" )}' title='{lang="view_this_entry" sprintf="$blog->latestEntry()->name"}' class='i-font-weight_600 i-color_hard'>
{{if $blog->latestEntry()->unread()}}
<span class='ipsIndicator' data-ipsTooltip title="{lang="unread_blog"}"></span>
{{endif}}
{$blog->latestEntry()->name}
</a>
<ul class='ipsList ipsList--inline i-margin-top_1'>
<li>{datetime="$blog->latestEntry()->date"}</li>
{{if \IPS\Settings::i()->blog_enable_rating}}
<li>{template="rating" app="core" params="'small', $blog->latestEntry()->averageRating(), 5, $blog->latestEntry()->memberRating()" group="global"}</li>
{{endif}}
{{if !$blog->latestEntry()->num_comments}}
<li class='i-color_soft'>{lang="num_comments" pluralize="$blog->latestEntry()->num_comments"}</li>
{{else}}
<li><a href='{$blog->latestEntry()->url( "getPrefComment" )}#comments' title='{lang="see_comments_on_entry"}'>{lang="num_comments" pluralize="$blog->latestEntry()->num_comments"}</a></li>
{{endif}}
</ul>
</div>
{{endif}}
</li>
{{endforeach}}]]></template>
<template template_group="global" template_name="profileBlogTable" template_data="$table, $headers, $rows, $quickSearch" template_location="front" template_app="blog"><![CDATA[<div class='i-padding_3'>
{{if isset( $rows['owner'] ) AND \count( $rows['owner'] )}}
<h2 class='ipsTitle ipsTitle--h3 ipsTitle--margin'>{lang="user_blogs"}</h2>
<ol class='i-grid i-gap_2 i-margin-bottom_3' id='elTable_{$table->uniqueId}_owner'>
{template="$table->rowsTemplate[1]" params="$table, $headers, $rows['owner'], FALSE" object="$table->rowsTemplate[0]"}
</ol>
{{endif}}
{{if isset( $rows['contributor'] ) AND \count( $rows['contributor'] )}}
{{if isset( $rows['owner'] ) AND \count( $rows['owner'] )}}
<h3 class='ipsTitle ipsTitle--h3 ipsTitle--margin'>{lang="also_contributes"}</h3>
{{else}}
<h2 class='ipsTitle ipsTitle--h3 ipsTitle--margin'>{lang="contributes_to"}</h2>
{{endif}}
<ol class='i-grid i-gap_2' id='elTable_{$table->uniqueId}_contributor'>
{template="$table->rowsTemplate[1]" params="$table, $headers, $rows['contributor'], TRUE" object="$table->rowsTemplate[0]"}
</ol>
{{endif}}
</div>]]></template>
<template template_group="global" template_name="rows" template_data="$table, $headers, $entries" template_location="front" template_app="blog"><![CDATA[<!-- This template is used when viewing Profile > See my activity > Blog Entries -->
{{foreach $entries as $idx => $entry}}
<li class='ipsData__item {{if $entry->hidden()}}ipsModerated{{endif}}'>
{template="blogViewMedium" group="view" app="blog" params="$entry, $table, FALSE"}
</li>
{{endforeach}}]]></template>
<template template_group="livesearch" template_name="blog" template_data="$blog" template_location="admin" template_app="blog"><![CDATA[<li data-role='result'>
<a href='{url="app=blog&module=blogs&controller=blogs&subnode=1&do=form&id="}{$blog->id}'>{$blog->_title}</a>
</li>
]]></template>
<template template_group="submit" template_name="blogSelector" template_data="$form" template_location="front" template_app="blog"><![CDATA[<div class='i-padding_3'>
{$form|raw}
</div>]]></template>
<template template_group="submit" template_name="createBlog" template_data="$form" template_location="front" template_app="blog"><![CDATA[
{template="pageHeader" group="global" app="core" params="\IPS\Member::loggedIn()->language()->get('create_blog')"}
<div class='ipsBox'>
{$form|raw}
</div>]]></template>
<template template_group="submit" template_name="submit" template_data="$form, $blog=NULL" template_location="front" template_app="blog"><![CDATA[
{{if $blog and $club = $blog->club()}}
{{if settings.clubs and settings.clubs_header == 'full'}}
{template="header" app="core" group="clubs" params="$club, $blog"}
{{endif}}
<div id='elClubContainer'>
{{endif}}
{template="pageHeader" if="!\IPS\Request::i()->isAjax()" group="global" app="core" params="\IPS\Member::loggedIn()->language()->addToStack( 'create_blog_entry' )"}
{{$guestPostBeforeRegister = ( !\IPS\Member::loggedIn()->member_id ) ? !$blog->can( 'add', \IPS\Member::loggedIn(), FALSE ) : FALSE;}}
{{$modQueued = \IPS\blog\Entry::moderateNewItems( \IPS\Member::loggedIn(), $blog, $guestPostBeforeRegister );}}
{{if $guestPostBeforeRegister or $modQueued}}
{template="postingInformation" app="core" group="forms" params="$guestPostBeforeRegister, $modQueued, TRUE"}
{{endif}}
{$form|raw}
{{if $blog and $blog->club()}}
</div>
{{endif}}]]></template>
<template template_group="submit" template_name="submitFormTemplate" template_data="$id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class=''" template_location="front" template_app="blog"><![CDATA[<section class='ipsBox'>
<form accept-charset='utf-8' class="ipsForm ipsForm--blog-submit {$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}}
{{if \count( $elements ) > 1}}
<h2 class='ipsBox__header'>{lang="entry_information"}</h2>
<div class='ipsTabs ipsJS_show' id='tabs_{$id}' data-ipsTabBar data-ipsTabBar-contentArea='#ipsTabs_content_{$id}'>
<ul role='tablist'>
{{foreach $elements as $name => $content}}
<li>
<a href='#ipsTabs_tabs_{$id}_{$id}_tab_{$name}_panel' id='{$id}_tab_{$name}' class="ipsTabs__tab" role="tab">
{lang="$name"}
</a>
</li>
{{endforeach}}
</ul>
{template="tabScrollers" app="core" group="global" location="global"}
</div>
<div id='ipsTabs_content_{$id}' class='ipsTabs__panels'>
{{foreach $elements as $name => $contents}}
<div id='ipsTabs_tabs_{$id}_{$id}_tab_{$name}_panel' class="ipsTabs__panel ipsTabs__panel--{$name}" aria-labelledby="{$id}_tab_{$name}" aria-hidden="false">
<ul class='ipsForm ipsForm--blog-submit-content ipsForm--vertical'>
{{foreach $contents as $inputName => $input}}
{$input|raw}
{{endforeach}}
</ul>
</div>
{{endforeach}}
</div>
{{else}}
<ul class='ipsForm ipsForm--blog-submit-content ipsForm--vertical'>
{{foreach $elements as $collection}}
{{foreach $collection as $inputName => $input}}
{$input|raw}
{{endforeach}}
{{endforeach}}
</ul>
{{endif}}
<div class='ipsSubmitRow'>
<button type='submit' class='ipsButton ipsButton--primary'>{lang="entry_submit"}</button>
</div>
</form>
</section>]]></template>
<template template_group="view" template_name="blogHeader" template_data="$blog, $showCover=true" template_location="front" template_app="blog"><![CDATA[
{{if $showCover}}
<div id='elBlogHeader' class='ipsPageHeader ipsBox ipsPull'>
{$blog->coverPhoto()|raw}
{{if !( $blog->owner() instanceof \IPS\Member ) and \count( $blog->contributors() ) AND $showCover}}
<div class='cBlogContributors ipsResponsive_hidePhone'>
<h2 class='i-font-weight_600 i-color_soft i-margin-bottom_1'>{lang="contributors_to_this"}</h2>
<ul class='cBlogView_contributors ipsGrid i-basis_40 i-gap_2'>
{{foreach $blog->contributors() as $idx => $contributor}}
<li class='i-position_relative'>
<span data-ipsTooltip title='{$contributor['member']->name}'>
{template="userPhoto" group="global" app="core" params="$contributor['member'], 'fluid'"}<span class='ipsNotification'>{$contributor['contributions']}</span>
</span>
</li>
{{endforeach}}
</ul>
</div>
{{endif}}
</div>
{{else}}
<div id='elBlogHeaderStats' class='ipsBox ipsPull ipsCoverPhotoMeta'>
{{if ( $blog->owner() instanceof \IPS\Member ) && \IPS\Request::i()->module == 'view'}}
<div class='ipsCoverPhoto__avatar'>
{template="userPhoto" group="global" app="core" params="$blog->owner(), 'fluid'"}
</div>
{{endif}}
<div class='ipsCoverPhoto__titles'>
<div class='ipsCoverPhoto__title'>
<h1>
<a href='{$blog->url()}' title='{lang="go_to_blog" sprintf="$blog->_title"}'>{$blog->_title}</a>
</h1>
{{if $blog->pinned}}
<span class="ipsBadge ipsBadge--icon ipsBadge--positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa-solid fa-thumbtack'></i></span>
{{endif}}
</div>
<div class='ipsCoverPhoto__subTitle'>
{{if $blog->owner() instanceof \IPS\Member}}
{lang="blog_by" htmlsprintf="$blog->owner()->link(), $blog->category()->link()"}
{{elseif $club = $blog->club()}}
<i class='fa-solid fa-users'></i> {lang="club_blog_for" sprintf="$club->name"}
{{else}}
<i class='fa-solid fa-users'></i> {lang="group_blog_by" htmlsprintf="\IPS\Member::loggedIn()->language()->addToStack( 'blogs_groupblog_name_' . $blog->id ), $blog->category()->link()"}
{{endif}}
</div>
</div>
<ul class='ipsCoverPhoto__stats'>
<li>
<h4 class='ipsCoverPhoto__statTitle'>{lang="blog_entries" pluralize="$blog->_items"}</h4>
<span class='ipsCoverPhoto__statValue'>{number="$blog->_items"}</span>
</li>
<li>
<h4 class='ipsCoverPhoto__statTitle'>{lang="blog_comments" pluralize="$blog->_comments"}</h4>
<span class='ipsCoverPhoto__statValue'>{number="$blog->_comments"}</span>
</li>
<li id='elBlogViews'>
<h4 class='ipsCoverPhoto__statTitle'>{lang="blog_views" pluralize="$blog->num_views"}</h4>
{{if \IPS\Application::appIsEnabled('cloud') and \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
{{$url = "app=cloud&module=analytics&controller=analytics&contentClass=" . get_class($blog) . "&contentId=" . $blog->id;}}
<span class='ipsCoverPhoto__statValue i-link-color_inherit'><a href='{url="$url"}' data-ipsDialog data-ipsDialog-title='{lang="analytics"}' data-ipsTooltip title='{lang="analytics"}'>{number="$blog->num_views"}</a></span>
{{else}}
<span class='ipsCoverPhoto__statValue'>{number="$blog->num_views"}</span>
{{endif}}
</li>
</ul>
<div class='ipsCoverPhoto__buttons'>
{template="follow" app="core" group="global" params="'blog', 'blog', $blog->_id, \IPS\blog\Entry::containerFollowerCount( $blog )"}
</div>
</div>
{{endif}}]]></template>
<template template_group="view" template_name="blogSidebar" template_data="$sidebar=NULL" template_location="front" template_app="blog"><![CDATA[<div class='ipsWidget' id='elBlogSidebarBox'>
<h2 class='ipsWidget__header'>{lang="blog_sidebar_title"}</h2>
<div class='ipsWidget__content ipsWidget__padding'>
<div class="ipsRichText">
{$sidebar|raw}
</div>
</div>
</div>]]></template>
<template template_group="view" template_name="blogTable" template_data="$table, $headers, $rows, $quickSearch" template_location="front" template_app="blog"><![CDATA[<section class='ipsBox ipsPull' data-baseurl='{$table->baseUrl}' data-resort='{$table->resortKey}' data-controller='core.global.core.table{{if $table->canModerate()}},core.front.core.moderation{{endif}}' id='elTable_{$table->uniqueId}'>
{{if $table->title}}
<h2 class='ipsBox__header' hidden>{lang="$table->title"}</h2>
{{endif}}
{{if $table->canModerate() OR (isset( $table->sortOptions ) and !empty( $table->sortOptions )) OR !empty( $table->filters ) OR $table->pages > 1 OR $table->advancedSearch}}
<div class="ipsButtonBar ipsButtonBar--top">
{{if $table->pages > 1}}
<div class="ipsButtonBar__pagination" data-role="tablePagination">
{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit, TRUE, $table->getPaginationKey()"}
</div>
{{endif}}
<div class='ipsButtonBar__end'>
<ul class='ipsDataFilters'>
{{if ( isset( $table->sortOptions ) and !empty( $table->sortOptions ) ) OR $table->advancedSearch}}
<li>
{{if isset($table->sortOptions) }}
<a href="#elSortByMenu_menu" class='ipsDataFilters__button' id="elSortByMenu_{$table->uniqueId}" rel="nofollow" data-role="sortButton" data-ipsMenu data-ipsMenu-activeClass="ipsDataFilters__button--active" data-ipsMenu-selectable="radio"><span>{lang="sort_by"}</span><i class="fa-solid fa-caret-down"></i></a>
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsMenu_selectable ipsHide" id="elSortByMenu_{$table->uniqueId}_menu">
{{$custom = TRUE;}}
{{foreach $table->sortOptions as $k => $col}}
<li class="ipsMenu_item {{if $col === $table->sortBy}}{{$custom = FALSE;}}ipsMenu_itemChecked{{endif}}" data-ipsMenuValue="{$col}" data-sortDirection='{$table->getSortDirection( $col )}'><a href="{$table->baseUrl->setQueryString( array( 'filter' => $table->filter, 'sortby' => $col, 'sortdirection' => $table->getSortDirection( $col ) ) )->setPage('page',1)}" rel="nofollow">{lang="{$table->langPrefix}sort_{$k}"}</a></li>
{{endforeach}}
{{if $table->advancedSearch}}
<li class="ipsMenu_item {{if $custom}}ipsMenu_itemChecked{{endif}}" data-noSelect="true">
<a href='{$table->baseUrl->setQueryString( array( 'advancedSearchForm' => '1', 'filter' => $table->filter, 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirection ) )}' data-ipsDialog data-ipsDialog-title='{lang="custom_sort"}' rel="nofollow">{lang="custom"}</a>
</li>
{{endif}}
</ul>
{{elseif $table->advancedSearch}}
<a href='{$table->baseUrl->setQueryString( array( 'advancedSearchForm' => '1', 'filter' => $table->filter, 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirection ) )}' data-ipsDialog data-ipsDialog-title='{lang="custom_sort"}' rel="nofollow">{lang="custom"}</a>
{{endif}}
</li>
{{endif}}
{{if !empty( $table->filters )}}
<li>
<a href="#elFilterByMenu_menu" class='ipsDataFilters__button' data-role="tableFilterMenu" id="elFilterByMenu_{$table->uniqueId}" data-ipsMenu data-ipsMenu-activeClass="ipsDataFilters__button--active" data-ipsMenu-selectable="radio"><span>{lang="filter_by"}</span><i class="fa-solid fa-caret-down"></i></a>
<ul class='ipsMenu ipsMenu_auto ipsMenu_withStem ipsMenu_selectable ipsHide' id='elFilterByMenu_{$table->uniqueId}_menu'>
<li data-action="tableFilter" data-ipsMenuValue='{$k}' class='ipsMenu_item {{if !$table->filter}}ipsMenu_itemChecked{{endif}}'>
<a href='{$table->baseUrl->setQueryString( array( 'filter' => '', 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirection ) )->setPage('page',1)}' rel="nofollow">{lang="{$table->langPrefix}all"}</a>
</li>
{{foreach $table->filters as $k => $q}}
<li data-action="tableFilter" data-ipsMenuValue='{$k}' class='ipsMenu_item {{if $k === $table->filter}}ipsMenu_itemChecked{{endif}}'>
<a href='{$table->baseUrl->setQueryString( array( 'filter' => $k, 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirections ) )->setPage('page',1)}' rel="nofollow">{lang="{$table->langPrefix}{$k}"}</a>
</li>
{{endforeach}}
</ul>
</li>
{{endif}}
{{if $table->canModerate()}}
<li>
<a class="ipsJS_show ipsDataFilters__button" href="#elCheck_menu" id="elCheck_{$table->uniqueId}" title='{lang="{$table->langPrefix}select_rows_tooltip"}' data-ipsTooltip data-ipsAutoCheck data-ipsAutoCheck-context="#elTable_{$table->uniqueId}" data-ipsMenu data-ipsMenu-activeClass="ipsDataFilters__button--active">
<span class="cAutoCheckIcon"><i class="fa-regular fa-square"></i></span> <i class="fa-solid fa-caret-down"></i>
<span class='ipsNotification' data-role='autoCheckCount'>0</span>
</a>
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsHide" id="elCheck_{$table->uniqueId}_menu">
<li class="ipsMenu_title">{lang="{$table->langPrefix}select_rows"}</li>
<li class="ipsMenu_item" data-ipsMenuValue="all"><a href="#">{lang="all"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="none"><a href="#">{lang="none"}</a></li>
{{if \count($table->getFilters())}}
<li class="ipsMenu_sep"><hr></li>
{{foreach $table->getFilters() as $filter}}
<li class="ipsMenu_item" data-ipsMenuValue="{$filter}"><a href="#">{lang="$filter"}</a></li>
{{endforeach}}
{{endif}}
</ul>
</li>
{{endif}}
</ul>
</div>
</div>
{{endif}}
{{if $table->canModerate()}}
<form action="{$table->baseUrl->csrf()}" method="post" data-role='moderationTools' data-ipsPageAction>
<div class='{{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]"}
</div>
<div class="ipsData__modBar ipsJS_hide" data-role="pageActionOptions">
<select class="ipsInput ipsInput--select i-basis_300" name="modaction" data-role="moderationAction">
{{if $table->canModerate('unhide')}}
<option value='approve' data-icon='check-circle'>{lang="approve"}</option>
{{endif}}
{{if $table->canModerate('feature') or $table->canModerate('unfeature')}}
<optgroup label="{lang="feature"}" data-icon='star' data-action='feature'>
{{if $table->canModerate('feature')}}
<option value='feature'>{lang="feature"}</option>
{{endif}}
{{if $table->canModerate('unhide')}}
<option value='unfeature'>{lang="unfeature"}</option>
{{endif}}
</optgroup>
{{endif}}
{{if $table->canModerate('pin') or $table->canModerate('unpin')}}
<optgroup label="{lang="pin"}" data-icon='thumb-tack' data-action='pin'>
{{if $table->canModerate('pin')}}
<option value='pin'>{lang="pin"}</option>
{{endif}}
{{if $table->canModerate('unpin')}}
<option value='unpin'>{lang="unpin"}</option>
{{endif}}
</optgroup>
{{endif}}
{{if $table->canModerate('hide') or $table->canModerate('unhide')}}
<optgroup label="{lang="hide"}" data-icon='eye' data-action='hide'>
{{if $table->canModerate('hide')}}
<option value='hide'>{lang="hide"}</option>
{{endif}}
{{if $table->canModerate('unhide')}}
<option value='unhide'>{lang="unhide"}</option>
{{endif}}
</optgroup>
{{endif}}
{{if $table->canModerate('lock') or $table->canModerate('unlock')}}
<optgroup label="{lang="lock"}" data-icon='lock' data-action='lock'>
{{if $table->canModerate('lock')}}
<option value='lock'>{lang="lock"}</option>
{{endif}}
{{if $table->canModerate('unlock')}}
<option value='unlock'>{lang="unlock"}</option>
{{endif}}
</optgroup>
{{endif}}
{{if $table->canModerate('move')}}
<option value='move' data-icon='arrow-right'>{lang="move"}</option>
{{endif}}
{{if $table->canModerate('split_merge')}}
<option value='merge' data-icon='level-up'>{lang="merge"}</option>
{{endif}}
{{if $table->canModerate('delete')}}
<option value='delete' data-icon='trash'>{lang="delete"}</option>
{{endif}}
{{if $table->canModerate('future_publish')}}
<option data-icon="arrow-circle-o-up" value='publish'>{lang="publish"}</option>
{{endif}}
{{if $table->canModerate( 'tag' )}}
<optgroup label='{lang="tag"}' data-icon='tag' data-action='tag'>
<option value='tag'>{lang="add_single_tag"}</option>
<option value='untag'>{lang="remove_single_tag"}</option>
</optgroup>
{{endif}}
{{if $table->savedActions}}
<optgroup label="{lang="saved_actions"}" data-icon='tasks' data-action='saved_actions'>
{{foreach $table->savedActions as $k => $v}}
<option value='savedAction-{$k}'>{$v}</option>
{{endforeach}}
</optgroup>
{{endif}}
</select>
<button type="submit" class="ipsButton ipsButton--primary">{lang="submit"}</button>
</div>
</form>
{{else}}
<div class='{{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]"}
</div>
{{endif}}
{{if $table->pages > 1}}
<div class="ipsButtonBar ipsButtonBar--bottom">
<div class="ipsButtonBar__pagination" 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}}
</section>]]></template>
<template template_group="view" template_name="blogViewLarge" template_data="$entry, $table, $first = FALSE" template_location="front" template_app="blog"><![CDATA[
<article class='cBlogView_entry i-border-bottom_3 {{if $entry->hidden()}}ipsModerated{{endif}} {$entry->ui( 'css' )}' data-controller="core.front.core.lightboxedImages" {$entry->ui( 'dataAttributes' )}>
<header class='i-background_2 i-border-bottom_3 i-padding_2'>
<div class="ipsPhotoPanel">
{template="userPhoto" app="core" params="$entry->author()" group="global"}
<div>
<h2 class='ipsTitle ipsTitle--h4'>
{$entry->caption}
{{if $entry->prefix()}}
{template="prefix" group="global" app="core" params="$entry->prefix( TRUE ), $entry->prefix()"}
{{endif}}
<a href="{$entry->url( "getPrefComment" )}" class='i-color_inherit' title="{lang="read_more_about" sprintf="$entry->name"} {{if $entry->canEdit()}}{lang="click_hold_edit"}{{endif}}" {{if $entry->canEdit()}}data-role="editableTitle"{{endif}}>
{{if $entry->unread()}}
<span class='ipsIndicator' data-ipsTooltip title="{lang="unread_blog"}"></span>
{{endif}}
{{if $entry->canEdit()}}<span data-role="editableTitle">{$entry->name}</span>{{else}}{$entry->name}{{endif}}
</a>
<div class="ipsBadges">{{foreach $entry->badges() as $badge}}{$badge|raw}{{endforeach}}</div>
</h2>
<ul class='ipsList ipsList--sep i-color_soft i-link-color_inherit'>
<li>{lang="byline" htmlsprintf="$entry->author()->link()"}</li>
<li>{datetime="$entry->date"}</li>
{{if $entry->category_id}}
<li><span class="i-font-weight_500">{$entry->category()->link()|raw}</span></li>
{{endif}}
</ul>
</div>
</div>
</header>
<div class="i-padding_2">
<section class='ipsRichText ipsTruncate_x' style='--line-clamp: {{if $first}}20{{else}}7{{endif}}'>
{$entry->content()|raw}
</section>
{{if \count( $entry->tags() )}}
<div class='i-margin-top_2'>
{template="tags" group="global" app="core" params="$entry->tags()"}
</div>
{{endif}}
<div class="i-flex i-flex-wrap_wrap i-align-items_center i-gap_2 i-margin-top_3">
<div>
<strong><a href='{$entry->url( "getPrefComment" )}' title="{lang="read_more_about" sprintf="$entry->name"}">{lang="read_more"}</a></strong>
</div>
<ul class='i-margin-start_auto ipsList ipsList--inline i-gap_3 i-row-gap_1'>
<li class="i-margin-end_auto"></li>
{{if \IPS\Settings::i()->blog_enable_rating}}
<li>{template="rating" app="core" params="'small', $entry->averageRating(), 5, $entry->memberRating()" group="global"}</li>
{{endif}}
<li class='i-color_soft'>{lang="num_views_with_number" pluralize="$entry->views"}</li>
<li><a href='{$entry->url()}#comments' title='{lang="view_comments"}' class='i-color_hard i-font-weight_500'>{lang="num_comments" pluralize="$entry->num_comments"}</a></li>
{{if $table->canModerate()}}
<li>
{{$idField = $entry::$databaseColumnId;}}
<input class="ipsInput" type='checkbox' data-role='moderation' name="moderate[{$entry->$idField}]" data-actions="{expression="implode( ' ', $table->multimodActions( $entry ) )"}" data-state='{{if $entry->tableStates()}}{$entry->tableStates()}{{endif}}'>
</li>
{{endif}}
</ul>
</div>
</div>
</article>]]></template>
<template template_group="view" template_name="blogViewMedium" template_data="$entry, $table" template_location="front" template_app="blog"><![CDATA[
<!-- This template is used when viewing Profile > See my activity > Blog Entries -->
<article class='cBlogView_entry {{if $entry->hidden()}}ipsModerated{{endif}} {$entry->ui( 'css' )}' data-controller="core.front.core.lightboxedImages" {$entry->ui( 'dataAttributes' )}>
<header class='ipsPhotoPanel ipsPhotoPanel--mini'>
{template="userPhoto" app="core" params="$entry->author(), 'mini'" group="global"}
<div>
<h2 class='ipsTitle ipsTitle--h5'>
<span>{{foreach $entry->badges() as $badge}}{$badge|raw}{{endforeach}}</span>
{{if $entry->prefix()}}
<span>{template="prefix" group="global" app="core" params="$entry->prefix( TRUE ), $entry->prefix()"}</span>
{{endif}}
<span class=''>
<a href="{$entry->url( "getPrefComment" )}" title="{lang="read_more_about" sprintf="$entry->name"} {{if $entry->canEdit()}}{lang="click_hold_edit"}{{endif}}" {{if $entry->canEdit()}}data-role="editableTitle"{{endif}}>
{{if $entry->unread()}}
<div class='ipsIndicator' data-ipsTooltip title="{lang="unread_blog"}"></div>
{{endif}}
{$entry->name}
</a>
</span>
</h2>
<p class='i-color_soft i-link-color_inherit'>
{{if $entry->category_id}}<span class="i-color_hard i-font-weight_600">{$entry->category()->name}</span>{{endif}} &middot; {lang="byline" htmlsprintf="$entry->author()->link()"}{datetime="$entry->date"}
</p>
</div>
</header>
<section class='ipsRichText i-margin-block_2 ipsTruncate_4'>
{$entry->truncated()|raw}
</section>
<div class="i-flex i-align-items_center i-flex-wrap_wrap i-gap_2">
<ul class='ipsList ipsList--inline i-flex_11'>
{{if $table->canModerate()}}
<li>
{{$idField = $entry::$databaseColumnId;}}
<input type='checkbox' data-role='moderation' name="moderate[{$entry->$idField}]" data-actions="{expression="implode( ' ', $table->multimodActions( $entry ) )"}" data-state='{{if $entry->tableStates()}}{$entry->tableStates()}{{endif}}' class='ipsInput ipsInput--toggle'>
</li>
{{endif}}
<li><strong><a href='{$entry->url( "getPrefComment" )}' title="{lang="read_more_about" sprintf="$entry->name"}">{lang="read_more"}</a></strong></li>
<li><a href='{$entry->url()}#comments' title='{lang="view_comments"}' class='i-color_soft'>{lang="num_comments" pluralize="$entry->num_comments"}</a></li>
<li class='i-color_soft'>{lang="num_views_with_number" pluralize="$entry->views"}</li>
{{if \IPS\Settings::i()->blog_enable_rating}}
<li>
{template="rating" app="core" params="'large', $entry->averageRating(), 5, $entry->memberRating()" group="global"}
</li>
{{endif}}
</ul>
</div>
</article>]]></template>
<template template_group="view" template_name="categories" template_data="$currentCategory=NULL, $categories=array(), $blog=NULL" template_location="front" template_app="blog"><![CDATA[{{if \count( $categories )}}
<section id='elBlogCategoriesBlock' class='ipsWidget ipsWidget--vertical'>
<header class='ipsWidget__header'>
<h3>{lang="categories"}</h3>
{{if $blog->canEdit()}}
<span class='ipsBox__header-secondary'><a href="{$blog->url()->setQueryString( array( 'do' => "manageCategories" ) )}" data-ipsDialog data-ipsDialog-size='narrow'><i class='fa-solid fa-pencil'></i></a></span>
{{endif}}
</header>
<div class='ipsSideMenu ipsSideMenu--truncate ipsCategoriesMenu'>
<ul class='ipsSideMenu__list'>
{{foreach $categories as $category}}
<li {{if $currentCategory and $currentCategory->id == $category->id}}aria-current="page"{{endif}}>
<a href="{$category->url()}" class='ipsSideMenu_item'><strong class='ipsSideMenu__text'>{$category->name}</strong></a>
</li>
{{endforeach}}
</ul>
</div>
</section>
{{endif}}]]></template>
<template template_group="view" template_name="comments" template_data="$entry" template_location="front" template_app="blog"><![CDATA[<section class='ipsBox ipsBox--comments ipsPull'>
<h2 class='ipsBox__header' data-role="comment_count">{lang="num_comments_uc" pluralize="$entry->num_comments"}</h2>
<div class='ipsBox__content'>
<div data-controller='core.front.core.commentFeed, core.front.core.ignoredComments' {{if settings.auto_polling_enabled}}data-autoPoll{{endif}} data-baseURL='{$entry->url()}' data-feedID='{$entry->feedId}' id='comments'>
{template="featuredComments" group="global" app="core" params="$entry->featuredComments(), $entry->url()->setQueryString( 'recommended', 'comments' )"}
{{if $entry->commentPageCount() > 1}}
<div class='ipsButtonBar'>
<div class='ipsButtonBar__pagination'>{$entry->commentPagination( array('tab') )|raw}</div>
<div class='ipsButtonBar__end'>{template="commentMultimodHeader" app="core" group="global" params="$entry, '#comments'"}</div>
</div>
{{endif}}
<div data-role='commentFeed' data-controller='core.front.core.moderation'>
<form action="{$entry->url()->csrf()->setQueryString( 'do', 'multimodComment' )->setPage('page',\IPS\Request::i()->page)}" method="post" data-ipsPageAction data-role='moderationTools'>
{{if \count( $entry->comments( NULL, NULL, 'date', 'asc', NULL, NULL, NULL, NULL, FALSE, isset( \IPS\Request::i()->showDeleted ) ) )}}
{{$commentCount=0; $timeLastRead = $entry->timeLastRead(); $lined = FALSE;}}
{{foreach $entry->comments( NULL, NULL, 'date', 'asc', NULL, NULL, NULL, NULL, FALSE, isset( \IPS\Request::i()->showDeleted ) ) as $comment}}
{{if !$lined and $timeLastRead and $timeLastRead->getTimestamp() < $comment->mapped('date')}}
{{if $lined = TRUE and $commentCount}}
<hr class="ipsUnreadBar">
{{endif}}
{{endif}}
{{$commentCount++;}}
<a id="findComment-{$comment->id}"></a>
<a id="comment-{$comment->id}"></a>
{$comment->html()|raw}
{{endforeach}}
{{else}}
<p class='ipsEmptyMessage' data-role='noComments'>{lang="no_comments"}</p>
{{endif}}
{template="commentMultimod" app="core" group="global" params="$entry"}
</form>
</div>
{{if $entry->commentPageCount() > 1}}
<div class='ipsButtonBar ipsButtonBar--bottom'>
<div class='ipsButtonBar__pagination'>{$entry->commentPagination( array('tab') )|raw}</div>
</div>
{{endif}}
{{if $entry->commentForm() || $entry->locked() || \IPS\Member::loggedin()->restrict_post || \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings'] || !\IPS\Member::loggedIn()->checkPostsPerDay()}}
<div class='ipsComposeAreaWrapper' data-role='replyArea'>
{{if $entry->commentForm()}}
{{if $entry->locked()}}
<p class='ipsComposeArea_warning'><i class='fa-solid fa-circle-info'></i> {lang="blog_entry_locked_can_comment"}</p>
{{endif}}
{$entry->commentForm()|raw}
{{else}}
{{if $entry->locked()}}
{template="commentUnavailable" group="forms" location="front" app="core" params="'blog_entry_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>
</div>
</section>
]]></template>
<template template_group="view" template_name="coverPhotoOverlay" template_data="$blog" template_location="front" template_app="blog"><![CDATA[<div class="ipsCoverPhotoMeta">
{{if ( $blog->owner() instanceof \IPS\Member ) && \IPS\Request::i()->module == 'view'}}
<div class='ipsCoverPhoto__avatar'>
{template="userPhoto" group="global" app="core" params="$blog->owner(), 'fluid'"}
</div>
{{endif}}
<div class='ipsCoverPhoto__titles'>
<div class='ipsCoverPhoto__title'>
<h1>
<a href='{$blog->url()}' title='{lang="go_to_blog" sprintf="$blog->_title"}'>{$blog->_title}</a>
</h1>
{{if $blog->pinned}}
<span class="ipsBadge ipsBadge--icon ipsBadge--positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa-solid fa-thumbtack'></i></span>
{{endif}}
</div>
<div class='ipsCoverPhoto__subTitle'>
{{if $blog->owner() instanceof \IPS\Member}}
{lang="blog_by" htmlsprintf="$blog->owner()->link(), $blog->category()->link()"}
{{elseif $club = $blog->club()}}
<i class='fa-solid fa-users'></i> {lang="club_blog_for" sprintf="$club->name"}
{{else}}
<i class='fa-solid fa-users'></i> {lang="group_blog_by" htmlsprintf="\IPS\Member::loggedIn()->language()->addToStack( 'blogs_groupblog_name_' . $blog->id ), $blog->category()->link()"}
{{endif}}
</div>
</div>
<ul class='ipsCoverPhoto__stats'>
<li>
<h4 class='ipsCoverPhoto__statTitle'>{lang="blog_entries" pluralize="$blog->_items"}</h4>
<span class='ipsCoverPhoto__statValue'>{number="$blog->_items"}</span>
</li>
<li>
<h4 class='ipsCoverPhoto__statTitle'>{lang="blog_comments" pluralize="$blog->_comments"}</h4>
<span class='ipsCoverPhoto__statValue'>{number="$blog->_comments"}</span>
</li>
<li>
<h4 class='ipsCoverPhoto__statTitle'>{lang="blog_views" pluralize="$blog->num_views"}</h4>
<span class='ipsCoverPhoto__statValue'>{number="$blog->num_views"}</span>
</li>
</ul>
<div class='ipsCoverPhoto__buttons'>
{template="follow" app="core" group="global" params="'blog', 'blog', $blog->_id, \IPS\blog\Entry::containerFollowerCount( $blog )"}
</div>
</div>]]></template>
<template template_group="view" template_name="entry" template_data="$entry, $previous, $next" template_location="front" template_app="blog"><![CDATA[
{{if $club = $entry->container()->club()}}
{{if settings.clubs and settings.clubs_header == 'full'}}
{template="header" app="core" group="clubs" params="$club, $entry->container()"}
{{endif}}
<div id='elClubContainer'>
{{endif}}
{{/*}}<!--
<header>
{template="blogHeader" group="view" app="blog" params="$entry->container(), (!$club OR !\IPS\Settings::i()->clubs OR \IPS\Settings::i()->clubs_header != 'full') ? ( $entry->cover_photo ? false : true ) : FALSE"}
</header>
-->{{*/}}
{template="contentItemMessages" group="global" app="core" params="$entry->getMessages(), $entry"}
<article class='ipsBox ipsPull' data-ips-hook="entry__blog">
<header class='ipsPageHeader'>
{{if $entry->cover_photo}}
<div class='ipsCoverPhoto' data-controller="core.global.core.coverPhoto">
<div class="ipsCoverPhoto__container">
<img src='{file="$entry->cover_photo" extension="blog_Entries"}' alt='' fetchpriority="high" decoding="sync" class="ipsCoverPhoto__image" data-action="toggleCoverPhoto">
</div>
</div>
{{endif}}
<div class='ipsPageHeader__row'>
<div class='ipsPageHeader__primary'>
<div class='ipsPageHeader__title' data-ips-hook="contentTitle__blog">
<div class='ipsBadges'>
{{foreach $entry->badges() as $badge}}{$badge|raw}{{endforeach}}
</div>
<h1>
{{if $entry->canEdit()}}
<span data-controller="core.front.core.moderation">
{{if $entry->locked()}}<i class='fa-solid fa-lock'></i> {{endif}}<span data-role="editableTitle" title='{lang="click_hold_edit"}'>
{$entry->name}
</span>
</span>
{{else}}
<span>{{if $entry->locked()}}<i class='fa-solid fa-lock'></i> {{endif}}
{$entry->name}
</span>
{{endif}}
</h1>
</div>
{{if \IPS\Settings::i()->blog_enable_rating}}
<div class="ipsPageHeader__rating">{$entry->rating()|raw} <span class='i-color_soft'>({lang="num_reviews" pluralize="$entry->reviews"})</span></div>
{{endif}}
{{if \count( $entry->tags() ) OR ( $entry->canEdit() AND $entry::canTag() )}}
{template="tagsWithPrefix" group="global" app="core" params="$entry->tags(), $entry->prefix(), FALSE, FALSE, ( $entry->canEdit() AND ( \count( $entry->tags() ) OR $entry::canTag() ) ) ? $entry->url() : NULL"}
{{endif}}
</div>
<div class='ipsButtons'>
{{if \count( $entry->shareLinks() )}}
{template="shareButton" app="core" group="sharelinks" params="$entry"}
{{endif}}
{{if \IPS\Application::appIsEnabled('cloud')}}
{template="spam" app="cloud" group="spam" params="$entry"}
{{endif}}
{template="follow" app="core" group="global" params="'blog', 'entry', $entry->id, $entry->followersCount()"}
</div>
</div>
<div class='ipsPageHeader__row ipsPageHeader__row--footer'>
<div class='ipsPageHeader__primary'>
<div class="ipsPhotoPanel ipsPhotoPanel--inline">
{template="userPhoto" app="core" params="$entry->author(), 'fluid'" group="global"}
<div class='ipsPhotoPanel__text'>
<p class="ipsPhotoPanel__primary">
{{if $entry->category_id}}
{{if $entry->date > time()}}
{lang="entry_future_posted_with_cat" htmlsprintf="$entry->author()->link(),$entry->category()->link()"}
{{else}}
{lang="entry_posted_with_cat" htmlsprintf="$entry->author()->link(),$entry->category()->link()"}
{{endif}}
{{else}}
{{if $entry->date > time()}}
{lang="entry_future_posted" htmlsprintf="$entry->author()->link()"}
{{else}}
{lang="entry_posted" htmlsprintf="$entry->author()->link()"}
{{endif}}
{{endif}}
</p>
<p class="ipsPhotoPanel__secondary">{datetime="$entry->date"} &middot; {lang="num_views_with_number" pluralize="$entry->views"}</p>
</div>
</div>
</div>
</div>
</header>
<section class='i-padding_3'>
{{if $poll = $entry->getPoll()}}
<div class='ipsInnerBox ipsInnerBox--inherit i-margin-bottom_3'>
{$poll|raw}
</div>
{{endif}}
<div class='ipsRichText ipsRichText--user' data-controller='core.front.core.lightboxedImages'>{$entry->content()|raw}</div>
{{if $entry->_album}}
<hr class="ipsHr i-margin-block_3">
<h3 class='ipsTitle ipsTitle--h5 i-margin-bottom_2'>{lang="entry_images"}</h3>
{$entry->_album|raw}
{{endif}}
{{if $entry->editLine()}}
{$entry->editLine()|raw}
{{endif}}
</section>
<div class='ipsEntry__footer'>
<menu class='ipsEntry__controls'>
<li>{$entry->menu()|raw}</li>
</menu>
{{if \IPS\IPS::classUsesTrait( $entry, 'IPS\Content\Reactable' ) AND settings.reputation_enabled}}
{template="reputation" app="core" group="global" params="$entry"}
{{endif}}
</div>
</article>
<div class='ipsBox ipsBox--padding ipsPull ipsResponsive_showPhone'>
<div class='ipsPageActions'>
{{if \count( $entry->shareLinks() )}}
{template="shareButton" app="core" group="sharelinks" params="$entry, 'verySmall', 'light'"}
{{endif}}
{{if \IPS\Application::appIsEnabled('cloud')}}
{template="spam" app="cloud" group="spam" params="$entry"}
{{endif}}
{template="follow" app="core" group="global" params="'blog', 'entry', $entry->id, $entry->followersCount()"}
</div>
</div>
{{if $previous or $next}}
<nav class="ipsPager">
<div class="ipsPager_prev">
{{if $previous}}
<a href="{$previous->url()}" title="{lang="prev_entry"}">
<span class="ipsPager_type">{lang="prev_entry"}</span>
<span class="ipsPager_title ipsTruncate_1">{$previous->name}</span>
</a>
{{endif}}
</div>
{{if $next}}
<div class="ipsPager_next">
<a href="{$next->url()}" title="{lang="next_entry"}">
<span class="ipsPager_type">{lang="next_entry"}</span>
<span class="ipsPager_title ipsTruncate_1">{$next->name}</span>
</a>
</div>
{{endif}}
</nav>
{{endif}}
{template="comments" app="blog" group="view" params="$entry"}
{{if $entry->container()->club()}}
</div>
{{endif}}]]></template>
<template template_group="view" template_name="manageCategories" template_data="$blog" template_location="front" template_app="blog"><![CDATA[<div data-controller="blog.front.view.manageCategories" data-blog-id="{$blog->id}">
<i-data>
<ol class="ipsData ipsData--table ipsData--manage-categories cBlogCatManage" data-role="tableRows"></ol>
</i-data>
</div>
]]></template>
<template template_group="view" template_name="noEntries" template_data="$container" template_location="front" template_app="blog"><![CDATA[
<div class='ipsBox__padding i-text-align_center'>
<p class='i-font-size_2 i-color_soft'>{{if \IPS\Request::i()->cat}}{lang="no_entries_in_cat"}{{else}}{lang="no_entries"}{{endif}}</p>
{{if $container->can('add')}}
<a href='{url="app=blog&module=blogs&controller=submit&id={$container->_id}" seoTemplate="blog_submit"}{{if \IPS\Request::i()->cat}}&cat={request="cat"}{{endif}}' class='ipsButton ipsButton--primary i-margin-top_3'>{lang="submit_entry"}</a>
{{endif}}
</div>]]></template>
<template template_group="view" template_name="rows" template_data="$table, $headers, $entries" template_location="front" template_app="blog"><![CDATA[{{if \count( $entries ) > 0}}
{{if $table->sortBy == 'entry_last_update'}}
{{foreach $entries as $idx => $entry}}
{{if $idx <= 3}}
{template="blogViewLarge" group="view" app="blog" params="$entry, $table, $idx === 0"}
{{endif}}
{{endforeach}}
{{if \count( $entries ) > 4}}
<div class='ipsGrid ipsGrid--blog-view-rows'>
<div>
{{foreach $entries as $idx => $entry}}
{{if $idx > 3 && $idx % 2 == 0}}
{template="blogViewMedium" group="view" app="blog" params="$entry, $table"}
{{endif}}
{{endforeach}}
</div>
<div>
{{foreach $entries as $idx => $entry}}
{{if $idx > 3 && $idx % 2 != 0}}
{template="blogViewMedium" group="view" app="blog" params="$entry, $table"}
{{endif}}
{{endforeach}}
</div>
</div>
{{endif}}
{{else}}
{{foreach $entries as $idx => $entry}}
{template="blogViewLarge" group="view" app="blog" params="$entry, $table, FALSE"}
{{endforeach}}
{{endif}}
{{else}}
{template="noEntries" group="view" app="blog" params="$table->container()"}
{{endif}}]]></template>
<template template_group="view" template_name="rowsGrid" template_data="$table, $headers, $entries" template_location="front" template_app="blog"><![CDATA[{{if \count( $entries ) > 0}}
<i-data>
<section class="ipsData ipsData--grid ipsData--blog-entries">
{{foreach $entries as $id => $entry}}
{template="indexGridEntry" app="blog" location="front" group="browse" params="$entry, false, $table"}
{{endforeach}}
</section>
</i-data>
{{else}}
{template="noEntries" group="view" app="blog" params="$table->container()"}
{{endif}}]]></template>
<template template_group="view" template_name="rssImport" template_data="$form" template_location="front" template_app="blog">{$form|raw}</template>
<template template_group="view" template_name="view" template_data="$blog, $table, $category=NULL" template_location="front" template_app="blog"><![CDATA[
{{if $club = $blog->club()}}
{{if settings.clubs and settings.clubs_header == 'full'}}
{template="header" app="core" group="clubs" params="$club, $blog"}
{{endif}}
<div id='elClubContainer'>
{{endif}}
{template="blogHeader" group="view" app="blog" params="$blog, (!$club OR !\IPS\Settings::i()->clubs OR \IPS\Settings::i()->clubs_header != 'full')"}
{{if $blog->description}}
<section class='ipsBox ipsBox--padding ipsPull'>
<h3 class='ipsTitle ipsTitle--h5 ipsTitle--margin'>{lang="about_this_blog"}</h3>
{template="richText" group="global" app="core" location="global" params="$blog->description, array('ipsTruncate_4')"}
</section>
{{endif}}
{{$menu = $blog->menu();}}
{{if \IPS\blog\Entry::canCreate( \IPS\Member::loggedIn(), $blog ) or $menu->hasContent() or \count( \IPS\blog\Entry\Category::roots( NULL, NULL, array( 'entry_category_blog_id=?', $blog->id ) ) )}}
<ul class="ipsButtons ipsButtons--main">
{{if !$blog->club_id and $menu->hasContent()}}
<li>
{$menu|raw}
</li>
{{endif}}
{{if \count( \IPS\blog\Entry\Category::roots( NULL, NULL, array( 'entry_category_blog_id=?', $blog->id ) ) )}}
<li>
<a href='#elBlogCategory_menu' id='elBlogCategory' data-ipsMenu class='ipsButton ipsButton--text'>
<span>{{if $category}}{lang="blog_category_viewing" sprintf="$category->name"}{{else}}{lang="blog_category_select"}{{endif}}</span><i class='ipsMenuCaret'></i>
</a>
<ul id='elBlogCategory_menu' class='ipsMenu ipsMenu_normal ipsMenu_selectable ipsHide'>
<li class="ipsMenu_title">
{lang="categories"}{{if $category}} (<a href="{$blog->url()}">{lang="blog_categories_all"}</a>){{endif}}
{{foreach \IPS\blog\Entry\Category::roots( NULL, NULL, array( 'entry_category_blog_id=?', $blog->id ) ) as $cat}}
<li class='ipsMenu_item {{if $category and $category->id == $cat->id}}ipsMenu_itemChecked{{endif}}'>{$cat->link()|raw}</li>
{{endforeach}}
</li>
</ul>
</li>
{{endif}}
{{if \IPS\blog\Entry::canCreate( \IPS\Member::loggedIn(), $blog )}}
<li>
{{if $category}}
<a class="ipsButton ipsButton--primary" href="{url="app=blog&module=blogs&controller=submit&id={$blog->id}&cat={$category->_id}" seoTemplate="blog_submit"}" rel='nofollow noindex'>{lang="add_blog_entry"}</a>
{{else}}
<a class="ipsButton ipsButton--primary" href="{url="app=blog&module=blogs&controller=submit&id={$blog->id}" seoTemplate="blog_submit"}" rel='nofollow noindex'>{lang="add_blog_entry"}</a>
{{endif}}
</li>
{{endif}}
</ul>
{{endif}}
{$table|raw}
<div class='ipsBox ipsBox--padding ipsPull ipsResponsive_showPhone'>
{template="follow" app="core" group="global" params="'blog', 'blog', $blog->_id, \IPS\blog\Entry::containerFollowerCount( $blog )"}
</div>
{{if $blog->club()}}
</div>
{{endif}}]]></template>
<template template_group="widgets" template_name="blogCommentFeed" template_data="$comments, $title, $layout='table', $isCarousel=false" template_location="front" template_app="blog"><![CDATA[{{if !empty( $comments ) }}
<h3 class='ipsWidget__header'>{$title}</h3>
<div class='ipsWidget__content'>
{{if isset($orientation) and $orientation == 'vertical'}}
<i-data>
<ul class='ipsData ipsData--table ipsData--blog-comment-feed'>
{{foreach $comments as $comment}}
<li class='ipsData__item'>
<a href='{$comment->url()}' class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>{$comment->item()->title}</span></a>
<div class='ipsData__icon'>{template="userPhoto" group="global" app="core" params="$comment->author(), 'fluid'"}</div>
<div class='ipsData__main'>
<div class='ipsData__title'>
<h4><a href="{$comment->url()}">{$comment->item()->name}</a></h4>
</div>
<p class='ipsData__meta'><span>{$comment->author()->link()|raw}</span> <a href="{$comment->url()}">{$comment->dateLine()|raw}</a></p>
<div class='ipsData__desc'>{$comment->truncated( true )|raw}</div>
</div>
</li>
{{endforeach}}
</ul>
</i-data>
{{else}}
<ul class='ipsEntries ipsEntries--blog-comment-widget'>
{{foreach $comments as $comment}}
<li>
<article class='ipsEntry ipsEntry--simple'>
<div class='ipsEntry__content'>
<header class='ipsEntry__header'>
<div class='ipsEntry__header-align'>
<div class='ipsPhotoPanel'>
<div class='ipsAvatarStack'>
{template="userPhoto" app="core" group="global" params="$comment->author(), 'fluid', $comment->warningRef()"}
{{if !$comment->isAnonymous() and $comment->author()->canHaveAchievements() and \IPS\core\Achievements\Rank::show() and $rank = $comment->author()->rank()}}
{$rank->html( 'ipsAvatarStack__rank' )|raw}
{{endif}}
</div>
<div class='ipsPhotoPanel__text'>
<div class='ipsEntry__username'>
<h3><a href="{$comment->url()}">{$comment->item()->name}</a></h3>
</div>
<p class='ipsPhotoPanel__secondary'>
{template="userLink" app="core" group="global" params="$comment->author(), $comment->warningRef(), NULL, $comment->isAnonymous()"}
&middot;
<a href='{$comment->url()}'>{$comment->dateLine()|raw}</a>
{{if $comment->editLine()}}
({lang="edited_lc"})
{{endif}}
</p>
</div>
</div>
{{if $comment->canReportOrRevoke() === TRUE}}
{{$id = mt_rand();}}
<a href='#elBlogCommentFeed_{$id}_menu' class='ipsEntry__topButton ipsEntry__topButton--ellipsis' id='elBlogCommentFeed_{$id}' title='{lang="more_options"}' data-ipsMenu><i class='fa-solid fa-ellipsis' aria-hidden="true"></i><span class='ipsInvisible'>{lang="more_options"}</span></a>
{{endif}}
</div>
</header>
<div class='ipsEntry__post'>
{{if \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and $comment->isHighlighted()}}
<ul class='ipsBadges'>
<li><span class='ipsBadge ipsBadge--popular'>{lang="this_is_a_popular_comment"}</span></li>
</ul>
{{endif}}
{{if member.modPermission('mod_see_warn') and $comment->warning}}
{template="commentWarned" group="global" app="core" params="$comment"}
{{endif}}
{{if $comment->hidden() === 1 && $comment->author()->member_id == \IPS\Member::loggedIn()->member_id}}
<div class='i-margin-bottom_3'><strong class='i-color_warning'><i class='fa-solid fa-circle-info'></i> {lang="comment_awaiting_approval"}</strong></div>
{{endif}}
<div class='ipsRichText ipsTruncate_6' data-role='commentContent' data-controller='core.front.core.lightboxedImages'>
{$comment->content()|raw}
</div>
</div>
{{if $comment->hidden() !== 1 && \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and settings.reputation_enabled}}
<div class='ipsEntry__footer'>
{template="reputation" group="global" app="core" params="$comment"}
</div>
{{endif}}
</div>
</article>
{{if $comment->canReportOrRevoke() === TRUE}}
<ul id='elBlogCommentFeed_{$id}_menu' class='ipsMenu ipsMenu_auto ipsHide'>
<li class='ipsMenu_item'><a href='{$comment->url('report')}' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-remoteSubmit data-ipsDialog-size='medium' data-ipsDialog-flashMessage='{lang="report_submit_success"}' data-ipsDialog-title="{lang="report_post"}"{{endif}} data-action='reportComment' title='{lang="report_content"}'>{lang="report"}</a></li>
</ul>
{{endif}}
</li>
{{endforeach}}
</ul>
{{endif}}
</div>
{{endif}}]]></template>
<template template_group="widgets" template_name="blogs" template_data="$blogs, $title, $layout='table', $isCarousel=false" template_location="front" template_app="blog"><![CDATA[<h3 class='ipsWidget__header'>{$title}</h3>
{{if isset($orientation) and $orientation == 'vertical'}}
<div class='ipsWidget__content'>
<i-data>
<ul class='ipsData ipsData--table ipsData--blogs-widget'>
{{foreach $blogs as $blog}}
<li class='ipsData__item'>
<div class='i-flex_11'>
<h4 class='i-font-weight_600 i-margin-bottom_2'><a href="{$blog->url()}" title='{lang="view_this_blog" sprintf="$blog->_title"}' class="i-color_hard">{$blog->_title}</a></h4>
<ul class='ipsGrid ipsGrid--blog-stats ipsGrid--3'>
<li><strong class='i-font-weight_600 i-font-size_2 i-color_hard'>{$blog->_items}</strong><br><span class='i-color_soft i-font-size_-1'>{lang="blog_entries" pluralize="$blog->_items"}</span></li>
<li><strong class='i-font-weight_600 i-font-size_2 i-color_hard'>{$blog->_comments}</strong><br><span class='i-color_soft i-font-size_-1'>{lang="blog_comments" pluralize="$blog->_comments"}</span></li>
<li><strong class='i-font-weight_600 i-font-size_2 i-color_hard'>{$blog->num_views}</strong><br><span class='i-color_soft i-font-size_-1'>{lang="blog_views" pluralize="$blog->num_views"}</span></li>
</ul>
</div>
</li>
{{endforeach}}
</ul>
</i-data>
</div>
{{else}}
<i-data>
<ol class="ipsData ipsData--table ipsData--blogs-widget" data-role="tableRows">
{{foreach $blogs as $blog}}
<li class='ipsData__blog-item ipsColumns ipsColumns--lines'>
<div class='ipsColumns__secondary i-basis_380 i-background_2 i-text-align_center cBlogInfo'>
{{$coverPhoto = $blog->coverPhoto();}}
<a href='{$blog->url()}' class='ipsCoverPhoto ipsCoverPhoto--blog-listing' data-url="{$blog->url()->csrf()}" style='--offset:{$coverPhoto->offset}' aria-hidden="true" tabindex="-1">
{{if $coverPhoto->file}}
<div class='ipsCoverPhoto__container'>
<img src='{$coverPhoto->file->url}' class='ipsCoverPhoto__image' alt='' loading='lazy'>
</div>
{{else}}
<div class='ipsCoverPhoto__container'>
<div class="ipsFallbackImage" style="--i-empty-image-random--ba-co: {$blog->coverPhotoBackgroundColor()}"></div>
</div>
{{endif}}
</a>
<div class='i-padding_3'>
<h3 class='ipsTitle ipsTitle--h3'>
<a href='{$blog->url()}' title='{lang="go_to_blog" sprintf="$blog->_title"}'>{$blog->_title}</a>
</h3>
<div class='i-font-weight_500 i-color_soft i-margin-top_1'>
{{if $blog->owner() instanceof \IPS\Member}}
{lang="blog_by" htmlsprintf="$blog->owner()->link(), $blog->category()->link()"}
{{elseif $club = $blog->club()}}
<i class='fa-solid fa-users'></i> {lang="club_blog_for" sprintf="$club->name"}
{{else}}
<i class='fa-solid fa-users'></i> {lang="group_blog_by" htmlsprintf="\IPS\Member::loggedIn()->language()->addToStack( 'blogs_groupblog_name_' . $blog->id ), $blog->category()->link()"}
{{endif}}
</div>
<ul class='ipsList ipsList--stats ipsList--stacked ipsList--fill i-margin-top_3'>
<li><span class="ipsList__value">{$blog->_items}</span> <span class="ipsList__label">{lang="blog_entries" pluralize="$blog->_items"}</span></li>
<li><span class="ipsList__value">{$blog->_comments}</span> <span class="ipsList__label">{lang="blog_comments" pluralize="$blog->_comments"}</span></li>
<li><span class="ipsList__value">{$blog->num_views}</span> <span class="ipsList__label">{lang="blog_views" pluralize="$blog->num_views"}</span></li>
</ul>
{{if $blog->description}}
<div class='ipsTruncate_x ipsHide' style='--line-clamp: 9'>{template="richText" group="global" app="core" location="global" params="$blog->description"}</div>
{{endif}}
</div>
</div>
<div class='ipsColumns__primary i-padding_3'>
{{if $blog->latestEntry()}}
<div class='ipsTitle--h4'>
{$blog->latestEntry()->caption}
<h3>
<span class='ipsBadges'>
{{foreach $blog->latestEntry()->badges() as $badge}}{$badge|raw}{{endforeach}}
</span>
<a href='{$blog->latestEntry()->url( "getPrefComment" )}' title='{lang="view_this_entry" sprintf="$blog->latestEntry()->name"}'>
{{if $blog->latestEntry()->unread()}}
<span class='ipsIndicator' data-ipsTooltip title="{lang="unread_blog"}"></span>
{{endif}}
{$blog->latestEntry()->name}
</a>
</h3>
</div>
<div class='ipsPhotoPanel ipsPhotoPanel--small i-margin-top_1 i-margin-bottom_2'>
{template="userPhoto" app="core" params="$blog->latestEntry()->author(), ''" group="global"}
<div class='ipsPhotoPanel__text'>
<p class='i-color_soft i-link-color_inherit'>{lang="latest_entry_by" htmlsprintf="trim( $blog->latestEntry()->author()->link() )"} {datetime="$blog->latestEntry()->date"}</p>
</div>
</div>
<div class='ipsRichText cBlogInfo_content' data-controller="core.front.core.lightboxedImages">
{$blog->latestEntry()->content()|raw}
</div>
{{else}}
<p class='ipsEmptyMessage'>{lang="no_entries_yet"}</p>
{{endif}}
{{$recentEntries = iterator_to_array( $blog->_recentEntries );}}
{{if \count( $recentEntries ) > 1}}
<h4 class='ipsTitle ipsTitle--h5 ipsTitle--margin i-margin-top_4'>{lang="recent_entries"}</h4>
<ul class='ipsBlogs__blog-listing-entries'>
{{foreach $recentEntries as $entry}}
<li>
{template="userPhoto" app="core" params="$entry->author(), 'fluid'" group="global"}
<div class='i-flex_11 i-flex i-gap_2 i-row-gap_0 i-flex-wrap_wrap'>
<h4 class='{{if $entry->unread()}}font-weight_700{{else}}i-font-weight_500{{endif}} i-flex_11'>
{{if $entry->unread()}}
<a href='{$entry->url()}' title='{lang="view_this_entry" sprintf="$entry->name"}' class='ipsIndicator'></a>
{{endif}}
<a href='{$entry->url( "getPrefComment" )}' title='{lang="view_this_entry" sprintf="$entry->name"}'>
{$entry->name}
</a>
</h4>
{{if !( $blog->owner() instanceof \IPS\Member )}}
<p class='i-font-size_-1 i-color_soft'>{lang="byline" htmlsprintf="trim( $blog->latestEntry()->author()->link() )"} {datetime="$blog->latestEntry()->date"}</p>
{{endif}}
</div>
</li>
{{endforeach}}
</ul>
{{endif}}
</div>
</li>
{{endforeach}}
</ol>
</i-data>
{{endif}}]]></template>
<template template_group="widgets" template_name="blogStatistics" template_data="$stats, $layout='table', $isCarousel=false" template_location="front" template_app="blog"><![CDATA[<h3 class='ipsWidget__header'>{lang="block_blogStatistics"}</h3>
<div class='ipsWidget__content'>
<ul class='ipsList ipsList--stats ipsList--stacked ipsList--border ipsList--fill'>
<li>
<strong class='ipsList__label'>{lang="total_blogs"}</strong>
<span class='ipsList__value'>{number="$stats['total_blogs']"}</span>
</li>
<li>
<strong class='ipsList__label'>{lang="total_entries"}</strong>
<span class='ipsList__value'>{number="$stats['total_entries']"}</span>
</li>
</ul>
</div>]]></template>
<template template_group="widgets" template_name="entryFeed" template_data="$entries, $title, $layout='table', $isCarousel=false" template_location="front" template_app="blog"><![CDATA[{{if !empty( $entries ) }}
<header class='ipsWidget__header'>
<h3>{$title}</h3>
{{if $isCarousel}}
{{$carouselID = 'widget-blog-entry-feed_' . mt_rand();}}
{template="carouselNavigation" group="global" app="core" params="$carouselID"}
{{endif}}
</header>
<div class='ipsWidget__content'>
<i-data>
<ul class="ipsData ipsData--{$layout} {{if $isCarousel}}ipsData--carousel{{endif}} ipsData--widget-blog-entry-feed" {{if $isCarousel}}id='{$carouselID}' tabindex="0"{{endif}}>
{{foreach $entries as $entry}}
{template="entryRow" group="widgets" app="blog" params="$entry"}
{{endforeach}}
</ul>
</i-data>
</div>
{{endif}}]]></template>
<template template_group="widgets" template_name="entryRow" template_data="$entry, $layout='table', $isCarousel=false" template_location="front" template_app="blog"><![CDATA[<li class='ipsData__item'>
<a href="{$entry->url('getLastComment')}" class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>{$entry->name}</span></a>
<figure class='ipsData__image'>
{{if $entry->cover_photo}}
<img src='{file="$entry->cover_photo" extension="blog_Entries"}' alt='' loading='lazy'>
{{else}}
<div class="ipsFallbackImage" aria-hidden="true"></div>
{{endif}}
</figure>
<div class="ipsData__content">
<div class='ipsData__main'>
<div class='ipsData__title'><h4><a href="{$entry->url('getLastComment')}" title='{lang="view_this_entry" sprintf="$entry->_title"}'>{$entry->name}</a></h4></div>
<div class='ipsData__meta'>{lang="byline_nodate" htmlsprintf="$entry->author()->link()"} {lang="in"} <a href='{$entry->container()->url()}'>{$entry->container()->_title}</a></div>
{{if \IPS\Settings::i()->blog_enable_rating}}
{template="rating" group="global" location="front" app="core" params="'small', $entry->averageRating(), 5, $entry->memberRating()"}
{{endif}}
{{if isset($orientation) and $orientation == 'horizontal'}}
<div class='ipsData__desc ipsRichText ipsTruncate_2'>{$entry->truncated()|raw}</div>
{{endif}}
</div>
<ul class="ipsData__stats">
<li data-stattype="comments">
<span class='ipsData__stats-icon' data-stat-value="{number='$entry->num_comments'}" aria-hidden="true" data-ipstooltip title='{number="$entry->num_comments"} {lang="blog_comments" pluralize="$entry->num_comments"}'></span>
<span class='ipsData__stats-label'>{number="$entry->num_comments"} {lang="blog_comments" pluralize="$entry->num_comments"}</span>
</li>
</ul>
</div>
</li>]]></template>
<css css_location="front" css_app="blog" css_attributes="" css_path="." css_name="blog.css">/* Blog index: &quot;View Blogs&quot; */
.ipsData--blog-entries.ipsData--grid{
--i-data--desc-truncate: 5;
}
.ipsCoverPhoto--blog-listing{
margin: 10px;
margin-bottom: 0;
}
.ipsData__blog-item{
border-bottom: 1px solid transparent;
border-bottom-color: color-mix(in srgb, currentColor 15%, transparent);
}
.cBlogInfo_content {
max-height: 170px;
overflow: hidden;
-webkit-mask-image: linear-gradient(#000 6em, transparent);
mask-image: linear-gradient(#000 6em, transparent);
}
/* &quot;Recent Entries&quot; list */
.ipsBlogs__blog-listing-entries li{
display: flex;
align-items: center;
gap: .9em;
padding: .5em;
}
.ipsBlogs__blog-listing-entries li:not(:last-child){
border-bottom: 1px solid transparent;
border-bottom-color: color-mix(in srgb, currentColor 10%, transparent);
}
/* Hide the first entry since it's already displayed as a large excerpt */
.ipsBlogs__blog-listing-entries li:first-child:not(:last-child){ display: none }
.ipsBlogs__blog-listing-entries .ipsUserPhoto{
flex: 0 0 1.5em;
}
/* Contributors under cover photo */
.cBlogContributors{
border-top: 1px solid transparent;
border-top-color: color-mix(in srgb, currentColor 10%, transparent);
padding: 1em;
}
/* Manage categories */
[data-controller=&quot;blog.front.view.manageCategories&quot;] .sortable-placeholder{
min-height: 5.7em;
}</css>
</theme>