Initial commit - Typo3 11.5.41

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

View File

@@ -0,0 +1,201 @@
{namespace n=Tx_News_ViewHelpers}
<f:layout name="Backend/Default" />
<f:section name="categoryTree">
<ul class="list-unstyled">
<f:for each="{categories}" as="category">
<li>
<f:form.checkbox id="category-{category.item.uid}" property="selectedCategories" value="{category.item.uid}" />
<label for="category-{category.item.uid}" title="{category.item.uid}">{category.item.title}</label>
<f:if condition="{category.children}">
<f:render section="categoryTree" arguments="{categories: category.children}" />
</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="{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:flashMessages class="tx-extbase-flash-message" />
<f:form name="demand" object="{demand}" method="get" >
<input type="hidden" name="M" value="web_NewsTxNewsM2">
<input type="hidden" name="moduleToken" value="{moduleToken}">
<input type="hidden" name="id" value="{page}">
<h2>
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:module.headline" />
</h2>
<div class="settings">
<div class="row">
<div class="col-sm-4 form-horizontal">
<div class="form-group">
<label for="recursive" class="col-sm-4 control-label">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:module.recursive" />
</label>
<div class="col-sm-8">
<f:form.select property="recursive" options="{0:0,1:1,2:2,3:3,4:4,5:5}" id="recursive" class="form-control" />
</div>
</div>
<div class="form-group">
<label for="timeRestriction" class="col-sm-4 control-label">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:module.timeRestriction" />
</label>
<div class="col-sm-8">
<f:form.textfield property="timeRestriction" id="timeRestriction" class="form-control" />
</div>
</div>
<div class="form-group">
<label for="timeRestrictionHigh" class="col-sm-4 control-label">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:module.timeRestrictionHigh" />
</label>
<div class="col-sm-8">
<f:form.textfield property="timeRestrictionHigh" id="timeRestrictionHigh" class="form-control" />
</div>
</div>
<div class="form-group">
<label for="topNewsRestriction" class="col-sm-4 control-label">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.topNewsRestriction" />
</label>
<div class="col-sm-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>
<div class="form-group">
<label for="sortingField" class="col-sm-4 control-label">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderBy" />
</label>
<div class="col-sm-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:cms/locallang_tca.xlf:pages.author_formlabel\')}'
}" id="sortingField" />
</div>
<div class="col-sm-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>
<div class="form-group">
<div class="col-sm-offset-4 col-sm-8">
<f:form.submit value="{f:translate(key:'LLL:EXT:lang/locallang_common.xlf:search')}" class="btn btn-default" />
</div>
</div>
</div>
<div class="col-sm-8">
<div class="category-tree">
<div class="tree-wrapper">
<f:render section="categoryTree" arguments="{categories: categories}" />
</div>
<f:if condition="{categories}">
<div class="form-group">
<label for="categoryConjunction" class="col-sm-6 control-label">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.categoryConjunction" />
</label>
<div class="col-sm-6">
<f:form.select class="form-control" property="categoryConjunction" options="{AND:'AND', OR:'OR', notor:'notor', notand:'notand'}" id="categoryConjunction" />
</div>
</div>
</f:if>
</div>
</div>
</div>
</div>
</f:form>
<f:if condition="{news}">
<f:then>
<div class="result">
<f:if condition="{settings.list.paginate.itemsPerPage} == 0">
<div class="alert alert-warning">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:administration.nolimit" arguments="{0:'settings.list.paginate.itemsPerPage'}" />
</div>
</f:if>
<f:be.widget.paginate objects="{news}" as="paginatedNews" configuration="{itemsPerPage: settings.list.paginate.itemsPerPage}">
<table class="table table-hover">
<thead>
<tr class="t3-row-header">
<th>
<f:translate key="LLL:EXT:cms/locallang_ttc.xlf:header_formlabel" />
<div class="btn-group">
<n:be.buttons.icon class="btn" uri="#" onclick="{n:be.multiEditLink(items:paginatedNews,columns:'title')}" icon="actions-document-open" />
</div>
</th>
<th class="nowrap">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_db.xlf:tx_news_domain_model_news.istopnews" />
<div class="btn-group">
<n:be.buttons.icon class="btn" uri="#" onclick="{n:be.multiEditLink(items:paginatedNews,columns:'istopnews')}" icon="actions-document-open" />
</div>
</th>
<th class="nowrap date">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_db.xlf:tx_news_domain_model_news.datetime" />
<div class="btn-group">
<n:be.buttons.icon class="btn" uri="#" onclick="{n:be.multiEditLink(items:paginatedNews,columns:'datetime')}" icon="actions-document-open" />
</div>
</th>
<th class="nowrap date">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_db.xlf:tx_news_domain_model_news.archive" />
<div class="btn-group">
<n:be.buttons.icon class="btn" uri="#" onclick="{n:be.multiEditLink(items:paginatedNews,columns:'archive')}" icon="actions-document-open" />
</div>
</th>
<th class="nowrap">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.orderBy.tstamp" />
</th>
<th class="nowrap nosort"></th>
</tr>
</thead>
<tbody>
<f:for each="{paginatedNews}" as="newsItem">
<f:render partial="Administration/ListItem" arguments="{newsItem: newsItem, dateformat:dateformat}" />
</f:for>
</tbody>
<tfoot>
<tr>
<td colspan="6">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:module.newsCount" arguments="{0:'{f:count(subject:news)}'}" />
</td>
</tr>
</tfoot>
</table>
</f:be.widget.paginate>
</div>
</f:then>
<f:else>
<div class="alert alert-notice">
<f:translate key="list_nonewsfound" />
</div>
</f:else>
</f:if>
</f:section>

View File

@@ -0,0 +1,48 @@
{namespace n=Tx_News_ViewHelpers}
<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>
<f:flashMessages class="tx-extbase-flash-message" />
<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:lang/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="t3-table">
<thead>
<tr class="t3-row-header">
<th>
<f:translate key="LLL:EXT:lang/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:lang/locallang_tca.xlf:sys_category" />
</th>
</tr>
</thead>
<f:for each="{tree}" as="item">
<tr class="{f:if(condition: item.countNewsAndCategories, then: '', else: 'hide_line')}">
<td class="icon" 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>{item.countNews}</td>
<td>{item.countCategories}</td>
</tr>
</f:for>
</table>
</f:section>

View File

@@ -0,0 +1,176 @@
<f:layout name="Backend/Simple" />
<f:section name="iconButtons">
</f:section>
<f:section name="content">
<h3 class="uppercase">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.header" />
</h3>
<p class="description">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.description" />
</p>
<div class="alert alert-warning">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.backupwarning" />
</div>
<br />
<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>
<f:if condition="{availableJobs -> f:count()} > 1">
<f:then>
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.choose_a_job" />:
<f:form.select id="jobSelector" options="{availableJobs}" />
<br /><br />
</f:then>
<f:else>
<div class="alert alert-info">
<f:translate key="LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:import.nojobs" />
</div>
</f:else>
</f:if>
<div id="job" style="display:none;">
<div id="progressBar" style="width:300px;"></div>
<button id="startButton">Start</button>
<br />
</div>
<script type="text/javascript">
var moduleUrl = '{f:format.raw(value: moduleUrl)}';
<![CDATA[
Ext.namespace('Tx_News');
Tx_News.Common = function () {
var pub = {};
var extKey = 'news';
var underscoreToUpperCamelCase = function (subject) {
var matches = subject.match(/(_\w)/g);
if (matches) {
matches.each(function (m) {
subject = subject.replace(m, m.charAt(1).toUpperCase());
});
}
return subject.charAt(0).toUpperCase() + subject.substr(1);
};
var getParameterPrefix = function (mainModuleName, subModuleName) {
return 'tx_' + extKey + '_' + mainModuleName + '_' + extKey + subModuleName.replace(/_/g, '');
};
pub.getExtKey = function () {
return extKey;
};
pub.getBackendRequest = function (mainModuleName, subModuleName, controller, action, parameters) {
var parameterPrefix = getParameterPrefix(mainModuleName, subModuleName);
var params = {};
Ext.apply(parameters, {controller: controller, action: action});
Ext.iterate(parameters, function (key, value) {
params[parameterPrefix + '[' + key + ']'] = value;
});
var request = {
'url': moduleUrl,
'params': params
};
return request;
};
return pub;
}();
Tx_News.Importer = function () {
var pub = {};
var jobInfo = {};
var progressBar;
var runCounter = 0;
var run = function () {
var request = Ext.apply(Tx_News.Common.getBackendRequest('web', 'tx_news_m1', 'Import',
'runJob', {jobClassName: jobInfo.jobClassName, offset: runCounter * jobInfo.increaseOffsetPerRunBy}));
Ext.apply(request, {
success: function () {
var progress = runCounter / jobInfo.runsToComplete;
progressBar.updateProgress(progress, Math.round(100 * progress) + '%');
runCounter++;
if (runCounter <= jobInfo.runsToComplete) {
run();
} else {
progressBar.updateText('Done.');
progressBar.reset();
runCounter = 1;
}
},
failure: function () {
alert('error');
}
});
Ext.Ajax.request(request);
};
var initJob = function () {
Ext.get('job').show();
progressBar = new Ext.ProgressBar({
renderTo: 'progressBar'
});
Ext.get('startButton').on('click', function () {
run();
});
};
var loadJobInfo = function (jobClassName) {
var request = Ext.apply(Tx_News.Common.getBackendRequest('web', 'tx_news_m1', 'Import',
'jobInfo', {jobClassName: jobClassName}));
Ext.apply(request, {
success: function (response) {
jobInfo = (Ext.decode(response.responseText));
Ext.apply(jobInfo, {jobClassName: jobClassName});
initJob();
}
});
Ext.Ajax.request(request);
};
pub.init = function () {
Ext.get('jobSelector').on('change', function () {
var jobClassName = this.getValue();
if (jobClassName != '0') {
loadJobInfo(jobClassName);
} else {
Ext.get('job').hide();
}
});
};
return pub;
}();
Ext.onReady(function () {
Tx_News.Importer.init();
});
]]>
</script>
</f:section>