[TASK] cms/layout entry scripts cleanup 61/32461/12
authorWouter Wolters <typo3@wouterwolters.nl>
Wed, 27 Aug 2014 20:44:48 +0000 (22:44 +0200)
committerChristian Kuhn <lolli@schwarzbu.ch>
Tue, 27 Jan 2015 20:22:30 +0000 (21:22 +0100)
Make db_layout.php and db_new_content_el.php dispatched.

Resolves: #55668
Releases: master
Change-Id: Idf26297171ca2d4dd3961fea3d9060a8ff4798c2
Reviewed-on: http://review.typo3.org/32461
Reviewed-by: Benjamin Mack <benni@typo3.org>
Tested-by: Benjamin Mack <benni@typo3.org>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
18 files changed:
typo3/sysext/backend/Classes/ClickMenu/ClickMenu.php
typo3/sysext/backend/Classes/Controller/ContentElement/NewContentElementController.php
typo3/sysext/backend/Classes/Controller/NewRecordController.php
typo3/sysext/backend/Classes/Controller/PageLayoutController.php
typo3/sysext/backend/Classes/View/PageLayoutView.php
typo3/sysext/backend/Modules/Layout/index.php [new file with mode: 0644]
typo3/sysext/backend/Modules/NewContentElement/conf.php [new file with mode: 0644]
typo3/sysext/backend/Modules/NewContentElement/index.php [new file with mode: 0644]
typo3/sysext/backend/Resources/Public/Icons/module-page.png [new file with mode: 0644]
typo3/sysext/backend/ext_tables.php
typo3/sysext/cms/Resources/Public/Icons/module-page.png [deleted file]
typo3/sysext/cms/ext_tables.php
typo3/sysext/cms/layout/conf.php
typo3/sysext/cms/layout/db_layout.php
typo3/sysext/cms/layout/db_new_content_el.php
typo3/sysext/cms/layout/layout.gif [deleted file]
typo3/sysext/frontend/Classes/View/AdminPanelView.php
typo3/sysext/recordlist/Classes/RecordList/DatabaseRecordList.php

index 0292737..0e73782 100644 (file)
@@ -622,7 +622,7 @@ class ClickMenu {
        }
 
        /**
-        * Adding CM element for Create new wizard (either db_new.php or sysext/cms/layout/db_new_content_el.php or custom wizard)
+        * Adding CM element for Create new wizard (either db_new.php or BackendUtility::getModuleUrl('new_content_element') or custom wizard)
         *
         * @param string $table Table name
         * @param int $uid UID for the current record.
@@ -634,8 +634,9 @@ class ClickMenu {
                //  If mod.web_list.newContentWiz.overrideWithExtension is set, use that extension's create new content wizard instead:
                $tmpTSc = BackendUtility::getModTSconfig($this->pageinfo['uid'], 'mod.web_list');
                $tmpTSc = $tmpTSc['properties']['newContentWiz.']['overrideWithExtension'];
-               $newContentWizScriptPath = ExtensionManagementUtility::isLoaded($tmpTSc) ? ExtensionManagementUtility::extRelPath($tmpTSc) . 'mod1/db_new_content_el.php' : 'sysext/cms/layout/db_new_content_el.php';
-               $url = $table === 'pages' ? 'db_new.php?id=' . $uid . '&pagesOnly=1' : $newContentWizScriptPath . '?id=' . $rec['pid'] . '&sys_language_uid=' . (int)$rec['sys_language_uid'];
+
+               $newContentWizScriptPath = ExtensionManagementUtility::isLoaded($tmpTSc) ? ExtensionManagementUtility::extRelPath($tmpTSc) . 'mod1/db_new_content_el.php?' : BackendUtility::getModuleUrl('new_content_element') . '&';
+               $url = $table === 'pages' ? 'db_new.php?id=' . $uid . '&pagesOnly=1' : $newContentWizScriptPath . 'id=' . $rec['pid'] . '&sys_language_uid=' . (int)$rec['sys_language_uid'];
                return $this->linkItem($this->languageService->makeEntities($this->languageService->getLL('CM_newWizard')), IconUtility::getSpriteIcon('actions-' . ($table === 'pages' ? 'page' : 'document') . '-new'), $this->urlRefForCM($url, 'returnUrl'), 0);
        }
 
index 2c8fde6..2b7a5c0 100644 (file)
@@ -99,6 +99,12 @@ class NewContentElementController {
         * @return void
         */
        public function init() {
+               $GLOBALS['LANG']->includeLLFile('EXT:lang/locallang_misc.xlf');
+               $LOCAL_LANG_orig = $GLOBALS['LOCAL_LANG'];
+               $GLOBALS['LANG']->includeLLFile('EXT:cms/layout/locallang_db_new_content_el.xlf');
+               \TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule($LOCAL_LANG_orig, $GLOBALS['LOCAL_LANG']);
+               $GLOBALS['LOCAL_LANG'] = $LOCAL_LANG_orig;
+
                // Setting internal vars:
                $this->id = (int)GeneralUtility::_GP('id');
                $this->sys_language = (int)GeneralUtility::_GP('sys_language_uid');
index defae04..22fd711 100644 (file)
@@ -428,8 +428,8 @@ class NewRecordController {
                                                        $rowContent = '<div class="typo3-newRecord-treeline">' . $firstLevel . $newContentIcon . '&nbsp;<strong>' . $GLOBALS['LANG']->getLL('createNewContent') . '</strong></div>';
                                                        // If mod.web_list.newContentWiz.overrideWithExtension is set, use that extension's wizard instead:
                                                        $overrideExt = $this->web_list_modTSconfig['properties']['newContentWiz.']['overrideWithExtension'];
-                                                       $pathToWizard = ExtensionManagementUtility::isLoaded($overrideExt) ? ExtensionManagementUtility::extRelPath($overrideExt) . 'mod1/db_new_content_el.php' : 'sysext/cms/layout/db_new_content_el.php';
-                                                       $href = $pathToWizard . '?id=' . $this->id . '&returnUrl=' . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI'));
+                                                       $pathToWizard = ExtensionManagementUtility::isLoaded($overrideExt) ? ExtensionManagementUtility::extRelPath($overrideExt) . 'mod1/db_new_content_el.php?' : BackendUtility::getModuleUrl('new_content_element') . '&';
+                                                       $href = $pathToWizard . 'id=' . $this->id . '&returnUrl=' . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI'));
                                                        $rowContent .= '<div class="typo3-newRecord-treeline">' . $secondLevel . $newLink . '</div><div class="typo3-newRecord-treeline">' . $secondLevelLast . '<a href="' . htmlspecialchars($href) . '">' . $newContentIcon . htmlspecialchars($GLOBALS['LANG']->getLL('clickForWizard')) . '</a></div>';
                                                        // Half-line added:
                                                        $rowContent .= '<div class="typo3-newRecord-treeline">' . $halfLine . '</div>';
index 6bde965..485680b 100644 (file)
@@ -247,6 +247,8 @@ class PageLayoutController {
         * @return void
         */
        public function init() {
+               $GLOBALS['LANG']->includeLLFile('EXT:cms/layout/locallang.xlf');
+
                // Setting module configuration / page select clause
                $this->MCONF = $GLOBALS['MCONF'];
                $this->perms_clause = $GLOBALS['BE_USER']->getPagePermsClause(1);
@@ -349,7 +351,7 @@ class PageLayoutController {
                }
                $this->MOD_MENU['function'] = BackendUtility::unsetMenuItems($this->modTSconfig['properties'], $this->MOD_MENU['function'], 'menu.function');
                // Remove QuickEdit as option if page type is not...
-               if (!GeneralUtility::inList(($GLOBALS['TYPO3_CONF_VARS']['FE']['content_doktypes'] . ',6'), $this->pageinfo['doktype'])) {
+               if (!GeneralUtility::inList($GLOBALS['TYPO3_CONF_VARS']['FE']['content_doktypes'] . ',6', $this->pageinfo['doktype'])) {
                        unset($this->MOD_MENU['function'][0]);
                }
                // Setting alternative default label:
@@ -357,7 +359,7 @@ class PageLayoutController {
                        $this->MOD_MENU['language'][0] = $this->modTSconfig['properties']['defaultLanguageLabel'] ? $this->modSharedTSconfig['properties']['defaultLanguageLabel'] : $this->modSharedTSconfig['properties']['defaultLanguageLabel'];
                }
                // Clean up settings
-               $this->MOD_SETTINGS = BackendUtility::getModuleData($this->MOD_MENU, GeneralUtility::_GP('SET'), $this->MCONF['name']);
+               $this->MOD_SETTINGS = BackendUtility::getModuleData($this->MOD_MENU, GeneralUtility::_GP('SET'), 'web_layout');
                // For all elements to be shown in draft workspaces & to also show hidden elements by default if user hasn't disabled the option
                if ($GLOBALS['BE_USER']->workspace != 0 || $this->MOD_SETTINGS['tt_content_showHidden'] !== '0') {
                        $this->MOD_SETTINGS['tt_content_showHidden'] = 1;
@@ -556,10 +558,13 @@ class PageLayoutController {
                                }
                        ');
                        // Setting doc-header
-                       $this->doc->form = '<form action="' . htmlspecialchars(('db_layout.php?id=' . $this->id . '&imagemode=' . $this->imagemode)) . '" method="post">';
+                       $this->doc->form = '<form action="' . htmlspecialchars(
+                               BackendUtility::getModuleUrl(
+                                       'web_layout', array('id' => $this->id, 'imagemode' =>  $this->imagemode)
+                               )) . '" method="post">';
                        // Creating the top function menu:
-                       $this->topFuncMenu = BackendUtility::getFuncMenu($this->id, 'SET[function]', $this->MOD_SETTINGS['function'], $this->MOD_MENU['function'], 'db_layout.php', '');
-                       $this->languageMenu = count($this->MOD_MENU['language']) > 1 ? $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_general.xlf:LGL.language', TRUE) . BackendUtility::getFuncMenu($this->id, 'SET[language]', $this->current_sys_language, $this->MOD_MENU['language'], 'db_layout.php', '') : '';
+                       $this->topFuncMenu = BackendUtility::getFuncMenu($this->id, 'SET[function]', $this->MOD_SETTINGS['function'], $this->MOD_MENU['function'], '', '');
+                       $this->languageMenu = count($this->MOD_MENU['language']) > 1 ? $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_general.xlf:LGL.language', TRUE) . BackendUtility::getFuncMenu($this->id, 'SET[language]', $this->current_sys_language, $this->MOD_MENU['language'], '', '') : '';
                        // Find backend layout / coumns
                        $backendLayout = GeneralUtility::callUserFunction(\TYPO3\CMS\Backend\View\BackendLayoutView::class . '->getSelectedBackendLayout', $this->id, $this);
                        if (count($backendLayout['__colPosList'])) {
@@ -656,7 +661,7 @@ class PageLayoutController {
                // Alternative template
                $this->doc->setModuleTemplate('EXT:backend/Resources/Private/Templates/db_layout_quickedit.html');
                // Alternative form tag; Quick Edit submits its content to tce_db.php.
-               $this->doc->form = '<form action="' . htmlspecialchars(($GLOBALS['BACK_PATH'] . 'tce_db.php?&prErr=1&uPT=1')) . '" method="post" enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '" name="editform" onsubmit="return TBE_EDITOR.checkSubmit(1);">';
+               $this->doc->form = '<form action="' . htmlspecialchars($GLOBALS['BACK_PATH'] . 'tce_db.php?&prErr=1&uPT=1') . '" method="post" enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '" name="editform" onsubmit="return TBE_EDITOR.checkSubmit(1);">';
                // Setting up the context sensitive menu:
                $this->doc->getContextMenuCode();
                // Set the edit_record value for internal use in this function:
@@ -759,7 +764,9 @@ class PageLayoutController {
                // Return-url for JavaScript:
                $retUrlStr = $this->returnUrl ? '+\'&returnUrl=\'+\'' . rawurlencode($this->returnUrl) . '\'' : '';
                // Drawing the edit record selectbox
-               $this->editSelect = '<select name="edit_record" onchange="' . htmlspecialchars(('jumpToUrl(' . GeneralUtility::quoteJSvalue('db_layout.php?id=' . $this->id . '&edit_record=') . '+escape(this.options[this.selectedIndex].value)' . $retUrlStr . ',this);')) . '">' . implode('', $opt) . '</select>';
+               $this->editSelect = '<select name="edit_record" onchange="' . htmlspecialchars('jumpToUrl(' . GeneralUtility::quoteJSvalue(
+                       BackendUtility::getModuleUrl('web_layout') . '&id=' . $this->id . '&edit_record='
+               ) . '+escape(this.options[this.selectedIndex].value)' . $retUrlStr . ',this);') . '">' . implode('', $opt) . '</select>';
                // Creating editing form:
                if ($GLOBALS['BE_USER']->check('tables_modify', $this->eRParts[0]) && $edit_record && ($this->eRParts[0] !== 'pages' && $this->EDIT_CONTENT || $this->eRParts[0] === 'pages' && $this->CALC_PERMS & 1)) {
                        // Splitting uid parts for special features, if new:
@@ -826,7 +833,14 @@ class PageLayoutController {
                                        <input type="hidden" name="_serialNumber" value="' . md5(microtime()) . '" />
                                        <input type="hidden" name="_disableRTE" value="' . $tceforms->disableRTE . '" />
                                        <input type="hidden" name="edit_record" value="' . $edit_record . '" />
-                                       <input type="hidden" name="redirect" value="' . htmlspecialchars(($uidVal == 'new' ? ExtensionManagementUtility::extRelPath('cms') . 'layout/db_layout.php?id=' . $this->id . '&new_unique_uid=' . $new_unique_uid . '&returnUrl=' . rawurlencode($this->returnUrl) : $this->R_URI)) . '" />
+                                       <input type="hidden" name="redirect" value="' . htmlspecialchars(($uidVal == 'new' ? BackendUtility::getModuleUrl(
+                                               'web_layout',
+                                               array(
+                                                       'id' => $this->id,
+                                                       'new_unique_uid' => $new_unique_uid,
+                                                       'returnUrl' => $this->returnUrl
+                                               )
+                                       ) : $this->R_URI)) . '" />
                                        ' . \TYPO3\CMS\Backend\Form\FormEngine::getHiddenTokenField('tceAction');
                                // Add JavaScript as needed around the form:
                                $theCode = $tceforms->printNeededJSFunctions_top() . $theCode . $tceforms->printNeededJSFunctions();
@@ -851,14 +865,14 @@ class PageLayoutController {
 
                $h_func_b = '<div class="checkbox">' .
                        '<label for="checkTt_content_showHidden">' .
-                       BackendUtility::getFuncCheck($this->id, 'SET[tt_content_showHidden]', $this->MOD_SETTINGS['tt_content_showHidden'], 'db_layout.php', '', 'id="checkTt_content_showHidden"') .
+                       BackendUtility::getFuncCheck($this->id, 'SET[tt_content_showHidden]', $this->MOD_SETTINGS['tt_content_showHidden'], '', '', 'id="checkTt_content_showHidden"') .
                        (!$q_count ? ('<span class="text-muted">' . $GLOBALS['LANG']->getLL('hiddenCE', TRUE) . '</span>') : $GLOBALS['LANG']->getLL('hiddenCE', TRUE) . ' (' . $q_count . ')') .
                        '</label>' .
                        '</div>';
 
                $h_func_b .= '<div class="checkbox">' .
                        '<label for="checkShowPalettes">' .
-                       BackendUtility::getFuncCheck($this->id, 'SET[showPalettes]', $this->MOD_SETTINGS['showPalettes'], 'db_layout.php', '', 'id="checkShowPalettes"') .
+                       BackendUtility::getFuncCheck($this->id, 'SET[showPalettes]', $this->MOD_SETTINGS['showPalettes'], '', '', 'id="checkShowPalettes"') .
                        $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:labels.showPalettes', TRUE) .
                        '</label>' .
                        '</div>';
@@ -866,7 +880,7 @@ class PageLayoutController {
                if (ExtensionManagementUtility::isLoaded('context_help')) {
                        $h_func_b .= '<div class="checkbox">' .
                                '<label for="checkShowDescriptions">' .
-                               BackendUtility::getFuncCheck($this->id, 'SET[showDescriptions]', $this->MOD_SETTINGS['showDescriptions'], 'db_layout.php', '', 'id="checkShowDescriptions"') .
+                               BackendUtility::getFuncCheck($this->id, 'SET[showDescriptions]', $this->MOD_SETTINGS['showDescriptions'], '', '', 'id="checkShowDescriptions"') .
                                $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:labels.showDescriptions', TRUE) .
                                '</label>' .
                                '</div>';
@@ -874,7 +888,7 @@ class PageLayoutController {
                if ($GLOBALS['BE_USER']->isRTE()) {
                        $h_func_b .= '<div class="checkbox">' .
                                '<label for="checkDisableRTE">' .
-                               BackendUtility::getFuncCheck($this->id, 'SET[disableRTE]', $this->MOD_SETTINGS['disableRTE'], 'db_layout.php', '', 'id="checkDisableRTE"') .
+                               BackendUtility::getFuncCheck($this->id, 'SET[disableRTE]', $this->MOD_SETTINGS['disableRTE'], '', '', 'id="checkDisableRTE"') .
                                $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:labels.disableRTE', TRUE) .
                                '</label>' .
                                '</div>';
@@ -920,7 +934,7 @@ class PageLayoutController {
                $dblist->no_noWrap = 1;
                $dblist->descrTable = $this->descrTable;
                $this->pointer = MathUtility::forceIntegerInRange($this->pointer, 0, 100000);
-               $dblist->script = 'db_layout.php';
+               $dblist->script = BackendUtility::getModuleUrl('web_layout');
                $dblist->showIcon = 0;
                $dblist->setLMargin = 0;
                $dblist->doEdit = $this->EDIT_CONTENT;
@@ -950,7 +964,7 @@ class PageLayoutController {
 
                                $h_func_b = '<div class="checkbox">' .
                                        '<label for="checkTt_content_showHidden">' .
-                                       BackendUtility::getFuncCheck($this->id, 'SET[tt_content_showHidden]', $this->MOD_SETTINGS['tt_content_showHidden'], 'db_layout.php', '', 'id="checkTt_content_showHidden"') .
+                                       BackendUtility::getFuncCheck($this->id, 'SET[tt_content_showHidden]', $this->MOD_SETTINGS['tt_content_showHidden'], '', '', 'id="checkTt_content_showHidden"') .
                                        (!$q_count ? ('<span class="text-muted">' . $GLOBALS['LANG']->getLL('hiddenCE') . '</span>') : $GLOBALS['LANG']->getLL('hiddenCE') . ' (' . $q_count . ')') .
                                        '</label>' .
                                        '</div>';
@@ -1002,7 +1016,7 @@ class PageLayoutController {
                                }
                        } else {
                                if (isset($this->MOD_SETTINGS) && isset($this->MOD_MENU)) {
-                                       $h_func = BackendUtility::getFuncMenu($this->id, 'SET[' . $table . ']', $this->MOD_SETTINGS[$table], $this->MOD_MENU[$table], 'db_layout.php', '');
+                                       $h_func = BackendUtility::getFuncMenu($this->id, 'SET[' . $table . ']', $this->MOD_SETTINGS[$table], $this->MOD_MENU[$table], '', '');
                                } else {
                                        $h_func = '';
                                }
@@ -1112,12 +1126,12 @@ class PageLayoutController {
                }
                // Cache
                if (!$this->modTSconfig['properties']['disableAdvanced']) {
-                       $buttons['cache'] = '<a href="' . htmlspecialchars(('db_layout.php?id=' . $this->pageinfo['uid'] . '&clear_cache=1')) . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:labels.clear_cache', TRUE) . '">' . IconUtility::getSpriteIcon('actions-system-cache-clear') . '</a>';
+                       $buttons['cache'] = '<a href="' . htmlspecialchars(BackendUtility::getModuleUrl('web_layout', array('id' => $this->pageinfo['uid'], 'clear_cache' => '1'))) . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:labels.clear_cache', TRUE) . '">' . IconUtility::getSpriteIcon('actions-system-cache-clear') . '</a>';
                }
                if (!$this->modTSconfig['properties']['disableIconToolbar']) {
                        // Move record
                        if (MathUtility::canBeInterpretedAsInteger($this->eRParts[1])) {
-                               $buttons['move_record'] = '<a href="' . htmlspecialchars(($GLOBALS['BACK_PATH'] . 'move_el.php?table=' . $this->eRParts[0] . '&uid=' . $this->eRParts[1] . '&returnUrl=' . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI')))) . '">' . IconUtility::getSpriteIcon(('actions-' . ($this->eRParts[0] == 'tt_content' ? 'document' : 'page') . '-move'), array('class' => 'c-inputButton', 'title' => $GLOBALS['LANG']->getLL(('move_' . ($this->eRParts[0] == 'tt_content' ? 'record' : 'page')), TRUE))) . '</a>';
+                               $buttons['move_record'] = '<a href="' . htmlspecialchars($GLOBALS['BACK_PATH'] . 'move_el.php?table=' . $this->eRParts[0] . '&uid=' . $this->eRParts[1] . '&returnUrl=' . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI'))) . '">' . IconUtility::getSpriteIcon(('actions-' . ($this->eRParts[0] == 'tt_content' ? 'document' : 'page') . '-move'), array('class' => 'c-inputButton', 'title' => $GLOBALS['LANG']->getLL(('move_' . ($this->eRParts[0] == 'tt_content' ? 'record' : 'page')), TRUE))) . '</a>';
                        }
 
                        // Edit page properties and page language overlay icons
@@ -1176,10 +1190,10 @@ class PageLayoutController {
                                // Save record and show page
                                $buttons['savedokshow'] = '<a href="#" onclick="' . htmlspecialchars('document.editform.redirect.value+=\'&popView=1\'; TBE_EDITOR.checkAndDoSubmit(1); return false;') . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:rm.saveDocShow', TRUE) . '">' . IconUtility::getSpriteIcon('actions-document-save-view') . '</a>';
                                // Close record
-                               $buttons['closedok'] = '<a href="#" onclick="' . htmlspecialchars(('jumpToUrl(unescape(\'' . rawurlencode($this->closeUrl) . '\')); return false;')) . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:rm.closeDoc', TRUE) . '">' . IconUtility::getSpriteIcon('actions-document-close') . '</a>';
+                               $buttons['closedok'] = '<a href="#" onclick="' . htmlspecialchars('jumpToUrl(unescape(\'' . rawurlencode($this->closeUrl) . '\')); return false;') . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:rm.closeDoc', TRUE) . '">' . IconUtility::getSpriteIcon('actions-document-close') . '</a>';
                                // Delete record
                                if ($this->deleteButton) {
-                                       $buttons['deletedok'] = '<a href="#" onclick="' . htmlspecialchars(('return deleteRecord(\'' . $this->eRParts[0] . '\',\'' . $this->eRParts[1] . '\',\'' . GeneralUtility::getIndpEnv('SCRIPT_NAME') . '?id=' . $this->id . '\');')) . '" title="' . $GLOBALS['LANG']->getLL('deleteItem', TRUE) . '">' . IconUtility::getSpriteIcon('actions-edit-delete') . '</a>';
+                                       $buttons['deletedok'] = '<a href="#" onclick="' . htmlspecialchars('return deleteRecord(\'' . $this->eRParts[0] . '\',\'' . $this->eRParts[1] . '\',\'' . GeneralUtility::getIndpEnv('SCRIPT_NAME') . '?id=' . $this->id . '\');') . '" title="' . $GLOBALS['LANG']->getLL('deleteItem', TRUE) . '">' . IconUtility::getSpriteIcon('actions-edit-delete') . '</a>';
                                }
                                if ($this->undoButton) {
                                        // Undo button
@@ -1197,7 +1211,7 @@ class PageLayoutController {
                                                                        )
                                                                )
                                                        ) . '; return false;') . '"
-                                               title="' . htmlspecialchars(sprintf($GLOBALS['LANG']->getLL('undoLastChange'), BackendUtility::calcAge(($GLOBALS['EXEC_TIME'] - $this->undoButtonR['tstamp']), $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:labels.minutesHoursDaysYears')))) . '">' . IconUtility::getSpriteIcon('actions-edit-undo') . '</a>';
+                                               title="' . htmlspecialchars(sprintf($GLOBALS['LANG']->getLL('undoLastChange'), BackendUtility::calcAge($GLOBALS['EXEC_TIME'] - $this->undoButtonR['tstamp'], $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:labels.minutesHoursDaysYears')))) . '">' . IconUtility::getSpriteIcon('actions-edit-undo') . '</a>';
                                        // History button
                                        $buttons['history_record'] = '<a href="#"
                                                onclick="' . htmlspecialchars('jumpToUrl(' .
index b189923..ee8f047 100644 (file)
@@ -519,10 +519,10 @@ class PageLayoutView extends \TYPO3\CMS\Recordlist\RecordList\AbstractDatabaseRe
                                                        if (!$disableMoveAndNewButtons) {
                                                                // New content element:
                                                                if ($this->option_newWizard) {
-                                                                       $onClick = 'window.location.href=\'db_new_content_el.php?id=' . $row['pid']
+                                                                       $onClick = 'window.location.href=' . GeneralUtility::quoteJSvalue(BackendUtility::getModuleUrl('new_content_element') . '&id=' . $row['pid']
                                                                                . '&sys_language_uid=' . $row['sys_language_uid'] . '&colPos=' . $row['colPos']
                                                                                . '&uid_pid=' . -$row['uid'] .
-                                                                               '&returnUrl=' . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI')) . '\';';
+                                                                               '&returnUrl=' . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI'))) . ';';
                                                                } else {
                                                                        $params = '&edit[tt_content][' . -$row['uid'] . ']=new';
                                                                        $onClick = BackendUtility::editOnClick($params, $this->backPath);
@@ -772,9 +772,10 @@ class PageLayoutView extends \TYPO3\CMS\Recordlist\RecordList\AbstractDatabaseRe
                                        $rowOut = '';
                                        // If it turns out that there are not content elements in the column, then display a big button which links directly to the wizard script:
                                        if ($this->doEdit && $this->option_showBigButtons && !(int)$key && $numberOfContentElementsInColumn == 0) {
-                                               $onClick = 'window.location.href=\'db_new_content_el.php?id=' . $id . '&colPos=' . (int)$key
+                                               $onClick = 'window.location.href='
+                                                       . GeneralUtility::quoteJSvalue(BackendUtility::getModuleUrl('new_content_element') . '&id=' . $id . '&colPos=' . (int)$key
                                                        . '&sys_language_uid=' . $lP . '&uid_pid=' . $id . '&returnUrl='
-                                                       . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI')) . '\';';
+                                                       . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI'))) . ';';
                                                $theNewButton = $this->getPageLayoutController()->doc->t3Button($onClick, $this->getLanguageService()->getLL('newPageContent'));
                                                $theNewButton = '<img src="clear.gif" width="1" height="5" alt="" /><br />' . $theNewButton;
                                        } else {
@@ -889,9 +890,10 @@ class PageLayoutView extends \TYPO3\CMS\Recordlist\RecordList\AbstractDatabaseRe
                        }
                        if ($this->doEdit && $this->ext_function == 1) {
                                $bArray[3] = $this->getPageLayoutController()->doc->t3Button(
-                                       'window.location.href=\'db_new_content_el.php?id=' . $id
+                                       'window.location.href='
+                                               . GeneralUtility::quoteJSvalue(BackendUtility::getModuleUrl('new_content_element') . '&id=' . $id
                                                . '&sys_language_uid=' . $this->getPageLayoutController()->current_sys_language
-                                               . '&returnUrl=' . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI')) . '\';',
+                                               . '&returnUrl=' . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI'))) . ';',
                                        $this->getLanguageService()->getLL('newPageContent2')
                                );
                        }
@@ -1738,7 +1740,7 @@ class PageLayoutView extends \TYPO3\CMS\Recordlist\RecordList\AbstractDatabaseRe
         */
        public function newContentElementOnClick($id, $colPos, $sys_language) {
                if ($this->option_newWizard) {
-                       $onClick = 'window.location.href=\'db_new_content_el.php?id=' . $id . '&colPos=' . $colPos
+                       $onClick = 'window.location.href=\'' . BackendUtility::getModuleUrl('new_content_element') . '&id=' . $id . '&colPos=' . $colPos
                                . '&sys_language_uid=' . $sys_language . '&uid_pid=' . $id
                                . '&returnUrl=' . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI')) . '\';';
                } else {
diff --git a/typo3/sysext/backend/Modules/Layout/index.php b/typo3/sysext/backend/Modules/Layout/index.php
new file mode 100644 (file)
index 0000000..19596d0
--- /dev/null
@@ -0,0 +1,97 @@
+<?php
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+/**
+ * Local extension of position map class
+ *
+ * @author Kasper Skårhøj <kasperYYYY@typo3.com>
+ */
+class ext_posMap extends \TYPO3\CMS\Backend\Tree\View\PagePositionMap {
+
+       /**
+        * @var bool
+        */
+       public $dontPrintPageInsertIcons = 1;
+
+       /**
+        * @var string
+        */
+       public $l_insertNewRecordHere = 'newContentElement';
+
+       /**
+        * Wrapping the title of the record.
+        *
+        * @param string $str The title value.
+        * @param array $row The record row.
+        * @return string Wrapped title string.
+        */
+       public function wrapRecordTitle($str, $row) {
+               $aOnClick = 'jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($GLOBALS['SOBE']->local_linkThisScript(array('edit_record' => ('tt_content:' . $row['uid'])))) . ');return false;';
+               return '<a href="#" onclick="' . htmlspecialchars($aOnClick) . '">' . $str . '</a>';
+       }
+
+       /**
+        * Wrapping the column header
+        *
+        * @param string $str Header value
+        * @param string $vv Column info.
+        * @return string
+        * @see printRecordMap()
+        */
+       public function wrapColumnHeader($str, $vv) {
+               $aOnClick = 'jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($GLOBALS['SOBE']->local_linkThisScript(array('edit_record' => ('_EDIT_COL:' . $vv)))) . ');return false;';
+               return '<a href="#" onclick="' . htmlspecialchars($aOnClick) . '">' . $str . '</a>';
+       }
+
+       /**
+        * Create on-click event value.
+        *
+        * @param array $row The record.
+        * @param string $vv Column position value.
+        * @param int $moveUid Move uid
+        * @param int $pid PID value.
+        * @param int $sys_lang System language
+        * @return string
+        */
+       public function onClickInsertRecord($row, $vv, $moveUid, $pid, $sys_lang = 0) {
+               if (is_array($row)) {
+                       $location = $GLOBALS['SOBE']->local_linkThisScript(array('edit_record' => 'tt_content:new/-' . $row['uid'] . '/' . $row['colPos']));
+               } else {
+                       $location = $GLOBALS['SOBE']->local_linkThisScript(array('edit_record' => 'tt_content:new/' . $pid . '/' . $vv));
+               }
+               return 'jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($location) . ');return false;';
+       }
+
+       /**
+        * Wrapping the record header  (from getRecordHeader())
+        *
+        * @param string $str HTML content
+        * @param array $row Record array.
+        * @return string HTML content
+        */
+       public function wrapRecordHeader($str, $row) {
+               if ($row['uid'] == $this->moveUid) {
+                       return '<img' . \TYPO3\CMS\Backend\Utility\IconUtility::skinImg($GLOBALS['BACK_PATH'], 'gfx/content_client.gif', 'width="7" height="10"') . ' alt="" />' . $str;
+               } else {
+                       return $str;
+               }
+       }
+
+}
+
+$SOBE = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Controller\PageLayoutController::class);
+$SOBE->init();
+$SOBE->clearCache();
+$SOBE->main();
+$SOBE->printContent();
diff --git a/typo3/sysext/backend/Modules/NewContentElement/conf.php b/typo3/sysext/backend/Modules/NewContentElement/conf.php
new file mode 100644 (file)
index 0000000..e7a83fa
--- /dev/null
@@ -0,0 +1,3 @@
+<?php
+$MCONF['script'] = '_DISPATCH';
+$MCONF['name'] = 'new_content_element';
\ No newline at end of file
diff --git a/typo3/sysext/backend/Modules/NewContentElement/index.php b/typo3/sysext/backend/Modules/NewContentElement/index.php
new file mode 100644 (file)
index 0000000..a21ba89
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+/**
+ * Local position map class
+ *
+ * @author Kasper Skårhøj <kasperYYYY@typo3.com>
+ */
+class ext_posMap extends \TYPO3\CMS\Backend\Tree\View\PagePositionMap {
+
+       /**
+        * @var bool
+        */
+       public $dontPrintPageInsertIcons = 1;
+
+       /**
+        * Wrapping the title of the record - here we just return it.
+        *
+        * @param string $str The title value.
+        * @param array $row The record row.
+        * @return string Wrapped title string.
+        */
+       public function wrapRecordTitle($str, $row) {
+               return $str;
+       }
+
+       /**
+        * Create on-click event value.
+        *
+        * @param array $row The record.
+        * @param string $vv Column position value.
+        * @param int $moveUid Move uid
+        * @param int $pid PID value.
+        * @param int $sys_lang System language
+        * @return string
+        */
+       public function onClickInsertRecord($row, $vv, $moveUid, $pid, $sys_lang = 0) {
+               $location = $this->backPath . 'alt_doc.php?edit[tt_content][' . (is_array($row) ? -$row['uid'] : $pid) . ']=new&defVals[tt_content][colPos]=' . $vv . '&defVals[tt_content][sys_language_uid]=' . $sys_lang . '&returnUrl=' . rawurlencode($GLOBALS['SOBE']->R_URI);
+               return 'window.location.href=' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($location) . '+document.editForm.defValues.value; return false;';
+       }
+
+}
+
+$SOBE = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController::class);
+$SOBE->init();
+$SOBE->main();
+$SOBE->printContent();
\ No newline at end of file
diff --git a/typo3/sysext/backend/Resources/Public/Icons/module-page.png b/typo3/sysext/backend/Resources/Public/Icons/module-page.png
new file mode 100644 (file)
index 0000000..154c119
Binary files /dev/null and b/typo3/sysext/backend/Resources/Public/Icons/module-page.png differ
index 6e5bf72..0376c15 100644 (file)
@@ -79,4 +79,28 @@ if (TYPO3_MODE === 'BE') {
                'wizard_backend_layout',
                \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY) . 'Modules/Wizards/BackendLayoutWizard/'
        );
+
+       \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModule(
+               'web',
+               'layout',
+               'top',
+               \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY) . 'Modules/Layout/',
+               array(
+                       'script' => '_DISPATCH',
+                       'access' => 'user,group',
+                       'name' => 'web_layout',
+                       'labels' => array(
+                               'tabs_images' => array(
+                                       'tab' => '../../Resources/Public/Icons/module-page.png',
+                               ),
+                               'll_ref' => 'LLL:EXT:cms/layout/locallang_mod.xlf',
+                       ),
+               )
+       );
+
+       // Register new content element module
+       \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModulePath(
+               'new_content_element',
+               \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY) . 'Modules/NewContentElement/'
+       );
 }
diff --git a/typo3/sysext/cms/Resources/Public/Icons/module-page.png b/typo3/sysext/cms/Resources/Public/Icons/module-page.png
deleted file mode 100644 (file)
index 154c119..0000000
Binary files a/typo3/sysext/cms/Resources/Public/Icons/module-page.png and /dev/null differ
index 2465952..363ca30 100644 (file)
@@ -2,7 +2,6 @@
 defined('TYPO3_MODE') or die();
 
 if (TYPO3_MODE === 'BE') {
-       \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModule('web', 'layout', 'top', \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY) . 'layout/');
        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('_MOD_web_layout', 'EXT:cms/locallang_csh_weblayout.xlf');
        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('_MOD_web_info', 'EXT:cms/locallang_csh_webinfo.xlf');
        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::insertModuleFunction(
@@ -19,4 +18,4 @@ if (TYPO3_MODE === 'BE') {
        );
 }
 // Add allowed records to pages:
-\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('pages_language_overlay,tt_content,sys_template,sys_domain,backend_layout');
\ No newline at end of file
+\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('pages_language_overlay,tt_content,sys_template,sys_domain,backend_layout');
index 10f48c1..ec101c4 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 define('TYPO3_MOD_PATH', 'sysext/cms/layout/');
 $BACK_PATH = '../../../';
-$MLANG['default']['tabs_images']['tab'] = '../Resources/Public/Icons/module-page.png';
+$MLANG['default']['tabs_images']['tab'] = '../../backend/Resources/Public/Icons/module-page.png';
 $MLANG['default']['ll_ref'] = 'LLL:EXT:cms/layout/locallang_mod.xlf';
 $MCONF['script'] = 'db_layout.php';
 $MCONF['access'] = 'user,group';
index 14aa20b..7cc360c 100644 (file)
@@ -105,8 +105,10 @@ class ext_posMap extends \TYPO3\CMS\Backend\Tree\View\PagePositionMap {
 
 }
 
-require_once \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('backend') . 'Classes/Controller/PageLayoutController.php';
-// Make instance:
+\TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
+       'The page layout class is moved to an own module. Please use BackendUtility::getModuleUrl(\'web_layout\') to link to db_layout.php. This script will be removed with version TYPO3 CMS 8.'
+);
+
 $SOBE = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Controller\PageLayoutController::class);
 $SOBE->init();
 $SOBE->clearCache();
index b703f69..9fd0d46 100644 (file)
@@ -71,8 +71,10 @@ class ext_posMap extends \TYPO3\CMS\Backend\Tree\View\PagePositionMap {
 
 }
 
-require_once \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('backend') . 'Classes/Controller/ContentElement/NewContentElementController.php';
-// Make instance:
+\TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(
+       'The new element class is moved to an own module. Please use BackendUtility::getModuleUrl(\'new_content_element\') to link to db_new_content_el.php. This script will be removed with version 8.'
+);
+
 $SOBE = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Controller\ContentElement\NewContentElementController::class);
 $SOBE->init();
 $SOBE->main();
diff --git a/typo3/sysext/cms/layout/layout.gif b/typo3/sysext/cms/layout/layout.gif
deleted file mode 100644 (file)
index 8f584c7..0000000
Binary files a/typo3/sysext/cms/layout/layout.gif and /dev/null differ
index b54e68b..1cddc5c 100644 (file)
@@ -597,7 +597,7 @@ class AdminPanelView {
                //  If mod.web_list.newContentWiz.overrideWithExtension is set, use that extension's create new content wizard instead:
                $tsConfig = BackendUtility::getModTSconfig($this->pageinfo['uid'], 'mod.web_list');
                $tsConfig = $tsConfig['properties']['newContentWiz.']['overrideWithExtension'];
-               $newContentWizScriptPath = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded($tsConfig) ? \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($tsConfig) . 'mod1/db_new_content_el.php' : TYPO3_mainDir . 'sysext/cms/layout/db_new_content_el.php';
+               $newContentWizScriptPath = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded($tsConfig) ? \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($tsConfig) . 'mod1/db_new_content_el.php?' : TYPO3_mainDir . BackendUtility::getModuleUrl('new_content_element') . '&';
                $perms = $GLOBALS['BE_USER']->calcPerms($GLOBALS['TSFE']->page);
                $langAllowed = $GLOBALS['BE_USER']->checkLanguageAccess($GLOBALS['TSFE']->sys_language_uid);
                $id = $GLOBALS['TSFE']->id;
@@ -611,7 +611,7 @@ class AdminPanelView {
                                $params = '&sys_language_uid=' . $GLOBALS['TSFE']->sys_language_uid;
                        }
                        $icon = IconUtility::getSpriteIcon('actions-document-new', array('title' => $this->extGetLL('edit_newContentElement', FALSE)));
-                       $toolBar .= '<a href="' . htmlspecialchars(($newContentWizScriptPath . '?id=' . $id . $params . '&returnUrl=' . $returnUrl)) . '">' . $icon . '</a>';
+                       $toolBar .= '<a href="' . htmlspecialchars(($newContentWizScriptPath . 'id=' . $id . $params . '&returnUrl=' . $returnUrl)) . '">' . $icon . '</a>';
                }
                if ($perms & 2) {
                        $icon = IconUtility::getSpriteIcon('actions-document-move', array('title' => $this->extGetLL('edit_move_page', FALSE)));
index 7d193f3..54f22d0 100644 (file)
@@ -924,17 +924,17 @@ class DatabaseRecordList extends AbstractDatabaseRecordList {
                                                                // If mod.web_list.newContentWiz.overrideWithExtension is set, use that extension's create new content wizard instead:
                                                                $tmpTSc = BackendUtility::getModTSconfig($this->pageinfo['uid'], 'mod.web_list');
                                                                $tmpTSc = $tmpTSc['properties']['newContentWiz.']['overrideWithExtension'];
-                                                               $wizardPath = ExtensionManagementUtility::isLoaded($tmpTSc)
-                                                                       ? ExtensionManagementUtility::extRelPath($tmpTSc) . 'mod1/db_new_content_el.php'
-                                                                       : 'sysext/cms/layout/db_new_content_el.php';
-                                                               $newContentWizScriptPath = $this->backPath . $wizardPath;
-                                                               $onClick = htmlspecialchars('return jumpExt(\'' . $newContentWizScriptPath . '?id=' . $this->id . '\');');
-                                                               $icon = '<a class="btn btn-success" href="#" onclick="' . $onClick . '" title="'
+                                                               $newContentWizScriptPath = ExtensionManagementUtility::isLoaded($tmpTSc)
+                                                                       ? $this->backPath . ExtensionManagementUtility::extRelPath($tmpTSc) . 'mod1/db_new_content_el.php?id=' . $this->id
+                                                                       : BackendUtility::getModuleUrl('new_content_element', array('id' => $this->id), $this->backPath);
+
+                                                               $onClick = 'return jumpExt(' . GeneralUtility::quoteJSvalue($newContentWizScriptPath) . ');';
+                                                               $icon = '<a class="btn btn-success" href="#" onclick="' . htmlspecialchars($onClick) . '" title="'
                                                                        . $GLOBALS['LANG']->getLL('new', TRUE) . '">' . $spriteIcon . '</a>';
                                                        } elseif ($table == 'pages' && $this->newWizards) {
-                                                               $href = htmlspecialchars($this->backPath . 'db_new.php?id=' . $this->id
-                                                                       . '&pagesOnly=1&returnUrl=' . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI')));
-                                                               $icon = '<a class="btn success" href="' . $href . '" title="' . $GLOBALS['LANG']->getLL('new', TRUE) . '">'
+                                                               $href = $this->backPath . 'db_new.php?id=' . $this->id
+                                                                       . '&pagesOnly=1&returnUrl=' . rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI'));
+                                                               $icon = '<a class="btn success" href="' . htmlspecialchars($href) . '" title="' . $GLOBALS['LANG']->getLL('new', TRUE) . '">'
                                                                        . $spriteIcon . '</a>';
                                                        } else {
                                                                $params = '&edit[' . $table . '][' . $this->id . ']=new';