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