initial commit

This commit is contained in:
origin
2023-12-04 16:40:27 +01:00
commit 813b2d3da4
133 changed files with 50635 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
<f:section name="Author">
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 16 16" aria-hidden="true" role="img" focusable="false"><g fill="currentColor"><path d="M13.687 11.587c-1.476-.421-2.507-.998-3.533-1.394-.099-.322-.333-.893-.39-2.205.706-.712 1.212-1.716 1.212-2.525V3.537C10.976 2.137 9.838 1 8.35 1h-.7c-1.4 0-2.626 1.137-2.626 2.537v1.926c0 .816.512 1.831 1.228 2.544-.024 1.288-.266 1.856-.381 2.178-1.035.394-2.071.979-3.558 1.403 0 0-1.226.7-1.313 3.413h14c-.087-2.801-1.313-3.414-1.313-3.414z"/></g></svg>
</f:section>
<f:section name="Category">
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 16 16" aria-hidden="true" role="img" focusable="false"><g fill="currentColor"><path d="M2 1.5v13a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5v-13a.5.5 0 0 0-.5-.5h-11a.5.5 0 0 0-.5.5zM13 14H3v-3h.586l1.707 1.707.293.293H10.414l.293-.293L12.414 11H13v3zm-1-4l-2 2H6l-2-2H3V2h10v8h-1z"/><path d="M11 4H5v1h6V4zM11 6H5v1h6V6zM11 8H5v1h6V8z"/></g></svg>
</f:section>
<f:section name="Comment">
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 16 16" aria-hidden="true" role="img" focusable="false"><g fill="currentColor"><path d="M3 3h10v8.75L11 10H3V3M2 2v9h8.5l3.5 3V2H2z"/><path d="M4 4h8v2H4zM4 7h6v1H4z"/></g></svg>
</f:section>
<f:section name="Published">
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 16 16" aria-hidden="true" role="img" focusable="false"><g fill="currentColor"><path d="M8 2.6c3.1 0 5.4 2.4 5.4 5.4S11 13.4 8 13.4 2.5 11.1 2.5 8 4.9 2.6 8 2.6M8 1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7z"/><path d="M7 4.1V8l4.1 2.5c.2-.3.4-.5.5-.9L8 7.4V4c-.3 0-.7.1-1 .1z"/></g></svg>
</f:section>
<f:section name="Tag">
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 16 16" aria-hidden="true" role="img" focusable="false"><g fill="currentColor"><path d="M6.657 1H1v5.656l8.485 8.485 5.657-5.657L6.657 1zM1.99 6.232V1.99h4.243l7.495 7.494-4.243 4.243L1.99 6.232z"/><path d="M3.475 3.475A1.75 1.75 0 1 0 5.952 5.95a1.75 1.75 0 0 0-2.477-2.475zm.707.707a.75.75 0 1 1 1.061 1.06.75.75 0 0 1-1.061-1.06zM6.126 8.602l2.475-2.475 3.535 3.536-2.475 2.474z"/></g></svg>
</f:section>

View File

@@ -0,0 +1,7 @@
<f:if condition="{image}">
<f:variable name="height" value="{f:if(condition: settings.height, then: settings.height, else: '400c')}" />
<f:variable name="width" value="{f:if(condition: settings.width, then: settings.width, else: '1140')}" />
<figure class="blogimage blogimage--featured">
<f:image loading="lazy" image="{image}" alt="{image.alternative}" title="{image.title}" height="{height}" width="{width}" />
</figure>
</f:if>

View File

@@ -0,0 +1,15 @@
<f:flashMessages as="flashMessages">
<f:for each="{flashMessages}" as="flashMessage">
<f:switch expression="{flashMessage.severity}">
<f:case value="-1"><f:variable name="class" value="info" /></f:case>
<f:case value="0"><f:variable name="class" value="success" /></f:case>
<f:case value="1"><f:variable name="class" value="warning" /></f:case>
<f:case value="2"><f:variable name="class" value="danger" /></f:case>
<f:defaultCase><f:variable name="class" value="notice" /></f:defaultCase>
</f:switch>
<div class="alert alert-{class}" role="alert">
<div class="alert__title">{flashMessage.title}</div>
<div class="alert__message">{flashMessage.message}</div>
</div>
</f:for>
</f:flashMessages>

View File

@@ -0,0 +1,17 @@
<f:form.validationResults>
<f:if condition="{validationResults.flattenedErrors}">
<div class="errors">
<f:for each="{validationResults.flattenedErrors}" as="errors" key="propertyPath">
<div class="alert alert-danger" role="alert">
<div class="alert__message">
<ul class="alert__list">
<f:for each="{errors}" as="error">
<li><span>{error}</span></li>
</f:for>
</ul>
</div>
</div>
</f:for>
</div>
</f:if>
</f:form.validationResults>

View File

@@ -0,0 +1,18 @@
<f:section name="LinkedIn">
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 16 16" aria-hidden="true" role="img" focusable="false"><g fill="currentColor"><path d="M15 2v12c0 .6-.5 1-1 1H2c-.6 0-1-.5-1-1V2c0-.6.5-1 1-1h12c.5 0 1 .5 1 1zM5.1 6.4h-2V13h2.1V6.4zm.2-2.3c0-.7-.5-1.2-1.2-1.2s-1.2.5-1.2 1.2.5 1.2 1.2 1.2c.6 0 1.2-.5 1.2-1.2zm7.6 4.8c0-2-1.3-2.8-2.5-2.8-.8 0-1.6.4-2.1 1.1v-.8H6.4V13h2.1V9.4C8.3 8.7 8.9 8 9.6 8h.1c.7 0 1.1.4 1.1 1.4v3.5h2.1v-4z"/></g></svg>
</f:section>
<f:section name="Rss">
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 16 16" aria-hidden="true" role="img" focusable="false"><g fill="currentColor"><path d="M2 4c5.514 0 10 4.486 10 10h2C14 7.372 8.628 2 2 2v2z"/><path d="M2 8c3.308 0 6 2.692 6 6h2a8 8 0 0 0-8-8v2zM3.5 14a1.5 1.5 0 0 1 0-3 1.5 1.5 0 0 1 0 3z"/></g></svg>
</f:section>
<f:section name="Twitter">
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 16 16" aria-hidden="true" role="img" focusable="false"><g fill="currentColor"><path d="M5.4 13.7c5.3 0 8.2-4.4 8.2-8.2v-.4c.6-.4 1-.9 1.4-1.5-.5.2-1.1.4-1.6.5.6-.4 1-.9 1.3-1.6-.6.3-1.2.6-1.8.7-.5-.6-1.3-.9-2.1-.9-1.6 0-2.9 1.3-2.9 2.9 0 .2 0 .4.1.7-2.5-.2-4.6-1.3-6-3.1-.3.5-.4 1-.4 1.5 0 1 .5 1.9 1.3 2.4-.5 0-.9-.1-1.3-.4 0 1.4 1 2.6 2.3 2.8-.3.1-.5.2-.8.2-.2 0-.4 0-.5-.1.4 1.1 1.4 2 2.7 2-1 .8-2.2 1.2-3.6 1.2H1c1.3.8 2.8 1.3 4.4 1.3"/></g></svg>
</f:section>
<f:section name="Instagram">
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 16 16" aria-hidden="true" role="img" focusable="false"><g fill="currentColor"><path d="M8 2.261c1.869 0 2.09.007 2.829.041.682.031 1.053.145 1.3.241.327.127.56.279.805.524s.397.478.524.805c.096.247.21.617.241 1.3.033.738.04.959.04 2.828s-.007 2.09-.041 2.829c-.031.682-.145 1.053-.241 1.3-.127.327-.279.56-.524.805a2.168 2.168 0 0 1-.805.524c-.247.096-.617.21-1.3.241-.737.033-.959.04-2.828.04s-2.091-.007-2.829-.041c-.682-.031-1.053-.145-1.3-.241a2.168 2.168 0 0 1-.805-.524 2.168 2.168 0 0 1-.524-.805c-.096-.247-.21-.617-.241-1.3-.033-.738-.04-.959-.04-2.828s.007-2.09.041-2.829c.031-.682.145-1.053.241-1.3.127-.327.279-.56.524-.805.245-.244.478-.396.805-.523.247-.096.617-.21 1.3-.241.738-.034.959-.041 2.828-.041M8 1c-1.901 0-2.139.008-2.886.042-.745.034-1.254.152-1.699.325-.46.179-.851.418-1.24.807-.389.389-.629.78-.807 1.24-.174.446-.292.955-.326 1.7C1.008 5.861 1 6.099 1 8c0 1.901.008 2.139.042 2.886.034.745.152 1.254.325 1.699.179.46.418.851.807 1.24.389.389.78.629 1.24.807.445.173.954.291 1.699.325.748.035.986.043 2.887.043s2.139-.008 2.886-.042c.745-.034 1.254-.152 1.699-.325.46-.179.851-.418 1.24-.807.389-.389.629-.78.807-1.24.173-.445.291-.954.325-1.699.035-.748.043-.986.043-2.887s-.008-2.139-.042-2.886c-.034-.745-.152-1.254-.325-1.699a3.435 3.435 0 0 0-.807-1.24 3.422 3.422 0 0 0-1.24-.807c-.445-.173-.954-.291-1.699-.325C10.139 1.008 9.901 1 8 1z"/><path d="M8 4.405a3.596 3.596 0 1 0 .001 7.191A3.596 3.596 0 0 0 8 4.405zm0 5.928a2.333 2.333 0 1 1 0-4.666 2.333 2.333 0 0 1 0 4.666z"/><circle cx="11.737" cy="4.263" r=".84"/></g></svg>
</f:section>
<f:section name="Website">
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 16 16" aria-hidden="true" role="img" focusable="false"><g fill="currentColor"><path d="M8 1C4.1 1 1 4.1 1 8s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm5.2 4h-2.5c-.2-1.1-.6-2.1-1-2.7 1.5.4 2.7 1.4 3.5 2.7zM10 8c0 .7-.1 1.4-.1 2H6.1c0-.6-.1-1.3-.1-2s.1-1.4.1-2h3.7c.1.6.2 1.3.2 2zm-2 6c-.5 0-1.2-1.1-1.7-3h3.3c-.4 1.9-1.1 3-1.6 3zM6.3 5C6.8 3.1 7.5 2 8 2s1.2 1.1 1.7 3H6.3zm0-2.7c-.4.6-.8 1.6-1 2.7H2.8c.8-1.3 2-2.3 3.5-2.7zM2.4 6h2.8C5 6.6 5 7.3 5 8s0 1.4.1 2H2.4C2.1 9.4 2 8.7 2 8s.1-1.4.4-2zm.4 5h2.5c.2 1.1.6 2.1 1 2.7-1.5-.4-2.7-1.4-3.5-2.7zm6.9 2.7c.4-.7.8-1.6 1-2.7h2.5c-.8 1.3-2 2.3-3.5 2.7zm3.9-3.7h-2.8c.2-.6.2-1.3.2-2s0-1.4-.1-2h2.8c.2.6.3 1.3.3 2s-.1 1.4-.4 2z"/></g></svg>
</f:section>
<f:section name="Xing">
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 16 16" aria-hidden="true" role="img" focusable="false"><g fill="currentColor"><path d="M7.084 6.561c-.056.103-.787 1.387-2.19 3.859-.153.259-.337.391-.553.391H2.307c-.241 0-.378-.234-.266-.45l2.156-3.79c.006 0 .006-.003 0-.009L2.826 4.199c-.135-.243.009-.44.265-.44h2.034c.228 0 .416.128.562.381l1.397 2.421zm6.871-5.12L9.456 9.345v.009l2.862 5.205c.121.222.006.441-.266.441h-2.037c-.237 0-.425-.125-.562-.381L6.566 9.354l4.524-7.973c.143-.253.324-.381.546-.381h2.053c.25 0 .384.209.266.441z"/></g></svg>
</f:section>

View File

@@ -0,0 +1,80 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:bk2k="http://typo3.org/ns/BK2K/BootstrapPackage/ViewHelpers" data-namespace-typo3-fluid="true">
<picture>
<f:for each="{variants}" key="name" as="variant">
<f:variable name="breakpoint">{variant.breakpoint as integer}</f:variable>
<f:variable name="width">{variant.width as integer}</f:variable>
<f:variable name="height" value="" />
<f:if condition="{width}">
<f:if condition="{variant.aspectRatio}">
<f:variable name="aspectRatio">{variant.aspectRatio as float}</f:variable>
<f:variable name="height">{width / aspectRatio}</f:variable>
<f:variable name="height">{height as integer}</f:variable>
</f:if>
<f:variable name="mediaQuery">{f:if(condition: breakpoint, then: 'media="(min-width: {breakpoint}px)"')}</f:variable>
<f:if condition="{variant.sizes}">
<f:variable name="srcset" value="" />
<f:for each="{variant.sizes}" key="sizeKey" as="sizeConfig" iteration="iteration">
<f:variable name="sizeWidth">{sizeConfig.multiplier as float}</f:variable>
<f:variable name="sizeWidth">{sizeWidth * width}</f:variable>
<f:variable name="sizeHeight" value="" />
<f:if condition="{height}">
<f:then>
<f:variable name="sizeHeight">{sizeConfig.multiplier as float}</f:variable>
<f:variable name="sizeHeight">{sizeHeight * height}</f:variable>
<f:variable name="sizeUrl">{f:uri.image(image: file, cropVariant: name, width: '{sizeWidth}c', height: '{sizeHeight}c',absolute:'true')}</f:variable>
</f:then>
<f:else>
<f:if condition="{maxWidth} < {sizeWidth}">
<f:then>
<f:variable name="sizeUrl">{f:uri.image(image: file, cropVariant: 'default', width: maxWidth, absolute:'true')}</f:variable>
</f:then>
<f:else>
<f:variable name="sizeUrl">{f:uri.image(image: file, cropVariant: 'default', width: sizeWidth, absolute:'true')}</f:variable>
</f:else>
</f:if>
</f:else>
</f:if>
<f:variable name="srcset">{srcset}{sizeUrl} {sizeKey}{f:if(condition: iteration.isLast, else: ',')}</f:variable>
</f:for>
</f:if>
<source data-variant="{name}" {f:if(condition: sizeHeight, then: 'data-width="{width}" data-height="{sizeHeight}"', else: 'data-maxwidth="{width}"')} {mediaQuery->f:format.raw()} srcset="{srcset}">
</f:if>
</f:for>
<f:variable name="defaultWidth" value="{variants.default.width}" />
<f:variable name="defaultAspectRatio" value="{variants.default.aspectRatio}" />
<f:if condition="{defaultAspectRatio}">
<f:variable name="aspectRatio">{defaultAspectRatio as float}</f:variable>
<f:variable name="defaultHeight">{defaultWidth / aspectRatio}</f:variable>
<f:variable name="defaultHeight">{defaultHeight as integer}c</f:variable>
</f:if>
<f:if condition="{defaultHeight}">
<f:then>
<f:variable name="src" value="{f:uri.image(image: file, cropVariant: 'default', width: defaultWidth, height: defaultHeight, absolute:'true')}" />
</f:then>
<f:else>
<f:if condition="{maxWidth}">
<f:then>
<f:variable name="src" value="{f:uri.image(image: file, cropVariant: 'default', width: maxWidth, absolute:'true')}" />
</f:then>
<f:else>
<f:variable name="src" value="{f:uri.image(image: file, cropVariant: 'default', width: defaultWidth, absolute:'true')}" />
</f:else>
</f:if>
</f:else>
</f:if>
<f:variable name="finalWidth" value="{bk2k:data.imageInfo(src: src, property: 'width')}" />
<f:variable name="finalHeight" value="{bk2k:data.imageInfo(src: src, property: 'height')}" />
<f:if condition="itemprop">
<f:then>
<img loading="lazy" itemprop="image" src="{src}" width="{finalWidth}" height="{finalHeight}" intrinsicsize="{finalWidth}x{finalHeight}" title="{file.properties.title}" alt="{file.properties.alternative}">
</f:then>
<f:else>
<img loading="lazy" src="{src}" width="{finalWidth}" height="{finalHeight}" intrinsicsize="{finalWidth}x{finalHeight}" title="{file.properties.title}" alt="{file.properties.alternative}">
</f:else>
</f:if>
</picture>
</html>

View File

@@ -0,0 +1,36 @@
<div class="postlist{f:if(condition: type, then: ' postlist--{type}')}">
<f:if condition="{pagination} && {pagination.paginatedItems}">
<f:then>
<f:if condition="{settings.lists.pagination.insertAbove}">
<f:render partial="Pagination/Pagination" arguments="{pagination: pagination}" />
</f:if>
<div class=" card-group-element card-group-element-align-left card-group-element-columns-2">
<f:for each="{pagination.paginatedItems}" iteration="iterator" as="post">
<blogvh:cache post="{post}" />
<f:render partial="List/Post" arguments="{_all}" />
</f:for>
</div>
<f:if condition="{settings.lists.pagination.insertBelow}">
<f:render partial="Pagination/Pagination" arguments="{pagination: pagination}" />
</f:if>
</f:then>
<f:else if="{posts}">
<f:for each="{posts}" iteration="iterator" as="post">
<blogvh:cache post="{post}" />
<f:render partial="List/Post" arguments="{_all}" />
</f:for>
</f:else>
<f:else>
<div class="alert alert-info" role="alert">
<strong><f:translate key="list.no_posts.title" /></strong><br><f:translate key="list.no_posts.message" />
</div>
</f:else>
</f:if>
</div>

View File

@@ -0,0 +1,19 @@
<div class="bloglist__item bloglist__item--archiveyear" data-blog-archive-year="{year}">
<h2 class="bloglist__title" itemprop="name">
<blogvh:link.archive year="{year}" title="{year}">{year}</blogvh:link.archive>
</h2>
<div class="bloglist__content">
<ul class="bloglinklist">
<f:for each="{months}" as="month">
<li class="bloglinklist__item" data-blog-archive-year="{year}" data-blog-archive-month="{month.month}">
<blogvh:link.archive class="bloglinklist__itemlink" year="{year}" month="{month.month}" title="{f:format.date(format: '{settings.archive.monthDateFormat} {settings.archive.yearDateFormat}', date: month.timestamp)}">
<span class="bloglinklist__itemtitle">{f:format.date(format: '{settings.archive.monthDateFormat}', date: month.timestamp)}</span>
<f:if condition="{settings.archive.showCounter} == 1">
<span class="bloglinklist__itemcount">{month.count}</span>
</f:if>
</blogvh:link.archive>
</li>
</f:for>
</ul>
</div>
</div>

View File

@@ -0,0 +1,22 @@
<div class="bloglist__item--author card" data-blog-author="{author.uid}">
<div class="card-body">
<div class="bloglist__image">
<f:variable name="avatarsize" value="{settings.authors.avatar.provider.size as integer}" />
<f:if condition="{avatarsize}"><f:else><f:variable name="avatarsize" value="32" /></f:else></f:if>
<img loading="lazy" class="bloglist__imageavatar blogavatar" height="{avatarsize}" width="{avatarsize}" src="{author.avatar}" itemprop="image">
</div>
<h2 class="bloglist__title" itemprop="name">
<blogvh:link.author author="{author}" />
</h2>
<f:if condition="{author.bio}">
<p class="bloglist__description" itemprop="description">
<f:format.crop maxCharacters="200" append="&nbsp;[...]">{author.bio}</f:format.crop>
</p>
</f:if>
<blogvh:link.author class="bloglist__link" author="{author}">
<f:translate key="list.show.author" />
</blogvh:link.author>
</div>
</div>

View File

@@ -0,0 +1,18 @@
<div class="card-group-element-item">
<div class=" bloglist__item--category card" data-blog-category="{category.uid}">
<div class="card-body">
<h2 class="bloglist__title" itemprop="name">
<blogvh:link.category category="{category}" />
</h2>
<f:if condition="{category.description}">
<p class="bloglist__description" itemprop="description">
<f:format.crop maxCharacters="200" append="&nbsp;[...]">{category.description}</f:format.crop>
</p>
</f:if>
<blogvh:link.category class="bloglist__link" category="{category}">
<f:translate key="list.show.discover" default="entdecken"/>
</blogvh:link.category>
</div>
</div>
</div>

View File

@@ -0,0 +1,27 @@
<article class="card-group-element-item" data-blog-tag="{f:if(condition: post.tags, then: post.tags.0.uid, else: 0)}" data-blog-category="{f:if(condition: post.categories, then: post.categories.0.uid, else: 0)}">
<div class="card">
<div class="card-body">
<f:if condition="{post.featuredImage}">
<blogvh:link.post post="{post}" class="postlist__featuredimage" additionalAttributes="{aria-hidden: 'true'}" tabindex="-1">
<f:render partial="General/FeaturedImage" arguments="{image: post.featuredImage, settings: settings.lists.featuredImage}" />
</blogvh:link.post>
</f:if>
<h2 class="postlist__posttitle" itemprop="name"><blogvh:link.post post="{post}" /></h2>
<f:render partial="Meta/ListHeader" arguments="{_all}" />
<f:if condition="{post.abstract}">
<f:then>
<p class="postlist__postdescription" itemprop="description">{post.abstract}</p>
</f:then>
<f:else>
<p class="postlist__postdescription" itemprop="description">{post.description}</p>
</f:else>
</f:if>
<f:render partial="Meta/ListFooter" arguments="{_all}" />
</div>
</div>
</article>

View File

@@ -0,0 +1,25 @@
<html xmlns:dc="http://purl.org/dc/elements/1.1/" data-namespace-typo3-fluid="true">
<f:spaceless>
<item>
<title>{post.title}</title>
<link><blogvh:link.post post="{post}" returnUri="true" createAbsoluteUri="true" /></link>
<f:if condition="{settings.comments.active} && {post.commentsActive}">
<comments><blogvh:link.post post="{post}" section="comments" returnUri="true" createAbsoluteUri="true" /></comments>
</f:if>
<pubDate><f:format.date date="{post.publishDate}" format="r" /></pubDate>
<f:if condition="{post.authors}">
<f:for each="{post.authors}" as="author">
<dc:creator>{author.name}</dc:creator>
</f:for>
</f:if>
<guid><blogvh:link.post post="{post}" returnUri="true" createAbsoluteUri="true" /></guid>
<description><f:if condition="{post.abstract}"><f:then>{post.abstract}</f:then><f:else>{post.description}</f:else></f:if></description>
<f:if condition="{post.featuredImage}">
<enclosure
length="{post.featuredImage.originalResource.size}"
type="{post.featuredImage.originalResource.mimeType}"
url="{f:uri.image(image: post.featuredImage, absolute: '1')}" />
</f:if>
</item>
</f:spaceless>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,13 @@
<div class="bloglist__item bloglist__item--tag" data-blog-tag="{tag.uid}">
<h2 class="bloglist__title" itemprop="name">
<blogvh:link.tag tag="{tag}" />
</h2>
<f:if condition="{tag.description}">
<p class="bloglist__description" itemprop="description">
<f:format.crop maxCharacters="200" append="&nbsp;[...]">{tag.description}</f:format.crop>
</p>
</f:if>
<blogvh:link.tag class="bloglist__link" tag="{tag}">
<f:translate key="list.show.tag" />
</blogvh:link.tag>
</div>

View File

@@ -0,0 +1,31 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:bk2k="http://typo3.org/ns/BK2K/BootstrapPackage/ViewHelpers" data-namespace-typo3-fluid="true">
<f:if condition="{settings.useLayerSwitcher} === '1' && {settings.controllsPositions} === '2'">
<input class="a2g-map-layer-swipe form-range" type="range" style="width: 100%" value="{settings.layerSwitcherValue}">
</f:if>
<div class="d-flex justify-content-center">
<f:if condition="{settings.showRemoveMarkerButton} === '1'">
<div class="m-3 form-check form-switch">
<input id="{mapId}-hide-marker-{settings.controllsPositions}" class="form-check-input a2g-map-marker-visible-switcher" type="checkbox">
<label for="{mapId}-hide-marker-{settings.controllsPositions}" class="form-check-label">hide marker</label>
</div>
</f:if>
<f:if condition="{settings.showMyPositionButton} === '1'">
<div class="m-3 form-check form-switch">
<input id="{mapId}-lacate-me-{settings.controllsPositions}" class="form-check-input a2g-map-geolocate-me" type="checkbox">
<label for="{mapId}-hide-marker-{settings.controllsPositions}" class="form-check-label">locate me</label>
</div>
</f:if>
<f:if condition="{settings.showLayerSelect} === '1' && {countMapLayers}>1">
<div class="m-3">
<label>Geometry type &nbsp;</label>
<select class="a2g-map-layer-select">
</select>
</div>
</f:if>
</div>
<f:if condition="{settings.useLayerSwitcher} === '1' && ( {settings.controllsPositions} === '1' || {settings.controllsPositions} === '3'} )">
<input class="a2g-map-layer-swipe form-range" type="range" style="width: 100%" value="{settings.layerSwitcherValue}">
</f:if>
</html>

View File

@@ -0,0 +1,2 @@
<f:variable name="metatype" value="default" />
<f:render partial="Meta/Rendering/Section" arguments="{_all}" />

View File

@@ -0,0 +1,31 @@
<f:variable name="name">authors</f:variable>
<f:variable name="icon"><f:render partial="General/BlogIcons" section="Author" optional="true" /></f:variable>
<f:variable name="prefix"><f:translate key="meta.authors.author"/></f:variable>
<f:if condition="{post.authors}">
<f:if condition="{post.authors -> f:count()} > 1">
<f:variable name="prefix"><f:translate key="meta.authors.authors"/></f:variable>
</f:if>
<f:render partial="Meta/Rendering/Item" arguments="{name: name, icon: icon, prefix: prefix}" contentAs="content">
<ul class="postmetagroup__list">
<f:for each="{post.authors}" as="author">
<li>
<span class="postmetagroup__listitem" data-blog-author="{author.uid}">
<f:if condition="{avatarSettings.enable}">
<f:variable name="avatarsize" value="{avatarSettings.size as integer}" />
<f:if condition="{avatarsize}"><f:else><f:variable name="avatarsize" value="24" /></f:else></f:if>
<span class="postmetagroup__listprefix"><img loading="lazy" class="postmetagroup__listavatar blogavatar" height="{avatarsize}" width="{avatarsize}" src="{author.avatar}" itemprop="image"></span>
</f:if>
<span class="postmetagroup__listtext" data-prefix="{f:translate(key:'meta.authors.author')}"><f:render section="ProfileLink" arguments="{author: author}" contentAs="content">{author.name}</f:render></span>
</span>
</li>
</f:for>
</ul>
</f:render>
</f:if>
<f:section name="ProfileLink">
<f:if condition="{author.detailsPage} || {settings.authorUid}">
<f:then><blogvh:link.author rel="author" author="{author}"><span itemprop="name">{content}</span></blogvh:link.author></f:then>
<f:else><span itemprop="name">{content}</span></f:else>
</f:if>
</f:section>

View File

@@ -0,0 +1,20 @@
<f:variable name="name">categories</f:variable>
<f:variable name="icon"><f:render partial="General/BlogIcons" section="Category" optional="true" /></f:variable>
<f:variable name="prefix"><f:translate key="meta.categories.category"/></f:variable>
<f:if condition="{post.categories}">
<f:if condition="{post.categories -> f:count()} > 1">
<f:variable name="prefix"><f:translate key="meta.categories.categories"/></f:variable>
</f:if>
<f:render partial="Meta/Rendering/Item" arguments="{name: name, icon: icon, prefix: prefix}" contentAs="content">
<ul class="postmetagroup__list">
<f:for each="{post.categories}" as="postCategory">
<li>
<span class="postmetagroup__listitem" data-blog-category="{postCategory.uid}">
<span class="postmetagroup__listtext"><blogvh:link.category category="{postCategory}" /></span>
</span>
</li>
</f:for>
</ul>
</f:render>
</f:if>

View File

@@ -0,0 +1,23 @@
<f:variable name="name">comments</f:variable>
<f:variable name="icon"><f:render partial="General/BlogIcons" section="Comment" optional="true" /></f:variable>
<f:variable name="prefix"><f:translate key="meta.comments.join_conversation"/></f:variable>
<f:variable name="text"><f:translate key="meta.comments.comments"/></f:variable>
<f:if condition="{settings.comments.active} && {post.commentsActive}">
<f:variable name="commentCount" value="{post.activeComments -> f:count()}" />
<f:if condition="{settings.comments.disqus._typoScriptNodeValue} != 1">
<f:if condition="{commentCount} == 0">
<f:variable name="prefix"><f:translate key="meta.comments.start_conversation"/></f:variable>
<f:variable name="text"><f:translate key="meta.comments.has_comments" arguments="{0: commentCount}"/></f:variable>
</f:if>
<f:if condition="{commentCount} == 1">
<f:variable name="text"><f:translate key="meta.comments.has_comment" arguments="{0: commentCount}"/></f:variable>
</f:if>
<f:if condition="{commentCount} >= 1">
<f:variable name="text"><f:translate key="meta.comments.has_comments" arguments="{0: commentCount}"/></f:variable>
</f:if>
</f:if>
<f:render partial="Meta/Rendering/Item" arguments="{name: name, icon: icon, prefix: prefix}" contentAs="content">
<blogvh:link.post post="{post}" section="comments">{text}</blogvh:link.post>
</f:render>
</f:if>

View File

@@ -0,0 +1,10 @@
<f:variable name="name">published</f:variable>
<f:variable name="icon"><f:render partial="General/BlogIcons" section="Published" optional="true" /></f:variable>
<f:variable name="prefix"><f:translate key="meta.published.published"/></f:variable>
<f:render partial="Meta/Rendering/Item" arguments="{name: name, icon: icon, prefix: prefix}" contentAs="content">
<blogvh:link.post post="{post}" rel="bookmark">
<f:if condition="!{publishDateFormat}"><f:variable name="dateformat" value="%d.%m.%Y" /></f:if>
<time datetime="{f:format.date(format: '%Y-%m-%dT%H:%M:%S-%z', date: post.publishDate)}" itemprop="datepublished">{f:format.date(format: publishDateFormat, date: post.publishDate)}</time>
</blogvh:link.post>
</f:render>

View File

@@ -0,0 +1,20 @@
<f:variable name="name">tags</f:variable>
<f:variable name="icon"><f:render partial="General/BlogIcons" section="Tag" optional="true" /></f:variable>
<f:variable name="prefix"><f:translate key="meta.tags.tag"/></f:variable>
<f:if condition="{post.tags}">
<f:if condition="{post.tags -> f:count()} > 1">
<f:variable name="prefix"><f:translate key="meta.tags.tags"/></f:variable>
</f:if>
<f:render partial="Meta/Rendering/Item" arguments="{name: name, icon: icon, prefix: prefix}" contentAs="content">
<ul class="postmetagroup__list">
<f:for each="{post.tags}" as="postTag">
<li>
<span class="postmetagroup__listitem" data-blog-tag="{postTag.uid}">
<span class="postmetagroup__listtext"><blogvh:link.tag tag="{postTag}" /></span>
</span>
</li>
</f:for>
</ul>
</f:render>
</f:if>

View File

@@ -0,0 +1,2 @@
<f:variable name="metatype" value="listfooter" />
<f:render partial="Meta/Rendering/Section" arguments="{_all}" />

View File

@@ -0,0 +1,2 @@
<f:variable name="metatype" value="listheader" />
<f:render partial="Meta/Rendering/Section" arguments="{_all}" />

View File

@@ -0,0 +1,2 @@
<f:variable name="metatype" value="postfooter" />
<f:render partial="Meta/Rendering/Section" arguments="{_all}" />

View File

@@ -0,0 +1,2 @@
<f:variable name="metatype" value="postheader" />
<f:render partial="Meta/Rendering/Section" arguments="{_all}" />

View File

@@ -0,0 +1,3 @@
<div class="postmetagroup postmetagroup--{settings.meta.{metatype}.modifier} postmetagroup--type-{metatype}">
{content -> f:format.raw()}
</div>

View File

@@ -0,0 +1,12 @@
<f:if condition="!{name}"><f:variable name="name">default</f:variable></f:if>
<div class="postmetagroup__item postmetagroup__item--{name}">
<f:if condition="{icon}">
<div class="postmetagroup__icon">
<span class="blogicon">{icon -> f:format.raw()}</span>
</div>
</f:if>
<div class="postmetagroup__body">
<f:if condition="{prefix}"><div class="postmetagroup__prefix">{prefix -> f:format.raw()}</div></f:if>
<f:if condition="{content}"><div class="postmetagroup__content">{content -> f:format.raw()}</div></f:if>
</div>
</div>

View File

@@ -0,0 +1,23 @@
<f:if condition="!{metatype}"><f:variable name="metatype" value="default" /></f:if>
<f:variable name="modifier" value="{settings.meta.{metatype}.modifier}" />
<f:if condition="{settings.meta.{metatype}.enable}">
<f:render partial="Meta/Rendering/Group" arguments="{_all}" contentAs="content">
<f:if condition="{settings.meta.{metatype}.elements.authors.enable}">
<f:variable name="avatarSettings" value="{settings.meta.{metatype}.elements.authors.avatar}" />
<f:render partial="Meta/Elements/Authors" arguments="{_all}" />
</f:if>
<f:if condition="{settings.meta.{metatype}.elements.categories.enable}">
<f:render partial="Meta/Elements/Categories" arguments="{_all}" />
</f:if>
<f:if condition="{settings.meta.{metatype}.elements.tags.enable}">
<f:render partial="Meta/Elements/Tags" arguments="{_all}" />
</f:if>
<f:if condition="{settings.meta.{metatype}.elements.published.enable}">
<f:variable name="publishDateFormat" value="{settings.meta.{metatype}.elements.published.format}" />
<f:render partial="Meta/Elements/Published" arguments="{_all}" />
</f:if>
<f:if condition="{settings.meta.{metatype}.elements.comments.enable}">
<f:render partial="Meta/Elements/Comments" arguments="{_all}" />
</f:if>
</f:render>
</f:if>

View File

@@ -0,0 +1,2 @@
<f:variable name="metatype" value="teaserfooter" />
<f:render partial="Meta/Rendering/Section" arguments="{_all}" />

View File

@@ -0,0 +1,2 @@
<f:variable name="metatype" value="teaserheader" />
<f:render partial="Meta/Rendering/Section" arguments="{_all}" />

View File

@@ -0,0 +1,7 @@
<div class="tx-blog-post-list">
<ul>
<f:for each="{posts}" as="post">
<li>{f:format.date(format: '{settings.lists.posts.dateFormat}', date: post.publishDate)} <blogvh:link.post post="{post}" /></li>
</f:for>
</ul>
</div>

View File

@@ -0,0 +1,22 @@
<div class="card-group-element-item">
<article class="postteaser__post card" data-blog-tag="{f:if(condition: post.tags, then: post.tags.0.uid, else: 0)}" data-blog-category="{f:if(condition: post.categories, then: post.categories.0.uid, else: 0)}">
<div class="card-body">
<f:if condition="{post.featuredImage}">
<blogvh:link.post post="{post}" class="postteaser__featuredimage" additionalAttributes="{aria-hidden: 'true'}" tabindex="-1">
<f:render partial="General/FeaturedImage" arguments="{image: post.featuredImage, settings: settings.teaser.featuredImage}" />
</blogvh:link.post>
</f:if>
<h2 class="postteaser__posttitle" itemprop="name"><blogvh:link.post post="{post}" /></h2>
<f:render partial="Meta/TeaserHeader" arguments="{_all}" />
<f:if condition="{post.abstract}">
<f:then>
<p class="postteaser__postdescription" itemprop="description">{post.abstract}</p>
</f:then>
<f:else>
<p class="postteaser__postdescription" itemprop="description">{post.description}</p>
</f:else>
</f:if>
<f:render partial="Meta/TeaserFooter" arguments="{_all}" />
</div>
</article>
</div>

View File

@@ -0,0 +1,6 @@
<div class="card-group-element card-group-element-columns-3 card-group-element-align-center postteaser{f:if(condition: type, then: ' postteaser--{type}')}" data-blog-postcount="{posts -> f:count()}">
<f:for each="{posts}" iteration="iterator" as="post">
<blogvh:cache post="{post}" />
<f:render partial="Teaser/Post" arguments="{_all}" />
</f:for>
</div>

View File

@@ -0,0 +1,38 @@
<div class="postlist{f:if(condition: type, then: ' postlist--{type}')} timeline">
<f:if condition="{pagination} && {pagination.paginatedItems}">
<f:then>
<f:if condition="{settings.lists.pagination.insertAbove}">
<f:render partial="Pagination/Pagination" arguments="{pagination: pagination}" />
</f:if>
<f:for each="{pagination.paginatedItems}" iteration="iterator" as="post">
<div class="timeline-item">
<blogvh:cache post="{post}" />
<f:render partial="List/PostTimeline" arguments="{_all}" />
</div>
</f:for>
<f:if condition="{settings.lists.pagination.insertBelow}">
<f:render partial="Pagination/Pagination" arguments="{pagination: pagination}" />
</f:if>
</f:then>
<f:else if="{posts}">
<f:for each="{posts}" iteration="iterator" as="post">
<div class="timeline-item">
<blogvh:cache post="{post}" />
<f:render partial="List/PostTimeline" arguments="{_all}" />
</div>
</f:for>
</f:else>
<f:else>
<div class="alert alert-info" role="alert">
<strong><f:translate key="list.no_posts.title" /></strong><br><f:translate key="list.no_posts.message" />
</div>
</f:else>
</f:if>
</div>