diff --git a/Classes/Hooks/PageLayoutView/PluginRenderer.php b/Classes/Hooks/PageLayoutView/PluginRenderer.php index 10ce8282b4edc6a38788431b873ae15aeb73d0a0..9ae143e83eb02f15a3a3efafc7e2ca9be7e01b4e 100644 --- a/Classes/Hooks/PageLayoutView/PluginRenderer.php +++ b/Classes/Hooks/PageLayoutView/PluginRenderer.php @@ -74,6 +74,37 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface { $view->assign('data', $templateData); + $itemContent .= $view->render(); + break; + + case 'sgnews_latest': + $drawItem = FALSE; + + $view = $this->createViewWithTemplate('Latest'); + $view->assign('uid', $row['uid']); + + $this->adaptPluginHeaderContent($headerContent, $row); + + // Get available plugin settings and their values from flexform + $pluginConfiguration = GeneralUtility::xml2array( + $row['pi_flexform'], 'T3DataStructure' + )['data']['main']['lDEF']; + + $templateData = [ + 'limit' => $pluginConfiguration['settings.limit']['vDEF'], + 'categories' => $this->addTitlesToRecordIdList( + 'pages',$pluginConfiguration['settings.categories']['vDEF'] + ), + 'tags' => $this->addTitlesToRecordIdList( + 'sys_category', $pluginConfiguration['settings.tags']['vDEF'] + ), + 'starttime' => $pluginConfiguration['settings.starttime']['vDEF'], + 'endtime' => $pluginConfiguration['settings.endtime']['vDEF'], + 'sortBy' => $pluginConfiguration['settings.sortBy']['vDEF'] + ]; + + $view->assign('data', $templateData); + $itemContent .= $view->render(); break; default: @@ -147,9 +178,7 @@ class PluginRenderer implements PageLayoutViewDrawItemHookInterface { */ protected function addTitlesToRecordIdList(string $table, string $recordIdList): string { $backendUtility = GeneralUtility::makeInstance(BackendUtility::class); - // Filtering because explode returns [0 => ''] if $recordIdList is empty (i.e. '') - // but we want an empty array in that case. - $recordIdsArray = array_filter(explode(',', $recordIdList)); + $recordIdsArray = GeneralUtility::intExplode(',', $recordIdList, TRUE); $recordsWithTitlesArray = []; foreach ($recordIdsArray as $recordId) { diff --git a/Resources/Private/Language/de.locallang_backend.xlf b/Resources/Private/Language/de.locallang_backend.xlf index e08c71f046f9d582804dcdd25e790573834e7ef8..84fb9572271fc163b3944f1f35845f63a5870ac6 100644 --- a/Resources/Private/Language/de.locallang_backend.xlf +++ b/Resources/Private/Language/de.locallang_backend.xlf @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <xliff version="1.0"> - <file source-language="en" target-language="de" datatype="plaintext" original="messages" date="2020-07-17T14:09:42Z"> + <file source-language="en" target-language="de" datatype="plaintext" original="messages" date="2020-07-17T15:32:34Z"> <header> <type>module</type> <description>Language labels for the backend module belonging to extension 'sg_news'</description> @@ -65,6 +65,14 @@ <source><![CDATA[[News] News Single View]]></source> <target><![CDATA[[News] News Einzelansicht]]></target> </trans-unit> + <trans-unit id="plugin.preview.latest.categories" approved="yes"> + <source><![CDATA[Only show news from these categories]]></source> + <target><![CDATA[Zeige nur News dieser Kategorien]]></target> + </trans-unit> + <trans-unit id="plugin.preview.latest.tags" approved="yes"> + <source><![CDATA[Only show news with these tags]]></source> + <target><![CDATA[Zeige nur News mit diesen Tags]]></target> + </trans-unit> <trans-unit id="titleLatestPlugin" approved="yes"> <source><![CDATA[Latest News]]></source> <target><![CDATA[Neueste News]]></target> diff --git a/Resources/Private/Language/de.locallang_db.xlf b/Resources/Private/Language/de.locallang_db.xlf index dac5668978aca057ebfa3a33bf42ef3fc8406dc6..1e2734a9ce2c39fe53d5dc12b660421f4bf0c7e1 100644 --- a/Resources/Private/Language/de.locallang_db.xlf +++ b/Resources/Private/Language/de.locallang_db.xlf @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <xliff version="1.0"> - <file source-language="en" target-language="de" datatype="plaintext" original="messages" date="2019-06-21T20:03:43Z"> + <file source-language="en" target-language="de" datatype="plaintext" original="messages" date="2020-07-17T15:31:49Z"> <header> <type>database</type> <description>Language labels for database tables/fields belonging to extension 'sg_news'</description> @@ -29,10 +29,6 @@ <source><![CDATA[Pagetitle (automatically generated from Last Update + Headline)]]></source> <target><![CDATA[Seitentitel (automatisch generiert aus Letzte Aktualisierung + Schlagzeile)]]></target> </trans-unit> - <trans-unit id="pages.tx_sgnews_news_author" approved="yes"> - <source><![CDATA[Author]]></source> - <target><![CDATA[Autor]]></target> - </trans-unit> <trans-unit id="pages.tx_sgnews_content_from_another_page" approved="yes"> <source><![CDATA[Show the content from another page]]></source> <target><![CDATA[Zeige den Inhalt einer anderen Seite an]]></target> @@ -61,6 +57,10 @@ <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_news_author" approved="yes"> + <source><![CDATA[Author]]></source> + <target><![CDATA[Autor]]></target> + </trans-unit> <trans-unit id="pages.tx_sgnews_related_news" approved="yes"> <source><![CDATA[Related Elements]]></source> <target><![CDATA[Verwandte Elemente]]></target> @@ -235,4 +235,4 @@ </trans-unit> </body> </file> -</xliff> +</xliff> \ No newline at end of file diff --git a/Resources/Private/Language/locallang_backend.xlf b/Resources/Private/Language/locallang_backend.xlf index 74fc1f623cadc7314c2a8551556a92b1adb33437..fdcf2f9cd0c4d56ee87dbb70bc939300eb941c35 100644 --- a/Resources/Private/Language/locallang_backend.xlf +++ b/Resources/Private/Language/locallang_backend.xlf @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <xliff version="1.0"> - <file source-language="en" datatype="plaintext" original="messages" date="2020-07-17T14:09:42Z"> + <file source-language="en" datatype="plaintext" original="messages" date="2020-07-17T15:32:34Z"> <header> <type>module</type> <description>Language labels for the backend module belonging to extension 'sg_news'</description> @@ -57,6 +57,12 @@ <trans-unit id="pageTypeTitlePluginSingle.news"> <source><![CDATA[[News] News Single View]]></source> </trans-unit> + <trans-unit id="plugin.preview.latest.categories"> + <source><![CDATA[Only show news from these categories]]></source> + </trans-unit> + <trans-unit id="plugin.preview.latest.tags"> + <source><![CDATA[Only show news with these tags]]></source> + </trans-unit> <trans-unit id="titleLatestPlugin"> <source><![CDATA[Latest News]]></source> </trans-unit> diff --git a/Resources/Private/Language/locallang_db.xlf b/Resources/Private/Language/locallang_db.xlf index 24f4f5492fd580c8d2e52c07c1efe4b96e5f17f6..2f7acd303af9660f6a31869670a0547170f71b6c 100644 --- a/Resources/Private/Language/locallang_db.xlf +++ b/Resources/Private/Language/locallang_db.xlf @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <xliff version="1.0"> - <file source-language="en" datatype="plaintext" original="messages" date="2019-06-21T20:03:43Z"> + <file source-language="en" datatype="plaintext" original="messages" date="2020-07-17T15:31:49Z"> <header> <type>database</type> <description>Language labels for database tables/fields belonging to extension 'sg_news'</description> @@ -27,9 +27,6 @@ <trans-unit id="pages.tx_sgnews_content_from_another_page"> <source><![CDATA[Show the content from another page]]></source> </trans-unit> - <trans-unit id="pages.tx_sgnews_news_author"> - <source><![CDATA[Author]]></source> - </trans-unit> <trans-unit id="pages.tx_sgnews_date_end"> <source><![CDATA[Date until]]></source> </trans-unit> @@ -48,6 +45,9 @@ <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_news_author"> + <source><![CDATA[Author]]></source> + </trans-unit> <trans-unit id="pages.tx_sgnews_related_news"> <source><![CDATA[Related Elements]]></source> </trans-unit> @@ -179,4 +179,4 @@ </trans-unit> </body> </file> -</xliff> +</xliff> \ No newline at end of file diff --git a/Resources/Private/Templates/Backend/Latest.html b/Resources/Private/Templates/Backend/Latest.html new file mode 100644 index 0000000000000000000000000000000000000000..e8e6691560190c35be3f78b926f24580d8b7df7b --- /dev/null +++ b/Resources/Private/Templates/Backend/Latest.html @@ -0,0 +1,91 @@ +{namespace be=TYPO3\CMS\Backend\ViewHelpers} + +<f:debug>{data}</f:debug> + +<be:link.editRecord table="tt_content" uid="{uid}"> + <br/> + + <table class="table table-striped table-bordered"> + <f:render partial="PluginDataTableHeader"/> + + <tbody> + <tr> + <th scope="row"> + <f:translate + key="LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.latest.flexForm.newsLimit"/> + </th> + <td> + {data.limit} + </td> + </tr> + + <f:if condition="{data.categories}"> + <tr> + <th scope="row"> + <f:translate + key="LLL:EXT:sg_news/Resources/Private/Language/locallang_backend.xlf:plugin.preview.latest.categories"/> + </th> + <td> + {data.categories} + </td> + </tr> + </f:if> + + <f:if condition="{data.tags}"> + <tr> + <th scope="row"> + <f:translate + key="LLL:EXT:sg_news/Resources/Private/Language/locallang_backend.xlf:plugin.preview.latest.tags"/> + </th> + <td> + {data.tags} + </td> + </tr> + </f:if> + + <f:if condition="{data.starttime}"> + <tr> + <th scope="row"> + <f:translate + key="LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.flexForm.starttime"/> + </th> + <td> + <f:format.date format="d.m.Y">{data.starttime}</f:format.date> + </td> + </tr> + </f:if> + + <f:if condition="{data.endtime}"> + <tr> + <th scope="row"> + <f:translate + key="LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.flexForm.endtime"/> + </th> + <td> + <f:format.date format="d.m.Y">{data.endtime}</f:format.date> + </td> + </tr> + </f:if> + + <tr> + <th scope="row"> + <f:translate + key="LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.flexForm.sortBy"/> + </th> + <td> + <f:switch expression="{data.sortBy}"> + <f:case value="typoscript"> + <f:translate key="LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.flexForm.systemDefault"/> + </f:case> + <f:case value="date"> + <f:translate key="LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.flexForm.dateOfPublication"/> + </f:case> + <f:case value="positionInTree"> + <f:translate key="LLL:EXT:sg_news/Resources/Private/Language/locallang_db.xlf:plugin.flexForm.orderInPageTree"/> + </f:case> + </f:switch> + </td> + </tr> + </tbody> + </table> +</be:link.editRecord>