initial commit
11
Resources/Private/.htaccess
Normal file
@@ -0,0 +1,11 @@
|
||||
# Apache < 2.3
|
||||
<IfModule !mod_authz_core.c>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
Satisfy All
|
||||
</IfModule>
|
||||
|
||||
# Apache >= 2.3
|
||||
<IfModule mod_authz_core.c>
|
||||
Require all denied
|
||||
</IfModule>
|
36
Resources/Private/Language/de.locallang.xlf
Normal file
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="de" datatype="plaintext" original="EXT:a2g_products/Resources/Private/Language/locallang.xlf" date="2021-11-18T10:42:07Z" product-name="a2g_products">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="product_list.product_detail_link" resname="product_list.product_detail_link">
|
||||
<source>detail</source>
|
||||
<target>mehr erfahren</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="product.product_nr" resname="product.product_nr">
|
||||
<source>article nr</source>
|
||||
<target>Artikel Nr</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="product_list.search" resname="product_list.search">
|
||||
<source>search</source>
|
||||
<target>suchen</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="product_list.advanced_search" resname="product_list.advanced_search">
|
||||
<source>advanced search</source>
|
||||
<target>erweiterte Suche</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="product_list.search_input_placeholder" resname="product_list.search_input_placeholder">
|
||||
<source>search</source>
|
||||
<target>suche</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="related_products" resname="related_products">
|
||||
<source>related products</source>
|
||||
<target>Produkte mit dieser Zutat</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="used_ingredients" resname="used_ingredients">
|
||||
<source>used ingredients</source>
|
||||
<target>Verwendete Zutaten</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
@@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="de" datatype="plaintext" original="EXT:a2g_products/Resources/Private/Language/locallang_csh_tx_a2gproducts_domain_model_products.xlf" date="2021-11-18T11:17:01Z" product-name="a2g_products">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="nr.description" resname="nr.description">
|
||||
<source>product nr</source>
|
||||
<target>Produkt Nr</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="title.description" resname="title.description">
|
||||
<source>product title <br/>
|
||||
for Search Engin Optimation ( SEO ) and link preview ( <a href="https://ogp.me/">open graph</a> )</source>
|
||||
<target>Produkt Titel / Name <br/>
|
||||
für Suchmaschinenoptimierung ( SEO ) und Link-Vorschau ( <a href="https://ogp.me/">open graph</a> )</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="description.description" resname="description.description">
|
||||
<source>description <br/>
|
||||
for Search Engin Optimation ( SEO ) and link preview ( <a href="https://ogp.me/">open graph</a> )</source>
|
||||
<target>Produkt Beschreibung <br/>
|
||||
für Suchmaschinenoptimierung ( SEO ) und Link-Vorschau ( <a href="https://ogp.me/">open graph</a> )</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="image.description" resname="image.description">
|
||||
<source>product list image <br/>
|
||||
for Search Engin Optimation ( SEO ) and link preview ( <a href="https://ogp.me/">open graph</a> )</source>
|
||||
<target>Produkt Listen Bild <br/>
|
||||
für Suchmaschinenoptimierung ( SEO ) und Link-Vorschau ( <a href="https://ogp.me/">open graph</a> )</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="images.description" resname="images.description">
|
||||
<source>images</source>
|
||||
<target>Produkt Detail Seiten Bild Slider</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_category.description" resname="rel_category.description">
|
||||
<source>relCategory</source>
|
||||
<target>Produkt Kategorie ( Verwendet für Filter )</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_filter_values.description" resname="rel_filter_values.description">
|
||||
<source>relFilterValues</source>
|
||||
<target>Filterbare Optionen
|
||||
von dem FIlter aus der Kategorie</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="path_segment.description" resname="path_segment.description">
|
||||
<source>url segment generated from the product title</source>
|
||||
<target>URL Segment generiert aus dem Produk-Titel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="description_html.description" resname="description_html.description">
|
||||
<source>farmateable description </source>
|
||||
<target>Formatierbare Beschreibung unter der Beschreibung</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_ingedients.description" resname="rel_ingedients.description">
|
||||
<source>ingredients</source>
|
||||
<target>Verwendete Inhaltsstoffe, Bauteile oder Zutaten</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_productvariants.description" resname="rel_productvariants.description">
|
||||
<source></source>
|
||||
<target></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_delivery_costs.description" resname="rel_delivery_costs.description">
|
||||
<source>deliverycosts conditions per each product</source>
|
||||
<target>Liefergebühren abzüge zuschläge pro Produkt</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
296
Resources/Private/Language/de.locallang_db.xlf
Normal file
@@ -0,0 +1,296 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" target-language="de" datatype="plaintext" original="EXT:a2g_products/Resources/Private/Language/locallang_db.xlf" date="2022-01-25T14:39:22Z" product-name="a2g_products">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_products" resname="tx_a2gproducts_domain_model_products">
|
||||
<source>Products</source>
|
||||
<target>Produkte</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_products.nr" resname="tx_a2gproducts_domain_model_products.nr">
|
||||
<source>Nr</source>
|
||||
<target></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_products.title" resname="tx_a2gproducts_domain_model_products.title">
|
||||
<source>Title</source>
|
||||
<target>Titel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_products.description" resname="tx_a2gproducts_domain_model_products.description">
|
||||
<source>Description</source>
|
||||
<target>Beschreibung</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_products.image" resname="tx_a2gproducts_domain_model_products.image">
|
||||
<source>Image</source>
|
||||
<target>Bild</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_products.images" resname="tx_a2gproducts_domain_model_products.images">
|
||||
<source>Images</source>
|
||||
<target>Bilder</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_products.net_price" resname="tx_a2gproducts_domain_model_products.net_price">
|
||||
<source>Net Price</source>
|
||||
<target>Netto Preis</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_products.gross_price" resname="tx_a2gproducts_domain_model_products.gross_price">
|
||||
<source>Gross Price</source>
|
||||
<target>Brutto Preis</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_products.rel_category" resname="tx_a2gproducts_domain_model_products.rel_category">
|
||||
<source>Category</source>
|
||||
<target>Kategorie</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_products.rel_filter_values" resname="tx_a2gproducts_domain_model_products.rel_filter_values">
|
||||
<source>Filter Values</source>
|
||||
<target>Filter Werte</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_categories" resname="tx_a2gproducts_domain_model_categories">
|
||||
<source>Categories</source>
|
||||
<target>Kategorien</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_categories.title" resname="tx_a2gproducts_domain_model_categories.title">
|
||||
<source>Title</source>
|
||||
<target>Titel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_categories.description" resname="tx_a2gproducts_domain_model_categories.description">
|
||||
<source>Description</source>
|
||||
<target>Beschreibung</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_categories.image" resname="tx_a2gproducts_domain_model_categories.image">
|
||||
<source>Image</source>
|
||||
<target>Bild</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_categories.rel_filters" resname="tx_a2gproducts_domain_model_categories.rel_filters">
|
||||
<source>Filters</source>
|
||||
<target>Filter</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_filters" resname="tx_a2gproducts_domain_model_filters">
|
||||
<source>Filters</source>
|
||||
<target>Filter</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_filters.title" resname="tx_a2gproducts_domain_model_filters.title">
|
||||
<source>Title</source>
|
||||
<target>Titel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_filters.filter_type" resname="tx_a2gproducts_domain_model_filters.filter_type">
|
||||
<source>Filter Type</source>
|
||||
<target>Filter Typ</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_filters.db_operation_max" resname="tx_a2gproducts_domain_model_filters.db_operation_max">
|
||||
<source>Db Operation Max</source>
|
||||
<target>Db Operation Max</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_filters.db_operation_min" resname="tx_a2gproducts_domain_model_filters.db_operation_min">
|
||||
<source>Db Operation Min</source>
|
||||
<target>Db Operation Min</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_filters.rel_filter_option" resname="tx_a2gproducts_domain_model_filters.rel_filter_option">
|
||||
<source>Filter Option</source>
|
||||
<target>Filter Option</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_filteroptions" resname="tx_a2gproducts_domain_model_filteroptions">
|
||||
<source>Filter Options</source>
|
||||
<target>Filter Optionen</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_filteroptions.title" resname="tx_a2gproducts_domain_model_filteroptions.title">
|
||||
<source>Title</source>
|
||||
<target>Titel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_filteroptions.value_min" resname="tx_a2gproducts_domain_model_filteroptions.value_min">
|
||||
<source>Value Min</source>
|
||||
<target>min. Wert</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_filteroptions.value_max" resname="tx_a2gproducts_domain_model_filteroptions.value_max">
|
||||
<source>Value Max</source>
|
||||
<target>max. Wert</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_filtervalues" resname="tx_a2gproducts_domain_model_filtervalues">
|
||||
<source>Filter Values</source>
|
||||
<target>Filter Werte</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_filtervalues.value" resname="tx_a2gproducts_domain_model_filtervalues.value">
|
||||
<source>Value</source>
|
||||
<target>Wert</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_filtervalues.rel_filters" resname="tx_a2gproducts_domain_model_filtervalues.rel_filters">
|
||||
<source>Filters</source>
|
||||
<target>Filter</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2g_products_a2gproductslist.name" resname="tx_a2g_products_a2gproductslist.name">
|
||||
<source>Altogether Products - Product List</source>
|
||||
<target>Altogether Produkte - Produktliste</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2g_products_a2gproductslist.description" resname="tx_a2g_products_a2gproductslist.description">
|
||||
<source></source>
|
||||
<target>Liste der Produkte mit filter und such Möglichkeit.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2g_products_a2gproductsdetail.name" resname="tx_a2g_products_a2gproductsdetail.name">
|
||||
<source>Altogether Products - Product Detail</source>
|
||||
<target>Altogether Produkte - Produkt Detail Seite</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2g_products_a2gproductsdetail.description" resname="tx_a2g_products_a2gproductsdetail.description">
|
||||
<source></source>
|
||||
<target>Detailseite eines Produktes</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2g_products_ingredientslist.name" resname="tx_a2g_products_ingredientslist.name">
|
||||
<source>Altogether Products - Ingredients List</source>
|
||||
<target>Altogether Produkte - Liste der Inhaltsstoffe</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2g_products_ingredientslist.description" resname="tx_a2g_products_ingredientslist.description">
|
||||
<source></source>
|
||||
<target></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2g_products_ingredientsdetail.name" resname="tx_a2g_products_ingredientsdetail.name">
|
||||
<source>Altogether Products - Ingredients Detail</source>
|
||||
<target>Altogether Produkte - Inhaltsstoffe Detail Seite</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2g_products_ingredientsdetail.description" resname="tx_a2g_products_ingredientsdetail.description">
|
||||
<source></source>
|
||||
<target></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_ingredients" resname="tx_a2gproducts_domain_model_ingredients">
|
||||
<source>Ingredients</source>
|
||||
<target>Inhaltstoffe</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="title" resname="title">
|
||||
<source>title</source>
|
||||
<target>Titel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="description" resname="description">
|
||||
<source>description</source>
|
||||
<target>Beschreibung</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="image" resname="image">
|
||||
<source>image</source>
|
||||
<target>Bild</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_filters" resname="rel_filters">
|
||||
<source>Filters</source>
|
||||
<target>Filter</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="value_min" resname="value_min">
|
||||
<source>min value</source>
|
||||
<target>min. Wert</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="value_max" resname="value_max">
|
||||
<source>max value</source>
|
||||
<target>max. Wert</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="filter_type" resname="filter_type">
|
||||
<source>filter type</source>
|
||||
<target>Filter Typ</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="db_operation_min" resname="db_operation_min">
|
||||
<source>operation min</source>
|
||||
<target>min. Operant</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="db_operation_max" resname="db_operation_max">
|
||||
<source>operation max</source>
|
||||
<target>max. Operant</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_filter_option" resname="rel_filter_option">
|
||||
<source>filter option</source>
|
||||
<target>Filter Optionen</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="value" resname="value">
|
||||
<source>value</source>
|
||||
<target>Wert</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="images" resname="images">
|
||||
<source>images</source>
|
||||
<target>Bilder</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_products" resname="rel_products">
|
||||
<source>products</source>
|
||||
<target>Produkte</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="product_nr" resname="product_nr">
|
||||
<source>product nr</source>
|
||||
<target>Produkt Nr.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_category" resname="rel_category">
|
||||
<source>category</source>
|
||||
<target>Kateogie</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_filter_values" resname="rel_filter_values">
|
||||
<source>filter values</source>
|
||||
<target>Filter Werte</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_ingredients" resname="rel_ingredients">
|
||||
<source>ingredients</source>
|
||||
<target>Inhaltsstoffe</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="used_ingredients" resname="used_ingredients">
|
||||
<source>used ingredients</source>
|
||||
<target>verwendete Zutaten</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="related_products" resname="related_products">
|
||||
<source>products with this ingredient</source>
|
||||
<target>Produkte mit dieser Zutat</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="filter_type.useFilterOptions" resname="filter_type.useFilterOptions">
|
||||
<source>just use Filter Options</source>
|
||||
<target>Filteroptionen verwenden</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="slug" resname="slug">
|
||||
<source>slug</source>
|
||||
<target>Url Segment</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="images_tab" resname="images_tab">
|
||||
<source>Images</source>
|
||||
<target>Bilder</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="product_variants_tab" resname="product_variants_tab">
|
||||
<source>Varainats</source>
|
||||
<target>Varianten</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="filters_tab" resname="filters_tab">
|
||||
<source>Filters</source>
|
||||
<target>Filter</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ingredients_tab" resname="ingredients_tab">
|
||||
<source>Ingredients</source>
|
||||
<target>Inhaltsstoffe</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_productvariants" resname="rel_productvariants">
|
||||
<source>Product-Variants</source>
|
||||
<target>Produkt Varianten</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="description_html" resname="description_html">
|
||||
<source>Description ( RTE )</source>
|
||||
<target>Beschreibung ( RTE )</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="selectabel_product_attribute_tab" resname="selectabel_product_attribute_tab">
|
||||
<source>Product Options</source>
|
||||
<target>Produkt Optionen</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_selectableattribute" resname="rel_selectableattribute">
|
||||
<source>Selectable Produkt Options</source>
|
||||
<target>Wählbare Produkt Optionen</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_brand" resname="rel_brand">
|
||||
<source></source>
|
||||
<target>Marke</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="tx_a2gproducts_domain_model_brands" resname="tx_a2gproducts_domain_model_brands">
|
||||
<source></source>
|
||||
<target>Marken</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="seo_image1x1" resname="seo_image1x1">
|
||||
<source>SEO Image 1x1</source>
|
||||
<target></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="seo_image4x3" resname="seo_image4x3">
|
||||
<source>SEO Image 4x3</source>
|
||||
<target></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="seo_image16x9" resname="seo_image16x9">
|
||||
<source>SEO Image 16x9</source>
|
||||
<target></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="seo_tab" resname="seo_tab">
|
||||
<source>SEO</source>
|
||||
<target></target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
29
Resources/Private/Language/locallang.xlf
Normal file
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" datatype="plaintext" original="EXT:a2g_products/Resources/Private/Language/locallang.xlf" date="2021-11-18T10:42:07Z" product-name="a2g_products">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="product_list.product_detail_link" resname="product_list.product_detail_link">
|
||||
<source>detail</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="product.product_nr" resname="product.product_nr">
|
||||
<source>article nr</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="product_list.search" resname="product_list.search">
|
||||
<source>search</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="product_list.advanced_search" resname="product_list.advanced_search">
|
||||
<source>advanced search</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="product_list.search_input_placeholder" resname="product_list.search_input_placeholder">
|
||||
<source>search</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="related_products" resname="related_products">
|
||||
<source>related products</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="used_ingredients" resname="used_ingredients">
|
||||
<source>used ingredients</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<xliff version="1.0">
|
||||
<file source-language="en" datatype="plaintext" original="EXT:a2g_products/Resources/Private/Language/locallang_csh" date="2021-08-16T12:03:54Z" product-name="a2g_products">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="title.description" resname="title.description">
|
||||
<source>title</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="description.description" resname="description.description">
|
||||
<source>description</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="image.description" resname="image.description">
|
||||
<source>image</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_filters.description" resname="rel_filters.description">
|
||||
<source>relFilters</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<xliff version="1.0">
|
||||
<file source-language="en" datatype="plaintext" original="EXT:a2g_products/Resources/Private/Language/locallang_csh" date="2021-08-16T12:03:54Z" product-name="a2g_products">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="title.description" resname="title.description">
|
||||
<source>title</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="value_min.description" resname="value_min.description">
|
||||
<source>valueMin</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="value_max.description" resname="value_max.description">
|
||||
<source>valueMax</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<xliff version="1.0">
|
||||
<file source-language="en" datatype="plaintext" original="EXT:a2g_products/Resources/Private/Language/locallang_csh" date="2021-08-16T12:03:54Z" product-name="a2g_products">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="title.description" resname="title.description">
|
||||
<source>title</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="filter_type.description" resname="filter_type.description">
|
||||
<source>filterType</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="db_operation_max.description" resname="db_operation_max.description">
|
||||
<source>dbOperationMax</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="db_operation_min.description" resname="db_operation_min.description">
|
||||
<source>dbOperationMin</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_filter_option.description" resname="rel_filter_option.description">
|
||||
<source>relFilterOption</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<xliff version="1.0">
|
||||
<file source-language="en" datatype="plaintext" original="EXT:a2g_products/Resources/Private/Language/locallang_csh" date="2021-08-16T12:03:54Z" product-name="a2g_products">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="value.description" resname="value.description">
|
||||
<source>value</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_filters.description" resname="rel_filters.description">
|
||||
<source>relFilters</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" datatype="plaintext" original="EXT:a2g_products/Resources/Private/Language/locallang_csh_tx_a2gproducts_domain_model_products.xlf" date="2021-11-18T11:17:01Z" product-name="a2g_products">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="nr.description" resname="nr.description">
|
||||
<source>product nr</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="title.description" resname="title.description">
|
||||
<source>product title <br/>
|
||||
for Search Engin Optimation ( SEO ) and link preview ( <a href="https://ogp.me/">open graph</a> )</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="description.description" resname="description.description">
|
||||
<source>description <br/>
|
||||
for Search Engin Optimation ( SEO ) and link preview ( <a href="https://ogp.me/">open graph</a> )</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="image.description" resname="image.description">
|
||||
<source>product list image <br/>
|
||||
for Search Engin Optimation ( SEO ) and link preview ( <a href="https://ogp.me/">open graph</a> )</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="images.description" resname="images.description">
|
||||
<source>images</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_category.description" resname="rel_category.description">
|
||||
<source>relCategory</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_filter_values.description" resname="rel_filter_values.description">
|
||||
<source>relFilterValues</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="path_segment.description" resname="path_segment.description">
|
||||
<source>url segment generated from the product title</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="description_html.description" resname="description_html.description">
|
||||
<source>farmateable description </source>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_ingedients.description" resname="rel_ingedients.description">
|
||||
<source>ingredients</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_productvariants.description" resname="rel_productvariants.description">
|
||||
<source></source>
|
||||
</trans-unit>
|
||||
<trans-unit id="rel_delivery_costs.description" resname="rel_delivery_costs.description">
|
||||
<source>deliverycosts conditions per each product</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
44
Resources/Private/Language/locallang_db.xlf
Normal file
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<file source-language="en" datatype="plaintext" original="EXT:a2g_travel_blog/Resources/Private/Language/locallang_db.xlf" date="2021-11-14T20:20:24Z" product-name="a2g_travel_blog">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="pages.rel_coordinate" xml:space="preserve">
|
||||
<source>Coordinate</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="pages.tabs.travel_blog" xml:space="preserve">
|
||||
<source>Travel Blog</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="pages.palettes.travel_blog" xml:space="preserve">
|
||||
<source>Travel Blog</source>
|
||||
</trans-unit>
|
||||
|
||||
<trans-unit id="a2gtravelblog_map.name" xml:space="preserve">
|
||||
<source>Travel Blog Map</source>
|
||||
</trans-unit>
|
||||
|
||||
<trans-unit id="a2gtravelblog_timeline.name" xml:space="preserve">
|
||||
<source>Travel Blog Timeline</source>
|
||||
</trans-unit>
|
||||
|
||||
|
||||
<trans-unit id="wizard.group.travel_blog" xml:space="preserve">
|
||||
<source>Travel Blog</source>
|
||||
</trans-unit>
|
||||
|
||||
<trans-unit id="plugin.map.title" xml:space="preserve">
|
||||
<source>Travel Blog Map</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="plugin.map.description" xml:space="preserve">
|
||||
<source> altogether Travel Blog Map</source>
|
||||
</trans-unit>
|
||||
|
||||
<trans-unit id="plugin.timeline.title" xml:space="preserve">
|
||||
<source>Travel Blog Timeline</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="plugin.timeline.description" xml:space="preserve">
|
||||
<source> altogether Travel Blog Timeline</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
5
Resources/Private/Layouts/Default.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<div class="a2g-travel-blog">
|
||||
<f:render section="content" />
|
||||
</div>
|
||||
</html>
|
5
Resources/Private/Layouts/MapPopupContent.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<div class="a2g-travel-blog-popup">
|
||||
<f:render section="content" />
|
||||
</div>
|
||||
</html>
|
15
Resources/Private/Partials/General/BlogIcons.html
Normal 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>
|
7
Resources/Private/Partials/General/FeaturedImage.html
Normal 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>
|
15
Resources/Private/Partials/General/FlashMessages.html
Normal 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>
|
17
Resources/Private/Partials/General/FormErrors.html
Normal 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>
|
18
Resources/Private/Partials/General/SocialIcons.html
Normal 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>
|
80
Resources/Private/Partials/Image.html
Normal 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>
|
36
Resources/Private/Partials/List.html
Normal 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>
|
19
Resources/Private/Partials/List/Archive.html
Normal 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>
|
22
Resources/Private/Partials/List/Author.html
Normal 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=" [...]">{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>
|
18
Resources/Private/Partials/List/Category.html
Normal 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=" [...]">{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>
|
27
Resources/Private/Partials/List/Post.html
Normal 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>
|
25
Resources/Private/Partials/List/Post.rss
Normal 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>
|
50
Resources/Private/Partials/List/PostTimeline.html
Normal file
13
Resources/Private/Partials/List/Tag.html
Normal 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=" [...]">{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>
|
31
Resources/Private/Partials/Map/Controll.html
Normal 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 </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>
|
2
Resources/Private/Partials/Meta/Default.html
Normal file
@@ -0,0 +1,2 @@
|
||||
<f:variable name="metatype" value="default" />
|
||||
<f:render partial="Meta/Rendering/Section" arguments="{_all}" />
|
31
Resources/Private/Partials/Meta/Elements/Authors.html
Normal 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>
|
20
Resources/Private/Partials/Meta/Elements/Categories.html
Normal 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>
|
23
Resources/Private/Partials/Meta/Elements/Comments.html
Normal 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>
|
10
Resources/Private/Partials/Meta/Elements/Published.html
Normal 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>
|
20
Resources/Private/Partials/Meta/Elements/Tags.html
Normal 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>
|
2
Resources/Private/Partials/Meta/ListFooter.html
Normal file
@@ -0,0 +1,2 @@
|
||||
<f:variable name="metatype" value="listfooter" />
|
||||
<f:render partial="Meta/Rendering/Section" arguments="{_all}" />
|
2
Resources/Private/Partials/Meta/ListHeader.html
Normal file
@@ -0,0 +1,2 @@
|
||||
<f:variable name="metatype" value="listheader" />
|
||||
<f:render partial="Meta/Rendering/Section" arguments="{_all}" />
|
2
Resources/Private/Partials/Meta/PostFooter.html
Normal file
@@ -0,0 +1,2 @@
|
||||
<f:variable name="metatype" value="postfooter" />
|
||||
<f:render partial="Meta/Rendering/Section" arguments="{_all}" />
|
2
Resources/Private/Partials/Meta/PostHeader.html
Normal file
@@ -0,0 +1,2 @@
|
||||
<f:variable name="metatype" value="postheader" />
|
||||
<f:render partial="Meta/Rendering/Section" arguments="{_all}" />
|
3
Resources/Private/Partials/Meta/Rendering/Group.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<div class="postmetagroup postmetagroup--{settings.meta.{metatype}.modifier} postmetagroup--type-{metatype}">
|
||||
{content -> f:format.raw()}
|
||||
</div>
|
12
Resources/Private/Partials/Meta/Rendering/Item.html
Normal 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>
|
23
Resources/Private/Partials/Meta/Rendering/Section.html
Normal 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>
|
2
Resources/Private/Partials/Meta/TeaserFooter.html
Normal file
@@ -0,0 +1,2 @@
|
||||
<f:variable name="metatype" value="teaserfooter" />
|
||||
<f:render partial="Meta/Rendering/Section" arguments="{_all}" />
|
2
Resources/Private/Partials/Meta/TeaserHeader.html
Normal file
@@ -0,0 +1,2 @@
|
||||
<f:variable name="metatype" value="teaserheader" />
|
||||
<f:render partial="Meta/Rendering/Section" arguments="{_all}" />
|
7
Resources/Private/Partials/SimpleList.html
Normal 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>
|
22
Resources/Private/Partials/Teaser/Post.html
Normal 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>
|
6
Resources/Private/Partials/TeaserList.html
Normal 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>
|
38
Resources/Private/Partials/Timeline.html
Normal 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>
|
||||
|
12
Resources/Private/Templates/Blog/Post/Authors.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<f:layout name="Post" />
|
||||
<f:section name="Content">
|
||||
|
||||
<f:if condition="{post.authors}">
|
||||
<div class="postauthors">
|
||||
<f:for each="{post.authors}" as="author">
|
||||
<f:render partial="Post/Author" arguments="{_all}" />
|
||||
</f:for>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
</f:section>
|
12
Resources/Private/Templates/Blog/Post/Footer.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<f:layout name="Post" />
|
||||
<f:section name="Content">
|
||||
|
||||
<footer class="postfooter">
|
||||
<f:if condition="{settings.meta.postfooter.enable}">
|
||||
<div class="postfooter__meta">
|
||||
<f:render partial="Meta/PostFooter" arguments="{_all}" />
|
||||
</div>
|
||||
</f:if>
|
||||
</footer>
|
||||
|
||||
</f:section>
|
18
Resources/Private/Templates/Blog/Post/Header.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<f:layout name="Post" />
|
||||
<f:section name="Content">
|
||||
|
||||
<header class="postheader">
|
||||
<f:if condition="{post.featuredImage}">
|
||||
<div class="postheader__featuredimage">
|
||||
<f:render partial="General/FeaturedImage" arguments="{image: post.featuredImage, settings: settings.post.featuredImage}" />
|
||||
</div>
|
||||
</f:if>
|
||||
<h1 class="postheader__title">{post.title}</h1>
|
||||
<f:if condition="{settings.meta.postheader.enable}">
|
||||
<div class="postheader__meta">
|
||||
<f:render partial="Meta/PostHeader" arguments="{_all}" />
|
||||
</div>
|
||||
</f:if>
|
||||
</header>
|
||||
|
||||
</f:section>
|
4
Resources/Private/Templates/Blog/Post/ListByDemand.html
Normal file
@@ -0,0 +1,4 @@
|
||||
<f:layout name="Default" />
|
||||
<f:section name="Content">
|
||||
<f:render partial="TeaserList" arguments="{_all}"/>
|
||||
</f:section>
|
@@ -0,0 +1,4 @@
|
||||
<f:layout name="Default" />
|
||||
<f:section name="Content">
|
||||
<f:render partial="List" arguments="{_all}"/>
|
||||
</f:section>
|
68
Resources/Private/Templates/Blog/Post/ListPostsByAuthor.html
Normal file
@@ -0,0 +1,68 @@
|
||||
<f:layout name="Default" />
|
||||
<f:section name="Content">
|
||||
<f:if condition="{author}">
|
||||
<f:then>
|
||||
<header class="blogarchiveheader blogarchiveheader--author">
|
||||
<h1 class="blogarchiveheader__title">
|
||||
<span class="blogarchiveheader__titletext">
|
||||
<f:translate key="headline.author.simple" />:
|
||||
{author.name}
|
||||
</span>
|
||||
<blogvh:link.author class="blogarchiveheader__titlelink" rss="true" author="{author}">
|
||||
<span class="blogicon"><f:render partial="General/SocialIcons" section="Rss" optional="true" /></span>
|
||||
</blogvh:link.author>
|
||||
</h1>
|
||||
<f:if condition="{author.bio}">
|
||||
<div class="blogarchiveheader__description">
|
||||
<p>{author.bio}</p>
|
||||
</div>
|
||||
</f:if>
|
||||
<f:if condition="{author.allTags}">
|
||||
<div class="blogarchiveheader__taxonomy blogarchiveheader__taxonomy--tags">
|
||||
<ul class="blogtaglist">
|
||||
<f:for each="{author.allTags}" as="tag">
|
||||
<li class="blogtaglist__item"><blogvh:link.tag class="blogbadge" tag="{tag}"/></li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</div>
|
||||
</f:if>
|
||||
<div class="a2g-map-wrap">
|
||||
<div class="ol-popup a2g-map-popup d-none" >
|
||||
<a href="#" class="ol-popup-closer a2g-map-popup-closer"></a>
|
||||
<div class="a2g-map-popup-content"></div>
|
||||
</div>
|
||||
<div class="a2g-map"
|
||||
data-marker-source="<f:uri.action action='mapMarkersFromAuthor' arguments='{authors: {0: author.uid}}' pluginName='MapConfig' controller='Map' extensionName='A2gTravelBlog' pageType='1652369512'></f:uri.action>"
|
||||
data-map-config='{"zoom":2,"maxZoom":18,"centerLon":0,"centerLat":0,"mapLayers":[{"layer":"osm","config":[],"label":"osm_map_layer","active":true}],"zoomSlider":true,"fullScreen":true}'></div>
|
||||
</div>
|
||||
</header>
|
||||
<f:render partial="Timeline" arguments="{_all}" />
|
||||
|
||||
|
||||
<f:if condition="{settings.authorUid}">
|
||||
<footer class="blogarchivefooter blogarchivefooter--author">
|
||||
<div class="blogarchivefooter__backlink">
|
||||
<f:link.page pageUid="{settings.authorUid}">
|
||||
<f:translate key="list.backlink.authors" />
|
||||
</f:link.page>
|
||||
</div>
|
||||
</footer>
|
||||
</f:if>
|
||||
|
||||
</f:then>
|
||||
<f:else>
|
||||
|
||||
<header class="blogarchiveheader blogarchiveheader--authors">
|
||||
<h1 class="blogarchiveheader__title">
|
||||
<span class="blogarchiveheader__titletext"><f:translate key="headline.authors" /></span>
|
||||
</h1>
|
||||
</header>
|
||||
<div class="bloglist bloglist--authors card-group-element card-group-element-columns-2 card-group-element-align-center">
|
||||
<f:for each="{authors}" as="author">
|
||||
<f:render partial="List/Author" arguments="{_all}" />
|
||||
</f:for>
|
||||
</div>
|
||||
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:section>
|
@@ -0,0 +1,96 @@
|
||||
<f:layout name="Default" />
|
||||
<f:section name="Content">
|
||||
<f:if condition="{category}">
|
||||
<f:then>
|
||||
|
||||
<header class="blogarchiveheader blogarchiveheader--category">
|
||||
<h1 class="blogarchiveheader__title">
|
||||
<span class="blogarchiveheader__titletext">
|
||||
<f:translate key="headline.traveldestination.simple" default="Reiseziel"/>:
|
||||
{category.title}
|
||||
</span>
|
||||
<blogvh:link.category class="blogarchiveheader__titlelink" rss="true" category="{category}">
|
||||
<span class="blogicon"><f:render partial="General/SocialIcons" section="Rss" optional="true" /></span>
|
||||
</blogvh:link.category>
|
||||
</h1>
|
||||
|
||||
|
||||
<div class="blogarchiveheader__description">
|
||||
<p>{category.description}</p>
|
||||
</div>
|
||||
|
||||
<bk2k:data.imageVariants as="variants" variants="{variants}" multiplier="{columnConfig.multiplier}" gutters="{columnConfig.gutters}" corrections="{columnConfig.corrections}" />
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="a2g-map-wrap me-3">
|
||||
<div class="ol-popup a2g-map-popup d-none" >
|
||||
<a href="#" class="ol-popup-closer a2g-map-popup-closer"></a>
|
||||
<div class="a2g-map-popup-content"></div>
|
||||
</div>
|
||||
<div class="a2g-map"
|
||||
data-marker-source="<f:uri.action action='mapMarkersFromCategories' arguments='{categories:{0:category.uid}}' pluginName='MapConfig' controller='Map' extensionName='A2gTravelBlog' pageType='1652369512'></f:uri.action>"
|
||||
data-map-config='{"zoom":2,"maxZoom":18,"centerLon":0,"centerLat":0,"centerCountry": true,"style": {"featureOverlay":{"stroke":{"color": "rgba(240,145,48,0.7)","width": 4}}},"mapLayers":[{"layer": "country","config": {"layer": "country","countryGeoSource": "<f:uri.action action="activeCountryGeojson" arguments="{categories:{0:category.uid}}" pluginName="MapConfig" controller="Map" extensionName="A2gTravelBlog" pageType="1652369512"></f:uri.action>"},"label": "country (free)","active": true},{"layer":"osm","config":[],"label":"osm_map_layer","active":true}],"zoomSlider":true,"fullScreen":true}'></div>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<f:render partial="List" arguments="{_all}" />
|
||||
<f:if condition="{settings.categoryUid} || {category.content}">
|
||||
<footer class="blogarchivefooter blogarchivefooter--category">
|
||||
<f:if condition="{settings.categoryUid}">
|
||||
<div class="blogarchivefooter__backlink">
|
||||
<f:link.page pageUid="{settings.categoryUid}">
|
||||
<f:translate key="list.backlink.categories" />
|
||||
</f:link.page>
|
||||
</div>
|
||||
</f:if>
|
||||
<f:if condition="{category.content}">
|
||||
<div class="blogarchivefooter__content">
|
||||
<f:cObject typoscriptObjectPath="lib.blog.contentElementRendering">{category.contentElementUidList}</f:cObject>
|
||||
</div>
|
||||
</f:if>
|
||||
</footer>
|
||||
</f:if>
|
||||
|
||||
</f:then>
|
||||
<f:else>
|
||||
|
||||
<header class="blogarchiveheader blogarchiveheader--categories">
|
||||
<h1 class="blogarchiveheader__title">
|
||||
<span class="blogarchiveheader__titletext">
|
||||
<f:translate key="headline.traveldestinations" default="Reiseziele"/>
|
||||
</span>
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<div class="a2g-map-wrap mb-3">
|
||||
<div class="ol-popup a2g-map-popup d-none" >
|
||||
<a href="#" class="ol-popup-closer a2g-map-popup-closer"></a>
|
||||
<div class="a2g-map-popup-content"></div>
|
||||
</div>
|
||||
<div class="a2g-map"
|
||||
data-map-config='{"zoom":2,"maxZoom":18,
|
||||
"centerLon":0,"centerLat":0,
|
||||
"style": {
|
||||
"featureOverlay":{
|
||||
"stroke":{
|
||||
"color": "rgba(240,145,48,0.7)",
|
||||
"width": 4
|
||||
}
|
||||
}
|
||||
},
|
||||
"mapLayers":[{
|
||||
"layer": "country",
|
||||
"config": { "layer": "country", "countryGeoSource": "<f:uri.action action="activeCountriesGeojson" pluginName="MapConfig" controller="Map" extensionName="A2gTravelBlog" pageType="1652369512"></f:uri.action>" },"label": "country (free)","active": true },{"layer":"osm","config":[],"label":"osm_map_layer","active":true}], "zoomSlider":true,"fullScreen":true}'></div>
|
||||
</div>
|
||||
|
||||
<div class="bloglist bloglist--categories card-group-element card-group-element-columns-3 card-group-element-align-center">
|
||||
<f:for each="{categories}" as="category">
|
||||
<f:render partial="List/Category" arguments="{_all}" />
|
||||
</f:for>
|
||||
</div>
|
||||
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:section>
|
47
Resources/Private/Templates/Blog/Post/ListPostsByDate.html
Normal file
@@ -0,0 +1,47 @@
|
||||
<f:layout name="Default" />
|
||||
<f:section name="Content">
|
||||
<f:if condition="!{archiveData}">
|
||||
<f:then>
|
||||
|
||||
<f:comment>If a year/+month is selected show posts matching.</f:comment>
|
||||
<header class="blogarchiveheader blogarchiveheader--archive">
|
||||
<h1 class="blogarchiveheader__title">
|
||||
<span class="blogarchiveheader__titletext">
|
||||
<f:if condition="{month}">{f:format.date(format: '{settings.widgets.archive.monthDateFormat}', date: timestamp)}</f:if> {year}
|
||||
</span>
|
||||
<blogvh:link.archive class="blogarchiveheader__titlelink" rss="true" year="{year}" month="{month}">
|
||||
<span class="blogicon"><f:render partial="General/SocialIcons" section="Rss" optional="true" /></span>
|
||||
</blogvh:link.archive>
|
||||
</h1>
|
||||
</header>
|
||||
<f:render partial="List" arguments="{_all}" />
|
||||
<f:if condition="{settings.authorUid}">
|
||||
<footer class="blogarchivefooter blogarchivefooter--archive">
|
||||
<div class="blogarchivefooter__backlink">
|
||||
<f:link.page pageUid="{settings.archiveUid}">
|
||||
<f:translate key="list.backlink.archive" />
|
||||
</f:link.page>
|
||||
</div>
|
||||
</footer>
|
||||
</f:if>
|
||||
|
||||
</f:then>
|
||||
<f:else>
|
||||
|
||||
<f:comment>If year is missing show an overview of the archive.</f:comment>
|
||||
<header class="blogarchiveheader blogarchiveheader--archive">
|
||||
<h1 class="blogarchiveheader__title">
|
||||
<span class="blogarchiveheader__titletext">
|
||||
<f:translate key="headline.archive"/>
|
||||
</span>
|
||||
</h1>
|
||||
</header>
|
||||
<div class="bloglist bloglist--archive">
|
||||
<f:for each="{archiveData}" as="months" key="year">
|
||||
<f:render partial="List/Archive" arguments="{_all}" />
|
||||
</f:for>
|
||||
</div>
|
||||
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:section>
|
64
Resources/Private/Templates/Blog/Post/ListPostsByTag.html
Normal file
@@ -0,0 +1,64 @@
|
||||
<f:layout name="Default" />
|
||||
<f:section name="Content">
|
||||
<f:if condition="{tag}">
|
||||
<f:then>
|
||||
|
||||
<header class="blogarchiveheader blogarchiveheader--tag">
|
||||
<h1 class="blogarchiveheader__title">
|
||||
<span class="page__titletext">
|
||||
<f:translate key="headline.tag.simple" />:
|
||||
{tag.title}
|
||||
</span>
|
||||
<blogvh:link.tag class="page__titlelink" rss="true" tag="{tag}">
|
||||
<span class="blogicon"><f:render partial="General/SocialIcons" section="Rss" optional="true" /></span>
|
||||
</blogvh:link.tag>
|
||||
</h1>
|
||||
<div class="blogarchiveheader__description">
|
||||
<p>{tag.description}</p>
|
||||
</div>
|
||||
<div class="a2g-map-wrap">
|
||||
<div class="ol-popup a2g-map-popup d-none" >
|
||||
<a href="#" class="ol-popup-closer a2g-map-popup-closer"></a>
|
||||
<div class="a2g-map-popup-content"></div>
|
||||
</div>
|
||||
<div class="a2g-map"
|
||||
data-marker-source="<f:uri.action action='mapMarkersFromTag' arguments='{tag: tag.uid}' pluginName='MapConfig' controller='Map' extensionName='A2gTravelBlog' pageType='1652369512'></f:uri.action>"
|
||||
data-map-config='{"zoom":2,"maxZoom":18,"centerLon":0,"centerLat":0,"mapLayers":[{"layer":"osm","config":[],"label":"osm_map_layer","active":true}],"zoomSlider":true,"fullScreen":true}'></div>
|
||||
</div>
|
||||
</header>
|
||||
<f:render partial="List" arguments="{_all}" />
|
||||
<f:if condition="{settings.tagUid} || {tag.content}">
|
||||
<footer class="blogarchivefooter blogarchivefooter--tag">
|
||||
<f:if condition="{settings.tagUid}">
|
||||
<div class="blogarchivefooter__backlink">
|
||||
<f:link.page pageUid="{settings.tagUid}">
|
||||
<f:translate key="list.backlink.tags" />
|
||||
</f:link.page>
|
||||
</div>
|
||||
</f:if>
|
||||
<f:if condition="{tag.content}">
|
||||
<div class="blogarchivefooter__content">
|
||||
<f:cObject typoscriptObjectPath="lib.blog.contentElementRendering">{tag.contentElementUidList}</f:cObject>
|
||||
</div>
|
||||
</f:if>
|
||||
</footer>
|
||||
</f:if>
|
||||
</f:then>
|
||||
<f:else>
|
||||
|
||||
<header class="blogarchiveheader blogarchiveheader--tags">
|
||||
<h1 class="blogarchiveheader__title">
|
||||
<span class="blogarchiveheader__titletext">
|
||||
<f:translate key="headline.tags" />
|
||||
</span>
|
||||
</h1>
|
||||
</header>
|
||||
<div class="bloglist bloglist--tag">
|
||||
<f:for each="{tags}" as="tag">
|
||||
<f:render partial="List/Tag" arguments="{_all}" />
|
||||
</f:for>
|
||||
</div>
|
||||
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:section>
|
@@ -0,0 +1,4 @@
|
||||
<f:layout name="Default" />
|
||||
<f:section name="Content">
|
||||
<f:render partial="List" arguments="{_all}"/>
|
||||
</f:section>
|
6
Resources/Private/Templates/Blog/Post/Metadata.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<f:layout name="Post" />
|
||||
<f:section name="Content">
|
||||
|
||||
<f:render partial="Meta/Default" arguments="{_all}" />
|
||||
|
||||
</f:section>
|
4
Resources/Private/Templates/Blog/Post/RelatedPosts.html
Normal file
@@ -0,0 +1,4 @@
|
||||
<f:layout name="Post" />
|
||||
<f:section name="Content">
|
||||
<f:render partial="TeaserList" arguments="{_all}" />
|
||||
</f:section>
|
8
Resources/Private/Templates/Blog/Post/Sidebar.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<f:layout name="Default" />
|
||||
<f:section name="Content">
|
||||
<div class="blogwidgets">
|
||||
<f:for each="{settings.sidebarWidgets}" as="widget">
|
||||
<f:cObject typoscriptObjectPath="{widget}" />
|
||||
</f:for>
|
||||
</div>
|
||||
</f:section>
|
22
Resources/Private/Templates/Map/Map.html
Normal file
@@ -0,0 +1,22 @@
|
||||
<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:layout name="Default" />
|
||||
<f:section name="content">
|
||||
<bk2k:data.imageVariants as="variants" variants="{variants}" multiplier="{columnConfig.multiplier}" gutters="{columnConfig.gutters}" corrections="{columnConfig.corrections}" />
|
||||
<div id="a2g-costum-icons" data-content='{mapIcons}'></div>
|
||||
<div class="a2g-map-wrap">
|
||||
<div class="ol-popup a2g-map-popup d-none" >
|
||||
<a href="#" class="ol-popup-closer a2g-map-popup-closer"></a>
|
||||
<div class="a2g-map-popup-content"></div>
|
||||
</div>
|
||||
<f:if condition="{settings.controllsPositions} == '1' || {settings.controllsPositions} == '3'">
|
||||
<f:then>
|
||||
<f:render partial="Map/Controll" arguments="{_all}"></f:render>
|
||||
</f:then>
|
||||
</f:if>
|
||||
<div id="{mapId}" class="a2g-map" data-map-config='{mapConfig}'></div>
|
||||
<f:if condition="{settings.controllsPositions} == '2' || {settings.controllsPositions} == '3'">
|
||||
<f:render partial="Map/Controll" arguments="{_all}"></f:render>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:section>
|
||||
</html>
|
6
Resources/Private/Templates/Map/MapConfig.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<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:layout name="Default" />
|
||||
<f:section name="content">
|
||||
<div id="a2g-costum-icons" data-content='{mapIcons}'></div>
|
||||
</f:section>
|
||||
</html>
|
44
Resources/Private/Templates/Map/Popup.html
Normal file
@@ -0,0 +1,44 @@
|
||||
<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:layout name="MapPopupContent" />
|
||||
<f:section name="content">
|
||||
<bk2k:data.imageVariants as="variants" variants="{variants}" multiplier="{columnConfig.multiplier}" gutters="{columnConfig.gutters}" corrections="{columnConfig.corrections}" />
|
||||
<f:link.page title="{mapEntry.relTravelPost.title}" pageUid="{mapEntry.pid}">
|
||||
<f:if condition="{mapEntry.image}">
|
||||
<f:then>
|
||||
<div class="a2g-map-popup-image-wrap">
|
||||
<f:render partial="Image" arguments="{file: mapEntry.image, settings: settings, variants: variants, maxWidth: 230}" />
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
{mapEntry.relTravelPost.title}
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:link.page>
|
||||
<f:if condition="{mapEntry.popupContent}">
|
||||
<f:then>
|
||||
<div class="a2g-map-popup-text mt-2">
|
||||
<f:format.htmlentitiesDecode>
|
||||
{mapEntry.popupContent}
|
||||
</f:format.htmlentitiesDecode>
|
||||
</div>
|
||||
</f:then>
|
||||
</f:if>
|
||||
<f:if condition="{mapEntry.relTravelPost.authors} > 0">
|
||||
<f:then>
|
||||
<div class="d-flex justify-content-end mt-2">
|
||||
<small class="text-muted">
|
||||
<f:for each="{mapEntry.relTravelPost.authors}" as="author" iteration="it">
|
||||
<f:if condition="{author.detailsPage} || {settings.authorPageUid}">
|
||||
<f:then><blogvh:link.author rel="author" author="{author}">{author.name}</blogvh:link.author></f:then>
|
||||
<f:else>{author.name}</f:else>
|
||||
</f:if>
|
||||
<f:if condition="{it.isLast}">
|
||||
<f:else>, </f:else>
|
||||
</f:if>
|
||||
</f:for>
|
||||
</small>
|
||||
</div>
|
||||
</f:then>
|
||||
</f:if>
|
||||
</f:section>
|
||||
</html>
|
16
Resources/Private/Templates/Map/PopupCategory.html
Normal file
@@ -0,0 +1,16 @@
|
||||
<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:layout name="MapPopupContent" />
|
||||
<f:section name="content">
|
||||
|
||||
<blogvh:link.category class="bloglist__link" category="{category}">
|
||||
{category.posts->f:count()} <f:if condition='{category.posts->f:count()} > 1'>
|
||||
<f:then>
|
||||
Posts
|
||||
</f:then>
|
||||
<f:else>
|
||||
Post
|
||||
</f:else>
|
||||
</f:if> bei {category.title}</div>
|
||||
</blogvh:link.category>
|
||||
</f:section>
|
||||
</html>
|
22
Resources/Private/Templates/Map/PopupPost.html
Normal file
@@ -0,0 +1,22 @@
|
||||
<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:layout name="MapPopupContent" />
|
||||
<f:section name="content">
|
||||
<bk2k:data.imageVariants as="variants" variants="{variants}" multiplier="{columnConfig.multiplier}" gutters="{columnConfig.gutters}" corrections="{columnConfig.corrections}" />
|
||||
<f:if condition="{mapEntry.image}">
|
||||
<f:then>
|
||||
<div class="a2g-map-popup-image-wrap">
|
||||
<f:render partial="Image" arguments="{file: mapEntry.image, settings: settings, variants: variants, maxWidth: 230}" />
|
||||
</div>
|
||||
</f:then>
|
||||
</f:if>
|
||||
<f:if condition="{mapEntry.popupContent}">
|
||||
<f:then>
|
||||
<div class="a2g-map-popup-text mt-2">
|
||||
<f:format.htmlentitiesDecode>
|
||||
{mapEntry.popupContent}
|
||||
</f:format.htmlentitiesDecode>
|
||||
</div>
|
||||
</f:then>
|
||||
</f:if>
|
||||
</f:section>
|
||||
</html>
|
37
Resources/Private/Templates/TravelPost/Timeline.html
Normal file
@@ -0,0 +1,37 @@
|
||||
<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>
|
||||
|
BIN
Resources/Public/Icons/Extension.png
Normal file
After Width: | Height: | Size: 46 KiB |
172
Resources/Public/Icons/Marker/frog.svg
Normal file
After Width: | Height: | Size: 94 KiB |
177
Resources/Public/Icons/Marker/logo-slim.svg
Normal file
After Width: | Height: | Size: 114 KiB |
143
Resources/Public/Icons/Marker/markerSolid.svg
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
Resources/Public/Icons/a2g.gif
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Resources/Public/Icons/brand-image.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
Resources/Public/Icons/categories.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
Resources/Public/Icons/filter-option.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
Resources/Public/Icons/filters.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
Resources/Public/Icons/map.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
Resources/Public/Icons/tag.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
Resources/Public/Icons/timeline.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
Resources/Public/Icons/travelItinerary.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
Resources/Public/Icons/travelbag.png
Normal file
After Width: | Height: | Size: 6.7 KiB |
2
Resources/Public/JavaScript/index.9adfbad3.js
Normal file
9
Resources/Public/JavaScript/vendor.a5ae8db0.js
Normal file
1
Resources/Public/Scss/index.a51fb67c.css
Normal file
44227
Resources/Public/sampleData/countries.json
Normal file
342
Resources/Public/sampleData/marker.json
Normal file
@@ -0,0 +1,342 @@
|
||||
{
|
||||
"type": "FeatureCollection",
|
||||
"totalFeatures": 1046,
|
||||
"features": [
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f67",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
16.349805849210597,
|
||||
48.25017142860945
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"LEISTUNG": 5.7,
|
||||
"icon": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f68",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
16.31467754920881,
|
||||
48.15703986239329
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3559,
|
||||
"BEZ": 1230,
|
||||
"BAUJAHR": 2012,
|
||||
"PVID": "PV842",
|
||||
"LEISTUNG": 6.24,
|
||||
"SE_ANNO_CAD_DATA": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f69",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
16.308305377224514,
|
||||
48.22034516003518
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3560,
|
||||
"BEZ": 1160,
|
||||
"BAUJAHR": 2013,
|
||||
"PVID": "PV844",
|
||||
"LEISTUNG": 4.29,
|
||||
"SE_ANNO_CAD_DATA": null,
|
||||
"icon": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f6a",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
16.33275095625591,
|
||||
48.16179398555423
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3561,
|
||||
"BEZ": 1120,
|
||||
"BAUJAHR": 2013,
|
||||
"PVID": "PV845",
|
||||
"LEISTUNG": 3.9,
|
||||
"SE_ANNO_CAD_DATA": null,
|
||||
"icon": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f6b",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
16.504359669913917,
|
||||
48.24089953373162
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3562,
|
||||
"BEZ": 1220,
|
||||
"BAUJAHR": 2013,
|
||||
"PVID": "PV846",
|
||||
"LEISTUNG": 3.36,
|
||||
"SE_ANNO_CAD_DATA": null,
|
||||
"icon": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f6c",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
16.40266752923873,
|
||||
48.20312696321299
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3563,
|
||||
"BEZ": 1020,
|
||||
"BAUJAHR": 2013,
|
||||
"PVID": "PV847",
|
||||
"LEISTUNG": 7.99,
|
||||
"SE_ANNO_CAD_DATA": null,
|
||||
"icon": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f6d",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
16.511705685818,
|
||||
48.208327900902106
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3564,
|
||||
"BEZ": 1220,
|
||||
"BAUJAHR": 2012,
|
||||
"PVID": "PV849",
|
||||
"LEISTUNG": 3.12,
|
||||
"SE_ANNO_CAD_DATA": null,
|
||||
"icon": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f6e",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
16.421723096267158,
|
||||
48.25005414108675
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3565,
|
||||
"BEZ": 1210,
|
||||
"BAUJAHR": 2013,
|
||||
"PVID": "PV850",
|
||||
"LEISTUNG": 2.2,
|
||||
"SE_ANNO_CAD_DATA": null,
|
||||
"icon": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f6f",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
16.277447919342887,
|
||||
48.19733447095196
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3566,
|
||||
"BEZ": 1140,
|
||||
"BAUJAHR": 2013,
|
||||
"PVID": "PV852",
|
||||
"LEISTUNG": 8.33,
|
||||
"SE_ANNO_CAD_DATA": null,
|
||||
"icon": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f69",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
16.308305377224514,
|
||||
48.22034516003518
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3560,
|
||||
"BEZ": 1160,
|
||||
"BAUJAHR": 2013,
|
||||
"PVID": "PV844",
|
||||
"LEISTUNG": 4.29,
|
||||
"SE_ANNO_CAD_DATA": null,
|
||||
"icon": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f6a",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
16.33275095625591,
|
||||
-48.16179398555423
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3561,
|
||||
"BEZ": 1120,
|
||||
"BAUJAHR": 2013,
|
||||
"PVID": "PV845",
|
||||
"LEISTUNG": 3.9,
|
||||
"SE_ANNO_CAD_DATA": null,
|
||||
"icon": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-ee",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
16.504359669913917,
|
||||
-48.24089953373162
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3562,
|
||||
"BEZ": 1220,
|
||||
"BAUJAHR": 2013,
|
||||
"PVID": "PV846",
|
||||
"LEISTUNG": 3.36,
|
||||
"SE_ANNO_CAD_DATA": null,
|
||||
"icon": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-ff",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
16.40266752923873,
|
||||
-48.20312696321299
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3563,
|
||||
"BEZ": 1020,
|
||||
"BAUJAHR": 2013,
|
||||
"PVID": "PV847",
|
||||
"LEISTUNG": 7.99,
|
||||
"SE_ANNO_CAD_DATA": null,
|
||||
"icon": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-dd",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
16.511705685818,
|
||||
-48.208327900902106
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3564,
|
||||
"BEZ": 1220,
|
||||
"BAUJAHR": 2012,
|
||||
"PVID": "PV849",
|
||||
"LEISTUNG": 3.12,
|
||||
"SE_ANNO_CAD_DATA": null,
|
||||
"icon": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-a",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
-16.421723096267158,
|
||||
48.25005414108675
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3565,
|
||||
"BEZ": 1210,
|
||||
"BAUJAHR": 2013,
|
||||
"PVID": "PV850",
|
||||
"LEISTUNG": 2.2,
|
||||
"SE_ANNO_CAD_DATA": null,
|
||||
"icon": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature",
|
||||
"id": "ENGEFPVANLOGD.fid-d",
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
-16.277447919342887,
|
||||
48.19733447095196
|
||||
]
|
||||
},
|
||||
"geometry_name": "SHAPE",
|
||||
"properties": {
|
||||
"OBJECTID": 3566,
|
||||
"BEZ": 1140,
|
||||
"BAUJAHR": 2013,
|
||||
"PVID": "PV852",
|
||||
"LEISTUNG": 8.33,
|
||||
"SE_ANNO_CAD_DATA": null,
|
||||
"icon": 2
|
||||
}
|
||||
}
|
||||
],
|
||||
"crs": {
|
||||
"type": "name",
|
||||
"properties": {
|
||||
"name": "urn:ogc:def:crs:EPSG::4326"
|
||||
}
|
||||
}
|
||||
}
|