Initial commit - Typo3 11.5.41
This commit is contained in:
@@ -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>
|
||||
@@ -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>
|
||||
176
fileadmin/templates/ext/news/Templates/7/Import/Index.html
Normal file
176
fileadmin/templates/ext/news/Templates/7/Import/Index.html
Normal 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>
|
||||
Reference in New Issue
Block a user