Improve detail view templates

Adapt detail view template for Bootstrap usage.
Provide proper out-of-the-box integration.
This commit is contained in:
Carlos Pozo 2022-03-08 09:27:18 +01:00 committed by GitHub
parent 9527c34c8d
commit 46df4f4028
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 195 additions and 131 deletions

View file

@ -39,15 +39,15 @@
</div>
</div>
<div class="accordion" id="accordionShortDescriptions">
<div class="row accordion" id="accordionShortDescriptions">
<f:if condition="{specification.shortDescriptionAllGenerations}">
<div class="accordion-item">
<h2 class="accordion-header" id="headingAllGenerations">
<h3 class="accordion-header" id="headingAllGenerations">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#shortDescriptionAllGenerations-{uid}" role="button" aria-expanded="false" aria-controls="shortDescriptionAllGenerations-{uid}">
{f:translate(id: 'content.accessibilitySpecification.shortDescriptionAllGenerations', extensionName: 'Thuecat')}
</button>
</h2>
</h3>
<div class="accordion-collapse collapse" id="shortDescriptionAllGenerations-{uid}">
<div class="accordion-body">
<p>{specification.shortDescriptionAllGenerations -> f:format.nl2br()}</p>
@ -58,11 +58,11 @@
<f:if condition="{specification.shortDescriptionAllergic}">
<div class="accordion-item">
<h2 class="accordion-header" id="headingAllergic">
<h3 class="accordion-header" id="headingAllergic">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#shortDescriptionAllergic-{uid}" role="button" aria-expanded="false" aria-controls="shortDescriptionAllergic-{uid}">
{f:translate(id: 'content.accessibilitySpecification.shortDescriptionAllergic', extensionName: 'Thuecat')}
</button>
</h2>
</h3>
<div class="accordion-collapse collapse" id="shortDescriptionAllergic-{uid}">
<div class="accordion-body">
<p>{specification.shortDescriptionAllergic -> f:format.nl2br()}</p>
@ -73,11 +73,11 @@
<f:if condition="{specification.shortDescriptionDeaf}">
<div class="accordion-item">
<h2 class="accordion-header" id="headingDeaf">
<h3 class="accordion-header" id="headingDeaf">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#shortDescriptionDeaf-{uid}" role="button" aria-expanded="false" aria-controls="shortDescriptionDeaf-{uid}">
{f:translate(id: 'content.accessibilitySpecification.shortDescriptionDeaf', extensionName: 'Thuecat')}
</button>
</h2>
</h3>
<div class="accordion-collapse collapse" id="shortDescriptionDeaf-{uid}">
<div class="accordion-body">
<p>{specification.shortDescriptionDeaf -> f:format.nl2br()}</p>
@ -88,11 +88,11 @@
<f:if condition="{specification.shortDescriptionMental}">
<div class="accordion-item">
<h2 class="accordion-header" id="headingMetal">
<h3 class="accordion-header" id="headingMetal">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" href="#shortDescriptionMental-{uid}" role="button" aria-expanded="false" aria-controls="shortDescriptionMental-{uid}">
{f:translate(id: 'content.accessibilitySpecification.shortDescriptionMental', extensionName: 'Thuecat')}
</button>
</h2>
</h3>
<div class="accordion-collapse collapse" id="shortDescriptionMental-{uid}">
<div class="accordion-body">
<p>{specification.shortDescriptionMental -> f:format.nl2br()}</p>
@ -103,11 +103,11 @@
<f:if condition="{specification.shortDescriptionVisual}">
<div class="accordion-item">
<h2 class="accordion-header" id="headingVisual">
<h3 class="accordion-header" id="headingVisual">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" href="#shortDescriptionVisual-{uid}" role="button" aria-expanded="false" aria-controls="shortDescriptionVisual-{uid}">
{f:translate(id: 'content.accessibilitySpecification.shortDescriptionVisual', extensionName: 'Thuecat')}
</button>
</h2>
</h3>
<div class="accordion-collapse collapse" id="shortDescriptionVisual-{uid}">
<div class="accordion-body">
<p>{specification.shortDescriptionVisual -> f:format.nl2br()}</p>
@ -118,11 +118,11 @@
<f:if condition="{specification.shortDescriptionWalking}">
<div class="accordion-item">
<h2 class="accordion-header" id="headingVisual">
<h3 class="accordion-header" id="headingVisual">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" href="#shortDescriptionWalking-{uid}" role="button" aria-expanded="false" aria-controls="shortDescriptionWalking-{uid}">
{f:translate(id: 'content.accessibilitySpecification.shortDescriptionWalking', extensionName: 'Thuecat')}
</button>
</h2>
</h3>
<div class="accordion-collapse collapse" id="shortDescriptionWalking-{uid}">
<div class="accordion-body">
<p>{specification.shortDescriptionWalking -> f:format.nl2br()}</p>

View file

@ -2,7 +2,7 @@
<div class="digital">
<p>
<f:for each="{digitalOffer}" as="offer">
<span class="badge bg-secondary">{f:translate(id: 'content.digitalOffer.{offer}', default: offer, extensionName: 'Thuecat')}</span>
<span class="badge bg-light">{f:translate(id: 'content.digitalOffer.{offer}', default: offer, extensionName: 'Thuecat')}</span>
</f:for>
</p>
</div>

View file

@ -2,7 +2,7 @@
<div class="languages">
<p>
<f:for each="{availableLanguages}" as="language">
<span class="badge bg-secondary">{f:translate(id: 'content.availableLanguage.{language}', default: language, extensionName: 'Thuecat')}</span>
<span class="badge bg-light">{f:translate(id: 'content.availableLanguage.{language}', default: language, extensionName: 'Thuecat')}</span>
</f:for>
</p>
</div>

View file

@ -2,7 +2,7 @@
<div class="museum">
<p>
<f:for each="{museumServices}" as="service">
<span class="badge bg-secondary">{f:translate(id: 'content.museumService.{service}', default: service, extensionName: 'Thuecat')}</span>
<span class="badge bg-light">{f:translate(id: 'content.museumService.{service}', default: service, extensionName: 'Thuecat')}</span>
</f:for>
</p>
</div>

View file

@ -12,40 +12,34 @@
<f:section name="MultiOffers">
<div class="accordion" id="accordionOfferPrices">
<f:for each="{offers}" as="offer" key="key">
<f:for each="{offers}" as="offer" key="key" iteration="iterator">
<div class="accordion-item">
<h2 class="accordion-header">
<h3 class="accordion-header">
<button class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#offerPriceGroup-{key}-{uid}" role="button" aria-expanded="false" aria-controls="offerGroup-{key}-{uid}">
<f:if condition="{offer.title}"><f:then>{offer.title} <small>({f:translate(id: 'content.price.type.{offer.type}', default: offer.type, extensionName: 'Thuecat')})</small></f:then><f:else>Preisgruppe</f:else></f:if>
<f:if condition="{offer.title}"><f:then>{offer.title} <span class="ps-1">({f:translate(id: 'content.price.type.{offer.type}', default: offer.type, extensionName: 'Thuecat')})</span></f:then><f:else>Preisgruppe</f:else></f:if>
</button>
</h2>
</h3>
<div class="accordion-collapse collapse" id="offerPriceGroup-{key}-{uid}">
<div class="accordion-body">
<div class="accordion-body row">
<f:if condition="{offer.description}">
<div class="description">
<div class="description col-md-4">
<p><small>{offer.description}</small></p>
</div>
</f:if>
<table class="table">
<f:for each="{offer.prices}" as="price">
<tr>
<td>
<span>{price.title}</span>
</td>
<td>
{price.price -> f:format.currency(decimalSeparator: ',', thousandsSeparator: '.', decimals: 2, currencySign: price.currency)}
<div class="prices col-md-8">
<div class="row">
<f:for each="{offer.prices}" as="price">
<div class="price-item col-md-5">
<strong>{price.title}</strong>
<span>{price.price -> f:format.currency(decimalSeparator: ',', thousandsSeparator: '.', decimals: 2, currencySign: price.currency)}</span>
<small>{f:translate(id: 'content.price.rule.{price.rules.0}', default: price.rule, extensionName: 'Thuecat')}</small>
</td>
</tr>
<f:if condition="{price.description}">
<tr>
<td colspan="2" class="description">
<small>{price.description}</small>
</td>
</tr>
</f:if>
</f:for>
</table>
<f:if condition="{price.description}">
<p><small>{price.description}</small></p>
</f:if>
</div>
</f:for>
</div>
</div>
</div>
</div>
</div>
@ -57,34 +51,28 @@
<f:for each="{offers}" as="offer" key="key">
<div class="offer-group">
<div class="content">
<h6>{offer.title} <small>({f:translate(id: 'content.price.type.{offer.type}', default: offer.type, extensionName: 'Thuecat')})</small></h6>
<f:if condition="{offer.description}">
<div class="description">
<p><small>{offer.description}</small></p>
</div>
</f:if>
<f:for each="{offer.prices}" as="price">
<table class="table">
<f:for each="{offer.prices}" as="price">
<tr>
<td>
<span>{price.title}</span>
</td>
<td>
{price.price -> f:format.currency(decimalSeparator: ',', thousandsSeparator: '.', decimals: 2, currencySign: price.currency)}
<h3>{offer.title} <span class="ps-1">({f:translate(id: 'content.price.type.{offer.type}', default: offer.type, extensionName: 'Thuecat')})</span></h3>
<div class="row">
<f:if condition="{offer.description}">
<div class="description col-md-4">
<p><small>{offer.description}</small></p>
</div>
</f:if>
<div class="prices col-md-8">
<div class="masonry-prices row">
<f:for each="{offer.prices}" as="price">
<div class="price-item col-md-5">
<strong>{price.title}</strong>
<span>{price.price -> f:format.currency(decimalSeparator: ',', thousandsSeparator: '.', decimals: 2, currencySign: price.currency)}</span>
<small>{f:translate(id: 'content.price.rule.{price.rules.0}', default: price.rule, extensionName: 'Thuecat')}</small>
</td>
</tr>
<f:if condition="{price.description}">
<tr>
<td colspan="2" class="description">
<small>{price.description}</small>
</td>
</tr>
</f:if>
</f:for>
</table>
</f:for>
<f:if condition="{price.description}">
<p><small>{price.description}</small></p>
</f:if>
</div>
</f:for>
</div>
</div>
</div>
</div>
</div>
</f:for>

View file

@ -1,15 +1,24 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="openingHours">
<div class="openingHours row">
<f:for each="{openingHours}" as="openingHour">
<h6>
<f:if condition="{openingHours -> f:count()} == 1">
<f:then>
<div class="col-12">
</f:then>
<f:else>
<div class="col-md-6">
</f:else>
</f:if>
<h3>
{openingHour.from -> f:format.date(format: 'd.m.Y')} -
{openingHour.through -> f:format.date(format: 'd.m.Y')}
</h6>
</h3>
<p>
<f:for each="{openingHour.daysOfWeekWithMondayFirstWeekDay}" as="weekday">
{f:translate(id: 'content.openingHour.weekday.{weekday}', default: weekday, extensionName: 'Thuecat')} {openingHour.opens} - {openingHour.closes}<br>
</f:for>
</p>
</div>
</f:for>
</div>
</html>

View file

@ -1,8 +1,22 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="parking">
<f:for each="{parkingFacilitiesNearBy}" as="parkingFacility">
{parkingFacility.title}
{f:render(partial: 'Address', arguments: {address: parkingFacility.address})}
</f:for>
<f:if condition="{parkingFacilitiesNearBy -> f:count()} > 3">
<f:then>
<div class="row">
<f:for each="{parkingFacilitiesNearBy}" as="parkingFacility">
<div class="col-md-6">
{parkingFacility.title}
{f:render(partial: 'Address', arguments: {address: parkingFacility.address})}
</div>
</f:for>
</div>
</f:then>
<f:else>
<f:for each="{parkingFacilitiesNearBy}" as="parkingFacility">
{parkingFacility.title}
{f:render(partial: 'Address', arguments: {address: parkingFacility.address})}
</f:for>
</f:else>
</f:if>
</div>
</html>

View file

@ -2,7 +2,7 @@
<div class="payment">
<p>
<f:for each="{paymentAccepted}" as="payment">
<span class="badge bg-secondary">{f:translate(id: 'content.paymentAccepted.{payment}', default: payment, extensionName: 'Thuecat')}</span>
<span class="badge bg-light">{f:translate(id: 'content.paymentAccepted.{payment}', default: payment, extensionName: 'Thuecat')}</span>
</f:for>
</p>
</div>

View file

@ -2,7 +2,7 @@
<div class="photography">
<p>
<f:for each="{photography}" as="photography">
<span class="badge bg-secondary">{f:translate(id: 'content.photography.{photography}', default: photography, extensionName: 'Thuecat')}</span>
<span class="badge bg-light">{f:translate(id: 'content.photography.{photography}', default: photography, extensionName: 'Thuecat')}</span>
</f:for>
</p>
</div>

View file

@ -2,7 +2,7 @@
<div class="sanitation">
<p>
<f:for each="{sanitation}" as="sanitation">
<span class="badge bg-secondary">{f:translate(id: 'content.sanitation.{sanitation}', default: sanitation, extensionName: 'Thuecat')}</span>
<span class="badge bg-light">{f:translate(id: 'content.sanitation.{sanitation}', default: sanitation, extensionName: 'Thuecat')}</span>
</f:for>
</p>
</div>

View file

@ -1,5 +1,5 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:for each="{otherServices}" as="service">
<span class="badge bg-secondary">{f:translate(id: 'content.otherService.{service}', default: service, extensionName: 'Thuecat')}</span>
<span class="badge bg-light">{f:translate(id: 'content.otherService.{service}', default: service, extensionName: 'Thuecat')}</span>
</f:for>
</html>

View file

@ -2,7 +2,7 @@
<div class="traffic">
<p>
<f:for each="{trafficInfrastructures}" as="trafficInfrastructure">
<span class="badge bg-secondary">{f:translate(id: 'content.trafficInfrastructure.{trafficInfrastructure}', default: trafficInfrastructure, extensionName: 'Thuecat')}</span>
<span class="badge bg-light">{f:translate(id: 'content.trafficInfrastructure.{trafficInfrastructure}', default: trafficInfrastructure, extensionName: 'Thuecat')}</span>
</f:for>
</p>
</div>

View file

@ -1,119 +1,156 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
data-namespace-typo3-fluid="true">
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:for each="{entities}" as="entity">
<div class="row mb-5">
<div class="row">
<div class="col-12 col-md-6">
<f:if condition="{entity.slogan}"><span class="badge bg-danger">{entity.slogan}</span></f:if>
<h2>{entity.title} ({entity.town.title})</h2>
<h1>{entity.title} ({entity.town.title})</h1>
{entity.description -> f:format.html()}
</div>
<div class="col-12 col-md-6">
<div class="col-12 col-md-6 order-first order-md-last">
<f:if condition="{entity.media.mainImage}">
<f:image src="{entity.media.mainImage.url}" class="img-fluid"/>
</f:if>
</div>
</div>
<div class="row mb-5">
<div class="col-12 col-md-3">
<f:if condition="{entity.address}">
<h5>{f:translate(id: 'content.address', extensionName: 'Thuecat')}</h5>
{f:render(partial: 'Address', arguments: {address: entity.address})}
</f:if>
<f:if condition="{entity.distanceToPublicTransport}">
<h5>{f:translate(id: 'content.distanceToPublicTransport', extensionName: 'Thuecat')}</h5>
<p>
{entity.distanceToPublicTransport.value} {f:translate(id: 'content.unit.{entity.distanceToPublicTransport.unit}', default: entity.distanceToPublicTransport.unit, extensionName: 'Thuecat')}
</p>
</f:if>
<f:if condition="{entity.parkingFacilitiesNearBy}">
<h5>{f:translate(id: 'content.parkingFacilitiesNearBy', extensionName: 'Thuecat')}</h5>
{f:render(partial: 'Parking', arguments: {parkingFacilitiesNearBy: entity.parkingFacilitiesNearBy})}
</f:if>
</div>
<div class="col-12 col-md-3">
<h5>{f:translate(id: 'content.generalInformation', extensionName: 'Thuecat')}</h5>
<div class="row">
<f:if condition="{entity.parkingFacilitiesNearBy -> f:count()} > 3">
<f:then>
<div class="col-md-4">
<f:if condition="{entity.address}">
<img src="{f:uri.resource(path:'Icons/icon-info.svg', extensionName:'sitepackage')}" width="30" class="svg-icon" alt="Address">
<h2>{f:translate(id: 'content.address', extensionName: 'Thuecat')}</h2>
{f:render(partial: 'Address', arguments: {address: entity.address})}
</f:if>
<f:if condition="{entity.distanceToPublicTransport}">
<div class="distance-transport mt-5">
<img src="{f:uri.resource(path:'Icons/icon-bus.svg', extensionName:'sitepackage')}" width="30" class="svg-icon" alt="Address">
<h2>{f:translate(id: 'content.distanceToPublicTransport', extensionName: 'Thuecat')}</h2>
<p>
{entity.distanceToPublicTransport.value} {f:translate(id: 'content.unit.{entity.distanceToPublicTransport.unit}', default: entity.distanceToPublicTransport.unit, extensionName: 'Thuecat')}
</p>
</div>
</f:if>
</div>
<div class="col-md-8 multiple-parking">
<f:if condition="{entity.parkingFacilitiesNearBy}">
<img src="{f:uri.resource(path:'Icons/icon-parking.svg', extensionName:'sitepackage')}" width="30" class="svg-icon" alt="Address">
<h2>{f:translate(id: 'content.parkingFacilitiesNearBy', extensionName: 'Thuecat')}</h2>
{f:render(partial: 'Parking', arguments: {parkingFacilitiesNearBy: entity.parkingFacilitiesNearBy})}
</f:if>
</div>
</f:then>
<f:else>
<div class="col-md-4">
<f:if condition="{entity.address}">
<img src="{f:uri.resource(path:'Icons/icon-info.svg', extensionName:'sitepackage')}" width="30" class="svg-icon" alt="Address">
<h2>{f:translate(id: 'content.address', extensionName: 'Thuecat')}</h2>
{f:render(partial: 'Address', arguments: {address: entity.address})}
</f:if>
</div>
<div class="col-md-4">
<f:if condition="{entity.distanceToPublicTransport}">
<img src="{f:uri.resource(path:'Icons/icon-bus.svg', extensionName:'sitepackage')}" width="30" class="svg-icon" alt="Address">
<h2>{f:translate(id: 'content.distanceToPublicTransport', extensionName: 'Thuecat')}</h2>
<p>
{entity.distanceToPublicTransport.value} {f:translate(id: 'content.unit.{entity.distanceToPublicTransport.unit}', default: entity.distanceToPublicTransport.unit, extensionName: 'Thuecat')}
</p>
</f:if>
</div>
<div class="col-md-4">
<f:if condition="{entity.parkingFacilitiesNearBy}">
<img src="{f:uri.resource(path:'Icons/icon-parking.svg', extensionName:'sitepackage')}" width="30" class="svg-icon" alt="Address">
<h2>{f:translate(id: 'content.parkingFacilitiesNearBy', extensionName: 'Thuecat')}</h2>
{f:render(partial: 'Parking', arguments: {parkingFacilitiesNearBy: entity.parkingFacilitiesNearBy})}
</f:if>
</div>
</f:else>
</f:if>
</div>
<div class="row">
<div class="col-md-6">
<h2>{f:translate(id: 'content.generalInformation', extensionName: 'Thuecat')}</h2>
<p>
<f:if condition="{entity.otherServices}">
{f:render(partial: 'Service', arguments: {otherServices: entity.otherServices})}
</f:if>
<span class="badge bg-secondary">{f:translate(id: 'content.petsAllowed.{entity.petsAllowed}', default: entity.petsAllowed, extensionName: 'Thuecat')}</span>
<span class="badge bg-secondary">{f:translate(id: 'content.isAccessibleForFree.{entity.isAccessibleForFree}', default: entity.isAccessibleForFree, extensionName: 'Thuecat')}</span>
<span class="badge bg-secondary">{f:translate(id: 'content.publicAccess.{entity.publicAccess}', default: entity.publicAccess, extensionName: 'Thuecat')}</span>
<span class="badge bg-secondary">{f:translate(id: 'content.accessibilitySpecification.certificationStatus.{entity.accessibilitySpecification.certificationStatus}', default: entity.accessibilitySpecification.certificationStatus, extensionName: 'Thuecat')}</span>
<span class="badge bg-light">{f:translate(id: 'content.petsAllowed.{entity.petsAllowed}', default: entity.petsAllowed, extensionName: 'Thuecat')}</span>
<span class="badge bg-light">{f:translate(id: 'content.isAccessibleForFree.{entity.isAccessibleForFree}', default: entity.isAccessibleForFree, extensionName: 'Thuecat')}</span>
<span class="badge bg-light">{f:translate(id: 'content.publicAccess.{entity.publicAccess}', default: entity.publicAccess, extensionName: 'Thuecat')}</span>
<span class="badge bg-light">{f:translate(id: 'content.accessibilitySpecification.certificationStatus.{entity.accessibilitySpecification.certificationStatus}', default: entity.accessibilitySpecification.certificationStatus, extensionName: 'Thuecat')}</span>
</p>
<f:if condition="{entity.museumServices}">
<h6>{f:translate(id: 'content.museum', extensionName: 'Thuecat')}</h6>
<h3>{f:translate(id: 'content.museum', extensionName: 'Thuecat')}</h3>
{f:render(partial: 'Museum', arguments: {museumServices: entity.museumServices})}
</f:if>
<f:if condition="{entity.digitalOffer}">
<h6>{f:translate(id: 'content.digital', extensionName: 'Thuecat')}</h6>
<h3>{f:translate(id: 'content.digital', extensionName: 'Thuecat')}</h3>
{f:render(partial: 'Digital', arguments: {digitalOffer: entity.digitalOffer})}
</f:if>
<f:if condition="{entity.trafficInfrastructures}">
<h6>{f:translate(id: 'content.traffic', extensionName: 'Thuecat')}</h6>
<h3>{f:translate(id: 'content.traffic', extensionName: 'Thuecat')}</h3>
{f:render(partial: 'Traffic', arguments: {trafficInfrastructures: entity.trafficInfrastructures})}
</f:if>
<f:if condition="{entity.paymentAccepted}">
<h6>{f:translate(id: 'content.payment', extensionName: 'Thuecat')}</h6>
<h3>{f:translate(id: 'content.payment', extensionName: 'Thuecat')}</h3>
{f:render(partial: 'Payment', arguments: {paymentAccepted: entity.paymentAccepted})}
</f:if>
<f:if condition="{entity.availableLanguages}">
<h6>{f:translate(id: 'content.languages', extensionName: 'Thuecat')}</h6>
<h3>{f:translate(id: 'content.languages', extensionName: 'Thuecat')}</h3>
{f:render(partial: 'Payment', arguments: {availableLanguages: entity.availableLanguages})}
</f:if>
<f:if condition="{entity.sanitation}">
<h6>{f:translate(id: 'content.sanitation', extensionName: 'Thuecat')}</h6>
<h3>{f:translate(id: 'content.sanitation', extensionName: 'Thuecat')}</h3>
{f:render(partial: 'Sanitation', arguments: {sanitation: entity.sanitation})}
</f:if>
<f:if condition="{entity.photography}">
<h6>{f:translate(id: 'content.photography', extensionName: 'Thuecat')}</h6>
<h3>{f:translate(id: 'content.photography', extensionName: 'Thuecat')}</h3>
{f:render(partial: 'Photography', arguments: {photography: entity.photography})}
</f:if>
<f:if condition="{entity.startOfConstruction}">
<h6>{f:translate(id: 'content.construction', extensionName: 'Thuecat')}</h6>
<h3>{f:translate(id: 'content.construction', extensionName: 'Thuecat')}</h3>
<p>
<span class="badge bg-secondary">{entity.startOfConstruction}</span>
<span class="badge bg-light">{entity.startOfConstruction}</span>
</p>
</f:if>
<f:if condition="{entity.architecturalStyles}">
<h6>{f:translate(id: 'content.architecture', extensionName: 'Thuecat')}</h6>
<h3>{f:translate(id: 'content.architecture', extensionName: 'Thuecat')}</h3>
<p>
<f:for each="{entity.architecturalStyles}" as="style">
<span class="badge bg-secondary">{f:translate(id: 'content.architecturalStyle.{style}', default: style, extensionName: 'Thuecat')}</span>
<span class="badge bg-light">{f:translate(id: 'content.architecturalStyle.{style}', default: style, extensionName: 'Thuecat')}</span>
</f:for>
</p>
</f:if>
</div>
<div class="col-12 col-md-3">
<div class="col-md-6">
<f:if condition="{entity.openingHours}">
<h5>{f:translate(id: 'content.openingHours', extensionName: 'Thuecat')}</h5>
<h2>{f:translate(id: 'content.openingHours', extensionName: 'Thuecat')}</h2>
{f:render(partial: 'Opening', arguments: {openingHours: entity.openingHours})}
</f:if>
</div>
<div class="col-12 col-md-3">
<f:if condition="{entity.offers}">
<h5>{f:translate(id: 'content.offers', extensionName: 'Thuecat')}</h5>
{f:render(partial: 'Offers', arguments: {offers: entity.offers, uid: entity.uid})}
</f:if>
</div>
</div>
<f:if condition="{entity.offers}">
<div class="row">
<h2 class="text-center">{f:translate(id: 'content.offers', extensionName: 'Thuecat')}</h2>
{f:render(partial: 'Offers', arguments: {offers: entity.offers, uid: entity.uid})}
</div>
</f:if>
<f:if condition="{entity.accessibilitySpecification.certificationStatus} != ''">
<div class="row">
<div class="col-12">
<h3>{f:translate(id: 'content.accessibility', extensionName: 'Thuecat')}</h3>
{f:render(partial: 'Accessibility', arguments: {specification: entity.accessibilitySpecification, uid: entity.uid})}
</div>
<h2 class="text-center">{f:translate(id: 'content.accessibility', extensionName: 'Thuecat')}</h2>
{f:render(partial: 'Accessibility', arguments: {specification: entity.accessibilitySpecification, uid: entity.uid})}
</div>
</f:if>
</f:for>

View file

@ -0,0 +1,6 @@
<svg id="icon-bus" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<g id="Grupo_1050" data-name="Grupo 1050" transform="translate(-743 -742)">
<path id="Trazado_3461" data-name="Trazado 3461" d="M9.966,0H12.98V-15.4H9.966v6.27H4.334V-15.4H1.32V0H4.334V-6.446H9.966Z" transform="translate(752 766)"/>
<path id="Ellipse_10" data-name="Ellipse 10" d="M16,3A13,13,0,0,0,6.808,25.192,13,13,0,0,0,25.192,6.808,12.915,12.915,0,0,0,16,3m0-3A16,16,0,1,1,0,16,16,16,0,0,1,16,0Z" transform="translate(743 742)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 563 B

View file

@ -0,0 +1,6 @@
<svg id="icon-info" xmlns="http://www.w3.org/2000/svg" width="31.999" height="32" viewBox="0 0 31.999 32">
<g id="Sustracción_1" data-name="Sustracción 1" transform="translate(13725 -1442)">
<path d="M -13709.0009765625 1472.500122070312 C -13712.8740234375 1472.500122070312 -13716.5146484375 1470.991821289062 -13719.2529296875 1468.2529296875 C -13721.9912109375 1465.514404296875 -13723.5 1461.873291015625 -13723.5 1458.000244140625 C -13723.5 1454.127197265625 -13721.9912109375 1450.486206054688 -13719.2529296875 1447.747924804688 C -13716.5146484375 1445.0087890625 -13712.8740234375 1443.50048828125 -13709.0009765625 1443.50048828125 C -13705.126953125 1443.50048828125 -13701.4853515625 1445.0087890625 -13698.7470703125 1447.747680664062 C -13696.0087890625 1450.486450195312 -13694.5009765625 1454.127563476562 -13694.5009765625 1458.000244140625 C -13694.5009765625 1461.873046875 -13696.0087890625 1465.51416015625 -13698.7470703125 1468.2529296875 C -13701.4853515625 1470.991821289062 -13705.126953125 1472.500122070312 -13709.0009765625 1472.500122070312 Z M -13711.4990234375 1454.4990234375 L -13711.4990234375 1455.9990234375 L -13711.4990234375 1465.998413085938 L -13711.4990234375 1467.498413085938 L -13709.9990234375 1467.498413085938 L -13706.9990234375 1467.498413085938 L -13705.4990234375 1467.498413085938 L -13705.4990234375 1465.998413085938 L -13705.4990234375 1455.9990234375 L -13705.4990234375 1454.4990234375 L -13706.263671875 1454.4990234375 C -13705.7880859375 1453.9677734375 -13705.4990234375 1453.266723632812 -13705.4990234375 1452.499389648438 C -13705.4990234375 1450.846069335938 -13706.845703125 1449.5009765625 -13708.5009765625 1449.5009765625 C -13710.154296875 1449.5009765625 -13711.4990234375 1450.846069335938 -13711.4990234375 1452.499389648438 C -13711.4990234375 1453.266723632812 -13711.2099609375 1453.9677734375 -13710.7353515625 1454.4990234375 L -13711.4990234375 1454.4990234375 Z" stroke="none"/>
<path d="M -13709.0009765625 1471.000122070312 C -13705.52734375 1471.000122070312 -13702.2626953125 1469.647827148438 -13699.8076171875 1467.1923828125 C -13697.3525390625 1464.736938476562 -13696.0009765625 1461.472412109375 -13696.0009765625 1458.000244140625 C -13696.0009765625 1454.528076171875 -13697.3525390625 1451.263671875 -13699.8076171875 1448.808227539062 C -13702.2626953125 1446.352783203125 -13705.52734375 1445.00048828125 -13709.0009765625 1445.00048828125 C -13712.47265625 1445.00048828125 -13715.7373046875 1446.352783203125 -13718.1923828125 1448.80859375 C -13720.6474609375 1451.263671875 -13722 1454.527954101562 -13722 1458.000244140625 C -13722 1461.47265625 -13720.6474609375 1464.736938476562 -13718.1923828125 1467.1923828125 C -13715.7373046875 1469.647827148438 -13712.47265625 1471.000122070312 -13709.0009765625 1471.000122070312 M -13712.9990234375 1452.9990234375 L -13712.9716796875 1452.9990234375 C -13712.9892578125 1452.8349609375 -13712.9990234375 1452.668212890625 -13712.9990234375 1452.499389648438 C -13712.9990234375 1450.018920898438 -13710.9814453125 1448.0009765625 -13708.5009765625 1448.0009765625 C -13706.0185546875 1448.0009765625 -13703.9990234375 1450.018920898438 -13703.9990234375 1452.499389648438 C -13703.9990234375 1452.668212890625 -13704.0087890625 1452.8349609375 -13704.0263671875 1452.9990234375 L -13703.9990234375 1452.9990234375 L -13703.9990234375 1468.998413085938 L -13712.9990234375 1468.998413085938 L -13712.9990234375 1452.9990234375 M -13709.0009765625 1474.000122070312 C -13713.2744140625 1474.000122070312 -13717.2919921875 1472.335693359375 -13720.3134765625 1469.3134765625 C -13723.3359375 1466.29150390625 -13725 1462.273681640625 -13725 1458.000244140625 C -13725 1453.726806640625 -13723.3359375 1449.709106445312 -13720.3134765625 1446.687133789062 C -13717.2919921875 1443.664916992188 -13713.2744140625 1442.00048828125 -13709.0009765625 1442.00048828125 C -13704.7265625 1442.00048828125 -13700.7080078125 1443.664916992188 -13697.6865234375 1446.687133789062 C -13694.6650390625 1449.709106445312 -13693.0009765625 1453.726806640625 -13693.0009765625 1458.000244140625 C -13693.0009765625 1462.273681640625 -13694.6650390625 1466.29150390625 -13697.6865234375 1469.3134765625 C -13700.7080078125 1472.335693359375 -13704.7265625 1474.000122070312 -13709.0009765625 1474.000122070312 Z M -13709.9990234375 1455.9990234375 L -13709.9990234375 1465.998413085938 L -13706.9990234375 1465.998413085938 L -13706.9990234375 1455.9990234375 L -13709.9990234375 1455.9990234375 Z M -13708.5009765625 1451.0009765625 C -13709.3271484375 1451.0009765625 -13709.9990234375 1451.673217773438 -13709.9990234375 1452.499389648438 C -13709.9990234375 1453.327514648438 -13709.3271484375 1454.001220703125 -13708.5009765625 1454.001220703125 C -13707.6728515625 1454.001220703125 -13706.9990234375 1453.327514648438 -13706.9990234375 1452.499389648438 C -13706.9990234375 1451.673217773438 -13707.6728515625 1451.0009765625 -13708.5009765625 1451.0009765625 Z" stroke="none" fill="#000"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

View file

@ -0,0 +1,4 @@
<svg id="icon-parking" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<path id="Trazado_3460" data-name="Trazado 3460" d="M1.32,0H4.334V-5.3a15.588,15.588,0,0,0,1.738.088c3.036,0,5.962-1.452,5.962-5.3,0-4.312-3.388-5.1-6.468-5.1a23.28,23.28,0,0,0-4.246.374ZM5.808-13.024c1.518,0,3.058.528,3.058,2.464,0,2.266-1.628,2.728-3.234,2.728a8.58,8.58,0,0,1-1.3-.088v-4.994A8.579,8.579,0,0,1,5.808-13.024Z" transform="translate(10 24)"/>
<path id="Ellipse_10" data-name="Ellipse 10" d="M16,3A13,13,0,0,0,6.808,25.192,13,13,0,0,0,25.192,6.808,12.915,12.915,0,0,0,16,3m0-3A16,16,0,1,1,0,16,16,16,0,0,1,16,0Z"/>
</svg>

After

Width:  |  Height:  |  Size: 647 B