Skip to content
Snippets Groups Projects
Commit 9b7063f0 authored by Kevin Ditscheid's avatar Kevin Ditscheid
Browse files

[BUGFIX] Repair the translation links in news module

parent ca0cfe1b
No related branches found
No related tags found
2 merge requests!13Feature remove sg news ajax plugin,!8Feature upgrade to9 lts
...@@ -30,6 +30,7 @@ use Psr\Http\Message\ResponseInterface; ...@@ -30,6 +30,7 @@ use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use SGalinski\SgNews\Utility\ExtensionUtility; use SGalinski\SgNews\Utility\ExtensionUtility;
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication; use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
use TYPO3\CMS\Core\Http\NullResponse;
use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\GeneralUtility;
/** /**
...@@ -104,13 +105,14 @@ class LicensingService { ...@@ -104,13 +105,14 @@ class LicensingService {
* @return ResponseInterface * @return ResponseInterface
* @throws \InvalidArgumentException * @throws \InvalidArgumentException
*/ */
public function ajaxPing(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface { public function ajaxPing(ServerRequestInterface $request, ResponseInterface $response = NULL): ResponseInterface {
/** @var BackendUserAuthentication $backendUser */ /** @var BackendUserAuthentication $backendUser */
$backendUser = $GLOBALS['BE_USER']; $backendUser = $GLOBALS['BE_USER'];
if ($backendUser && !$backendUser->getModuleData('tools_beuser/index.php/web_SgNewsNews_pinged', 'ses')) { if ($backendUser && !$backendUser->getModuleData('tools_beuser/index.php/web_SgNewsNews_pinged', 'ses')) {
$backendUser->pushModuleData('tools_beuser/index.php/web_SgNewsNews_pinged', TRUE); $backendUser->pushModuleData('tools_beuser/index.php/web_SgNewsNews_pinged', TRUE);
self::ping(); self::ping();
} }
return $response;
return $response ?? new NullResponse();
} }
} }
...@@ -29,11 +29,13 @@ namespace SGalinski\SgNews\ViewHelpers\Backend; ...@@ -29,11 +29,13 @@ namespace SGalinski\SgNews\ViewHelpers\Backend;
use SGalinski\SgNews\Service\LicensingService; use SGalinski\SgNews\Service\LicensingService;
use SGalinski\SgNews\Utility\BackendNewsUtility; use SGalinski\SgNews\Utility\BackendNewsUtility;
use SGalinski\SgNews\ViewHelpers\AbstractViewHelper; use SGalinski\SgNews\ViewHelpers\AbstractViewHelper;
use TYPO3\CMS\Backend\Routing\UriBuilder;
use TYPO3\CMS\Backend\Utility\BackendUtility; use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Imaging\Icon; use TYPO3\CMS\Core\Imaging\Icon;
use TYPO3\CMS\Core\Imaging\IconFactory; use TYPO3\CMS\Core\Imaging\IconFactory;
use TYPO3\CMS\Core\Type\Icon\IconState; use TYPO3\CMS\Core\Type\Icon\IconState;
use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Utility\VersionNumberUtility;
use TYPO3\CMS\Extbase\Utility\LocalizationUtility; use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
/** /**
...@@ -65,10 +67,12 @@ class TranslationLinksViewHelper extends AbstractViewHelper { ...@@ -65,10 +67,12 @@ class TranslationLinksViewHelper extends AbstractViewHelper {
if (!LicensingService::checkKey()) { if (!LicensingService::checkKey()) {
return $out; return $out;
} }
$table = trim($table); $table = trim($table);
if ($table !== 'pages' && !isset($GLOBALS['TCA'][$table]['ctrl']['languageField'])) { if ($table !== 'pages' && !isset($GLOBALS['TCA'][$table]['ctrl']['languageField'])) {
return $out; return $out;
} }
$uid = (int) $uid; $uid = (int) $uid;
$pageUid = (int) $pageUid; $pageUid = (int) $pageUid;
$row = BackendUtility::getRecord($table, $uid); $row = BackendUtility::getRecord($table, $uid);
...@@ -86,14 +90,17 @@ class TranslationLinksViewHelper extends AbstractViewHelper { ...@@ -86,14 +90,17 @@ class TranslationLinksViewHelper extends AbstractViewHelper {
} else { } else {
$languages = BackendNewsUtility::getAvailableLanguages($pageUid); $languages = BackendNewsUtility::getAvailableLanguages($pageUid);
} }
$editLabel = LocalizationUtility::translate('backend.action.edit', 'SgNews'); $editLabel = LocalizationUtility::translate('backend.action.edit', 'SgNews');
$newLabel = LocalizationUtility::translate('backend.action.new', 'SgNews'); $newLabel = LocalizationUtility::translate('backend.action.new', 'SgNews');
$translationParameters = '&cmd[' . $table . '][' . $row['uid'] . '][localize]=%s'; $translationParameters = '&cmd[' . $table . '][' . $row['uid'] . '][localize]=%s';
if ($table === 'pages') { if (version_compare(VersionNumberUtility::getCurrentTypo3Version(), '9.0.0', '<')) {
$translationParameters = '&edit[pages][' . $row['uid'] . ']=new'; $returnUrl = BackendUtility::getModuleUrl('web_SgNewsNews', ['id' => GeneralUtility::_GP('id')]);
$translationParameters .= '&overrideVals[pages][doktype]=' . $row['doktype']; } else {
$translationParameters .= '&overrideVals[pages][sys_language_uid]=%s'; $returnUrl = GeneralUtility::makeInstance(UriBuilder::class)
->buildUriFromRoute('web_SgNewsNews', ['id' => GeneralUtility::_GP('id')]);
} }
foreach ($languages as $languageUid => $language) { foreach ($languages as $languageUid => $language) {
$translatedUid = 0; $translatedUid = 0;
if ((int) $languageUid <= 0) { if ((int) $languageUid <= 0) {
...@@ -106,34 +113,49 @@ class TranslationLinksViewHelper extends AbstractViewHelper { ...@@ -106,34 +113,49 @@ class TranslationLinksViewHelper extends AbstractViewHelper {
$translatedUid = (int) $translatedRows[0]['uid']; $translatedUid = (int) $translatedRows[0]['uid'];
} }
} }
if ($translatedUid) { if ($translatedUid) {
$onClick = BackendUtility::editOnClick( if (version_compare(VersionNumberUtility::getCurrentTypo3Version(), '9.0.0', '<')) {
'&edit[' . $translationTable . '][' . $translatedUid . ']=edit', '', -1 $link = BackendUtility::getModuleUrl('record_edit', [
); 'edit' => [
$out .= ' <a href="#" onclick="' . $onClick . '" title="' . $language['title'] . ' [' . $editLabel . ']" >' . $translationTable => [
$iconFactory->getIcon($language['flag'], Icon::SIZE_SMALL)->render() . $translatedUid => 'edit'
'</a>'; ]
} else { ],
if ($table === 'pages') { 'returnUrl' => $returnUrl
$onClick = BackendUtility::editOnClick( ]);
sprintf($translationParameters, $languageUid), '', -1
);
} else { } else {
$onClick = 'window.location.href=' . BackendUtility::getLinkToDataHandlerAction( $link = GeneralUtility::makeInstance(UriBuilder::class)
sprintf($translationParameters, $languageUid), -1 ->buildUriFromRoute('record_edit', [
) . ' return false;'; 'edit' => [
$translationTable => [
$translatedUid => 'edit'
]
],
'returnUrl' => (string) $returnUrl
]);
} }
$out .= ' <a href="#" onclick="' . $onClick . '" title="' . $language['title'] . ' [' . $newLabel . ']" >' .
$iconFactory->getIcon( $out .= '<a href="' . $link . '" title="'. $language['title'] . ' [' . $editLabel . ']" >'
. $iconFactory->getIcon($language['flag'], Icon::SIZE_SMALL)->render()
. '</a>';
} else {
$out .= ' <a href="'
. BackendUtility::getLinkToDataHandlerAction(
sprintf($translationParameters, $languageUid), $returnUrl
)
. '" title="' . $language['title'] . ' [' . $newLabel . ']" >'
. $iconFactory->getIcon(
$language['flag'], $language['flag'],
Icon::SIZE_SMALL, Icon::SIZE_SMALL,
'overlay-new', 'overlay-new',
IconState::cast(IconState::STATE_DISABLED) IconState::cast(IconState::STATE_DISABLED)
)->render() . )->render()
'</a>'; . '</a>';
} }
} }
} }
return $out; return $out;
} }
} }
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