[TASK] Switch info and func module to mod dispatcher 08/27508/11
authorAnja Leichsenring <aleichsenring@ab-softlab.de>
Sun, 9 Feb 2014 11:52:14 +0000 (12:52 +0100)
committerChristian Kuhn <lolli@schwarzbu.ch>
Mon, 24 Feb 2014 20:15:53 +0000 (21:15 +0100)
BE modules info and func now uses mod.php.

Changing the entry script for func and info module
will cause integrated submodules to fail in
case they use the old entry point index.php
with a relative path somewhere in funcMenu or in
other links or actions.

A compatibility layer is introduced in
typo3/index.php to catch those old
links and redirect to mod.php with proper parameters.

Change-Id: I83d31b6004ae3556dd8bf7c5c47b0fea39aaad55
Resolves: #55809
Resolves: #55672
Resolves: #55670
Releases: 6.2
Reviewed-on: https://review.typo3.org/27508
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
typo3/index.php
typo3/sysext/backend/Classes/View/PageLayoutView.php
typo3/sysext/frontend/Classes/Controller/PageInformationController.php
typo3/sysext/func/Classes/Controller/PageFunctionsController.php
typo3/sysext/func/mod1/conf.php
typo3/sysext/func/mod1/index.php
typo3/sysext/indexed_search/Classes/Controller/IndexedPagesController.php
typo3/sysext/info/Classes/Controller/InfoModuleController.php
typo3/sysext/info/mod1/conf.php
typo3/sysext/info/mod1/index.php
typo3/sysext/wizard_sortpages/Classes/View/SortPagesWizardModuleFunction.php

index ca476ba..0b78367 100644 (file)
 define('TYPO3_PROCEED_IF_NO_USER', 1);
 require __DIR__ . '/init.php';
 
+// This is a deprecation layer for extensions registered as submodules
+// of func and info module: Those modules now use mod.php as entry
+// points and not own index.php anymore, not adapted extensions will
+// therefor route to this script here. The code sorts out these script
+// calls and redirects to mod.php.
+// @deprecated since 6.2, remove two versions later.
+if (!empty($_SERVER['HTTP_REFERER'])) {
+       $typo3RequestDir = \TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('TYPO3_REQUEST_DIR');
+       if (strpos($_SERVER['HTTP_REFERER'], $typo3RequestDir . 'mod.php') === 0) {
+               parse_str(substr($_SERVER['HTTP_REFERER'], strpos($_SERVER['HTTP_REFERER'], '?') + 1), $referrerParameters);
+               \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
+                       'Module ' . $referrerParameters['M'] . ' called index.php. This is deprecated since TYPO3 6.2, use' .
+                       ' BackendUtility::getModuleUrl() instead to get the target for your call.'
+               );
+               parse_str($_SERVER['QUERY_STRING'], $queryParameters);
+               header('Location: ' . \TYPO3\CMS\Backend\Utility\BackendUtility::getModuleUrl($referrerParameters['M'], $queryParameters, FALSE, TRUE));
+               exit;
+       }
+       unset($typo3RequestDir);
+}
+
 $loginController = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Controller\\LoginController');
 $loginController->main();
 $loginController->printContent();
index 918af6d..8484f2a 100644 (file)
@@ -1037,7 +1037,7 @@ class PageLayoutView extends \TYPO3\CMS\Recordlist\RecordList\AbstractDatabaseRe
                                        $red = $this->plusPages[$row['uid']] ? '<font color="red"><strong>+&nbsp;</strong></font>' : '';
                                        $pTitle = htmlspecialchars(BackendUtility::getProcessedValue('pages', $field, $row[$field], 20));
                                        if ($red) {
-                                               $pTitle = '<a href="' . htmlspecialchars(($this->script . '?id=' . $row['uid'])) . '">' . $pTitle . '</a>';
+                                               $pTitle = '<a href="' . htmlspecialchars(($this->script . ((strpos($this->script, '?') !== FALSE) ? '&' : '?') . 'id=' . $row['uid'])) . '">' . $pTitle . '</a>';
                                        }
                                        $theData[$field] = $row['treeIcons'] . $theIcon . $red . $pTitle . '&nbsp;&nbsp;';
                                        break;
index 644c519..16ab327 100644 (file)
@@ -77,7 +77,7 @@ class PageInformationController extends \TYPO3\CMS\Backend\Module\AbstractFuncti
                $dblist->descrTable = '_MOD_' . $GLOBALS['MCONF']['name'];
                $dblist->backPath = $BACK_PATH;
                $dblist->thumbs = 0;
-               $dblist->script = '_DISPATCH';
+               $dblist->script = BackendUtility::getModuleUrl('web_info');
                $dblist->showIcon = 0;
                $dblist->setLMargin = 0;
                $dblist->agePrefixes = $LANG->sL('LLL:EXT:lang/locallang_core.xlf:labels.minutesHoursDaysYears');
index ea4aa4f..7b99eb0 100644 (file)
@@ -98,7 +98,7 @@ class PageFunctionsController extends \TYPO3\CMS\Backend\Module\BaseScriptClass
                        ');
                        // Setting up the context sensitive menu:
                        $this->doc->getContextMenuCode();
-                       $this->doc->form = '<form action="index.php" method="post"><input type="hidden" name="id" value="' . $this->id . '" />';
+                       $this->doc->form = '<form action="' . htmlspecialchars(BackendUtility::getModuleUrl('web_func')) . '" method="post"><input type="hidden" name="id" value="' . htmlspecialchars($this->id) . '" />';
                        $vContent = $this->doc->getVersionSelector($this->id, TRUE);
                        if ($vContent) {
                                $this->content .= $this->doc->section('', $vContent);
index 809f227..4173c73 100755 (executable)
@@ -1,8 +1,6 @@
 <?php
-define('TYPO3_MOD_PATH', 'sysext/func/mod1/');
-$BACK_PATH = '../../../';
 $MLANG['default']['tabs_images']['tab'] = 'func.gif';
 $MLANG['default']['ll_ref'] = 'LLL:EXT:lang/locallang_mod_web_func.xlf';
-$MCONF['script'] = 'index.php';
+$MCONF['script'] = '_DISPATCH';
 $MCONF['access'] = 'user,group';
 $MCONF['name'] = 'web_func';
index e0098f8..1309cac 100755 (executable)
@@ -31,9 +31,6 @@
  *
  * @author Kasper Skårhøj <kasperYYYY@typo3.com>
  */
-unset($MCONF);
-require __DIR__ . '/conf.php';
-require $BACK_PATH . 'init.php';
 
 /** @var $SOBE \TYPO3\CMS\Func\Controller\PageFunctionsController */
 $SOBE = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Func\\Controller\\PageFunctionsController');
index b2d60d6..7703b2b 100644 (file)
@@ -269,7 +269,7 @@ class IndexedPagesController extends \TYPO3\CMS\Backend\Module\AbstractFunctionM
                                $out .= '
                                <tr class="bgColor-20">
                                        <td>&nbsp;</td>
-                                       <td colspan="' . ($this->returnNumberOfColumns() - 1) . '">' . $this->pObj->doc->icons(3) . '<span class="">There were more than ' . $this->maxListPerPage . ' rows. <a href="' . htmlspecialchars(('index.php?id=' . $this->pObj->id . '&listALL=1')) . '">Click here to list them ALL!</a></span></td>
+                                       <td colspan="' . ($this->returnNumberOfColumns() - 1) . '">' . $this->pObj->doc->icons(3) . '<span class="">There were more than ' . $this->maxListPerPage . ' rows. <a href="' . htmlspecialchars(BackendUtility::getModuleUrl('web_info', array('id' => $this->pObj->id, 'listAll' => 1))) . '">Click here to list them ALL!</a></span></td>
                                </tr>';
                        }
                } else {
@@ -796,7 +796,7 @@ class IndexedPagesController extends \TYPO3\CMS\Backend\Module\AbstractFunctionM
         * @todo Define visibility
         */
        public function linkList() {
-               return '<br /><a href="index.php?id=' . $this->pObj->id . '">Back to list.</a><br />';
+               return '<br /><a href="' . htmlspecialchars(BackendUtility::getModuleUrl('web_info', array('id' => $this->pObj->id))) . '">Back to list.</a><br />';
        }
 
        /**
@@ -808,7 +808,7 @@ class IndexedPagesController extends \TYPO3\CMS\Backend\Module\AbstractFunctionM
         * @todo Define visibility
         */
        public function showPageDetails($string, $id) {
-               return '<a href="' . htmlspecialchars(('index.php?id=' . $id . '&SET[depth]=0&SET[type]=1')) . '">' . $string . '</a>';
+               return '<a href="' . htmlspecialchars(BackendUtility::getModuleUrl('web_info', array('id' => $id, 'SET' => array('depth' => 0, 'type' => 1)))) . '">' . $string . '</a>';
        }
 
        /**
index e19d88f..f2f9329 100644 (file)
@@ -109,7 +109,7 @@ class InfoModuleController extends \TYPO3\CMS\Backend\Module\BaseScriptClass {
                        ');
                        // Setting up the context sensitive menu:
                        $this->doc->getContextMenuCode();
-                       $this->doc->form = '<form action="index.php" method="post" name="webinfoForm">';
+                       $this->doc->form = '<form action="' . htmlspecialchars(BackendUtility::getModuleUrl('web_info')) . '" method="post" name="webinfoForm">';
                        $vContent = $this->doc->getVersionSelector($this->id, 1);
                        if ($vContent) {
                                $this->content .= $this->doc->section('', $vContent);
index f060966..7f10abc 100755 (executable)
@@ -1,8 +1,6 @@
 <?php
-define('TYPO3_MOD_PATH', 'sysext/info/mod1/');
-$BACK_PATH = '../../../';
 $MLANG['default']['tabs_images']['tab'] = 'info.gif';
 $MLANG['default']['ll_ref'] = 'LLL:EXT:lang/locallang_mod_web_info.xlf';
-$MCONF['script'] = 'index.php';
+$MCONF['script'] = '_DISPATCH';
 $MCONF['access'] = 'user,group';
 $MCONF['name'] = 'web_info';
index 03cbcc2..4b5039e 100755 (executable)
  *
  * @author Kasper Skårhøj <kasperYYYY@typo3.com>
  */
-unset($MCONF);
-require __DIR__ . '/conf.php';
-require $BACK_PATH . 'init.php';
-
 $SOBE = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Info\\Controller\\InfoModuleController');
 $SOBE->init();
 // Checking for first level external objects
index cfa10a7..7935618 100644 (file)
@@ -141,7 +141,14 @@ class SortPagesWizardModuleFunction extends \TYPO3\CMS\Backend\Module\AbstractFu
         * @todo Define visibility
         */
        public function wiz_linkOrder($title, $order) {
-               return '<a class="t3-link" href="' . htmlspecialchars(('index.php?id=' . $GLOBALS['SOBE']->id . '&sortByField=' . $order)) . '" onclick="return confirm(' . GeneralUtility::quoteJSvalue($GLOBALS['LANG']->getLL('wiz_changeOrder_msg1')) . ')">' . htmlspecialchars($title) . '</a>';
+               return '<a class="t3-link" href="' . htmlspecialchars(
+                       BackendUtility::getModuleUrl('web_func',
+                               array(
+                                       'id' => $GLOBALS['SOBE']->id,
+                                       'sortByField' => $order
+                               )
+                       )
+               ) . '" onclick="return confirm(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($GLOBALS['LANG']->getLL('wiz_changeOrder_msg1')) . ')">' . htmlspecialchars($title) . '</a>';
        }
 
-}
+}
\ No newline at end of file