Initial commit - Typo3 11.5.41
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,282 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:layout name="Backend/Default" />
|
||||
|
||||
<f:section name="categoryTree">
|
||||
<ul class="{class}">
|
||||
<f:for each="{categories}" as="category">
|
||||
<li>
|
||||
<label title="{category.item.uid}: {category.item.title -> f:format.htmlspecialchars()}">
|
||||
<input type="checkbox" {n:be.isCheckboxActive(id:category.item.uid,categories:demand.selectedCategories)} name="tx_news_web_newsadministration[demand][selectedCategories][]" value="{category.item.uid}" /> {category.item.title}
|
||||
</label>
|
||||
|
||||
<f:if condition="{category.children}">
|
||||
<f:render section="categoryTree" arguments="{categories: category.children, demand:demand}" />
|
||||
</f:if>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</f:section>
|
||||
|
||||
<f:section name="content">
|
||||
<h1>
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:administration.title" />
|
||||
</h1>
|
||||
|
||||
<f:if condition="{showSupportArea}">
|
||||
<f:be.infobox title=" {f:translate(key:'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:administration.donation.support')}" state="-1">
|
||||
{f:translate(key:'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:administration.donation.why.text')}
|
||||
<br>
|
||||
<f:link.action action="donate" class="btn btn-default">
|
||||
<core:icon identifier="ext-news-donation" />
|
||||
{f:translate(key:'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:administration.donation.link')}
|
||||
</f:link.action>
|
||||
</f:be.infobox>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{page} == 0">
|
||||
<div class="alert alert-info">
|
||||
<div class="message-body">
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:administration.nopageselected" />
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
<f:if condition="{showSearchForm}">
|
||||
<f:form id="administrationForm" name="demand" object="{demand}" method="get" data="{autoSubmitForm:autoSubmitForm}">
|
||||
<input type="hidden" name="formSubmitted" value="1">
|
||||
<input type="hidden" name="route" value="/module/web/NewsAdministration/">
|
||||
<input type="hidden" name="token" value="{moduleToken}">
|
||||
<input type="hidden" name="id" value="{page}">
|
||||
<f:form.checkbox style="display:none" property="selectedCategories" value="0" />
|
||||
|
||||
<div id="setting-container" style="{f:if(condition:hideForm,then:'display:none',else:'')}">
|
||||
<div class="settings">
|
||||
<div class="row form-horizontal">
|
||||
<div class="col-xs-6">
|
||||
<f:if condition="{filters.searchWord}">
|
||||
<div class="form-group">
|
||||
<label for="searchWord" class="col-xs-4 control-label">
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:module.searchWord" />
|
||||
</label>
|
||||
|
||||
<div class="col-xs-8">
|
||||
<f:form.textfield property="searchWord" id="searchWord" class="form-control t3js-clearable" />
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{filters.timeRestriction}">
|
||||
<div class="form-group">
|
||||
<label for="timeRestriction" class="col-xs-4 control-label">
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:module.timeRange" />
|
||||
</label>
|
||||
|
||||
<div class="col-xs-8">
|
||||
<div class="input-group">
|
||||
<f:form.textfield type="datetime" property="timeRestriction" id="timeRestriction" class="form-control t3js-datetimepicker t3js-clearable" data="{date-type:'datetime',date-offset:'0'}" />
|
||||
<span class="input-group-btn">
|
||||
<label class="btn btn-default" for="timeRestriction">
|
||||
<span class="fa fa-calendar"></span>
|
||||
</label>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="timeRestriction" class="col-xs-4 control-label">
|
||||
-
|
||||
</label>
|
||||
<div class="col-xs-8">
|
||||
<div class="input-group">
|
||||
<f:form.textfield type="datetime" property="timeRestrictionHigh" id="timeRestrictionHigh" class="form-control t3js-datetimepicker t3js-clearable" data="{date-type:'datetime',date-offset:'0'}" />
|
||||
<span class="input-group-btn">
|
||||
<label class="btn btn-default" for="timeRestrictionHigh">
|
||||
<span class="fa fa-calendar"></span>
|
||||
</label>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{filters.topNewsRestriction}">
|
||||
<div class="form-group">
|
||||
<label for="topNewsRestriction" class="col-xs-4 control-label">
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.topNewsRestriction" />
|
||||
</label>
|
||||
|
||||
<div class="col-xs-8">
|
||||
<f:form.select property="topNewsRestriction" class="form-control" options="{
|
||||
0:'',
|
||||
1:'{f:translate(key: \'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.topNewsRestriction.1\')}',
|
||||
2:'{f:translate(key: \'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.topNewsRestriction.2\')}'
|
||||
}" id="topNewsRestriction" />
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{filters.hidden}">
|
||||
<div class="form-group">
|
||||
<label for="hidden" class="col-xs-4 control-label">
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:administration.filter.hidden" />
|
||||
</label>
|
||||
|
||||
<div class="col-xs-8">
|
||||
<f:form.select property="hidden" class="form-control" options="{
|
||||
0:'',
|
||||
1:'{f:translate(key: \'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:administration.filter.hidden.hidden\')}',
|
||||
2:'{f:translate(key: \'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:administration.filter.hidden.nonHidden\')}'
|
||||
}" id="hidden" />
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{filters.archived}">
|
||||
<div class="form-group">
|
||||
<label for="archived" class="col-xs-4 control-label">
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.archiveRestriction" />
|
||||
</label>
|
||||
|
||||
<div class="col-xs-8">
|
||||
<f:form.select property="archived" class="form-control" options="{
|
||||
0:'',
|
||||
1:'{f:translate(key: \'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.archiveRestriction.active\')}',
|
||||
2:'{f:translate(key: \'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.archiveRestriction.archived\')}'
|
||||
}" id="archived" />
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{filters.sortingField}">
|
||||
<div class="form-group">
|
||||
<label for="sortingField" class="col-xs-4 control-label">
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderBy" />
|
||||
</label>
|
||||
|
||||
<div class="col-xs-4">
|
||||
<f:form.select class="form-control" property="sortingField" options="{
|
||||
title:'{f:translate(key: \'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderBy.title\')}',
|
||||
datetime:'{f:translate(key: \'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderBy.datetime\')}',
|
||||
tstamp:'{f:translate(key: \'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderBy.tstamp\')}',
|
||||
archive:'{f:translate(key: \'LLL:EXT:news/Resources/Private/Language/locallang_db.xlf:tx_news_domain_model_news.archive\')}',
|
||||
author:'{f:translate(key: \'LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.author_formlabel\')}'
|
||||
}" id="sortingField" />
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<f:form.select class="form-control" property="sortingDirection" options="{
|
||||
asc:'{f:translate(key: \'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderDirection.asc\')}',
|
||||
desc:'{f:translate(key: \'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderDirection.desc\')}'
|
||||
}" id="sortingDirection" />
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{filters.number}">
|
||||
<div class="form-group">
|
||||
<label for="recursive" class="col-xs-4 control-label">
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:module.recursive" />
|
||||
</label>
|
||||
|
||||
<div class="col-xs-4">
|
||||
<f:form.textfield type="number" additionalAttributes="{min:'0'}" property="recursive" id="recursive" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-offset-4 col-xs-8">
|
||||
<f:form.submit value="{f:translate(key:'LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:search')}" class="btn btn-primary" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<f:if condition="{filters.categories}">
|
||||
<div class="category-tree">
|
||||
<div class="form-group">
|
||||
<div class="tree-wrapper">
|
||||
<f:render section="categoryTree" arguments="{demand:demand,categories: categories, class:'list-tree'}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<f:if condition="{categories}">
|
||||
<f:if condition="{filters.categoryConjunction}">
|
||||
<div class="form-group">
|
||||
<label for="categoryConjunction" class="col-xs-4 control-label">
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.categoryConjunction" />
|
||||
</label>
|
||||
|
||||
<div class="col-xs-4">
|
||||
<f:form.select class="form-control" property="categoryConjunction" id="categoryConjunction" options="{AND:'AND', OR:'OR', notor:'notor', notand:'notand'}" />
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{filters.includeSubCategories}">
|
||||
<div class="form-group">
|
||||
<label for="includeSubCategories" class="col-xs-4 control-label">
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.includeSubCategories" />
|
||||
</label>
|
||||
|
||||
<div class="col-xs-8">
|
||||
<f:form.checkbox class="checkbox" property="includeSubCategories" value="1" id="includeSubCategories" />
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</f:form>
|
||||
</f:if>
|
||||
<f:if condition="{newsCount}">
|
||||
<f:then>
|
||||
<div class="result">
|
||||
{news -> f:format.raw()}
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="callout callout-info">
|
||||
<div class="media">
|
||||
<div class="media-left">
|
||||
<span class="fa-stack fa-lg callout-icon"> <i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-info fa-stack-1x"></i> </span>
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<h4 class="callout-title">
|
||||
{f:translate(key:'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:administration.nonewsfound')}</h4>
|
||||
<div class="callout-body">
|
||||
<p>
|
||||
{f:translate(key:'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:administration.nonewsfoundText')}</p>
|
||||
<p>
|
||||
<f:link.action action="newsPidListing" class="btn btn-info">{f:translate(key:'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:administration.nonewsfoundSwitch')}</f:link.action>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</f:else>
|
||||
</f:if>
|
||||
<script type="text/javascript">
|
||||
T3_THIS_LOCATION = {requestUri -> f:format.raw()};
|
||||
|
||||
function jumpToUrl(URL) {
|
||||
window.location.href = URL;
|
||||
return false;
|
||||
}
|
||||
function jumpExt(URL,anchor) { //
|
||||
var anc = anchor?anchor:"";
|
||||
window.location.href = URL+(T3_THIS_LOCATION?"&returnUrl="+T3_THIS_LOCATION:"")+anc;
|
||||
return false;
|
||||
}
|
||||
function jumpSelf(URL) { //
|
||||
window.location.href = URL+(T3_RETURN_URL?"&returnUrl="+T3_RETURN_URL:"");
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
empty on purpose.
|
||||
@@ -0,0 +1 @@
|
||||
empty on purpose.
|
||||
@@ -0,0 +1 @@
|
||||
empty on purpose.
|
||||
@@ -0,0 +1,52 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:layout name="Backend/Default" />
|
||||
|
||||
<f:section name="content">
|
||||
<h1>
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:administration.newsPidListing.header" />
|
||||
</h1>
|
||||
<p class="lead">
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:administration.newsPidListing.description" />
|
||||
</p>
|
||||
<f:form action="newsPidListing" class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label for="treeLevel" class="col-sm-3 control-label">
|
||||
<f:translate key="LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.recursive" />
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<f:form.select class="form-control" name="treeLevel" id="treeLevel" options="{1:1,2:2,3:3,4:4,5:5,6:6,7:7}" value="{treeLevel}" additionalAttributes="{onchange:'this.form.submit()'}" />
|
||||
</div>
|
||||
</div>
|
||||
</f:form>
|
||||
<table class="table table-striped table-hover">
|
||||
<thead>
|
||||
<tr class="t3-row-header">
|
||||
<th>
|
||||
<f:translate key="LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:pages" />
|
||||
</th>
|
||||
<th>
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_db.xlf:tx_news_domain_model_news" />
|
||||
</th>
|
||||
<th>
|
||||
<f:translate key="LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:sys_category" />
|
||||
</th>
|
||||
<th>
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_db.xlf:tx_news_domain_model_tag" />
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<f:for each="{tree}" as="item">
|
||||
<tr class="{f:if(condition: item.countAll, else: 'hide_line')}">
|
||||
<td nowrap="nowrap">
|
||||
<f:format.html parseFuncTSPath="">{item.HTML}</f:format.html>
|
||||
<f:link.action action="index" additionalParams="{id:item.row.uid}" title="UID: {item.row.uid}">{item.row.title}</f:link.action>
|
||||
</td>
|
||||
<td>{f:if(condition:item.countNews,then:item.countNews,else:'')}</td>
|
||||
<td>{f:if(condition:item.countCategories,then:item.countCategories,else:'')}</td>
|
||||
<td>{f:if(condition:item.countTags,then:item.countTags,else:'')}</td>
|
||||
</tr>
|
||||
</f:for>
|
||||
</table>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,51 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/Category/List.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<f:if condition="{categories}">
|
||||
<f:then>
|
||||
|
||||
|
||||
<f:render section="categoryTree" arguments="{categories:categories,overwriteDemand:overwriteDemand}" />
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:translate key="list_nocategoriesfound" />
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:section>
|
||||
|
||||
<f:section name="categoryTree">
|
||||
<ul>
|
||||
<f:for each="{categories}" as="category">
|
||||
{n:category.count(categoryUid:category.item.uid) -> f:variable(name: 'categoryUsageCount')}
|
||||
<li>
|
||||
<f:if condition="{category.item.uid} == {overwriteDemand.categories}">
|
||||
<f:then>
|
||||
<f:link.page title="{category.item.title}" class="active" pageUid="{settings.listPid}"
|
||||
additionalParams="{tx_news_pi1:{overwriteDemand:{categories: category.item.uid}}}">{category.item.title}
|
||||
</f:link.page>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:link.page title="{category.item.title}" pageUid="{settings.listPid}"
|
||||
additionalParams="{tx_news_pi1:{overwriteDemand:{categories: category.item.uid}}}">{category.item.title}
|
||||
</f:link.page>
|
||||
</f:else>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{categoryUsageCount}">({categoryUsageCount})</f:if>
|
||||
|
||||
<f:if condition="{category.children}">
|
||||
<f:render section="categoryTree" arguments="{categories: category.children,overwriteDemand:overwriteDemand}" />
|
||||
</f:if>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,78 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:layout name="Backend/Default"/>
|
||||
|
||||
<f:section name="content">
|
||||
<h1>{f:translate(key:'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.header')}</h1>
|
||||
<p class="lead">{f:translate(key:'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.description')}</p>
|
||||
<div class="callout callout-warning">
|
||||
<div class="media">
|
||||
<div class="media-left">
|
||||
<span class="fa-stack fa-lg callout-icon">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-warning fa-stack-1x"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<h4 class="callout-title">
|
||||
{f:translate(key:'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.backupwarning.header')}
|
||||
</h4>
|
||||
<div class="callout-body">
|
||||
{f:translate(key:'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.backupwarning')}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<f:if condition="{error}">
|
||||
<div class="alert alert-danger">
|
||||
<div class="message-header">
|
||||
{f:translate(key:'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.error.configuration.title')}
|
||||
</div>
|
||||
<div class="message-body">
|
||||
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:{error}" default="{error}"/>
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
<div id="news-import-form">
|
||||
<f:if condition="{availableJobs -> f:count()} > 1">
|
||||
<f:then>
|
||||
<div class="form-group">
|
||||
<label for="jobSelector" class="col-xs-2 control-label">
|
||||
{f:translate(key:'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.choose_a_job')}
|
||||
</label>
|
||||
|
||||
<div class="col-xs-3">
|
||||
<f:form.select id="jobSelector" options="{availableJobs}" class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
<br/><br/>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="alert alert-info">
|
||||
<f:form.select id="jobSelector" options="{}" style="display:none"/>
|
||||
{f:translate(key:'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.nojobs')}
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
|
||||
<div id="job" style="display:none;">
|
||||
<div class="progress">
|
||||
|
||||
<div id="progressBar" class="progress-bar progress-bar-success" role="progressbar" aria-valuemin="0"
|
||||
aria-valuemax="100"
|
||||
style="width: 0;">0%
|
||||
</div>
|
||||
</div>
|
||||
<button id="startButton" class="btn btn-primary">Start</button>
|
||||
</div>
|
||||
<div id="news-import-done" class="alert alert-success" style="display:none">
|
||||
{f:translate(key:'LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.done')}
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
var moduleUrl = '{f:format.raw(value: moduleUrl)}';
|
||||
</script>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,35 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/DateMenu.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<div class="news-menu-view">
|
||||
<ul>
|
||||
<f:for each="{data.single}" key="year" as="months">
|
||||
<li>
|
||||
{year}
|
||||
<ul>
|
||||
<f:for each="{months}" key="month" as="count">
|
||||
<f:if condition="{0:year, 1:month} == {0:overwriteDemand.year, 1:overwriteDemand.month}">
|
||||
<f:then>
|
||||
<li class="item itemactive">
|
||||
</f:then>
|
||||
<f:else>
|
||||
<li class="item">
|
||||
</f:else>
|
||||
</f:if>
|
||||
<f:link.action action="list" pageUid="{listPid}" arguments="{overwriteDemand:{year: year, month: month}}"><f:translate key="month.{month}" /> {year}</f:link.action>
|
||||
({count} <f:translate key="{f:if(condition: '{count} == 1', then: 'entry', else: 'entries')}" />)
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</div>
|
||||
</f:section>
|
||||
</html>
|
||||
208
typo3conf/ext/news/Resources/Private/Templates/News/Detail.html
Normal file
208
typo3conf/ext/news/Resources/Private/Templates/News/Detail.html
Normal file
@@ -0,0 +1,208 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
xmlns:rx="http://typo3.org/ns/Reelworx/RxShariff/ViewHelper"
|
||||
data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:layout name="Detail" />
|
||||
|
||||
<!--
|
||||
=====================
|
||||
News/Detail.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<f:if condition="{newsItem}">
|
||||
<f:then>
|
||||
<n:format.nothing>
|
||||
<n:excludeDisplayedNews newsItem="{newsItem}" />
|
||||
<f:if condition="{settings.detail.showMetaTags}">
|
||||
<f:render partial="Detail/Opengraph" arguments="{newsItem: newsItem, settings:settings}" />
|
||||
</f:if>
|
||||
<f:if condition="{newsItem.alternativeTitle}">
|
||||
<f:then>
|
||||
<n:titleTag>
|
||||
<f:format.htmlentitiesDecode>{newsItem.alternativeTitle}</f:format.htmlentitiesDecode>
|
||||
</n:titleTag>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<n:titleTag>
|
||||
<f:format.htmlentitiesDecode>{newsItem.title}</f:format.htmlentitiesDecode>
|
||||
</n:titleTag>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</n:format.nothing>
|
||||
<f:if condition="{settings.detail.showPrevNext}">
|
||||
<n:simplePrevNext pidList="{newsItem.pid}" news="{newsItem}" as="paginated" sortField="datetime">
|
||||
<f:if condition="{paginated}">
|
||||
<ul class="pager">
|
||||
<f:if condition="{paginated.prev}">
|
||||
<li class="previous">
|
||||
<n:link newsItem="{paginated.prev}" settings="{settings}">
|
||||
<span aria-hidden="true">← </span>{paginated.prev.title}
|
||||
</n:link>
|
||||
</li>
|
||||
</f:if>
|
||||
<f:if condition="{paginated.next}">
|
||||
<li class="next">
|
||||
<n:link newsItem="{paginated.next}" settings="{settings}" class="next">
|
||||
{paginated.next.title} <span aria-hidden="true"> →</span>
|
||||
</n:link>
|
||||
</li>
|
||||
</f:if>
|
||||
</ul>
|
||||
</f:if>
|
||||
</n:simplePrevNext>
|
||||
</f:if>
|
||||
<div class="header">
|
||||
<h1 itemprop="headline">{newsItem.title}</h1>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<p>
|
||||
<!-- date -->
|
||||
<span class="news-list-date">
|
||||
<time itemprop="datePublished" datetime="{f:format.date(date:newsItem.datetime, format:'Y-m-d')}">
|
||||
<f:format.date format="{f:translate(key:'dateFormat')}">{newsItem.datetime}</f:format.date>
|
||||
</time>
|
||||
</span>
|
||||
|
||||
<f:if condition="{newsItem.categories}">
|
||||
<f:render partial="Category/Items" arguments="{categories:newsItem.categories, settings:settings}" />
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{newsItem.tags}">
|
||||
<!-- Tags -->
|
||||
<span class="news-list-tags" itemprop="keywords">
|
||||
<f:for each="{newsItem.tags}" as="tag">
|
||||
{tag.title}
|
||||
</f:for>
|
||||
</span>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{newsItem.author}">
|
||||
<!-- author -->
|
||||
<span class="news-list-author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person">
|
||||
<f:translate key="author_simple" /> <span itemprop="name">{newsItem.author}</span>
|
||||
</span>
|
||||
</f:if>
|
||||
</p>
|
||||
</div>
|
||||
<n:renderMedia news="{newsItem}" imgClass="img-responsive" videoClass="video-wrapper" audioClass="audio-wrapper">
|
||||
<f:if condition="{newsItem.teaser}">
|
||||
<!-- teaser -->
|
||||
<div class="teaser-text" itemprop="description">
|
||||
<f:format.html>{newsItem.teaser}</f:format.html>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{newsItem.contentElements}">
|
||||
<!-- content elements -->
|
||||
<f:cObject typoscriptObjectPath="lib.tx_news.contentElementRendering">{newsItem.contentElementIdList}</f:cObject>
|
||||
</f:if>
|
||||
|
||||
<f:render partial="Detail/MediaContainer" arguments="{media: newsItem.mediaNonPreviews, settings:settings}" />
|
||||
|
||||
<!-- main text -->
|
||||
<div class="news-text-wrap" itemprop="articleBody">
|
||||
<f:format.html>{newsItem.bodytext}</f:format.html>
|
||||
</div>
|
||||
</n:renderMedia>
|
||||
|
||||
<f:if condition="{settings.backPid}">
|
||||
<!-- Link Back -->
|
||||
<div class="news-backlink-wrap">
|
||||
<f:link.page pageUid="{settings.backPid}">
|
||||
<f:translate key="back-link" />
|
||||
</f:link.page>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{settings.detail.showSocialShareButtons}">
|
||||
<f:comment>
|
||||
Care about the privacy of your readers?
|
||||
Checkout https://typo3.org/extensions/repository/view/rx_shariff
|
||||
and it will be used automatically!
|
||||
</f:comment>
|
||||
<n:extensionLoaded extensionKey="rx_shariff">
|
||||
<f:render partial="Detail/Shariff" />
|
||||
</n:extensionLoaded>
|
||||
</f:if>
|
||||
|
||||
<!-- related things -->
|
||||
<div class="news-related-wrap">
|
||||
<f:comment>
|
||||
Various options exist to fetch different related information:
|
||||
- {newsItem.allRelatedSorted}: all related news, related und related from, sorted by date
|
||||
- {newsItem.related}: all related
|
||||
- {newsItem.relatedSorted}: all related, sorted by date
|
||||
- {newsItem.relatedFrom}: all related from
|
||||
- {newsItem.relatedFromSortedByForeign}: all related from sorted by foreign sorting
|
||||
- {newsItem.relatedFromSorted}: all related from, sorted by date
|
||||
</f:comment>
|
||||
|
||||
<f:if condition="{newsItem.allRelatedSorted}">
|
||||
<!-- Related news records -->
|
||||
<div class="news-related news-related-news">
|
||||
<h4>
|
||||
<f:translate key="related-news" />
|
||||
</h4>
|
||||
<ul>
|
||||
<f:for each="{newsItem.allRelatedSorted}" as="related">
|
||||
<li>
|
||||
<span class="news-related-news-date"><f:format.date format="{f:translate(key:'dateFormat')}">{related.datetime}</f:format.date></span>
|
||||
<n:link newsItem="{related}" settings="{settings}" title="{related.title}">
|
||||
{related.title}
|
||||
</n:link>
|
||||
</li>
|
||||
|
||||
</f:for>
|
||||
</ul>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{newsItem.relatedFiles}">
|
||||
<!-- related files -->
|
||||
<div class="news-related news-related-files">
|
||||
<h4>
|
||||
<f:translate key="related-files" />
|
||||
</h4>
|
||||
<ul>
|
||||
<f:for each="{newsItem.relatedFiles}" as="relatedFile">
|
||||
<li>
|
||||
<span class="news-related-files-link">
|
||||
<a href="{relatedFile.originalResource.publicUrl -> f:format.htmlspecialchars()}" target="_blank">
|
||||
{f:if(condition:relatedFile.originalResource.title, then:relatedFile.originalResource.title, else:relatedFile.originalResource.name)}
|
||||
</a>
|
||||
</span>
|
||||
<span class="news-related-files-size">
|
||||
{relatedFile.originalResource.size -> f:format.bytes()}
|
||||
</span>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{newsItem.relatedLinks}">
|
||||
<!-- Related links -->
|
||||
<div class="news-related news-related-links">
|
||||
<h4>
|
||||
<f:translate key="related-links" />
|
||||
</h4>
|
||||
<ul>
|
||||
<f:for each="{newsItem.relatedLinks}" as="relatedLink">
|
||||
<li>
|
||||
<f:link.typolink parameter="{relatedLink.uri}" title="{relatedLink.title}" target="{n:targetLink(link:relatedLink.uri)}">{f:if(condition: relatedLink.title, then: relatedLink.title, else: relatedLink.uri)}</f:link.typolink>
|
||||
<f:if condition="{relatedLink.description}"><span>{relatedLink.description}</span></f:if>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</div>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
<f:translate extensionName="news" key="newsNotFound" />
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="{xslFile}"?>
|
||||
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
|
||||
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd
|
||||
http://www.google.com/schemas/sitemap-news/0.9
|
||||
http://www.google.com/schemas/sitemap-news/0.9/sitemap-news.xsd">
|
||||
<f:for each="{items}" as="item">
|
||||
<f:if condition="{item.loc}">
|
||||
<url>
|
||||
<loc>{item.loc}</loc>
|
||||
<news:news>
|
||||
<news:publication>
|
||||
<news:name>{settings.list.rss.channel.title}</news:name>
|
||||
<news:language>{settings.list.rss.channel.language}</news:language>
|
||||
</news:publication>
|
||||
<news:publication_date><f:format.date format="Y-m-d">{item.data.datetime}</f:format.date></news:publication_date>
|
||||
<news:title>{item.data.title}</news:title>
|
||||
</news:news>
|
||||
</url>
|
||||
</f:if>
|
||||
</f:for>
|
||||
</urlset>
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
{namespace n=GeorgRinger\News\ViewHelpers}<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<title>{settings.list.rss.channel.title}</title>
|
||||
<link href="{settings.list.rss.channel.link}"/>
|
||||
<link rel="self" href="{f:uri.page(pageType: settings.list.rss.channel.typeNum, absolute: 'true')}"/>
|
||||
<id>{f:uri.page(absolute: 'true')}</id>
|
||||
<updated><f:format.date format="c" date="now"/></updated>
|
||||
<f:if condition="{news}">
|
||||
<f:for each="{news}" as="newsItem">
|
||||
<entry>
|
||||
<id>{settings.list.rss.channel.link}news-{newsItem.uid}.atom</id>
|
||||
<title>{newsItem.title -> f:format.htmlspecialchars()}</title>
|
||||
<author>
|
||||
<name><f:if condition="{newsItem.author}"><f:then>{newsItem.author}</f:then><f:else>-</f:else></f:if></name>
|
||||
<f:if condition="{newsItem.authorEmail}"><email>{newsItem.authorEmail}</email></f:if>
|
||||
</author>
|
||||
<published><f:format.date format="c">{newsItem.datetime}</f:format.date></published>
|
||||
<updated><f:format.date format="c">{newsItem.tstamp}</f:format.date></updated>
|
||||
<link rel="alternate" type="text/html" href="{n:link(newsItem: newsItem, settings: settings, uriOnly: '1', configuration: '{forceAbsoluteUrl: 1}') -> f:format.htmlspecialchars()}"/>
|
||||
<summary>{newsItem.teaser -> f:format.stripTags() -> f:format.htmlspecialchars()}</summary>
|
||||
<content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||
<f:format.html>{newsItem.bodytext}</f:format.html>
|
||||
</div></content>
|
||||
</entry>
|
||||
</f:for>
|
||||
</f:if>
|
||||
</feed>
|
||||
@@ -0,0 +1,43 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/List.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<!--TYPO3SEARCH_end-->
|
||||
<f:if condition="{news}">
|
||||
<f:then>
|
||||
<div class="news-list-view" id="news-container-{contentObjectData.uid}">
|
||||
<f:if condition="{settings.hidePagination}">
|
||||
<f:then>
|
||||
<f:for each="{news}" as="newsItem" iteration="iterator">
|
||||
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
|
||||
</f:for>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:if condition="{settings.list.paginate.insertAbove}">
|
||||
<f:render partial="List/Pagination" arguments="{pagination: pagination.pagination, paginator: pagination.paginator}" />
|
||||
</f:if>
|
||||
<f:for each="{pagination.paginator.paginatedItems}" as="newsItem" iteration="iterator">
|
||||
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
|
||||
</f:for>
|
||||
<f:if condition="{settings.list.paginate.insertBelow}">
|
||||
<f:render partial="List/Pagination" arguments="{pagination: pagination.pagination, paginator: pagination.paginator}" />
|
||||
</f:if>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="no-news-found">
|
||||
<f:translate key="list_nonewsfound" />
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
<!--TYPO3SEARCH_begin-->
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,11 @@
|
||||
{namespace n=GeorgRinger\News\ViewHelpers}BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//TYPO3/NONSGML News system (news)//EN
|
||||
<f:if condition="{news}"><f:for each="{news}" as="newsItem">BEGIN:VEVENT
|
||||
UID:news-{newsItem.uid}@{settings.domain}
|
||||
DTSTAMP:<f:format.date format="%Y%m%dT%H%M%SZ"><f:variable name="tzoffset">{f:format.date(date: newsItem.tstamp, format: 'Z')}</f:variable>{newsItem.tstamp.timestamp - tzoffset}</f:format.date>
|
||||
DTSTART:<f:format.date format="%Y%m%dT%H%M%S%z">{newsItem.datetime}</f:format.date>
|
||||
DTEND:<f:format.date format="%Y%m%dT%H%M%S%z"><f:if condition="{newsItem.archive}"><f:then>{newsItem.archive}</f:then><f:else>{newsItem.datetime}</f:else></f:if></f:format.date>
|
||||
SUMMARY:{newsItem.title -> f:format.htmlspecialchars()}
|
||||
END:VEVENT
|
||||
</f:for></f:if>END:VCALENDAR
|
||||
49
typo3conf/ext/news/Resources/Private/Templates/News/List.xml
Normal file
49
typo3conf/ext/news/Resources/Private/Templates/News/List.xml
Normal file
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<html xmlns:content="http://purl.org/rss/1.0/modules/content/"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
|
||||
<rss version="2.0"
|
||||
xmlns:content="http://purl.org/rss/1.0/modules/content/"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>{settings.list.rss.channel.title}</title>
|
||||
<link>{settings.list.rss.channel.link}</link>
|
||||
<description>{settings.list.rss.channel.description}</description>
|
||||
<language>{settings.list.rss.channel.language}</language>
|
||||
<f:if condition="{settings.list.rss.channel.copyright}">
|
||||
<copyright>{settings.list.rss.channel.copyright}</copyright>
|
||||
</f:if>
|
||||
<pubDate><f:format.date format="r" date="now" /></pubDate>
|
||||
<lastBuildDate><f:format.date format="r" date="now" /></lastBuildDate>
|
||||
<f:if condition="{settings.list.rss.channel.category}">
|
||||
<category>{settings.list.rss.channel.category}</category>
|
||||
</f:if>
|
||||
<atom:link href="{f:uri.page(pageType: settings.list.rss.channel.typeNum, absolute: 'true')}" rel="self" type="application/rss+xml" />
|
||||
<generator>{settings.list.rss.channel.generator}</generator>
|
||||
<f:if condition="{news}">
|
||||
<f:for each="{news}" as="newsItem">
|
||||
<item>
|
||||
<guid isPermaLink="false">news-{newsItem.uid}</guid>
|
||||
<pubDate><f:format.date format="r">{newsItem.datetime}</f:format.date></pubDate>
|
||||
<title>{newsItem.title -> f:format.htmlspecialchars()}</title>
|
||||
<link><f:format.htmlentities><n:link newsItem="{newsItem}" settings="{settings}" configuration="{forceAbsoluteUrl: 1}" uriOnly="1" /></f:format.htmlentities></link>
|
||||
<description>{newsItem.teaser -> f:format.stripTags() -> f:format.htmlspecialchars()}</description>
|
||||
<content:encoded><f:format.cdata><f:format.html>{newsItem.bodytext}</f:format.html></f:format.cdata></content:encoded>
|
||||
<f:if condition="{newsItem.categories}">
|
||||
<f:for each="{newsItem.categories}" as="newsItemCategory">
|
||||
<category>{newsItemCategory.title -> f:format.htmlspecialchars()}</category>
|
||||
</f:for>
|
||||
</f:if>
|
||||
<f:if condition="{newsItem.firstPreview}">
|
||||
<f:variable name="ogImage" value="{f:uri.image(image:newsItem.firstPreview, absolute:1, maxWidth: '1920', maxHeight: '1920')}" />
|
||||
<enclosure url="{ogImage}" length="{n:imageSize(property:'size',image:ogImage)}" type="{newsItem.firstPreview.originalResource.mimeType}"/>
|
||||
</f:if>
|
||||
</item>
|
||||
</f:for>
|
||||
</f:if>
|
||||
</channel>
|
||||
</rss>
|
||||
</html>
|
||||
@@ -0,0 +1,32 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/SearchForm.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<div class="news-search-form">
|
||||
<f:form object="{search}" name="search" pageUid="{settings.listPid}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="news-subject"><f:translate key="search-subject" /></label>
|
||||
<f:form.textfield id="news-subject" property="subject" class="form-control"/>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="news-minimumDate"><f:translate key="search-minimumDate" /></label>
|
||||
<f:form.textfield id="news-minimumDate" property="minimumDate" type="date" class="form-control"/>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="news-maximumDate"><f:translate key="search-maximumDate" /></label>
|
||||
<f:form.textfield id="news-maximumDate" property="maximumDate" type="date" class="form-control"/>
|
||||
</div>
|
||||
|
||||
<f:form.submit value="{f:translate(key:'search-start')}" class="btn btn-default"/>
|
||||
</fieldset>
|
||||
</f:form>
|
||||
</div>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,29 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/SearchResult.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<div class="news-search-result">
|
||||
<f:if condition="{search}">
|
||||
<f:if condition="{news}">
|
||||
<f:then>
|
||||
<div class="count-msg">
|
||||
<f:translate key="search-text" arguments="{0:'{f:count(subject:news)}',1:search.subject}" />
|
||||
</div>
|
||||
<f:for each="{news}" as="newsItem">
|
||||
<f:render partial="List/Item" arguments="{newsItem: newsItem, settings:settings, className:className, view:'list'}" />
|
||||
</f:for>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="no-news-found">
|
||||
<f:translate key="search-noresult" />
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,28 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/List.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<!--TYPO3SEARCH_end-->
|
||||
<f:if condition="{news}">
|
||||
<f:then>
|
||||
<div class="news-list-view" id="news-container-{contentObjectData.uid}">
|
||||
<f:for each="{news}" as="newsItem" iteration="iterator">
|
||||
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
|
||||
</f:for>
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="no-news-found">
|
||||
<f:translate key="list_nonewsfound" />
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
<!--TYPO3SEARCH_begin-->
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,7 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<div class="news news-single">
|
||||
<div class="article" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<f:render section="content"/>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,5 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<div class="news">
|
||||
<f:render section="content"/>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,17 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<!-- categories -->
|
||||
<span class="news-list-category">
|
||||
<f:for each="{categories}" as="category">
|
||||
<f:if condition="{category.shortcut}">
|
||||
<f:then>
|
||||
<f:link.typolink parameter="{category.shortcut}">
|
||||
{category.title}
|
||||
</f:link.typolink>
|
||||
</f:then>
|
||||
<f:else>
|
||||
{category.title}
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:for>
|
||||
</span>
|
||||
</html>
|
||||
@@ -0,0 +1,30 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<div class="extra">
|
||||
<!-- author -->
|
||||
<f:if condition="{newsItem.author}">
|
||||
<span class="glyphicon glyphicon-user"></span>
|
||||
<f:translate key="author" arguments="{0:newsItem.author}"/>
|
||||
|
|
||||
</f:if>
|
||||
|
||||
<!-- date -->
|
||||
<span class="glyphicon glyphicon-calendar"> </span>
|
||||
<time itemprop="datePublished" datetime="{f:format.date(date:newsItem.datetime, format:'Y-m-d')}">
|
||||
<f:format.date format="{f:translate(key:'dateFormat')}">{newsItem.datetime}</f:format.date>
|
||||
</time>
|
||||
|
||||
<!-- category -->
|
||||
<f:if condition="{newsItem.firstCategory}">
|
||||
| <span class="glyphicon glyphicon-tags"> </span>
|
||||
<span class="label label-info">{newsItem.firstCategory.title}</span>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{newsItem.tags}">
|
||||
| <span class="glyphicon glyphicon-tags"> </span> <span class="news-list-tags" itemprop="keywords">
|
||||
<f:for each="{newsItem.tags}" as="tag">
|
||||
<span class="label label-info">{tag.title}</span>
|
||||
</f:for>
|
||||
</span>
|
||||
</f:if>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,53 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
<!--
|
||||
=====================
|
||||
Partials/List/Item.html
|
||||
-->
|
||||
<n:excludeDisplayedNews newsItem="{newsItem}" />
|
||||
<div class="row news-list-item">
|
||||
<div class="col-md-3">
|
||||
<n:link newsItem="{newsItem}" settings="{settings}" title="{newsItem.title}">
|
||||
<f:if condition="{newsItem.mediaPreviews}">
|
||||
<f:then>
|
||||
<f:media class="img-responsive" file="{newsItem.mediaPreviews.0}" title="{newsItem.mediaPreviews.0.originalResource.title}" alt="{newsItem.mediaPreviews.0.originalResource.alternative}" loading="{settings.list.media.image.lazyLoading}" width="{f:if(condition: settings.media.maxWidth, then: settings.media.maxWidth, else: settings.list.media.image.width)}" height="{f:if(condition: settings.media.maxHeight, then: settings.media.maxHeight, else:'')}" />
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:if condition="{settings.displayDummyIfNoMedia}">
|
||||
<f:image class="img-dummy img-responsive" src="{settings.list.media.dummyImage}" title="" alt="" loading="{settings.list.media.image.lazyLoading}" maxWidth="{settings.list.media.image.maxWidth}" maxHeight="{settings.list.media.image.maxHeight}" />
|
||||
</f:if>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</n:link>
|
||||
</div>
|
||||
|
||||
<div class="col-md-9 articletype-{newsItem.type}{f:if(condition: newsItem.istopnews, then: ' topnews')}" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<h3 itemprop="headline">
|
||||
<n:link newsItem="{newsItem}" settings="{settings}" title="{newsItem.title}">
|
||||
{newsItem.title}
|
||||
</n:link>
|
||||
</h3>
|
||||
|
||||
<f:render partial="General/AdditionalInformation" arguments="{settings:settings,newsItem:newsItem}" />
|
||||
|
||||
<!-- teaser -->
|
||||
<div class="lead" itemprop="description">
|
||||
<n:removeMediaTags>
|
||||
<f:if condition="{newsItem.teaser}">
|
||||
<f:then>
|
||||
{newsItem.teaser -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.html()}
|
||||
</f:then>
|
||||
<f:else>
|
||||
{newsItem.bodytext -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.html()}
|
||||
</f:else>
|
||||
</f:if>
|
||||
</n:removeMediaTags>
|
||||
</div>
|
||||
|
||||
<n:link newsItem="{newsItem}" settings="{settings}" class="btn btn-default btn-read-more" title="{newsItem.title}">
|
||||
<f:translate key="more-link" />
|
||||
</n:link>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,66 @@
|
||||
<f:if condition="{pagination.allPageNumbers -> f:count()} > 1">
|
||||
<ul class="f3-widget-paginator pagination">
|
||||
<f:if condition="{pagination.previousPageNumber} && {pagination.previousPageNumber} >= {pagination.firstPageNumber}">
|
||||
<f:then>
|
||||
<f:comment>
|
||||
<li class="first">
|
||||
<a href="{f:uri.action(action:actionName, arguments:{currentPage: 1})}" title="{f:translate(key:'pagination.first')}">
|
||||
<i class="material-icons">first_page</i>
|
||||
</a>
|
||||
</li>
|
||||
</f:comment>
|
||||
<li class="previous">
|
||||
<a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.previousPageNumber})}" title="{f:translate(key:'pagination.previous')}">
|
||||
{f:translate(key:'widget.pagination.previous', extensionName: 'fluid')}
|
||||
</a>
|
||||
</li>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:comment>
|
||||
<li class="disabled"><span><i class="material-icons">first_page</i></span></li>
|
||||
<li class="disabled"><span>{f:translate(key:'widget.pagination.previous', extensionName: 'fluid')}</span></li>
|
||||
</f:comment>
|
||||
</f:else>
|
||||
</f:if>
|
||||
<f:if condition="{pagination.hasLessPages}">
|
||||
<li>…</li>
|
||||
</f:if>
|
||||
<f:for each="{pagination.allPageNumbers}" as="page">
|
||||
<f:if condition="{page} == {paginator.currentPageNumber}">
|
||||
<f:then>
|
||||
<li class="current"><span>{page}</span></li>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<li>
|
||||
<a href="{f:uri.action(action:actionName, arguments:{currentPage: page},addQueryString:1)}">{page}</a>
|
||||
</li>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:for>
|
||||
<f:if condition="{pagination.hasMorePages}">
|
||||
<li>…</li>
|
||||
</f:if>
|
||||
<f:if condition="{pagination.nextPageNumber} && {pagination.nextPageNumber} <= {pagination.lastPageNumber}">
|
||||
<f:then>
|
||||
<li class="next">
|
||||
<a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.nextPageNumber})}" title="{f:translate(key:'pagination.next')}">
|
||||
{f:translate(key:'widget.pagination.next', extensionName: 'fluid')}
|
||||
</a>
|
||||
</li>
|
||||
<f:comment>
|
||||
<li class="last">
|
||||
<a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.lastPageNumber})}" title="{f:translate(key:'pagination.last')}">
|
||||
last
|
||||
</a>
|
||||
</li>
|
||||
</f:comment>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:comment>
|
||||
<li class="disabled"><span>{f:translate(key:'widget.pagination.next', extensionName: 'fluid')}</span></li>
|
||||
<li class="disabled"><span>last page</span></li>
|
||||
</f:comment>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</ul>
|
||||
</f:if>
|
||||
@@ -0,0 +1,43 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/Category/List.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<f:if condition="{categories}">
|
||||
<f:then>
|
||||
<f:render section="categoryTree" arguments="{categories:categories,overwriteDemand:overwriteDemand,class:'nav nav-sidebar category-menu-view'}" />
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:translate key="list_nocategoriesfound" />
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:section>
|
||||
|
||||
<f:section name="categoryTree">
|
||||
<ul class="{class}">
|
||||
<f:for each="{categories}" as="category">
|
||||
<li>
|
||||
<f:if condition="{category.item.uid} == {overwriteDemand.categories}">
|
||||
<f:then>
|
||||
<f:link.page title="{category.item.title}" class="active" pageUid="{settings.listPid}"
|
||||
additionalParams="{tx_news_pi1:{overwriteDemand:{categories: category.item.uid}}}">{category.item.title}
|
||||
</f:link.page>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:link.page title="{category.item.title}" pageUid="{settings.listPid}"
|
||||
additionalParams="{tx_news_pi1:{overwriteDemand:{categories: category.item.uid}}}">{category.item.title}
|
||||
</f:link.page>
|
||||
</f:else>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{category.children}">
|
||||
<f:render section="categoryTree" arguments="{categories: category.children,overwriteDemand:overwriteDemand,class:''}" />
|
||||
</f:if>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,32 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/DateMenu.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<ul class="nav nav-sidebar news-menu-view">
|
||||
<f:for each="{data.single}" key="year" as="months">
|
||||
<li>
|
||||
{year}
|
||||
<ul>
|
||||
<f:for each="{months}" key="month" as="count">
|
||||
<f:if condition="{0:year, 1:month} == {0:overwriteDemand.year, 1:overwriteDemand.month}">
|
||||
<f:then>
|
||||
<li class="active">
|
||||
</f:then>
|
||||
<f:else>
|
||||
<li>
|
||||
</f:else>
|
||||
</f:if>
|
||||
<f:link.action action="list" pageUid="{listPid}" arguments="{overwriteDemand:{year: year, month: month}}"><f:translate key="month.{month}" /> {year}</f:link.action>
|
||||
({count} <f:translate key="{f:if(condition: '{count} == 1', then: 'entry', else: 'entries')}" />)
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,199 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:layout name="Detail" />
|
||||
|
||||
<!--
|
||||
=====================
|
||||
News/Detail.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<f:if condition="{newsItem}">
|
||||
<n:format.nothing>
|
||||
<n:excludeDisplayedNews newsItem="{newsItem}" />
|
||||
<f:if condition="{settings.detail.showMetaTags}">
|
||||
<f:render partial="Detail/Opengraph" arguments="{newsItem: newsItem, settings:settings}" />
|
||||
</f:if>
|
||||
<f:if condition="{newsItem.alternativeTitle}">
|
||||
<f:then>
|
||||
<n:titleTag>
|
||||
<f:format.htmlentitiesDecode>{newsItem.alternativeTitle}</f:format.htmlentitiesDecode>
|
||||
</n:titleTag>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<n:titleTag>
|
||||
<f:format.htmlentitiesDecode>{newsItem.title}</f:format.htmlentitiesDecode>
|
||||
</n:titleTag>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</n:format.nothing>
|
||||
|
||||
<f:if condition="{settings.detail.showPrevNext}">
|
||||
<n:simplePrevNext pidList="{newsItem.pid}" news="{newsItem}" as="paginated" sortField="datetime">
|
||||
<f:if condition="{paginated}">
|
||||
<ul class="pager">
|
||||
<f:if condition="{paginated.prev}">
|
||||
<li class="previous">
|
||||
<n:link newsItem="{paginated.prev}" settings="{settings}">
|
||||
<span aria-hidden="true">← </span>{paginated.prev.title}
|
||||
</n:link>
|
||||
</li>
|
||||
</f:if>
|
||||
<f:if condition="{paginated.next}">
|
||||
<li class="next">
|
||||
<n:link newsItem="{paginated.next}" settings="{settings}" class="next">
|
||||
{paginated.next.title} <span aria-hidden="true"> →</span>
|
||||
</n:link>
|
||||
</li>
|
||||
</f:if>
|
||||
</ul>
|
||||
</f:if>
|
||||
</n:simplePrevNext>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{newsItem.mediaNonPreviews}">
|
||||
<f:then>
|
||||
<f:render section="headline" arguments="{_all}" />
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<f:render section="inner-content" arguments="{_all}" />
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<f:for each="{newsItem.mediaNonPreviews}" as="mediaElement">
|
||||
<div class="thumbnail">
|
||||
<f:media file="{mediaElement}" class="img-responsive" />
|
||||
<f:if condition="{mediaElement.description}">
|
||||
<div class="caption">
|
||||
{mediaElement.description}
|
||||
</div>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:for>
|
||||
</div>
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:render section="headline" arguments="{_all}" />
|
||||
<f:render section="inner-content" arguments="{_all}" />
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:if>
|
||||
</f:section>
|
||||
|
||||
<f:section name="headline">
|
||||
<h1 itemprop="headline">{newsItem.title}</h1>
|
||||
<f:render partial="General/AdditionalInformation" arguments="{settings:settings,newsItem:newsItem}" />
|
||||
</f:section>
|
||||
|
||||
<f:section name="inner-content">
|
||||
<n:renderMedia news="{newsItem}" imgClass="img-responsive" videoClass="video-wrapper" audioClass="audio-wrapper">
|
||||
<f:if condition="{newsItem.teaser}">
|
||||
<!-- teaser -->
|
||||
<div class="lead" itemprop="description">
|
||||
<f:format.html>{newsItem.teaser}</f:format.html>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{newsItem.contentElements}">
|
||||
<!-- content elements -->
|
||||
<f:cObject typoscriptObjectPath="lib.tx_news.contentElementRendering">{newsItem.contentElementIdList}</f:cObject>
|
||||
</f:if>
|
||||
|
||||
<!-- main text -->
|
||||
<div class="news-text-wrap" itemprop="articleBody">
|
||||
<f:format.html>{newsItem.bodytext}</f:format.html>
|
||||
</div>
|
||||
</n:renderMedia>
|
||||
|
||||
<f:if condition="{settings.backPid}">
|
||||
<!-- Link Back -->
|
||||
<f:link.page class="btn btn-default" pageUid="{settings.backPid}">
|
||||
<f:translate key="back-link" />
|
||||
</f:link.page>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{settings.detail.showSocialShareButtons}">
|
||||
<f:comment>
|
||||
Care about the privacy of your readers?
|
||||
Checkout https://typo3.org/extensions/repository/view/rx_shariff
|
||||
and it will be used automatically!
|
||||
</f:comment>
|
||||
<n:extensionLoaded extensionKey="rx_shariff">
|
||||
<f:render partial="Detail/Shariff" />
|
||||
</n:extensionLoaded>
|
||||
</f:if>
|
||||
|
||||
|
||||
<f:comment>
|
||||
Various options exist to fetch different related information:
|
||||
- {newsItem.allRelatedSorted}: all related news, related und related from, sorted by date
|
||||
- {newsItem.related}: all related
|
||||
- {newsItem.relatedSorted}: all related, sorted by date
|
||||
- {newsItem.relatedFrom}: all related from
|
||||
- {newsItem.relatedFromSorted}: all related from, sorted by date
|
||||
</f:comment>
|
||||
<f:if condition="{newsItem.allRelatedSorted}">
|
||||
<!-- Related news records -->
|
||||
<div class="news-related news-related-news">
|
||||
<h4>
|
||||
<f:translate key="related-news" />
|
||||
</h4>
|
||||
<ul>
|
||||
<f:for each="{newsItem.allRelatedSorted}" as="related">
|
||||
<li>
|
||||
<span class="news-related-news-date">
|
||||
<f:format.date format="{f:translate(key:'dateFormat')}">{related.datetime}</f:format.date>
|
||||
</span>
|
||||
<n:link newsItem="{related}" settings="{settings}" title="{related.title}">
|
||||
{related.title}
|
||||
</n:link>
|
||||
</li>
|
||||
|
||||
</f:for>
|
||||
</ul>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
|
||||
<f:if condition="{newsItem.relatedFiles}">
|
||||
<!-- related files -->
|
||||
<div class="news-related news-related-files">
|
||||
<h4>
|
||||
<f:translate key="related-files" />
|
||||
</h4>
|
||||
<ul>
|
||||
<f:for each="{newsItem.relatedFiles}" as="relatedFile">
|
||||
<li>
|
||||
<span class="news-related-files-link">
|
||||
<a href="{relatedFile.originalResource.publicUrl -> f:format.htmlspecialchars()}" target="_blank">
|
||||
{f:if(condition:relatedFile.originalResource.title, then:relatedFile.originalResource.title, else:relatedFile.originalResource.name)}
|
||||
</a>
|
||||
</span>
|
||||
<span class="news-related-files-size"> {relatedFile.originalResource.size -> f:format.bytes()} </span>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{newsItem.relatedLinks}">
|
||||
<!-- Related links -->
|
||||
<div class="news-related news-related-links">
|
||||
<h4>
|
||||
<f:translate key="related-links" />
|
||||
</h4>
|
||||
<ul>
|
||||
<f:for each="{newsItem.relatedLinks}" as="relatedLink">
|
||||
<li>
|
||||
<f:link.typolink parameter="{relatedLink.uri}" title="{relatedLink.title}" target="{n:targetLink(link:relatedLink.uri)}">{f:if(condition: relatedLink.title, then: relatedLink.title, else: relatedLink.uri)}</f:link.typolink>
|
||||
<f:if condition="{relatedLink.description}"><span>{relatedLink.description}</span>
|
||||
</f:if>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</div>
|
||||
</f:if>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,43 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/List.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<!--TYPO3SEARCH_end-->
|
||||
<f:if condition="{news}">
|
||||
<f:then>
|
||||
<div class="news-list-view" id="news-container-{contentObjectData.uid}">
|
||||
<f:if condition="{settings.hidePagination}">
|
||||
<f:then>
|
||||
<f:for each="{news}" as="newsItem" iteration="iterator">
|
||||
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
|
||||
</f:for>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:if condition="{settings.list.paginate.insertAbove}">
|
||||
<f:render partial="List/Pagination" arguments="{pagination: pagination.pagination, paginator: pagination.paginator}" />
|
||||
</f:if>
|
||||
<f:for each="{pagination.paginator.paginatedItems}" as="newsItem" iteration="iterator">
|
||||
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
|
||||
</f:for>
|
||||
<f:if condition="{settings.list.paginate.insertBelow}">
|
||||
<f:render partial="List/Pagination" arguments="{pagination: pagination.pagination, paginator: pagination.paginator}" />
|
||||
</f:if>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="alert ">
|
||||
<f:translate key="list_nonewsfound" />
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
<!--TYPO3SEARCH_begin-->
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,34 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/SearchForm.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<f:form class="news-search-form" object="{search}" name="search" pageUid="{settings.listPid}">
|
||||
<div class="form-group">
|
||||
<label for="news-subject">
|
||||
<f:translate key="search-subject" />
|
||||
</label>
|
||||
<f:form.textfield id="news-subject" property="subject" class="form-control" />
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="news-minimumDate">
|
||||
<f:translate key="search-minimumDate" />
|
||||
</label>
|
||||
<f:form.textfield id="news-minimumDate" property="minimumDate" type="date" class="form-control" />
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="news-maximumDate">
|
||||
<f:translate key="search-maximumDate" />
|
||||
</label>
|
||||
<f:form.textfield id="news-maximumDate" property="maximumDate" type="date" class="form-control" />
|
||||
</div>
|
||||
|
||||
<f:form.submit value="{f:translate(key:'search-start')}" class="btn btn-default" />
|
||||
</f:form>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,29 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/SearchResult.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<div class="news-search-result">
|
||||
<f:if condition="{search}">
|
||||
<f:if condition="{news}">
|
||||
<f:then>
|
||||
<div class="alert alert-success">
|
||||
<f:translate key="search-text" arguments="{0:'{f:count(subject:news)}',1:search.subject}" />
|
||||
</div>
|
||||
<f:for each="{news}" as="newsItem">
|
||||
<f:render partial="List/Item" arguments="{newsItem: newsItem, settings:settings, className:className, view:'list'}" />
|
||||
</f:for>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="alert alert-info">
|
||||
<f:translate key="search-noresult" />
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,28 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/List.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<!--TYPO3SEARCH_end-->
|
||||
<f:if condition="{news}">
|
||||
<f:then>
|
||||
<div class="news-list-view" id="news-container-{contentObjectData.uid}">
|
||||
<f:for each="{news}" as="newsItem" iteration="iterator">
|
||||
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
|
||||
</f:for>
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="alert ">
|
||||
<f:translate key="list_nonewsfound" />
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
<!--TYPO3SEARCH_begin-->
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,27 @@
|
||||
<html
|
||||
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
|
||||
<!--
|
||||
=====================
|
||||
Templates/Tag/List.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<f:if condition="{tags}">
|
||||
<ul class="nav nav-sidebar tag-menu-view">
|
||||
<f:for each="{tags}" as="tag">
|
||||
{n:tag.count(tagUid:tag.uid) -> f:variable(name: 'tagUsageCount')}
|
||||
<li class="{f:if(condition:'{tag.uid} == {overwriteDemand.tags}',then:'active',else:'')}">
|
||||
<f:link.page title="{tag.title}" pageUid="{settings.listPid}" additionalParams="{tx_news_pi1:{overwriteDemand:{tags: tag}}}">
|
||||
{tag.title}
|
||||
</f:link.page>
|
||||
<f:if condition="{tagUsageCount}">({tagUsageCount})</f:if>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</f:if>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,7 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<div class="news news-single">
|
||||
<div class="article" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<f:render section="content"/>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,5 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<div class="news">
|
||||
<f:render section="content"/>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,17 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<!-- categories -->
|
||||
<span class="news-list-category">
|
||||
<f:for each="{categories}" as="category">
|
||||
<f:if condition="{category.shortcut}">
|
||||
<f:then>
|
||||
<f:link.typolink parameter="{category.shortcut}">
|
||||
{category.title}
|
||||
</f:link.typolink>
|
||||
</f:then>
|
||||
<f:else>
|
||||
{category.title}
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:for>
|
||||
</span>
|
||||
</html>
|
||||
@@ -0,0 +1,34 @@
|
||||
<html data-namespace-typo3-fluid="true" xmlns:core="TYPO3\CMS\Core\ViewHelpers"
|
||||
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers">
|
||||
|
||||
<div class="extra mb-3">
|
||||
|
||||
<f:comment>Author</f:comment>
|
||||
<f:if condition="{newsItem.author}">
|
||||
<i class="fas fa-user me-1"></i>
|
||||
<f:translate arguments="{0:newsItem.author}" key="author"/>
|
||||
|
|
||||
</f:if>
|
||||
|
||||
<f:comment>Date</f:comment>
|
||||
<i class="fas fa-calendar-alt me-1"> </i>
|
||||
<time datetime="{f:format.date(date:newsItem.datetime, format:'Y-m-d')}" itemprop="datePublished">
|
||||
<f:format.date format="{f:translate(key:'dateFormat')}">{newsItem.datetime}</f:format.date>
|
||||
</time>
|
||||
|
||||
<f:comment>Category</f:comment>
|
||||
<f:if condition="{newsItem.firstCategory}">
|
||||
| <i class="fas fa-folder-open me-1"></i>
|
||||
<span class="label label-info">{newsItem.firstCategory.title}</span>
|
||||
</f:if>
|
||||
|
||||
<f:comment>Tags</f:comment>
|
||||
<f:if condition="{newsItem.tags}">
|
||||
| <i class="fas fa-tags me-1"></i> <span class="news-list-tags me-1" itemprop="keywords">
|
||||
<f:for as="tag" each="{newsItem.tags}">
|
||||
<span class="label label-info me-1">{tag.title}</span>
|
||||
</f:for>
|
||||
</span>
|
||||
</f:if>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,55 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
<!--
|
||||
=====================
|
||||
Partials/List/Item.html
|
||||
-->
|
||||
<n:excludeDisplayedNews newsItem="{newsItem}" />
|
||||
<li class="list-group-item">
|
||||
<div class="row news-list-item mb-3">
|
||||
<div class="col-md-3">
|
||||
<n:link newsItem="{newsItem}" settings="{settings}" title="{newsItem.title}">
|
||||
<f:if condition="{newsItem.mediaPreviews}">
|
||||
<f:then>
|
||||
<f:media class="img-fluid" file="{newsItem.mediaPreviews.0}" title="{newsItem.mediaPreviews.0.originalResource.title}" alt="{newsItem.mediaPreviews.0.originalResource.alternative}" loading="{settings.list.media.image.lazyLoading}" width="{f:if(condition: settings.media.maxWidth, then: settings.media.maxWidth, else: settings.list.media.image.width)}" height="{f:if(condition: settings.media.maxHeight, then: settings.media.maxHeight, else:'')}" />
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:if condition="{settings.displayDummyIfNoMedia}">
|
||||
<f:image class="img-dummy img-fluid" src="{settings.list.media.dummyImage}" title="" alt="" loading="{settings.list.media.image.lazyLoading}" maxWidth="{settings.list.media.image.maxWidth}" maxHeight="{settings.list.media.image.maxHeight}" />
|
||||
</f:if>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</n:link>
|
||||
</div>
|
||||
|
||||
<div class="col-md-9 articletype-{newsItem.type}{f:if(condition: newsItem.istopnews, then: ' topnews')}" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<h3 itemprop="headline">
|
||||
<n:link newsItem="{newsItem}" settings="{settings}" title="{newsItem.title}">
|
||||
{newsItem.title}
|
||||
</n:link>
|
||||
</h3>
|
||||
|
||||
<f:render partial="General/AdditionalInformation" arguments="{settings:settings,newsItem:newsItem}" />
|
||||
|
||||
<!-- teaser -->
|
||||
<div class="lead" itemprop="description">
|
||||
<n:removeMediaTags>
|
||||
<f:if condition="{newsItem.teaser}">
|
||||
<f:then>
|
||||
{newsItem.teaser -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.html()}
|
||||
</f:then>
|
||||
<f:else>
|
||||
{newsItem.bodytext -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.html()}
|
||||
</f:else>
|
||||
</f:if>
|
||||
</n:removeMediaTags>
|
||||
</div>
|
||||
|
||||
<n:link newsItem="{newsItem}" settings="{settings}" class="btn btn-primary btn-read-more" title="{newsItem.title}">
|
||||
<f:translate key="more-link" />
|
||||
</n:link>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</html>
|
||||
@@ -0,0 +1,59 @@
|
||||
<f:if condition="{pagination.allPageNumbers -> f:count()} > 1">
|
||||
<ul class="f3-widget-paginator pagination">
|
||||
<f:if condition="{pagination.previousPageNumber} && {pagination.previousPageNumber} >= {pagination.firstPageNumber}">
|
||||
<f:then>
|
||||
<li class="previous page-item">
|
||||
<a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.previousPageNumber},addQueryString:1)}" class="page-link" title="{f:translate(key:'pagination.previous')}">
|
||||
{f:translate(key:'widget.pagination.previous', extensionName: 'fluid')}
|
||||
</a>
|
||||
</li>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:comment>
|
||||
<li class="disabled"><span><i class="material-icons">first_page</i></span></li>
|
||||
<li class="disabled"><span>{f:translate(key:'widget.pagination.previous', extensionName: 'fluid')}</span></li>
|
||||
</f:comment>
|
||||
</f:else>
|
||||
</f:if>
|
||||
<f:if condition="{pagination.hasLessPages}">
|
||||
<li class="page-item">…</li>
|
||||
</f:if>
|
||||
<f:for each="{pagination.allPageNumbers}" as="page">
|
||||
<f:if condition="{page} == {paginator.currentPageNumber}">
|
||||
<f:then>
|
||||
<li class="page-item active"><span class="page-link">{page}</span></li>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<li class="page-item">
|
||||
<a href="{f:uri.action(action:actionName, arguments:{currentPage: page},addQueryString:1)}" class="page-link">{page}</a>
|
||||
</li>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:for>
|
||||
<f:if condition="{pagination.hasMorePages}">
|
||||
<li class="page-item">…</li>
|
||||
</f:if>
|
||||
<f:if condition="{pagination.nextPageNumber} && {pagination.nextPageNumber} <= {pagination.lastPageNumber}">
|
||||
<f:then>
|
||||
<li class="page-item next">
|
||||
<a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.nextPageNumber},addQueryString:1)}" class="page-link" title="{f:translate(key:'pagination.next')}">
|
||||
{f:translate(key:'widget.pagination.next', extensionName: 'fluid')}
|
||||
</a>
|
||||
</li>
|
||||
<f:comment>
|
||||
<li class="page-item last">
|
||||
<a href="{f:uri.action(action:actionName, arguments:{currentPage: pagination.lastPageNumber},addQueryString:1)}" class="page-link" title="{f:translate(key:'pagination.last')}">
|
||||
last
|
||||
</a>
|
||||
</li>
|
||||
</f:comment>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:comment>
|
||||
<li class="disabled"><span>{f:translate(key:'widget.pagination.next', extensionName: 'fluid')}</span></li>
|
||||
<li class="disabled"><span>last page</span></li>
|
||||
</f:comment>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</ul>
|
||||
</f:if>
|
||||
@@ -0,0 +1,55 @@
|
||||
<html xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/Category/List.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<f:if condition="{categories}">
|
||||
<f:then>
|
||||
<f:render section="categoryTree" arguments="{categories:categories,overwriteDemand:overwriteDemand}" />
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:translate key="list_nocategoriesfound" />
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:section>
|
||||
|
||||
<f:section name="categoryTree">
|
||||
<f:for each="{categories}" as="category">
|
||||
<n:multiCategoryLink.isCategoryActive list="{overwriteDemand.categories}" item="{category.item.uid}">
|
||||
<f:then>
|
||||
<div class="btn-group me-2" role="group">
|
||||
<f:link.page title="{category.item.title}" pageUid="{settings.listPid}"
|
||||
additionalParams="{tx_news_pi1:{overwriteDemand:{categories: category.item.uid}}}">
|
||||
<button type="button" class="btn btn-primary"><i class="fas fa-folder-open me-1"></i> {category.item.title}</button>
|
||||
</f:link.page>
|
||||
|
||||
<f:link.page title="{category.item.title}" pageUid="{settings.listPid}"
|
||||
additionalParams="{n:multiCategoryLink.arguments(mode:'remove',item:category.item.uid,list:overwriteDemand.categories)}">
|
||||
<button type="button" class="btn btn-primary active"><i class="far fa-minus"></i></button>
|
||||
</f:link.page>
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="btn-group me-2" role="group">
|
||||
<f:link.page title="{category.item.title}" pageUid="{settings.listPid}"
|
||||
additionalParams="{tx_news_pi1:{overwriteDemand:{categories: category.item.uid}}}">
|
||||
<button type="button" class="btn btn-primary"><i class="fas fa-folder-open me-1"></i> {category.item.title}</button>
|
||||
</f:link.page>
|
||||
<f:link.page title="{category.item.title}" pageUid="{settings.listPid}"
|
||||
additionalParams="{n:multiCategoryLink.arguments(mode:'add',item:category.item.uid,list:overwriteDemand.categories)}">
|
||||
<button type="button" class="btn btn-primary"><i class="far fa-plus"></i></button>
|
||||
</f:link.page>
|
||||
</div>
|
||||
</f:else>
|
||||
</n:multiCategoryLink.isCategoryActive>
|
||||
|
||||
<f:if condition="{category.children}">
|
||||
<f:render section="categoryTree" arguments="{categories: category.children,overwriteDemand:overwriteDemand}" />
|
||||
</f:if>
|
||||
</f:for>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,32 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/DateMenu.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<ul class="nav nav-sidebar news-menu-view">
|
||||
<f:for each="{data.single}" key="year" as="months">
|
||||
<li>
|
||||
{year}
|
||||
<ul>
|
||||
<f:for each="{months}" key="month" as="count">
|
||||
<f:if condition="{0:year, 1:month} == {0:overwriteDemand.year, 1:overwriteDemand.month}">
|
||||
<f:then>
|
||||
<li class="active">
|
||||
</f:then>
|
||||
<f:else>
|
||||
<li>
|
||||
</f:else>
|
||||
</f:if>
|
||||
<f:link.action action="list" pageUid="{listPid}" arguments="{overwriteDemand:{year: year, month: month}}"><f:translate key="month.{month}" /> {year}</f:link.action>
|
||||
({count} <f:translate key="{f:if(condition: '{count} == 1', then: 'entry', else: 'entries')}" />)
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,202 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:layout name="Detail" />
|
||||
|
||||
<!--
|
||||
=====================
|
||||
News/Detail.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<f:if condition="{newsItem}">
|
||||
<n:format.nothing>
|
||||
<n:excludeDisplayedNews newsItem="{newsItem}" />
|
||||
<f:if condition="{settings.detail.showMetaTags}">
|
||||
<f:render partial="Detail/Opengraph" arguments="{newsItem: newsItem, settings:settings}" />
|
||||
</f:if>
|
||||
<f:if condition="{newsItem.alternativeTitle}">
|
||||
<f:then>
|
||||
<n:titleTag>
|
||||
<f:format.htmlentitiesDecode>{newsItem.alternativeTitle}</f:format.htmlentitiesDecode>
|
||||
</n:titleTag>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<n:titleTag>
|
||||
<f:format.htmlentitiesDecode>{newsItem.title}</f:format.htmlentitiesDecode>
|
||||
</n:titleTag>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</n:format.nothing>
|
||||
|
||||
<f:if condition="{settings.detail.showPrevNext}">
|
||||
<n:simplePrevNext pidList="{newsItem.pid}" news="{newsItem}" as="paginated" sortField="datetime">
|
||||
<f:if condition="{paginated}">
|
||||
<nav aria-label="Page navigation">
|
||||
<ul class="pagination mt-3 justify-content-center">
|
||||
<f:if condition="{paginated.prev}">
|
||||
<li class="page-item">
|
||||
<n:link newsItem="{paginated.prev}" class="page-link" settings="{settings}">
|
||||
<span aria-hidden="true">«</span> {paginated.prev.title}
|
||||
</n:link>
|
||||
</li>
|
||||
</f:if>
|
||||
<f:if condition="{paginated.next}">
|
||||
<li class="page-item">
|
||||
<n:link newsItem="{paginated.next}" class="page-link" settings="{settings}">
|
||||
{paginated.next.title} <span aria-hidden="true">»</span>
|
||||
</n:link>
|
||||
</li>
|
||||
</f:if>
|
||||
</ul>
|
||||
</nav>
|
||||
</f:if>
|
||||
</n:simplePrevNext>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{newsItem.mediaNonPreviews}">
|
||||
<f:then>
|
||||
<f:render section="headline" arguments="{_all}" />
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<f:render section="inner-content" arguments="{_all}" />
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<f:for each="{newsItem.mediaNonPreviews}" as="mediaElement">
|
||||
<div class="thumbnail">
|
||||
<f:media file="{mediaElement}" class="img-fluid" />
|
||||
<f:if condition="{mediaElement.description}">
|
||||
<div class="caption">
|
||||
{mediaElement.description}
|
||||
</div>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:for>
|
||||
</div>
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:render section="headline" arguments="{_all}" />
|
||||
<f:render section="inner-content" arguments="{_all}" />
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:if>
|
||||
</f:section>
|
||||
|
||||
<f:section name="headline">
|
||||
<h1 class="pb-3 border-bottom" itemprop="headline">{newsItem.title}</h1>
|
||||
<f:render partial="General/AdditionalInformation" arguments="{settings:settings,newsItem:newsItem}" />
|
||||
</f:section>
|
||||
|
||||
<f:section name="inner-content">
|
||||
<n:renderMedia news="{newsItem}" imgClass="img-fluid" videoClass="video-wrapper" audioClass="audio-wrapper">
|
||||
<f:if condition="{newsItem.teaser}">
|
||||
<!-- teaser -->
|
||||
<div class="lead" itemprop="description">
|
||||
<f:format.html>{newsItem.teaser}</f:format.html>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{newsItem.contentElements}">
|
||||
<!-- content elements -->
|
||||
<f:cObject typoscriptObjectPath="lib.tx_news.contentElementRendering">{newsItem.contentElementIdList}</f:cObject>
|
||||
</f:if>
|
||||
|
||||
<!-- main text -->
|
||||
<div class="news-text-wrap" itemprop="articleBody">
|
||||
<f:format.html>{newsItem.bodytext}</f:format.html>
|
||||
</div>
|
||||
</n:renderMedia>
|
||||
|
||||
<f:if condition="{settings.backPid}">
|
||||
<!-- Link Back -->
|
||||
<f:link.page class="btn btn-primary mb-3" pageUid="{settings.backPid}">
|
||||
<f:translate key="back-link" />
|
||||
</f:link.page>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{settings.detail.showSocialShareButtons}">
|
||||
<f:comment>
|
||||
Care about the privacy of your readers?
|
||||
Checkout https://typo3.org/extensions/repository/view/rx_shariff
|
||||
and it will be used automatically!
|
||||
</f:comment>
|
||||
<n:extensionLoaded extensionKey="rx_shariff">
|
||||
<f:render partial="Detail/Shariff" />
|
||||
</n:extensionLoaded>
|
||||
</f:if>
|
||||
|
||||
|
||||
<f:comment>
|
||||
Various options exist to fetch different related information:
|
||||
- {newsItem.allRelatedSorted}: all related news, related und related from, sorted by date
|
||||
- {newsItem.related}: all related
|
||||
- {newsItem.relatedSorted}: all related, sorted by date
|
||||
- {newsItem.relatedFrom}: all related from
|
||||
- {newsItem.relatedFromSorted}: all related from, sorted by date
|
||||
</f:comment>
|
||||
<f:if condition="{newsItem.allRelatedSorted}">
|
||||
<!-- Related news records -->
|
||||
<div class="news-related news-related-news mb-3">
|
||||
<h4>
|
||||
<f:translate key="related-news" />
|
||||
</h4>
|
||||
<ul class="list-group">
|
||||
<f:for each="{newsItem.allRelatedSorted}" as="related">
|
||||
<li class="list-group-item">
|
||||
<span class="news-related-news-date me-2">
|
||||
<f:format.date format="{f:translate(key:'dateFormat')}">{related.datetime}</f:format.date>
|
||||
</span>
|
||||
<n:link newsItem="{related}" settings="{settings}" title="{related.title}">
|
||||
{related.title}
|
||||
</n:link>
|
||||
</li>
|
||||
|
||||
</f:for>
|
||||
</ul>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
|
||||
<f:if condition="{newsItem.relatedFiles}">
|
||||
<!-- related files -->
|
||||
<div class="news-related news-related-files mb-3">
|
||||
<h4>
|
||||
<f:translate key="related-files" />
|
||||
</h4>
|
||||
<ul class="list-group">
|
||||
<f:for each="{newsItem.relatedFiles}" as="relatedFile">
|
||||
<li class="list-group-item">
|
||||
<span class="news-related-files-link me-2">
|
||||
<a href="{relatedFile.originalResource.publicUrl -> f:format.htmlspecialchars()}" target="_blank">
|
||||
<i class="fas fa-file me-1"></i>
|
||||
{f:if(condition:relatedFile.originalResource.title, then:relatedFile.originalResource.title, else:relatedFile.originalResource.name)}
|
||||
</a>
|
||||
</span>
|
||||
<span class="news-related-files-size"> {relatedFile.originalResource.size -> f:format.bytes()} </span>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{newsItem.relatedLinks}">
|
||||
<!-- Related links -->
|
||||
<div class="news-related news-related-links mb-3">
|
||||
<h4>
|
||||
<f:translate key="related-links" />
|
||||
</h4>
|
||||
<ul class="list-group">
|
||||
<f:for each="{newsItem.relatedLinks}" as="relatedLink">
|
||||
<li class="list-group-item">
|
||||
<f:link.typolink parameter="{relatedLink.uri}" class="me-2" title="{relatedLink.title}" target="{n:targetLink(link:relatedLink.uri)}"><i class="fas fa-external-link me-1"> </i>{f:if(condition: relatedLink.title, then: relatedLink.title, else: relatedLink.uri)}</f:link.typolink>
|
||||
<f:if condition="{relatedLink.description}"><span>{relatedLink.description}</span>
|
||||
</f:if>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</div>
|
||||
</f:if>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,47 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/List.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<!--TYPO3SEARCH_end-->
|
||||
<f:if condition="{news}">
|
||||
<f:then>
|
||||
<div class="news-list-view" id="news-container-{contentObjectData.uid}">
|
||||
<f:if condition="{settings.hidePagination}">
|
||||
<f:then>
|
||||
<ul class="list-group mb-3">
|
||||
<f:for each="{news}" as="newsItem" iteration="iterator">
|
||||
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
|
||||
</f:for>
|
||||
</ul>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:if condition="{settings.list.paginate.insertAbove}">
|
||||
<f:render partial="List/Pagination" arguments="{pagination: pagination.pagination, paginator: pagination.paginator}" />
|
||||
</f:if>
|
||||
<ul class="list-group mb-3">
|
||||
<f:for each="{pagination.paginator.paginatedItems}" as="newsItem" iteration="iterator">
|
||||
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
|
||||
</f:for>
|
||||
</ul>
|
||||
<f:if condition="{settings.list.paginate.insertBelow}">
|
||||
<f:render partial="List/Pagination" arguments="{pagination: pagination.pagination, paginator: pagination.paginator}" />
|
||||
</f:if>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="alert ">
|
||||
<f:translate key="list_nonewsfound" />
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
<!--TYPO3SEARCH_begin-->
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,36 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/SearchForm.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<f:form class="news-search-form" object="{search}" name="search" pageUid="{settings.listPid}">
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="news-subject">
|
||||
<f:translate key="search-subject" />
|
||||
</label>
|
||||
<f:form.textfield id="news-subject" property="subject" class="form-control" />
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="news-minimumDate">
|
||||
<f:translate key="search-minimumDate" />
|
||||
</label>
|
||||
<f:form.textfield id="news-minimumDate" property="minimumDate" type="date" class="form-control" />
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="news-maximumDate">
|
||||
<f:translate key="search-maximumDate" />
|
||||
</label>
|
||||
<f:form.textfield id="news-maximumDate" property="maximumDate" type="date" class="form-control" />
|
||||
</div>
|
||||
|
||||
<f:form.submit value="{f:translate(key:'search-start')}" class="btn btn-primary" />
|
||||
|
||||
</f:form>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,29 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/SearchResult.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<div class="news-search-result">
|
||||
<f:if condition="{search}">
|
||||
<f:if condition="{news}">
|
||||
<f:then>
|
||||
<div class="alert alert-success">
|
||||
<f:translate key="search-text" arguments="{0:'{f:count(subject:news)}',1:search.subject}" />
|
||||
</div>
|
||||
<f:for each="{news}" as="newsItem">
|
||||
<f:render partial="List/Item" arguments="{newsItem: newsItem, settings:settings, className:className, view:'list'}" />
|
||||
</f:for>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="alert alert-info">
|
||||
<f:translate key="search-noresult" />
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,28 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
<!--
|
||||
=====================
|
||||
Templates/News/List.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<!--TYPO3SEARCH_end-->
|
||||
<f:if condition="{news}">
|
||||
<f:then>
|
||||
<div class="news-list-view" id="news-container-{contentObjectData.uid}">
|
||||
<f:for each="{news}" as="newsItem" iteration="iterator">
|
||||
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
|
||||
</f:for>
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="alert ">
|
||||
<f:translate key="list_nonewsfound" />
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
<!--TYPO3SEARCH_begin-->
|
||||
</f:section>
|
||||
</html>
|
||||
@@ -0,0 +1,35 @@
|
||||
<html
|
||||
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
|
||||
<!--
|
||||
=====================
|
||||
Templates/Tag/List.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<f:if condition="{tags}">
|
||||
<div class="news-tags">
|
||||
<f:for each="{tags}" as="tag">
|
||||
<span class="news-tags-item">
|
||||
{n:tag.count(tagUid:tag.uid) -> f:variable(name: 'tagUsageCount')}
|
||||
<f:if condition="{tag.uid} == {overwriteDemand.tags}">
|
||||
<f:then>
|
||||
<f:link.page title="{tag.title}" class="active btn btn-primary mb-1 me-1 " addQueryStringMethod="GET" addQueryString="1" pageUid="{settings.listPid}" additionalParams="{tx_news_pi1:{overwriteDemand:{tags: tag}}}">
|
||||
<i class="fas fa-tags me-1"></i> {tag.title} <span class="badge badge-light"><f:if condition="{tagUsageCount}">({tagUsageCount})</f:if></span>
|
||||
</f:link.page>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:link.page title="{tag.title}" class=" btn btn-primary mb-1 me-1 " addQueryStringMethod="GET" addQueryString="1" pageUid="{settings.listPid}" additionalParams="{tx_news_pi1:{overwriteDemand:{tags: tag}}}">
|
||||
<i class="fas fa-tags me-1"></i> {tag.title} <span class="badge badge-light"><f:if condition="{tagUsageCount}">({tagUsageCount})</f:if></span>
|
||||
</f:link.page>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</span>
|
||||
</f:for>
|
||||
</div>
|
||||
</f:if>
|
||||
</f:section>
|
||||
</html>
|
||||
37
typo3conf/ext/news/Resources/Private/Templates/Tag/List.html
Normal file
37
typo3conf/ext/news/Resources/Private/Templates/Tag/List.html
Normal file
@@ -0,0 +1,37 @@
|
||||
<html
|
||||
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true">
|
||||
<f:layout name="General" />
|
||||
|
||||
<!--
|
||||
=====================
|
||||
Templates/Tag/List.html
|
||||
-->
|
||||
|
||||
<f:section name="content">
|
||||
<f:if condition="{tags}">
|
||||
<ul class="news-tags">
|
||||
<f:for each="{tags}" as="tag">
|
||||
<li>
|
||||
{n:tag.count(tagUid:tag.uid) -> f:variable(name: 'tagUsageCount')}
|
||||
<f:if condition="{tag.uid} == {overwriteDemand.tags}">
|
||||
<f:then>
|
||||
<f:link.page title="{tag.title}" class="active" pageUid="{settings.listPid}" additionalParams="{tx_news_pi1:{overwriteDemand:{tags: tag}}}">
|
||||
{tag.title}
|
||||
</f:link.page>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:link.page title="{tag.title}" pageUid="{settings.listPid}" additionalParams="{tx_news_pi1:{overwriteDemand:{tags: tag}}}">
|
||||
{tag.title}
|
||||
</f:link.page>
|
||||
</f:else>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{tagUsageCount}">({tagUsageCount})</f:if>
|
||||
</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</f:if>
|
||||
</f:section>
|
||||
</html>
|
||||
Reference in New Issue
Block a user