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

[BUGFIX] Fix news module navigation in TYPO3 8

parent 8e7e3a24
No related branches found
No related tags found
2 merge requests!13Feature remove sg news ajax plugin,!8Feature upgrade to9 lts
......@@ -35,6 +35,7 @@ use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
use TYPO3\CMS\Core\Imaging\Icon;
use TYPO3\CMS\Core\Imaging\IconFactory;
use TYPO3\CMS\Core\Page\PageRenderer;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Utility\VersionNumberUtility;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
......@@ -153,6 +154,14 @@ class BackendController extends ActionController {
$currentLanguageInfo = $languageOptions[$this->language] ?? NULL;
}
if (version_compare(VersionNumberUtility::getCurrentTypo3Version(), '9.0.0', '<')) {
$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
$pageRenderer->loadExtJS();
$pageRenderer->addJsInlineCode('typo3_version', 'TYPO3.version='
. VersionNumberUtility::convertVersionNumberToInteger(VersionNumberUtility::getCurrentTypo3Version())
. ';');
}
$this->docHeaderComponent->setMetaInformation($this->pageInfo);
$this->makeButtons();
$this->makeLanguageMenu();
......
......@@ -32,6 +32,7 @@ use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Imaging\IconFactory;
use TYPO3\CMS\Core\Page\PageRenderer;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Utility\VersionNumberUtility;
use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
/**
......@@ -80,14 +81,22 @@ class PageLayoutController {
$buttonLabel = LocalizationUtility::translate('backend.button.goToNewsModule', 'SgNews');
$buttonLabel = '<span style="vertical-align: middle;">' . $buttonLabel . '</span>';
$rootline = BackendUtility::BEgetRootLine($categoryRow['uid'], '', TRUE);
ksort($rootline);
$path = '/root';
foreach ($rootline as $page) {
$path .= '/p' . dechex($page['uid']);
$path = '';
if (version_compare(VersionNumberUtility::getCurrentTypo3Version(), '9.0.0', '<')) {
$pageRenderer->addJsInlineCode('typo3_version', 'TYPO3.version='
. VersionNumberUtility::convertVersionNumberToInteger(VersionNumberUtility::getCurrentTypo3Version())
. ';');
$rootline = BackendUtility::BEgetRootLine($categoryRow['uid'], '', TRUE);
ksort($rootline);
$path = '/root';
foreach ($rootline as $page) {
$path .= '/p' . dechex($page['uid']);
}
$path = ', \'' . $path . '\'';
}
$onclick = 'TYPO3.SgNewsModule.sgNewsGoToNewsModule(' . $categoryRow['uid'] . ', \'' . $path . '\'); return false;';
$onclick = 'TYPO3.SgNewsModule.sgNewsGoToNewsModule(' . $categoryRow['uid'] . $path . '); return false;';
$wrap = ' <div class="btn-group" role="group">%s</div>';
$link = '<a href="#" onclick="' . $onclick . '" class="btn btn-primary">%s</a>';
$link = sprintf($link, $icon . ' ' . $buttonLabel);
......
......@@ -102,7 +102,19 @@ class ControlViewHelper extends AbstractViewHelper {
if ($table === 'pages' && LicensingService::checkKey()) {
$iconFactory = GeneralUtility::makeInstance(IconFactory::class);
$buttonLabel = LocalizationUtility::translate('backend.button.editPageContent', 'SgNews');
$onclick = 'return TYPO3.SgNewsModule.sgNewsGoToPageModule(' . $row['uid'] . ');';
$path = '';
if (version_compare(VersionNumberUtility::getCurrentTypo3Version(), '9.0.0', '<')) {
$rootline = BackendUtility::BEgetRootLine($row['uid'], '', TRUE);
ksort($rootline);
$path = '/root';
foreach ($rootline as $page) {
$path .= '/p' . dechex($page['uid']);
}
$path = ', \'' . $path . '\'';
}
$onclick = 'return TYPO3.SgNewsModule.sgNewsGoToPageModule(' . $row['uid'] . $path . ');';
$icon = $iconFactory->getIcon('actions-document-open-white', Icon::SIZE_SMALL)->render();
$wrap = ' <div class="btn-group" role="group">%s</div>';
$link = '<a href="#" onclick="' . $onclick . '" class="btn btn-primary" title="' . $buttonLabel . '">%s</a>';
......
......@@ -28,6 +28,7 @@ define([
'TYPO3/CMS/Backend/Viewport'
], function($, ModuleMenu, Viewport) {
'use strict';
var SgNewsModule = {
init: function() {
$.get(TYPO3.settings.ajaxUrls['sg_news::ajaxPing']);
......@@ -40,24 +41,41 @@ define([
});
},
goTo: function(module, id) {
var pageTreeNodes = Viewport.NavigationContainer.PageTree.instance.nodes;
for (var nodeIndex in pageTreeNodes) {
if (pageTreeNodes.hasOwnProperty(nodeIndex) && pageTreeNodes[nodeIndex].identifier === id) {
Viewport.NavigationContainer.PageTree.selectNode(pageTreeNodes[nodeIndex]);
break;
goTo: function(module, id, path) {
if (TYPO3.version < 9000000) {
var tree = top.Ext.getCmp('typo3-pagetree');
if (tree) {
tree.activeTree.selectPath(path);
} else if(top.nav) {
top.nav.invokePageId(id, function(path) {
var callback = top.Ext.createDelegate(top.nav.mainTree.selectPath, top.nav.mainTree);
callback.apply(this, arguments);
var node = top.nav.getSelected();
if (node) {
top.TYPO3.Components.PageTree.Actions.singleClick(node, top.TYPO3.Components.PageTree.Tree);
}
});
}
parent.TYPO3.ModuleMenu.App.showModule(module, 'id=' + id);
} else {
var pageTreeNodes = Viewport.NavigationContainer.PageTree.instance.nodes;
for (var nodeIndex in pageTreeNodes) {
if (pageTreeNodes.hasOwnProperty(nodeIndex) && pageTreeNodes[nodeIndex].identifier === id) {
Viewport.NavigationContainer.PageTree.selectNode(pageTreeNodes[nodeIndex]);
break;
}
}
ModuleMenu.App.showModule(module, 'id=' + id);
}
ModuleMenu.App.showModule(module, 'id=' + id);
},
sgNewsGoToNewsModule: function(uid) {
this.goTo('web_SgNewsNews', uid);
sgNewsGoToNewsModule: function(uid, path) {
this.goTo('web_SgNewsNews', uid, path);
return false;
},
sgNewsGoToPageModule: function(uid) {
this.goTo('web_layout', uid);
sgNewsGoToPageModule: function(uid, path) {
this.goTo('web_layout', uid, path);
return false;
}
};
......
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