Skip to content
Snippets Groups Projects
Commit a8b00f08 authored by Stefan Galinski's avatar Stefan Galinski :video_game:
Browse files

Merge branch 'feature_sortingOptions' into 'master'

[FEATURE] make sorting more configurable

See merge request !7
parents 313e3ec0 637439c0
No related branches found
Tags 5.6.1
1 merge request!7[FEATURE] make sorting more configurable
Showing with 472 additions and 201 deletions
......@@ -28,6 +28,7 @@ namespace SGalinski\SgNews\Controller;
use SGalinski\SgNews\Domain\Model\Category;
use SGalinski\SgNews\Domain\Model\News;
use SGalinski\SgNews\Service\ConfigurationService;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/**
......@@ -60,11 +61,15 @@ class LatestController extends AbstractController {
* @return void
* @throws \InvalidArgumentException
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
* @throws \TYPO3\CMS\Extbase\Configuration\Exception\InvalidConfigurationTypeException
*/
public function indexAction(array $newsMetaData = [], $offset = 0) {
$limit = ((int) $this->settings['limit']);
$limit = ($limit < 1 ? 1 : $limit);
$configurationService = GeneralUtility::makeInstance(ConfigurationService::class);
$sortBy = $configurationService->getConfiguration('sortBy', $this->settings);
$categoryUids = GeneralUtility::intExplode(',', $this->settings['categories'], TRUE);
$tagUids = GeneralUtility::intExplode(',', $this->settings['tags'], TRUE);
if ((int) $GLOBALS['TSFE']->page['doktype'] === 117 && !count($categoryUids)) {
......@@ -74,7 +79,7 @@ class LatestController extends AbstractController {
$startTime = (int) $this->settings['starttime'];
$endTime = (int) $this->settings['endtime'];
$latestNewsEntries = $this->newsRepository->findLastUpdatedOrHighlightedNewsByCategories(
$limit, FALSE, $categoryUids, $offset, TRUE, $this->settings['sortBy'], $tagUids, $startTime, $endTime
$limit, FALSE, $categoryUids, $offset, TRUE, $sortBy, $tagUids, $startTime, $endTime
);
$categories = [];
......@@ -102,7 +107,7 @@ class LatestController extends AbstractController {
if (count($newsMetaData) < $limit) {
$offset += $limit;
$maxCount = $this->newsRepository->getCountOfLastUpdatedOrHighlightedNewsByCategories(
FALSE, $categoryUids, TRUE, $this->settings['sortBy'], $tagUids, $startTime, $endTime
FALSE, $categoryUids, TRUE, $sortBy, $tagUids, $startTime, $endTime
);
if ($offset < $maxCount) {
$this->indexAction($newsMetaData, $offset);
......
......@@ -27,8 +27,10 @@ namespace SGalinski\SgNews\Controller;
***************************************************************/
use SGalinski\SgNews\Domain\Model\News;
use SGalinski\SgNews\Service\ConfigurationService;
use SGalinski\SgNews\Service\HeaderMetaDataService;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
/**
* Controller that handles the list rendering of a single category
......@@ -72,6 +74,7 @@ class ListByCategoryController extends AbstractController {
* @return void
* @throws \InvalidArgumentException
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
* @throws \TYPO3\CMS\Extbase\Configuration\Exception\InvalidConfigurationTypeException
*/
public function indexAction(array $newsMetaData = [], $currentPageBrowserPage = 0) {
$filterByCategories = FALSE;
......@@ -104,9 +107,14 @@ class ListByCategoryController extends AbstractController {
$headerSet = FALSE;
$offset = $this->calculatePaginationOffset($currentPageBrowserPage, $newsPerPage);
$configurationService = GeneralUtility::makeInstance(ConfigurationService::class);
$sortBy = $configurationService->getConfiguration('sortBy', $this->settings);
$sortDirection = $configurationService->getConfiguration('sortDirection', $this->settings);
$news = $this->newsRepository->findAllSortedNewsByCategories(
$categoryUids, $newsPerPage, $offset, $this->settings['sortBy'], $tagUids, $startTime, $endTime
$categoryUids, $newsPerPage, $offset, $sortBy, $tagUids, $startTime, $endTime, $sortDirection
)->toArray();
foreach ($news as $newsEntry) {
/** @var News $newsEntry */
$data = $this->getMetaDataForNews($newsEntry, $categories[$newsEntry->getPid()]);
......
......@@ -29,6 +29,7 @@ namespace SGalinski\SgNews\Controller;
use SGalinski\SgNews\Domain\Model\Category;
use SGalinski\SgNews\Domain\Model\Tag;
use SGalinski\SgNews\Domain\Model\News;
use SGalinski\SgNews\Service\ConfigurationService;
use SGalinski\SgNews\Service\HeaderMetaDataService;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Persistence\Generic\Query;
......@@ -78,6 +79,7 @@ class OverviewController extends AbstractController {
* @throws \InvalidArgumentException
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
* @throws \TYPO3\CMS\Extbase\Mvc\Exception\StopActionException
* @throws \TYPO3\CMS\Extbase\Configuration\Exception\InvalidConfigurationTypeException
*/
public function overviewAction(array $newsFilter = [], $currentPageBrowserPage = 0) {
switch ((int) $this->settings['groupBy']) {
......@@ -138,6 +140,7 @@ class OverviewController extends AbstractController {
* @return void
* @throws \InvalidArgumentException
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
* @throws \TYPO3\CMS\Extbase\Configuration\Exception\InvalidConfigurationTypeException
*/
protected function overviewWithCategories(
array $newsByCategory = [], array $allNews = [], array $newsFilter = [], $currentPageBrowserPage = 0
......@@ -157,6 +160,10 @@ class OverviewController extends AbstractController {
$startTime = (int) $this->settings['starttime'];
$endTime = (int) $this->settings['endtime'];
$configurationService = GeneralUtility::makeInstance(ConfigurationService::class);
$sortBy = $configurationService->getConfiguration('sortBy', $this->settings);
$sortDirection = $configurationService->getConfiguration('sortDirection', $this->settings);
$categoryIds = [];
$categoriesById = [];
$newsMetaData = [];
......@@ -171,7 +178,7 @@ class OverviewController extends AbstractController {
$tagIds = [(int) $newsFilter['tag']];
}
$news = $this->newsRepository->findAllSortedNewsByCategories(
[$categoryId], $newsLimitPerCategory, $offset, $this->settings['sortBy'], $tagIds, $startTime, $endTime
[$categoryId], $newsLimitPerCategory, $offset, $sortBy, $tagIds, $startTime, $endTime, $sortDirection
);
$newsMetaData[$categoryId] = [];
foreach ($news as $newsEntry) {
......@@ -218,7 +225,7 @@ class OverviewController extends AbstractController {
$tagIds = [(int) $newsFilter['tag']];
}
$news = $this->newsRepository->findAllSortedNewsByCategories(
$categoryIds, $newsLimitPerCategory, $offset, $this->settings['sortBy'], $tagIds, $startTime, $endTime
$categoryIds, $newsLimitPerCategory, $offset, $sortBy, $tagIds, $startTime, $endTime, $sortDirection
);
foreach ($news as $newsEntry) {
......@@ -279,6 +286,7 @@ class OverviewController extends AbstractController {
* @return void
* @throws \InvalidArgumentException
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
* @throws \TYPO3\CMS\Extbase\Configuration\Exception\InvalidConfigurationTypeException
*/
protected function overviewWithTags(
array $newsByTag = [], array $allNews = [], array $newsFilter = [], $currentPageBrowserPage = 0
......@@ -292,6 +300,10 @@ class OverviewController extends AbstractController {
$tagPid = $GLOBALS['TSFE']->id;
}
$configurationService = GeneralUtility::makeInstance(ConfigurationService::class);
$sortBy = $configurationService->getConfiguration('sortBy', $this->settings);
$sortDirection = $configurationService->getConfiguration('sortDirection', $this->settings);
$categoryIds = NULL;
if ($newsFilter['category']) {
$categoryIds = [(int) $newsFilter['category']];
......@@ -317,7 +329,7 @@ class OverviewController extends AbstractController {
$tagsById[$tagId] = $tag;
$news = $this->newsRepository->findAllSortedNewsByCategories(
$categoryIds, $newsLimitPerTag, $offset, $this->settings['sortBy'], [$tagId], $startTime, $endTime
$categoryIds, $newsLimitPerTag, $offset, $sortBy, [$tagId], $startTime, $endTime, $sortDirection
);
$newsMetaData[$tagId] = [];
foreach ($news as $newsEntry) {
......@@ -362,7 +374,7 @@ class OverviewController extends AbstractController {
// Get all news by tags.
$news = $this->newsRepository->findAllSortedNewsByCategories(
$categoryIds, $newsLimitPerTag, $offset, $this->settings['sortBy'], $tagIds, $startTime, $endTime
$categoryIds, $newsLimitPerTag, $offset, $sortBy, $tagIds, $startTime, $endTime, $sortDirection
);
foreach ($news as $newsEntry) {
/** @var News $newsEntry */
......@@ -435,6 +447,7 @@ class OverviewController extends AbstractController {
* @throws \InvalidArgumentException
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
* @throws \TYPO3\CMS\Extbase\Mvc\Exception\NoSuchArgumentException
* @throws \TYPO3\CMS\Extbase\Configuration\Exception\InvalidConfigurationTypeException
*/
protected function overviewWithoutCategoriesAction(
array $newsMetaData = [], array $newsFilter = NULL, $currentPageBrowserPage = 0
......@@ -445,6 +458,10 @@ class OverviewController extends AbstractController {
$this->view->assign('selectedTag', $selectedTag);
$this->view->assign('selectedCategory', $selectedCategory);
$configurationService = GeneralUtility::makeInstance(ConfigurationService::class);
$sortBy = $configurationService->getConfiguration('sortBy', $this->settings);
$sortDirection = $configurationService->getConfiguration('sortDirection', $this->settings);
$newsPerPage = (int) $this->settings['newsLimit'];
$offset = $this->calculatePaginationOffset($currentPageBrowserPage, $newsPerPage);
......@@ -496,7 +513,7 @@ class OverviewController extends AbstractController {
}
$news = $this->newsRepository->findAllSortedNewsByCategories(
$categoryIds, $newsPerPage, $offset, $this->settings['sortBy'], $tagIds, $startTime, $endTime
$categoryIds, $newsPerPage, $offset, $sortBy, $tagIds, $startTime, $endTime, $sortDirection
);
foreach ($news as $newsEntry) {
/** @var News $newsEntry */
......
......@@ -45,12 +45,13 @@ class NewsRepository extends AbstractRepository {
* @param array $tagIds NULL, if the tag filter isn't applied, otherwise an array with the tag uids.
* @param int $startTime unix timestamp of the lower limit of the news results date
* @param int $endTime unix timestamp of the upper limit of the news results date
* @param string $sortDirection either DESC or ASC
* @return QueryResultInterface
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
*/
public function findAllSortedNewsByCategories(
array $categoryIds = NULL, $limit = 0, $offset = 0, $sortBy = 'date', array $tagIds = NULL,
$startTime = 0, $endTime = 0
$startTime = 0, $endTime = 0, $sortDirection = 'DESC'
): QueryResultInterface {
$query = $this->createQuery();
......@@ -97,17 +98,23 @@ class NewsRepository extends AbstractRepository {
$query->setOffset($offset);
}
if ($sortDirection === 'ASC') {
$order = QueryInterface::ORDER_ASCENDING;
} else {
$order = QueryInterface::ORDER_DESCENDING;
}
if ($sortBy === 'date') {
$query->setOrderings(
[
'lastUpdated' => QueryInterface::ORDER_DESCENDING,
'crdate' => QueryInterface::ORDER_DESCENDING,
'lastUpdated' => $order,
'crdate' => $order,
]
);
} else {
$query->setOrderings(
[
'sorting' => QueryInterface::ORDER_ASCENDING,
'sorting' => $order,
'lastUpdated' => QueryInterface::ORDER_DESCENDING,
'crdate' => QueryInterface::ORDER_DESCENDING,
]
......
<?php
namespace SGalinski\SgNews\Service;
/***************************************************************
* Copyright notice
*
* (c) sgalinski Internet Services (https://www.sgalinski.de)
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Core\SingletonInterface;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManager;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
use TYPO3\CMS\Extbase\Configuration\Exception\InvalidConfigurationTypeException;
/**
* This service provides helper function for dealing with plugin configuration
*/
class ConfigurationService implements SingletonInterface {
/**
* @var array
*/
protected $tsConfig;
/**
* Returns the desired config value either from TypoScript settings or flexform config
* If the user set 'System default' in the flexform, the value will be fetched from TS
*
* @param string $key
* @param array $settings
* @throws InvalidConfigurationTypeException
* @return string
*/
public function getConfiguration($key, array $settings): string {
if (!$this->tsConfig) {
$configurationManager = GeneralUtility::makeInstance(ConfigurationManager::class);
$this->tsConfig = $configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT);
}
if ($settings[$key] === 'typoscript') {
$setting = $this->tsConfig['plugin.']['tx_sgnews.']['settings.'][$key];
} else {
$setting = $settings[$key];
}
return $setting;
}
}
......@@ -79,6 +79,29 @@
</config>
</TCEforms>
</settings.endtime>
<settings.sortBy>
<TCEforms>
<label>LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.sortBy</label>
<config>
<type>select</type>
<items>
<numIndex index="0">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.systemDefault</numIndex>
<numIndex index="1">typoscript</numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.dateOfPublication</numIndex>
<numIndex index="1">date</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.orderInPageTree</numIndex>
<numIndex index="1">positionInTree</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.sortBy>
</el>
</ROOT>
</main>
......
......@@ -79,6 +79,52 @@
</config>
</TCEforms>
</settings.endtime>
<settings.sortBy>
<TCEforms>
<label>LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.sortBy</label>
<config>
<type>select</type>
<items>
<numIndex index="0">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.systemDefault</numIndex>
<numIndex index="1">typoscript</numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.dateOfPublication</numIndex>
<numIndex index="1">date</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.orderInPageTree</numIndex>
<numIndex index="1">positionInTree</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.sortBy>
<settings.sortDirection>
<TCEforms>
<label>LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.sortOrder</label>
<config>
<type>select</type>
<items>
<numIndex index="0">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.systemDefault</numIndex>
<numIndex index="1">typoscript</numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.desc</numIndex>
<numIndex index="1">DESC</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.asc</numIndex>
<numIndex index="1">ASC</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.sortDirection>
</el>
</ROOT>
</main>
......
......@@ -82,6 +82,50 @@
</config>
</TCEforms>
</settings.endtime>
<settings.sortBy>
<TCEforms>
<label>LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.sortBy</label>
<config>
<type>select</type>
<items>
<numIndex index="0">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.systemDefault</numIndex>
<numIndex index="1">typoscript</numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.dateOfPublication</numIndex>
<numIndex index="1">date</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.orderInPageTree</numIndex>
<numIndex index="1">positionInTree</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.sortBy>
<settings.sortDirection>
<TCEforms>
<label>LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.sortOrder</label>
<config>
<type>select</type>
<items>
<numIndex index="0">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.systemDefault</numIndex>
<numIndex index="1">typoscript</numIndex>
</numIndex>
<numIndex index="1">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.desc</numIndex>
<numIndex index="1">DESC</numIndex>
</numIndex>
<numIndex index="2">
<numIndex index="0">LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.listByCategory.flexFrom.asc</numIndex>
<numIndex index="1">ASC</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</settings.sortDirection>
</el>
</ROOT>
</main>
......
......@@ -13,6 +13,9 @@ plugin.tx_sgnews {
settings {
newsLimitPerPage = 12
tagPid =
# sort direction (DESC / ASC)
sortDirection = DESC
}
pagebrowser.settings {
......
......@@ -98,6 +98,9 @@ plugin.tx_sgnews {
# How to sort the news in general (date, positionInTree)
sortBy = date
# sort direction (DESC / ASC)
sortDirection = {$plugin.tx_sgnews.settings.sortDirection}
# The publisher value for the structured data implementation (see single view template)
publisher =
......
......@@ -9,114 +9,142 @@
<authorEmail>stefan@sgalinski.de</authorEmail>
</header>
<body>
<trans-unit id="pages.subtitle.inPalette" approved="yes">
<source>Title</source>
<target>Titel</target>
</trans-unit>
<trans-unit id="pages.tabs.images" approved="yes">
<source>Images</source>
<target>Bilder</target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_author" approved="yes">
<source>Author</source>
<target>Autor</target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_author.inPalette" approved="yes">
<source>Author (use the free text field if the author not in the list)</source>
<target>Autor (benutze das Freitextfeld, falls der Autor nicht in der Liste ist)</target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_highlighted" approved="yes">
<source>Highlighted / Top Element</source>
<target>Hervorgehoben / Top-Element</target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_likes" approved="yes">
<source>Like Count</source>
<target>Anzahl der Likes</target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_never_highlighted" approved="yes">
<source>Don't show in &quot;Latest News&quot;</source>
<target>Nicht in &quot;letzten News&quot; anzeigen</target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_related_news" approved="yes">
<source>Related Elements</source>
<target>Verwandte Elemente</target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_tags" approved="yes">
<source>Tags</source>
<target>Tags</target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_teaser1_image" approved="yes">
<source>Teaser image</source>
<target>Teaser-Bild</target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_teaser2_image" approved="yes">
<source>Single view image</source>
<target>Einzelansichts-Bild</target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_use_image_crop" approved="yes">
<source>Use Image Cropping</source>
<target>Bild-Cropping aktivieren</target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_location">
<source>Location</source>
<target>Ort</target>
</trans-unit>
<trans-unit id="plugin.flexForm" approved="yes">
<source>Settings</source>
<target>Einstellungen</target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.categories" approved="yes">
<source>Categories (No Selection = all)</source>
<target>Kategorien (Keine Auswahl = alle)</target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.enableFilter" approved="yes">
<source>Enable Filter</source>
<target>Filter aktivieren</target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.endtime" approved="yes">
<source>Show news until</source>
<target>Zeige News bis</target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy" approved="yes">
<source>Group by</source>
<target>Gruppiere nach</target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy.I.0" approved="yes">
<source>None</source>
<target>Weder noch</target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy.I.1" approved="yes">
<source>Categories</source>
<target>Kategorien</target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy.I.2" approved="yes">
<source>Tags</source>
<target>Tags</target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.listByCategory.categories" approved="yes">
<source>Categories (No Selection = current page)</source>
<target>Kategorien (Keine Auswahl = aktuelle Seite)</target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.listByCategory.tags" approved="yes">
<source>Tags, if none is selected, then all will be displayed</source>
<target>Tags, wenn keine ausgewählt wird, dann werden alle angezeigt</target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.newsLimit" approved="yes">
<source>News limit (depending on the view by category or in total)</source>
<target>News-Limit (je nach Ansicht pro Kategorie oder insgesamt)</target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.newsLimitPerPage" approved="yes">
<source>News Limit per Page</source>
<target>News-Limit pro Seite</target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.onlyNewsWithinThisPageSection" approved="yes">
<source>Only news within this page section</source>
<target>Nur News innerhalb dieses Seitenbereichs</target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.starttime" approved="yes">
<source>Show news from</source>
<target>Zeige News ab</target>
</trans-unit>
<trans-unit id="pages.subtitle.inPalette" approved="yes">
<source><![CDATA[Title]]></source>
<target><![CDATA[Titel]]></target>
</trans-unit>
<trans-unit id="pages.tabs.images" approved="yes">
<source><![CDATA[Images]]></source>
<target><![CDATA[Bilder]]></target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_author" approved="yes">
<source><![CDATA[Author]]></source>
<target><![CDATA[Autor]]></target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_author.inPalette" approved="yes">
<source><![CDATA[Author (use the free text field if the author not in the list)]]></source>
<target><![CDATA[Autor (benutze das Freitextfeld, falls der Autor nicht in der Liste ist)]]></target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_highlighted" approved="yes">
<source><![CDATA[Highlighted / Top Element]]></source>
<target><![CDATA[Hervorgehoben / Top-Element]]></target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_likes" approved="yes">
<source><![CDATA[Like Count]]></source>
<target><![CDATA[Anzahl der Likes]]></target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_location" approved="yes">
<source><![CDATA[Location]]></source>
<target><![CDATA[Ort]]></target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_never_highlighted" approved="yes">
<source><![CDATA[Don't show in "Latest News"]]></source>
<target><![CDATA[Nicht in "letzten News" anzeigen]]></target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_related_news" approved="yes">
<source><![CDATA[Related Elements]]></source>
<target><![CDATA[Verwandte Elemente]]></target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_tags" approved="yes">
<source><![CDATA[Tags]]></source>
<target><![CDATA[Tags]]></target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_teaser1_image" approved="yes">
<source><![CDATA[Teaser image]]></source>
<target><![CDATA[Teaser-Bild]]></target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_teaser2_image" approved="yes">
<source><![CDATA[Single view image]]></source>
<target><![CDATA[Einzelansichts-Bild]]></target>
</trans-unit>
<trans-unit id="pages.tx_sgnews_use_image_crop" approved="yes">
<source><![CDATA[Use Image Cropping]]></source>
<target><![CDATA[Bild-Cropping aktivieren]]></target>
</trans-unit>
<trans-unit id="plugin.flexForm" approved="yes">
<source><![CDATA[Settings]]></source>
<target><![CDATA[Einstellungen]]></target>
</trans-unit>
<trans-unit id="plugin.listByCategory.flexFrom.asc" approved="yes">
<source><![CDATA[Ascending]]></source>
<target><![CDATA[Aufsteigend]]></target>
</trans-unit>
<trans-unit id="plugin.listByCategory.flexFrom.dateOfPublication" approved="yes">
<source><![CDATA[Date of publication]]></source>
<target><![CDATA[Tag der Veröffentlichung]]></target>
</trans-unit>
<trans-unit id="plugin.listByCategory.flexFrom.desc" approved="yes">
<source><![CDATA[Descending]]></source>
<target><![CDATA[Absteigend]]></target>
</trans-unit>
<trans-unit id="plugin.listByCategory.flexFrom.orderInPageTree" approved="yes">
<source><![CDATA[Order in pagetree]]></source>
<target><![CDATA[Reihenfolge im Seitenbaum]]></target>
</trans-unit>
<trans-unit id="plugin.listByCategory.flexFrom.sortBy" approved="yes">
<source><![CDATA[Sort by]]></source>
<target><![CDATA[Sortieren nach]]></target>
</trans-unit>
<trans-unit id="plugin.listByCategory.flexFrom.sortOrder" approved="yes">
<source><![CDATA[Sort order]]></source>
<target><![CDATA[Sortierreihenfolge]]></target>
</trans-unit>
<trans-unit id="plugin.listByCategory.flexFrom.systemDefault" approved="yes">
<source><![CDATA[System default]]></source>
<target><![CDATA[Systemstandard]]></target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.categories" approved="yes">
<source><![CDATA[Categories (No Selection = all)]]></source>
<target><![CDATA[Kategorien (Keine Auswahl = alle)]]></target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.enableFilter" approved="yes">
<source><![CDATA[Enable Filter]]></source>
<target><![CDATA[Filter aktivieren]]></target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.endtime" approved="yes">
<source><![CDATA[Show news until]]></source>
<target><![CDATA[Zeige News bis]]></target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy" approved="yes">
<source><![CDATA[Group by]]></source>
<target><![CDATA[Gruppiere nach]]></target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy.I.0" approved="yes">
<source><![CDATA[None]]></source>
<target><![CDATA[Weder noch]]></target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy.I.1" approved="yes">
<source><![CDATA[Categories]]></source>
<target><![CDATA[Kategorien]]></target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy.I.2" approved="yes">
<source><![CDATA[Tags]]></source>
<target><![CDATA[Tags]]></target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.listByCategory.categories" approved="yes">
<source><![CDATA[Categories (No Selection = current page)]]></source>
<target><![CDATA[Kategorien (Keine Auswahl = aktuelle Seite)]]></target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.listByCategory.tags" approved="yes">
<source><![CDATA[Tags, if none is selected, then all will be displayed]]></source>
<target><![CDATA[Tags, wenn keine ausgewählt wird, dann werden alle angezeigt]]></target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.newsLimit" approved="yes">
<source><![CDATA[News limit (depending on the view by category or in total)]]></source>
<target><![CDATA[News-Limit (je nach Ansicht pro Kategorie oder insgesamt)]]></target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.newsLimitPerPage" approved="yes">
<source><![CDATA[News Limit per Page]]></source>
<target><![CDATA[News-Limit pro Seite]]></target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.onlyNewsWithinThisPageSection" approved="yes">
<source><![CDATA[Only news within this page section]]></source>
<target><![CDATA[Nur News innerhalb dieses Seitenbereichs]]></target>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.starttime" approved="yes">
<source><![CDATA[Show news from]]></source>
<target><![CDATA[Zeige News ab]]></target>
</trans-unit>
</body>
</file>
</xliff>
\ No newline at end of file
......@@ -9,87 +9,108 @@
<authorEmail>stefan@sgalinski.de</authorEmail>
</header>
<body>
<trans-unit id="pages.subtitle.inPalette">
<source>Title</source>
</trans-unit>
<trans-unit id="pages.tabs.images">
<source>Images</source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_author">
<source>Author</source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_author.inPalette">
<source>Author (use the free text field if the author not in the list)</source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_highlighted">
<source>Highlighted / Top Element</source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_likes">
<source>Like Count</source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_never_highlighted">
<source>Don't show in &quot;Latest News&quot;</source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_related_news">
<source>Related Elements</source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_tags">
<source>Tags</source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_teaser1_image">
<source>Teaser image</source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_teaser2_image">
<source>Single view image</source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_use_image_crop">
<source>Use Image Cropping</source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_location">
<source>Location</source>
</trans-unit>
<trans-unit id="plugin.flexForm">
<source>Settings</source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.categories">
<source>Categories (No Selection = all)</source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.enableFilter">
<source>Enable Filter</source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.endtime">
<source>Show news until</source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy">
<source>Group by</source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy.I.0">
<source>None</source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy.I.1">
<source>Categories</source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy.I.2">
<source>Tags</source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.listByCategory.categories">
<source>Categories (No Selection = current page)</source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.listByCategory.tags">
<source>Tags, if none is selected, then all will be displayed</source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.newsLimit">
<source>News limit (depending on the view by category or in total)</source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.newsLimitPerPage">
<source>News Limit per Page</source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.onlyNewsWithinThisPageSection">
<source>Only news within this page section</source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.starttime">
<source>Show news from</source>
</trans-unit>
<trans-unit id="pages.subtitle.inPalette">
<source><![CDATA[Title]]></source>
</trans-unit>
<trans-unit id="pages.tabs.images">
<source><![CDATA[Images]]></source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_author">
<source><![CDATA[Author]]></source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_author.inPalette">
<source><![CDATA[Author (use the free text field if the author not in the list)]]></source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_highlighted">
<source><![CDATA[Highlighted / Top Element]]></source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_likes">
<source><![CDATA[Like Count]]></source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_location">
<source><![CDATA[Location]]></source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_never_highlighted">
<source><![CDATA[Don't show in "Latest News"]]></source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_related_news">
<source><![CDATA[Related Elements]]></source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_tags">
<source><![CDATA[Tags]]></source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_teaser1_image">
<source><![CDATA[Teaser image]]></source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_teaser2_image">
<source><![CDATA[Single view image]]></source>
</trans-unit>
<trans-unit id="pages.tx_sgnews_use_image_crop">
<source><![CDATA[Use Image Cropping]]></source>
</trans-unit>
<trans-unit id="plugin.flexForm">
<source><![CDATA[Settings]]></source>
</trans-unit>
<trans-unit id="plugin.listByCategory.flexFrom.asc">
<source><![CDATA[Ascending]]></source>
</trans-unit>
<trans-unit id="plugin.listByCategory.flexFrom.dateOfPublication">
<source><![CDATA[Date of publication]]></source>
</trans-unit>
<trans-unit id="plugin.listByCategory.flexFrom.desc">
<source><![CDATA[Descending]]></source>
</trans-unit>
<trans-unit id="plugin.listByCategory.flexFrom.orderInPageTree">
<source><![CDATA[Order in pagetree]]></source>
</trans-unit>
<trans-unit id="plugin.listByCategory.flexFrom.sortBy">
<source><![CDATA[Sort by]]></source>
</trans-unit>
<trans-unit id="plugin.listByCategory.flexFrom.sortOrder">
<source><![CDATA[Sort order]]></source>
</trans-unit>
<trans-unit id="plugin.listByCategory.flexFrom.systemDefault">
<source><![CDATA[System default]]></source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.categories">
<source><![CDATA[Categories (No Selection = all)]]></source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.enableFilter">
<source><![CDATA[Enable Filter]]></source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.endtime">
<source><![CDATA[Show news until]]></source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy">
<source><![CDATA[Group by]]></source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy.I.0">
<source><![CDATA[None]]></source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy.I.1">
<source><![CDATA[Categories]]></source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.groupBy.I.2">
<source><![CDATA[Tags]]></source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.listByCategory.categories">
<source><![CDATA[Categories (No Selection = current page)]]></source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.listByCategory.tags">
<source><![CDATA[Tags, if none is selected, then all will be displayed]]></source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.newsLimit">
<source><![CDATA[News limit (depending on the view by category or in total)]]></source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.newsLimitPerPage">
<source><![CDATA[News Limit per Page]]></source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.onlyNewsWithinThisPageSection">
<source><![CDATA[Only news within this page section]]></source>
</trans-unit>
<trans-unit id="plugin.overview.flexForm.starttime">
<source><![CDATA[Show news from]]></source>
</trans-unit>
</body>
</file>
</xliff>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment