Initial commit - Typo3 11.5.41

This commit is contained in:
Matteo Gallo
2026-07-03 17:53:31 +02:00
commit 5ca4743197
6811 changed files with 568848 additions and 0 deletions

View File

@@ -0,0 +1,112 @@
{namespace ttaddr=FriendsOfTYPO3\TtAddress\ViewHelpers}
<f:section name="address">
<f:if condition="{address.address}">
<div class="address" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<address>
<span itemprop="streetAddress">{address.address}</span><br>
<span itemprop="postalCode">{address.zip}</span>&nbsp;<span
itemprop="addressLocality">{address.city}</span><br>
<span itemprop="addressCountry">{address.country}</span>
</address>
</div>
</f:if>
</f:section>
<f:section name="position">
<f:if condition="{address.position}">
<p class="jobTitle" itemprop="jobTitle"><em>{address.position}</em></p>
</f:if>
</f:section>
<f:section name="contact">
<ul class="list-unstyled">
<f:if condition="{address.phone}">
<li>
<i class="fas fa-phone"></i>
{f:translate(key:'label.telephone')}: <a href="tel:{address.cleanedPhone}">
<span itemprop="telephone">{address.phone}</span>
</a>
</li>
</f:if>
<f:if condition="{address.mobile}">
<li>
<i class="fas fa-mobile-alt"></i>
{f:translate(key:'label.mobile')}: <a href="tel:{address.cleanedMobile}">
<span itemprop="telephone">{address.mobile}</span>
</a>
</li>
</f:if>
<f:if condition="{address.fax}">
<li>
<i class="fas fa-fax"></i>
{f:translate(key:'label.fax')}: <span itemprop="faxNumber">{address.fax}</span>
</li>
</f:if>
<f:if condition="{address.email}">
<li>
<i class="fas fa-envelope"></i>
{f:translate(key:'label.email')}:
<span><f:link.email email="{address.email}" /></span>
</li>
</f:if>
<f:if condition="{address.www}">
<meta itemprop="url" content="{f:uri.typolink(parameter:address.www)}"/>
<li>
<i class="fas fa-link"></i>
{f:translate(key:'label.www')}:
<f:link.typolink parameter="{address.www}">{address.wwwSimplified}</f:link.typolink>
</li>
</f:if>
<f:if condition="{address.birthday}">
<meta itemprop="birthDate" content="{address.birthday -> f:format.date(format:'%Y-%m-%d')}">
<li>
<i class="fas fa-birthday-cake"></i>
{f:translate(key:'label.birthday')}: {address.birthday -> f:format.date(format:'%d.%m.%Y')}
</li>
</f:if>
</ul>
</f:section>
<f:section name="social">
<f:if condition="{address.skype} || {address.twitter} || {address.facebook} || {address.linkedin}">
<ul class="list-inline">
<f:if condition="{address.skype}">
<li class="list-inline-item">
<i class="fab fa-skype" aria-hidden title="{f:translate(key:'label.skype')}"></i>
<span class="sr-only">{f:translate(key:'label.skype')}:</span>
<a href="skype:{address.skype}?call">{address.skype}</a>
<meta itemprop="sameAs" content="skype:{address.skype}?call"/>
</li>
</f:if>
<f:if condition="{address.twitter}">
<li class="list-inline-item">
<i class="fab fa-twitter" aria-hidden title="{f:translate(key:'label.twitter')}"></i>
<span class="sr-only">{f:translate(key:'label.twitter')}:</span>
<a href="https://twitter.com/{address.twitter}" target="_blank">{address.twitter}</a>
<meta itemprop="sameAs" content="https://twitter.com/{address.twitter}"/>
</li>
</f:if>
<f:if condition="{address.facebook}">
<li class="list-inline-item">
<i class="fab fa-facebook" aria-hidden title="{f:translate(key:'label.facebook')}"></i>
<span class="sr-only">{f:translate(key:'label.facebook')}:</span>
<a href="https://www.facebook.com/{address.facebook}" target="_blank">{address.facebook}</a>
<meta itemprop="sameAs" content="https://www.facebook.com/{address.facebook}"/>
</li>
</f:if>
<f:if condition="{address.linkedin}">
<li class="list-inline-item">
<i class="fab fa-linkedin" aria-hidden title="{f:translate(key:'label.linkedin')}"></i>
<span class="sr-only">{f:translate(key:'label.linkedin')}:</span>
<a href="https://www.linkedin.com/in/{address.linkedin}" target="_blank">{address.linkedin}</a>
<meta itemprop="sameAs" content="https://www.linkedin.com/in/{address.linkedin}"/>
</li>
</f:if>
</ul>
</f:if>
</f:section>

View File

@@ -0,0 +1,109 @@
<div class="vcard tt_address_detail" itemscope itemtype="http://schema.org/Person">
<h4 itemprop="name">{address.fullName}</h4>
<f:render section="position" partial="Address" arguments="{_all}"/>
<f:if condition="{address.image}">
<f:then>
<div class="row">
<div class="col-md-3">
<figure class="figure">
<f:image image="{address.firstImage}" width="600"
class="figure-img img-fluid img-thumbnail rounded"
alt="{address.firstImage.originalResource.alt}"
title="{address.firstImage.originalResource.title}"
additionalAttributes="{itemprop:'image'}"/>
<f:if condition="{address.firstImage.originalResource.description}">
<figcaption class="figure-caption">
{address.firstImage.originalResource.description ->
f:format.nl2br()}
</figcaption>
</f:if>
</figure>
</div>
<div class="col-md-9">
<f:render section="content" arguments="{_all}"/>
</div>
</div>
</f:then>
<f:else>
<f:render section="content" arguments="{_all}"/>
</f:else>
</f:if>
</div>
<f:section name="content">
<f:if condition="{address.description}">
<div class="description" itemprop="description">
{address.description -> f:format.html()}
</div>
</f:if>
<f:render section="address" partial="Address" arguments="{_all}"/>
<f:if condition="{address.building} || {address.room}">
<ul class="list-inline">
<f:if condition="{address.building}">
<li class="list-inline-item">
{f:translate(key:'label.building')}: {address.building}
</li>
</f:if>
<f:if condition="{address.room}">
<li class="list-inline-item">
{f:translate(key:'label.room')}: {address.room}
</li>
</f:if>
</ul>
</f:if>
<f:render section="contact" partial="Address" arguments="{_all}"/>
<f:render section="social" partial="Address" arguments="{_all}"/>
<f:if condition="{address.image -> f:count()} > 1">
<div class="address-image-rows">
<div class="row">
<f:for each="{address.image}" as="img" iteration="iterator">
<f:if condition="{iterator.cycle}>1">
<div class="col-md-4">
<figure class="figure">
<f:if condition="{img.originalResource.link}">
<f:then>
<f:link.typolink
parameter="{img.originalResource.link}"
class="media-object {settings.detail.imageClass}"
additionalAttributes="{title:img.originalResource.title}">
<f:image image="{img}" width="400"
alt="{img.originalResource.alt}"
title="{img.originalResource.title}"
class="figure-img img-fluid img-thumbnail rounded"
additionalAttributes="{itemprop:'image'}"/>
</f:link.typolink>
</f:then>
<f:else>
<a href="{f:uri.image(src:img.originalResource.publicUrl, maxWidth:1000)}"
class="media-object {settings.detail.imageClass}"
rel="images_tt_address_{address.uid}"
title="{img.originalResource.title}"
target="_blank">
<f:image image="{img}" width="400"
alt="{img.originalResource.alt}"
title="{img.originalResource.title}"
class="figure-img img-fluid img-thumbnail rounded"
additionalAttributes="{itemprop:'image'}"/>
</a>
</f:else>
</f:if>
<f:if condition="{img.originalResource.description}">
<figcaption class="figure-caption">
{img.originalResource.description -> f:format.nl2br()}
</figcaption>
</f:if>
</figure>
</div>
</f:if>
</f:for>
</div>
</div>
</f:if>
</f:section>

View File

@@ -0,0 +1,32 @@
<div class="vcard" itemscope itemtype="http://schema.org/Person">
<div class="row">
<div class="col-md-2 addressImage">
<f:link.action action="show" arguments="{address : address}"
title="{address.fullName}"
pageUid="{settings.singlePid}">
<f:if condition="{address.image}">
<f:media file="{address.firstImage}" width="400" class="img-fluid img-thumbnail rounded"
alt="{address.firstImage.originalResource.alt}"
title="{address.fullName}"/>
</f:if>
</f:link.action>
</div>
<div class="col-md-10">
<h3>{address.fullName}</h3>
<f:if condition="{address.position}">
<p class="position"><em>{address.position}</em></p>
</f:if>
<f:render section="address" partial="Address" arguments="{_all}"/>
<f:render section="social" partial="Address" arguments="{_all}"/>
<f:if condition="{settings.singlePid}">
<f:link.action action="show" arguments="{address : address}"
title="{address.fullName}"
pageUid="{settings.singlePid}" class="btn btn-default">{f:translate(key:'more')}
</f:link.action>
</f:if>
</div>
</div>
</div>

View File

@@ -0,0 +1,6 @@
<f:widget.paginate objects="{addresses}" as="paginatedAdresses" configuration="{settings.paginate}">
<f:for each="{paginatedAdresses}" as="address" iteration="iterator">
<f:render partial="ListItem" arguments="{_all}"/>
</f:for>
</f:widget.paginate>
<f:comment><!-- todo: remove with version 8 --></f:comment>

View File

@@ -0,0 +1,74 @@
{namespace ttaddr=FriendsOfTYPO3\TtAddress\ViewHelpers}
<f:section name="leaflet">
<f:render section="rendering" arguments="{_all}"/>
<f:asset.css identifier="ttaddress-leaflet" href="EXT:tt_address/Resources/Public/Contrib/leaflet-core-1.4.0.css" />
<f:asset.css identifier="ttaddress" href="EXT:tt_address/Resources/Public/Styles/basic.css" />
<f:asset.script identifier="ttaddress-leaflet-core" src="EXT:tt_address/Resources/Public/JavaScript/leaflet-core-1.4.0.js" />
<f:asset.script identifier="ttaddress-leaflet" src="EXT:tt_address/Resources/Public/JavaScript/Frontend/Leaflet.js" />
</f:section>
<f:section name="googleMaps">
<f:if condition="{settings.map.googleMaps.key}">
<f:then>
<f:render section="rendering" arguments="{_all}"/>
<script src="https://maps.googleapis.com/maps/api/js?key={settings.map.googleMaps.key}"
type="text/javascript"></script>
<script type="text/javascript" src="{f:uri.resource(path:'JavaScript/Frontend/GoogleMaps.js')}"></script>
</f:then>
<f:else>
<div class="alert alert-danger">{f:translate(key:'no_google_maps_key')}</div>
</f:else>
</f:if>
</f:section>
<f:section name="staticGoogleMaps">
<f:if condition="{settings.map.staticGoogleMaps.parameters.key}">
<f:then>
<img src="{ttaddr:staticGoogleMaps(parameters:settings.map.staticGoogleMaps.parameters,addresses:addresses)}" />
</f:then>
<f:else>
<div class="alert alert-danger">{f:translate(key:'no_google_maps_key')}</div>
</f:else>
</f:if>
</f:section>
<f:section name="rendering">
<div class="row">
<div class="col-md-3">
<ul class="list-group">
<f:for each="{addresses}" as="address" iteration="i">
<li id="ttaddress__label-{address.uid}" class="ttaddress__label list-group-item">
<strong>{address.fullName}</strong><br>
<f:render partial="Address" section="address" arguments="{_all}"/>
<a href="#" data-iteration-id="{i.index}" class="ttaddress__markerlink">{f:translate(key:'show_on_map')}</a>
</li>
</f:for>
</ul>
</div>
<div class="col-md-9">
<div id="ttaddress__map" data-default-lat="{settings.map.defaultPosition.lat}"
data-default-lng="{settings.map.defaultPosition.lng}"></div>
<ul id="ttaddress__records">
<f:for each="{addresses}" as="address">
<div id="ttaddress__record-{address.uid}" data-id="{address.uid}" data-lat="{address.latitude}"
data-lng="{address.longitude}" data-icon="icon">
<h6>{address.fullName}</h6>
<div>
<f:render partial="Address" section="address" arguments="{_all}"/>
<f:render partial="Address" section="contact" arguments="{_all}"/>
<f:if condition="{settings.singlePid}">
<f:link.action action="show" arguments="{address : address}" title="{address.fullName}" class="btn"
pageUid="{settings.singlePid}">{f:translate(key:'more')}
</f:link.action>
</f:if>
</div>
</div>
</f:for>
</ul>
</div>
</div>
</f:section>

View File

@@ -0,0 +1,9 @@
<html
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:ttaddr="http://typo3.org/ns/FriendsOfTYPO3/TtAddress/ViewHelpers"
data-namespace-typo3-fluid="true">
<f:variable name="address">{address.fullName} {f:if(condition: address.phone,then:'☎ {address.phone}')} {f:if(condition: address.addressInOneLine,then:'➤ {address.addressInOneLine}')}</f:variable>
<ttaddr:metaTag property="description">{address}</ttaddr:metaTag>
<ttaddr:metaTag property="og:description">{address}</ttaddr:metaTag>
</html>

View File

@@ -0,0 +1,52 @@
<ul class="f3-widget-paginator">
<f:if condition="{pagination.previousPageNumber} && {pagination.previousPageNumber} >= {pagination.firstPageNumber}">
<f:then>
<f:comment>
<li class="first">
<a href="{f:uri.action(action:actionName, arguments:{currentPage: 1})}" title="{f:translate(key:'pagination.first')}">
<i class="material-icons">first_page</i>
</a>
</li>
</f:comment>
<li class="previous">
<a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.previousPageNumber})}" title="{f:translate(key:'widget.pagination.previous', extensionName: 'fluid')}">
{f:translate(key:'widget.pagination.previous', extensionName: 'fluid')}
</a>
</li>
</f:then>
<f:else>
<f:comment>
<li class="disabled"><span><i class="material-icons">first_page</i></span></li>
<li class="disabled"><span>{f:translate(key:'widget.pagination.previous', extensionName: 'fluid')}</span></li>
</f:comment>
</f:else>
</f:if>
<f:for each="{pagination.allPageNumbers}" as="page">
<li class="{f:if(condition: '{page} == {paginator.currentPageNumber}', then:'current')}">
<a href="{f:uri.action(action:actionName, arguments:{currentPage: page})}">{page}</a>
</li>
</f:for>
<f:if condition="{pagination.nextPageNumber} && {pagination.nextPageNumber} <= {pagination.lastPageNumber}">
<f:then>
<li class="next">
<a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.nextPageNumber})}" title="{f:translate(key:'widget.pagination.next', extensionName: 'fluid')}">
{f:translate(key:'widget.pagination.next', extensionName: 'fluid')}
</a>
</li>
<f:comment>
<li class="last">
<a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.lastPageNumber})}" title="{f:translate(key:'pagination.last')}">
last
</a>
</li>
</f:comment>
</f:then>
<f:else>
<f:comment>
<li class="disabled"><span>{f:translate(key:'widget.pagination.previous', extensionName: 'fluid')}</span></li>
<li class="disabled"><span>last page</span></li>
</f:comment>
</f:else>
</f:if>
</ul>