[!!!][TASK] Move non-namespaced classes into correct places 76/36276/6
authorBenjamin Mack <benni@typo3.org>
Mon, 26 Jan 2015 15:31:59 +0000 (16:31 +0100)
committerTymoteusz Motylewski <t.motylewski@gmail.com>
Thu, 29 Jan 2015 14:44:19 +0000 (15:44 +0100)
There are a few leftover classes inside typo3/ which
haven't been moved or migrated yet into the according
places.

1. typo3/move_el.php. The extension classes
to PagePositionMap are now moved to
EXT:backend/Classes/Tree/View with according
names.

2. typo3/class.browse_links.php - several extensions
to the PageTreeView and the FolderTreeView.

3. typo3/db_new.php - an extension to the PageTreeView
is now located in EXT:backend/Tree/View/NewRecordPageTreeView

The base classes (localPageTree and localFolderTree)
have been moved to
EXT:backend/Classes/Tree/View/ElementBrowser*.

The subclasses for recordlist (regular record picker)
are moved into EXT:recordlist.

The subclasses used in RTEhtmlarea are adopted to
use the new naming scheme.

All calls within the core have been adopted. As
backwards compatibility, the old class names are
added to EXT:compatibility6.

3. The ext_autoload.php inside EXT:core is therefore
not needed anymore, the call inside Bootstrap is
not needed anymore.

Resolves: #64516
Releases: master
Change-Id: I926baace282d6e95d73607f974cd91296d2df890
Reviewed-on: http://review.typo3.org/36276
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Tymoteusz Motylewski <t.motylewski@gmail.com>
Tested-by: Tymoteusz Motylewski <t.motylewski@gmail.com>
20 files changed:
typo3/class.browse_links.php [deleted file]
typo3/db_new.php
typo3/move_el.php
typo3/sysext/backend/Classes/Controller/ContentElement/MoveElementController.php
typo3/sysext/backend/Classes/Controller/NewRecordController.php
typo3/sysext/backend/Classes/Tree/View/ContentMovingPagePositionMap.php [new file with mode: 0644]
typo3/sysext/backend/Classes/Tree/View/ElementBrowserFolderTreeView.php [new file with mode: 0644]
typo3/sysext/backend/Classes/Tree/View/ElementBrowserPageTreeView.php [new file with mode: 0644]
typo3/sysext/backend/Classes/Tree/View/MoveElementPageTreeView.php [new file with mode: 0644]
typo3/sysext/backend/Classes/Tree/View/NewRecordPageTreeView.php [new file with mode: 0644]
typo3/sysext/backend/Classes/Tree/View/PageMovingPagePositionMap.php [new file with mode: 0644]
typo3/sysext/backend/Classes/Tree/View/PagePositionMap.php
typo3/sysext/compatibility6/Migrations/Code/ClassAliasMap.php
typo3/sysext/core/Classes/Core/Bootstrap.php
typo3/sysext/core/ext_autoload.php [deleted file]
typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php
typo3/sysext/recordlist/Classes/Tree/View/ElementBrowserFolderTreeView.php [new file with mode: 0644]
typo3/sysext/recordlist/Classes/Tree/View/ElementBrowserPageTreeView.php [new file with mode: 0644]
typo3/sysext/rtehtmlarea/Classes/FolderTree.php
typo3/sysext/rtehtmlarea/Classes/PageTree.php

diff --git a/typo3/class.browse_links.php b/typo3/class.browse_links.php
deleted file mode 100644 (file)
index 49578b2..0000000
+++ /dev/null
@@ -1,287 +0,0 @@
-<?php
-/**
- * Class which generates the page tree
- *
- * @author Kasper Skårhøj <kasperYYYY@typo3.com>
- */
-class localPageTree extends \TYPO3\CMS\Backend\Tree\View\BrowseTreeView {
-
-       /**
-        * whether the page ID should be shown next to the title, activate through
-        * userTSconfig (options.pageTree.showPageIdWithTitle)
-        *
-        * @boolean
-        */
-       public $ext_showPageId = FALSE;
-
-       /**
-        * Constructor. Just calling init()
-        */
-       public function __construct() {
-               $this->determineScriptUrl();
-               $this->init();
-               $this->clause = ' AND doktype!=' . \TYPO3\CMS\Frontend\Page\PageRepository::DOKTYPE_RECYCLER . $this->clause;
-       }
-
-       /**
-        * Wrapping the title in a link, if applicable.
-        *
-        * @param string $title Title, (must be ready for output, that means it must be htmlspecialchars()'ed).
-        * @param array $v The record
-        * @param bool $ext_pArrPages (Ignore)
-        * @return string Wrapping title string.
-        */
-       public function wrapTitle($title, $v, $ext_pArrPages = '') {
-               if ($this->ext_isLinkable($v['doktype'], $v['uid'])) {
-                       $aOnClick = 'return link_typo3Page(\'' . $v['uid'] . '\');';
-                       return '<a href="#" onclick="' . htmlspecialchars($aOnClick) . '">' . $title . '</a>';
-               } else {
-                       return '<span style="color: #666666;">' . $title . '</span>';
-               }
-       }
-
-       /**
-        * Create the page navigation tree in HTML
-        *
-        * @param array $treeArr Tree array
-        * @return string HTML output.
-        */
-       public function printTree($treeArr = '') {
-               $titleLen = (int)$GLOBALS['BE_USER']->uc['titleLen'];
-               if (!is_array($treeArr)) {
-                       $treeArr = $this->tree;
-               }
-               $out = '';
-               $c = 0;
-               foreach ($treeArr as $k => $v) {
-                       $c++;
-                       $bgColorClass = ($c + 1) % 2 ? 'bgColor' : 'bgColor-10';
-                       if ($GLOBALS['SOBE']->browser->curUrlInfo['act'] == 'page' && $GLOBALS['SOBE']->browser->curUrlInfo['pageid'] == $v['row']['uid'] && $GLOBALS['SOBE']->browser->curUrlInfo['pageid']) {
-                               $arrCol = '<td><img' . \TYPO3\CMS\Backend\Utility\IconUtility::skinImg($GLOBALS['BACK_PATH'], 'gfx/blinkarrow_right.gif', 'width="5" height="9"') . ' class="c-blinkArrowR" alt="" /></td>';
-                               $bgColorClass = 'bgColor4';
-                       } else {
-                               $arrCol = '<td></td>';
-                       }
-                       $aOnClick = 'return jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($this->getThisScript() . 'act=' . $GLOBALS['SOBE']->browser->act . '&mode=' . $GLOBALS['SOBE']->browser->mode . '&expandPage=' . $v['row']['uid']) . ');';
-                       $cEbullet = $this->ext_isLinkable($v['row']['doktype'], $v['row']['uid']) ? '<a href="#" onclick="' . htmlspecialchars($aOnClick) . '"><img' . \TYPO3\CMS\Backend\Utility\IconUtility::skinImg($GLOBALS['BACK_PATH'], 'gfx/ol/arrowbullet.gif', 'width="18" height="16"') . ' alt="" /></a>' : '';
-                       $out .= '
-                               <tr class="' . $bgColorClass . '">
-                                       <td nowrap="nowrap"' . ($v['row']['_CSSCLASS'] ? ' class="' . $v['row']['_CSSCLASS'] . '"' : '') . '>' . $v['HTML'] . $this->wrapTitle($this->getTitleStr($v['row'], $titleLen), $v['row'], $this->ext_pArrPages) . '</td>' . $arrCol . '<td>' . $cEbullet . '</td>
-                               </tr>';
-               }
-               $out = '
-
-
-                       <!--
-                               Navigation Page Tree:
-                       -->
-                       <table border="0" cellpadding="0" cellspacing="0" id="typo3-tree">
-                               ' . $out . '
-                       </table>';
-               return $out;
-       }
-
-       /**
-        * Returns TRUE if a doktype can be linked.
-        *
-        * @param int $doktype Doktype value to test
-        * @param int $uid uid to test.
-        * @return bool
-        */
-       public function ext_isLinkable($doktype, $uid) {
-               if ($uid && $doktype < 199) {
-                       return TRUE;
-               }
-       }
-
-       /**
-        * Wrap the plus/minus icon in a link
-        *
-        * @param string $icon HTML string to wrap, probably an image tag.
-        * @param string $cmd Command for 'PM' get var
-        * @param bool $bMark If set, the link will have a anchor point (=$bMark) and a name attribute (=$bMark)
-        * @return string Link-wrapped input string
-        */
-       public function PM_ATagWrap($icon, $cmd, $bMark = '') {
-               $name = '';
-               if ($bMark) {
-                       $anchor = '#' . $bMark;
-                       $name = ' name="' . $bMark . '"';
-               }
-               $aOnClick = 'return jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($this->getThisScript() . 'PM=' . $cmd) . ',' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($anchor) . ');';
-               return '<a href="#"' . htmlspecialchars($name) . ' onclick="' . htmlspecialchars($aOnClick) . '">' . $icon . '</a>';
-       }
-
-       /**
-        * Wrapping the image tag, $icon, for the row, $row
-        *
-        * @param string $icon The image tag for the icon
-        * @param array $row The row for the current element
-        * @return string The processed icon input value.
-        */
-       public function wrapIcon($icon, $row) {
-               $content = $this->addTagAttributes($icon, ' title="id=' . $row['uid'] . '"');
-               if ($this->ext_showPageId) {
-                       $content .= '[' . $row['uid'] . ']&nbsp;';
-               }
-               return $content;
-       }
-
-}
-
-/**
- * For TBE record browser
- *
- * @author Kasper Skårhøj <kasperYYYY@typo3.com>
- */
-class TBE_PageTree extends localPageTree {
-
-       /**
-        * Returns TRUE if a doktype can be linked (which is always the case here).
-        *
-        * @param int $doktype Doktype value to test
-        * @param int $uid uid to test.
-        * @return bool
-        */
-       public function ext_isLinkable($doktype, $uid) {
-               return TRUE;
-       }
-
-       /**
-        * Wrapping the title in a link, if applicable.
-        *
-        * @param string $title Title, ready for output.
-        * @param array $v The record
-        * @param bool $ext_pArrPages If set, pages clicked will return immediately, otherwise reload page.
-        * @return string Wrapping title string.
-        */
-       public function wrapTitle($title, $v, $ext_pArrPages) {
-               if ($ext_pArrPages) {
-                       $ficon = \TYPO3\CMS\Backend\Utility\IconUtility::getIcon('pages', $v);
-                       $onClick = 'return insertElement(\'pages\', \'' . $v['uid'] . '\', \'db\', ' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($v['title']) . ', \'\', \'\', \'' . $ficon . '\',\'\',1);';
-               } else {
-                       $onClick = 'return jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($this->getThisScript() . 'act=' . $GLOBALS['SOBE']->browser->act . '&mode=' . $GLOBALS['SOBE']->browser->mode . '&expandPage=' . $v['uid']) . ');';
-               }
-               return '<a href="#" onclick="' . htmlspecialchars($onClick) . '">' . $title . '</a>';
-       }
-
-}
-
-/**
- * Base extension class which generates the folder tree.
- * Used directly by the RTE.
- * also used for the linkpicker on files
- *
- * @author Kasper Skårhøj <kasperYYYY@typo3.com>
- */
-class localFolderTree extends \TYPO3\CMS\Backend\Tree\View\FolderTreeView {
-
-       /**
-        * @var int
-        */
-       public $ext_IconMode = 1;
-
-       /**
-        * Initializes the script path
-        */
-       public function __construct() {
-               $this->determineScriptUrl();
-               parent::__construct();
-       }
-
-       /**
-        * Wrapping the title in a link, if applicable.
-        *
-        * @param string $title Title, ready for output.
-        * @param \TYPO3\CMS\Core\Resource\Folder $folderObject The "record
-        * @return string Wrapping title string.
-        */
-       public function wrapTitle($title, \TYPO3\CMS\Core\Resource\Folder $folderObject) {
-               if ($this->ext_isLinkable($folderObject)) {
-                       $aOnClick = 'return jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($this->getThisScript() . 'act=' . $GLOBALS['SOBE']->browser->act . '&mode=' . $GLOBALS['SOBE']->browser->mode . '&expandFolder=' . rawurlencode($folderObject->getCombinedIdentifier())) . ');';
-                       return '<a href="#" onclick="' . htmlspecialchars($aOnClick) . '">' . $title . '</a>';
-               } else {
-                       return '<span class="typo3-dimmed">' . $title . '</span>';
-               }
-       }
-
-       /**
-        * Returns TRUE if the input "record" contains a folder which can be linked.
-        *
-        * @param \TYPO3\CMS\Core\Resource\Folder $folderObject Object with information about the folder element. Contains keys like title, uid, path, _title
-        * @return bool TRUE is returned if the path is found in the web-part of the server and is NOT a recycler or temp folder
-        */
-       public function ext_isLinkable(\TYPO3\CMS\Core\Resource\Folder $folderObject) {
-               if (strstr($folderObject->getIdentifier(), '_recycler_') || strstr($folderObject->getIdentifier(), '_temp_')) {
-                       return FALSE;
-               } else {
-                       return TRUE;
-               }
-       }
-
-       /**
-        * Wrap the plus/minus icon in a link
-        *
-        * @param string $icon HTML string to wrap, probably an image tag.
-        * @param string $cmd Command for 'PM' get var
-        * @param bool $bMark If set, the link will have a anchor point (=$bMark) and a name attribute (=$bMark)
-        * @return string Link-wrapped input string
-        * @access private
-        */
-       public function PM_ATagWrap($icon, $cmd, $bMark = '') {
-               $name = $anchor = '';
-               if ($bMark) {
-                       $anchor = '#' . $bMark;
-                       $name = ' name="' . $bMark . '"';
-               }
-               $aOnClick = 'return jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($this->getThisScript() . 'PM=' . $cmd) . ',' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($anchor) . ');';
-               return '<a href="#"' . htmlspecialchars($name) . ' onclick="' . htmlspecialchars($aOnClick) . '">' . $icon . '</a>';
-       }
-
-}
-
-/**
- * For TBE File Browser
- *
- * @author Kasper Skårhøj <kasperYYYY@typo3.com>
- */
-class TBE_FolderTree extends localFolderTree {
-
-       /**
-        * If file-drag mode is set, temp and recycler folders are filtered out.
-        *
-        * @var int
-        */
-       public $ext_noTempRecyclerDirs = 0;
-
-       /**
-        * Returns TRUE if the input "record" contains a folder which can be linked.
-        *
-        * @param \TYPO3\CMS\Core\Resource\Folder $folderObject object with information about the folder element. Contains keys like title, uid, path, _title
-        * @return bool TRUE is returned if the path is NOT a recycler or temp folder AND if ->ext_noTempRecyclerDirs is not set.
-        */
-       public function ext_isLinkable($folderObject) {
-               if ($this->ext_noTempRecyclerDirs && (substr($folderObject->getIdentifier(), -7) == '_temp_/' || substr($folderObject->getIdentifier(), -11) == '_recycler_/')) {
-                       return FALSE;
-               } else {
-                       return TRUE;
-               }
-       }
-
-       /**
-        * Wrapping the title in a link, if applicable.
-        *
-        * @param string $title Title, ready for output.
-        * @param \TYPO3\CMS\Core\Resource\Folder $folderObject The folderObject 'record'
-        * @return string Wrapping title string.
-        */
-       public function wrapTitle($title, $folderObject) {
-               if ($this->ext_isLinkable($folderObject)) {
-                       $aOnClick = 'return jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($this->getThisScript() . 'act=' . $GLOBALS['SOBE']->browser->act . '&mode=' . $GLOBALS['SOBE']->browser->mode . '&expandFolder=' . rawurlencode($folderObject->getCombinedIdentifier())) . ');';
-                       return '<a href="#" onclick="' . htmlspecialchars($aOnClick) . '">' . $title . '</a>';
-               } else {
-                       return '<span class="typo3-dimmed">' . $title . '</span>';
-               }
-       }
-
-}
index d3f78cf..8fabbe1 100644 (file)
  */
 require __DIR__ . '/init.php';
 
-/**
- * Extension for the tree class that generates the tree of pages in the page-wizard mode
- *
- * @author Kasper Skårhøj <kasperYYYY@typo3.com>
- */
-class newRecordLocalPageTree extends \TYPO3\CMS\Backend\Tree\View\PageTreeView {
-
-       /**
-        * Inserting uid-information in title-text for an icon
-        *
-        * @param string $icon Icon image
-        * @param array $row Item row
-        * @return string Wrapping icon image.
-        */
-       public function wrapIcon($icon, $row) {
-               return $this->addTagAttributes($icon, ' title="id=' . htmlspecialchars($row['uid']) . '"');
-       }
-
-       /**
-        * Determines whether to expand a branch or not.
-        * Here the branch is expanded if the current id matches the global id for the listing/new
-        *
-        * @param int $id The ID (page id) of the element
-        * @return bool Returns TRUE if the IDs matches
-        */
-       public function expandNext($id) {
-               return $id == $GLOBALS['SOBE']->id ? 1 : 0;
-       }
-}
-
 $newRecordController = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Controller\NewRecordController::class);
 $newRecordController->main();
 $newRecordController->printContent();
index 4dcc6ca..3537899 100644 (file)
  */
 require __DIR__ . '/init.php';
 
-/**
- * Local extension of the page tree class
- *
- * @author Kasper Skårhøj <kasperYYYY@typo3.com>
- */
-class moveElementLocalPageTree extends \TYPO3\CMS\Backend\Tree\View\PageTreeView {
-
-       /**
-        * Inserting uid-information in title-text for an icon
-        *
-        * @param string $icon Icon image
-        * @param array $row Item row
-        * @return string Wrapping icon image.
-        */
-       public function wrapIcon($icon, $row) {
-               return $this->addTagAttributes($icon, ' title="id=' . htmlspecialchars($row['uid']) . '"');
-       }
-
-}
-
-/**
- * Extension of position map for pages
- *
- * @author Kasper Skårhøj <kasperYYYY@typo3.com>
- */
-class ext_posMap_pages extends \TYPO3\CMS\Backend\Tree\View\PagePositionMap {
-
-       /**
-        * @var string
-        */
-       public $l_insertNewPageHere = 'movePageToHere';
-
-       /**
-        * Page tree implementation class name
-        *
-        * @var string
-        */
-       protected $pageTreeClassName = 'moveElementLocalPageTree';
-
-       /**
-        * Creates the onclick event for the insert-icons.
-        *
-        * @param int $pid The pid.
-        * @param int $newPagePID New page id.
-        * @return string Onclick attribute content
-        */
-       public function onClickEvent($pid, $newPagePID) {
-               return 'window.location.href=\'tce_db.php?cmd[pages][' . $GLOBALS['SOBE']->moveUid . '][' . $this->moveOrCopy . ']=' . $pid . '&redirect=' . rawurlencode($this->R_URI) . '&prErr=1&uPT=1&vC=' . $GLOBALS['BE_USER']->veriCode() . \TYPO3\CMS\Backend\Utility\BackendUtility::getUrlToken('tceAction') . '\';return false;';
-       }
-
-       /**
-        * Wrapping page title.
-        *
-        * @param string $str Page title.
-        * @param array $rec Page record (?)
-        * @return string Wrapped title.
-        */
-       public function linkPageTitle($str, $rec) {
-               $url = \TYPO3\CMS\Core\Utility\GeneralUtility::linkThisScript(array('uid' => (int)$rec['uid'], 'moveUid' => $GLOBALS['SOBE']->moveUid));
-               return '<a href="' . htmlspecialchars($url) . '">' . $str . '</a>';
-       }
-
-       /**
-        * Wrap $t_code in bold IF the $dat uid matches $id
-        *
-        * @param string $t_code Title string
-        * @param array $dat Information array with record array inside.
-        * @param int $id The current id.
-        * @return string The title string.
-        */
-       public function boldTitle($t_code, $dat, $id) {
-               return parent::boldTitle($t_code, $dat, $GLOBALS['SOBE']->moveUid);
-       }
-
-}
-
-/**
- * Extension of position map for content elements
- *
- * @author Kasper Skårhøj <kasperYYYY@typo3.com>
- */
-class ext_posMap_tt_content extends \TYPO3\CMS\Backend\Tree\View\PagePositionMap {
-
-       /**
-        * @var int
-        */
-       public $dontPrintPageInsertIcons = 1;
-
-       /**
-        * Page tree implementation class name
-        *
-        * @var string
-        */
-       protected $pageTreeClassName = 'moveElementLocalPageTree';
-
-       /**
-        * Wrapping page title.
-        *
-        * @param string $str Page title.
-        * @param array $rec Page record (?)
-        * @return string Wrapped title.
-        */
-       public function linkPageTitle($str, $rec) {
-               $url = \TYPO3\CMS\Core\Utility\GeneralUtility::linkThisScript(array('uid' => (int)$rec['uid'], 'moveUid' => $GLOBALS['SOBE']->moveUid));
-               return '<a href="' . htmlspecialchars($url) . '">' . $str . '</a>';
-       }
-
-       /**
-        * 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) {
-               if ($GLOBALS['SOBE']->moveUid == $row['uid']) {
-                       $str = '<strong>' . $str . '</strong>';
-               }
-               return parent::wrapRecordTitle($str, $row);
-       }
-}
-
 $moveElementController = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Controller\ContentElement\MoveElementController::class);
 $moveElementController->main();
 $moveElementController->printContent();
index b93c3a5..b2bc227 100644 (file)
@@ -144,7 +144,7 @@ class MoveElementController {
                                $pageinfo = BackendUtility::readPageAccess($this->page_id, $this->perms_clause);
                                if (is_array($pageinfo) && $GLOBALS['BE_USER']->isInWebMount($pageinfo['pid'], $this->perms_clause)) {
                                        // Initialize the position map:
-                                       $posMap = GeneralUtility::makeInstance(\ext_posMap_pages::class);
+                                       $posMap = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Tree\View\PageMovingPagePositionMap::class);
                                        $posMap->moveOrCopy = $this->makeCopy ? 'copy' : 'move';
                                        // Print a "go-up" link IF there is a real parent page (and if the user has read-access to that page).
                                        if ($pageinfo['pid']) {
@@ -173,7 +173,7 @@ class MoveElementController {
                                $pageinfo = BackendUtility::readPageAccess($this->page_id, $this->perms_clause);
                                if (is_array($pageinfo) && $GLOBALS['BE_USER']->isInWebMount($pageinfo['pid'], $this->perms_clause)) {
                                        // Initialize the position map:
-                                       $posMap = GeneralUtility::makeInstance(\ext_posMap_tt_content::class);
+                                       $posMap = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Tree\View\ContentMovingPagePositionMap::class);
                                        $posMap->moveOrCopy = $this->makeCopy ? 'copy' : 'move';
                                        $posMap->cur_sys_language = $this->sys_language;
                                        // Headerline for the parent page: Icon, record title:
index 22fd711..a45d057 100644 (file)
@@ -313,7 +313,7 @@ class NewRecordController {
                        $this->code .= '
                                <h3>' . htmlspecialchars($GLOBALS['LANG']->getLL('selectPosition')) . ':</h3>
                        ';
-                       $positionMap = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Tree\View\PagePositionMap::class, 'newRecordLocalPageTree');
+                       $positionMap = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Tree\View\PagePositionMap::class, \TYPO3\CMS\Backend\Tree\View\NewRecordPageTreeView::class);
                        /** @var $positionMap \TYPO3\CMS\Backend\Tree\View\PagePositionMap */
                        $this->code .= $positionMap->positionTree($this->id, $this->pageinfo, $this->perms_clause, $this->R_URI);
                } else {
diff --git a/typo3/sysext/backend/Classes/Tree/View/ContentMovingPagePositionMap.php b/typo3/sysext/backend/Classes/Tree/View/ContentMovingPagePositionMap.php
new file mode 100644 (file)
index 0000000..146088f
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+namespace TYPO3\CMS\Backend\Tree\View;
+
+/*
+ * 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!
+ */
+
+/**
+ * Position map class for moving content elements,
+ * previously resided in typo3/move_el.php
+ *
+ * @author Kasper Skårhøj <kasperYYYY@typo3.com>
+ */
+class ContentMovingPagePositionMap extends PagePositionMap {
+
+       /**
+        * @var int
+        */
+       public $dontPrintPageInsertIcons = 1;
+
+       /**
+        * Page tree implementation class name
+        *
+        * @var string
+        */
+       protected $pageTreeClassName = MoveElementPageTreeView::class;
+
+       /**
+        * Wrapping page title.
+        *
+        * @param string $str Page title.
+        * @param array $rec Page record (?)
+        * @return string Wrapped title.
+        */
+       public function linkPageTitle($str, $rec) {
+               $url = \TYPO3\CMS\Core\Utility\GeneralUtility::linkThisScript(array('uid' => (int)$rec['uid'], 'moveUid' => $GLOBALS['SOBE']->moveUid));
+               return '<a href="' . htmlspecialchars($url) . '">' . $str . '</a>';
+       }
+
+       /**
+        * 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) {
+               if ($GLOBALS['SOBE']->moveUid == $row['uid']) {
+                       $str = '<strong>' . $str . '</strong>';
+               }
+               return parent::wrapRecordTitle($str, $row);
+       }
+}
diff --git a/typo3/sysext/backend/Classes/Tree/View/ElementBrowserFolderTreeView.php b/typo3/sysext/backend/Classes/Tree/View/ElementBrowserFolderTreeView.php
new file mode 100644 (file)
index 0000000..308f1fa
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+namespace TYPO3\CMS\Backend\Tree\View;
+
+/*
+ * 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!
+ */
+
+/**
+ * Base extension class which generates the folder tree.
+ * Used directly by the RTE.
+ * also used for the linkpicker on files
+ *
+ * Browsable folder tree, used in Element Browser and RTE (for which it will be extended)
+ * previously located inside typo3/class.browse_links.php
+ */
+class ElementBrowserFolderTreeView extends FolderTreeView {
+
+       /**
+        * @var int
+        */
+       public $ext_IconMode = 1;
+
+       /**
+        * Initializes the script path
+        */
+       public function __construct() {
+               $this->determineScriptUrl();
+               parent::__construct();
+       }
+
+       /**
+        * Wrapping the title in a link, if applicable.
+        *
+        * @param string $title Title, ready for output.
+        * @param \TYPO3\CMS\Core\Resource\Folder $folderObject The "record
+        * @return string Wrapping title string.
+        */
+       public function wrapTitle($title, \TYPO3\CMS\Core\Resource\Folder $folderObject) {
+               if ($this->ext_isLinkable($folderObject)) {
+                       $aOnClick = 'return jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($this->getThisScript() . 'act=' . $GLOBALS['SOBE']->browser->act . '&mode=' . $GLOBALS['SOBE']->browser->mode . '&expandFolder=' . rawurlencode($folderObject->getCombinedIdentifier())) . ');';
+                       return '<a href="#" onclick="' . htmlspecialchars($aOnClick) . '">' . $title . '</a>';
+               } else {
+                       return '<span class="typo3-dimmed">' . $title . '</span>';
+               }
+       }
+
+       /**
+        * Returns TRUE if the input "record" contains a folder which can be linked.
+        *
+        * @param \TYPO3\CMS\Core\Resource\Folder $folderObject Object with information about the folder element. Contains keys like title, uid, path, _title
+        * @return bool TRUE is returned if the path is found in the web-part of the server and is NOT a recycler or temp folder
+        */
+       public function ext_isLinkable(\TYPO3\CMS\Core\Resource\Folder $folderObject) {
+               if (strstr($folderObject->getIdentifier(), '_recycler_') || strstr($folderObject->getIdentifier(), '_temp_')) {
+                       return FALSE;
+               } else {
+                       return TRUE;
+               }
+       }
+
+       /**
+        * Wrap the plus/minus icon in a link
+        *
+        * @param string $icon HTML string to wrap, probably an image tag.
+        * @param string $cmd Command for 'PM' get var
+        * @param bool $bMark If set, the link will have a anchor point (=$bMark) and a name attribute (=$bMark)
+        * @return string Link-wrapped input string
+        * @access private
+        */
+       public function PM_ATagWrap($icon, $cmd, $bMark = '') {
+               $name = $anchor = '';
+               if ($bMark) {
+                       $anchor = '#' . $bMark;
+                       $name = ' name="' . $bMark . '"';
+               }
+               $aOnClick = 'return jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($this->getThisScript() . 'PM=' . $cmd) . ',' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($anchor) . ');';
+               return '<a href="#"' . htmlspecialchars($name) . ' onclick="' . htmlspecialchars($aOnClick) . '">' . $icon . '</a>';
+       }
+
+}
diff --git a/typo3/sysext/backend/Classes/Tree/View/ElementBrowserPageTreeView.php b/typo3/sysext/backend/Classes/Tree/View/ElementBrowserPageTreeView.php
new file mode 100644 (file)
index 0000000..2c51788
--- /dev/null
@@ -0,0 +1,146 @@
+<?php
+namespace TYPO3\CMS\Backend\Tree\View;
+
+/*
+ * 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!
+ */
+
+/**
+ * Class which generates the page tree
+ *
+ * Browsable tree, used in PagePositionMaps (move elements), Element Browser and RTE (for which it will be extended)
+ * previously located inside typo3/class.browse_links.php
+ */
+class ElementBrowserPageTreeView extends BrowseTreeView {
+
+       /**
+        * whether the page ID should be shown next to the title, activate through
+        * userTSconfig (options.pageTree.showPageIdWithTitle)
+        *
+        * @boolean
+        */
+       public $ext_showPageId = FALSE;
+
+       /**
+        * Constructor. Just calling init()
+        */
+       public function __construct() {
+               $this->determineScriptUrl();
+               $this->init();
+               $this->clause = ' AND doktype!=' . \TYPO3\CMS\Frontend\Page\PageRepository::DOKTYPE_RECYCLER . $this->clause;
+       }
+
+       /**
+        * Wrapping the title in a link, if applicable.
+        *
+        * @param string $title Title, (must be ready for output, that means it must be htmlspecialchars()'ed).
+        * @param array $v The record
+        * @param bool $ext_pArrPages (Ignore)
+        * @return string Wrapping title string.
+        */
+       public function wrapTitle($title, $v, $ext_pArrPages = '') {
+               if ($this->ext_isLinkable($v['doktype'], $v['uid'])) {
+                       $aOnClick = 'return link_typo3Page(\'' . $v['uid'] . '\');';
+                       return '<a href="#" onclick="' . htmlspecialchars($aOnClick) . '">' . $title . '</a>';
+               } else {
+                       return '<span style="color: #666666;">' . $title . '</span>';
+               }
+       }
+
+       /**
+        * Create the page navigation tree in HTML
+        *
+        * @param array $treeArr Tree array
+        * @return string HTML output.
+        */
+       public function printTree($treeArr = '') {
+               $titleLen = (int)$GLOBALS['BE_USER']->uc['titleLen'];
+               if (!is_array($treeArr)) {
+                       $treeArr = $this->tree;
+               }
+               $out = '';
+               $c = 0;
+               foreach ($treeArr as $k => $v) {
+                       $c++;
+                       $bgColorClass = ($c + 1) % 2 ? 'bgColor' : 'bgColor-10';
+                       if ($GLOBALS['SOBE']->browser->curUrlInfo['act'] == 'page' && $GLOBALS['SOBE']->browser->curUrlInfo['pageid'] == $v['row']['uid'] && $GLOBALS['SOBE']->browser->curUrlInfo['pageid']) {
+                               $arrCol = '<td><img' . \TYPO3\CMS\Backend\Utility\IconUtility::skinImg($GLOBALS['BACK_PATH'], 'gfx/blinkarrow_right.gif', 'width="5" height="9"') . ' class="c-blinkArrowR" alt="" /></td>';
+                               $bgColorClass = 'bgColor4';
+                       } else {
+                               $arrCol = '<td></td>';
+                       }
+                       $aOnClick = 'return jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($this->getThisScript() . 'act=' . $GLOBALS['SOBE']->browser->act . '&mode=' . $GLOBALS['SOBE']->browser->mode . '&expandPage=' . $v['row']['uid']) . ');';
+                       $cEbullet = $this->ext_isLinkable($v['row']['doktype'], $v['row']['uid']) ? '<a href="#" onclick="' . htmlspecialchars($aOnClick) . '"><img' . \TYPO3\CMS\Backend\Utility\IconUtility::skinImg($GLOBALS['BACK_PATH'], 'gfx/ol/arrowbullet.gif', 'width="18" height="16"') . ' alt="" /></a>' : '';
+                       $out .= '
+                               <tr class="' . $bgColorClass . '">
+                                       <td nowrap="nowrap"' . ($v['row']['_CSSCLASS'] ? ' class="' . $v['row']['_CSSCLASS'] . '"' : '') . '>' . $v['HTML'] . $this->wrapTitle($this->getTitleStr($v['row'], $titleLen), $v['row'], $this->ext_pArrPages) . '</td>' . $arrCol . '<td>' . $cEbullet . '</td>
+                               </tr>';
+               }
+               $out = '
+
+
+                       <!--
+                               Navigation Page Tree:
+                       -->
+                       <table border="0" cellpadding="0" cellspacing="0" id="typo3-tree">
+                               ' . $out . '
+                       </table>';
+               return $out;
+       }
+
+       /**
+        * Returns TRUE if a doktype can be linked.
+        *
+        * @param int $doktype Doktype value to test
+        * @param int $uid uid to test.
+        * @return bool
+        */
+       public function ext_isLinkable($doktype, $uid) {
+               if ($uid && $doktype < 199) {
+                       return TRUE;
+               }
+       }
+
+       /**
+        * Wrap the plus/minus icon in a link
+        *
+        * @param string $icon HTML string to wrap, probably an image tag.
+        * @param string $cmd Command for 'PM' get var
+        * @param bool $bMark If set, the link will have a anchor point (=$bMark) and a name attribute (=$bMark)
+        * @return string Link-wrapped input string
+        */
+       public function PM_ATagWrap($icon, $cmd, $bMark = '') {
+               $name = '';
+               if ($bMark) {
+                       $anchor = '#' . $bMark;
+                       $name = ' name="' . $bMark . '"';
+               }
+               $aOnClick = 'return jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($this->getThisScript() . 'PM=' . $cmd) . ',' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($anchor) . ');';
+               return '<a href="#"' . htmlspecialchars($name) . ' onclick="' . htmlspecialchars($aOnClick) . '">' . $icon . '</a>';
+       }
+
+       /**
+        * Wrapping the image tag, $icon, for the row, $row
+        *
+        * @param string $icon The image tag for the icon
+        * @param array $row The row for the current element
+        * @return string The processed icon input value.
+        */
+       public function wrapIcon($icon, $row) {
+               $content = $this->addTagAttributes($icon, ' title="id=' . $row['uid'] . '"');
+               if ($this->ext_showPageId) {
+                       $content .= '[' . $row['uid'] . ']&nbsp;';
+               }
+               return $content;
+       }
+
+}
diff --git a/typo3/sysext/backend/Classes/Tree/View/MoveElementPageTreeView.php b/typo3/sysext/backend/Classes/Tree/View/MoveElementPageTreeView.php
new file mode 100644 (file)
index 0000000..a7231e2
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+namespace TYPO3\CMS\Backend\Tree\View;
+
+/*
+ * 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 the page tree class used inside MoveElementController / move_el.php
+ *
+ */
+class MoveElementPageTreeView extends PageTreeView {
+
+       /**
+        * Inserting uid-information in title-text for an icon
+        *
+        * @param string $icon Icon image
+        * @param array $row Item row
+        * @return string Wrapping icon image.
+        */
+       public function wrapIcon($icon, $row) {
+               return $this->addTagAttributes($icon, ' title="id=' . htmlspecialchars($row['uid']) . '"');
+       }
+
+}
diff --git a/typo3/sysext/backend/Classes/Tree/View/NewRecordPageTreeView.php b/typo3/sysext/backend/Classes/Tree/View/NewRecordPageTreeView.php
new file mode 100644 (file)
index 0000000..adb0ccf
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+namespace TYPO3\CMS\Backend\Tree\View;
+
+/*
+ * 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!
+ */
+
+/**
+ * Extension for the tree class that generates the tree of pages in the page-wizard mode
+ * see typo3/db_new.php
+ */
+class NewRecordPageTreeView extends PageTreeView {
+
+       /**
+        * Inserting uid-information in title-text for an icon
+        *
+        * @param string $icon Icon image
+        * @param array $row Item row
+        * @return string Wrapping icon image.
+        */
+       public function wrapIcon($icon, $row) {
+               return $this->addTagAttributes($icon, ' title="id=' . htmlspecialchars($row['uid']) . '"');
+       }
+
+       /**
+        * Determines whether to expand a branch or not.
+        * Here the branch is expanded if the current id matches the global id for the listing/new
+        *
+        * @param int $id The ID (page id) of the element
+        * @return bool Returns TRUE if the IDs matches
+        */
+       public function expandNext($id) {
+               return $id == $GLOBALS['SOBE']->id ? 1 : 0;
+       }
+}
diff --git a/typo3/sysext/backend/Classes/Tree/View/PageMovingPagePositionMap.php b/typo3/sysext/backend/Classes/Tree/View/PageMovingPagePositionMap.php
new file mode 100644 (file)
index 0000000..59b34f5
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+namespace TYPO3\CMS\Backend\Tree\View;
+
+/*
+ * 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!
+ */
+
+/**
+ * Position map class for moving pages,
+ * previously resided in typo3/move_el.php
+ *
+ * @author Kasper Skårhøj <kasperYYYY@typo3.com>
+ */
+class PageMovingPagePositionMap extends PagePositionMap {
+
+       /**
+        * @var string
+        */
+       public $l_insertNewPageHere = 'movePageToHere';
+
+       /**
+        * Page tree implementation class name
+        *
+        * @var string
+        */
+       protected $pageTreeClassName = MoveElementPageTreeView::class;
+
+       /**
+        * Creates the onclick event for the insert-icons.
+        *
+        * @param int $pid The pid.
+        * @param int $newPagePID New page id.
+        * @return string Onclick attribute content
+        */
+       public function onClickEvent($pid, $newPagePID) {
+               return 'window.location.href=\'tce_db.php?cmd[pages][' . $GLOBALS['SOBE']->moveUid . '][' . $this->moveOrCopy . ']=' . $pid . '&redirect=' . rawurlencode($this->R_URI) . '&prErr=1&uPT=1&vC=' . $GLOBALS['BE_USER']->veriCode() . \TYPO3\CMS\Backend\Utility\BackendUtility::getUrlToken('tceAction') . '\';return false;';
+       }
+
+       /**
+        * Wrapping page title.
+        *
+        * @param string $str Page title.
+        * @param array $rec Page record (?)
+        * @return string Wrapped title.
+        */
+       public function linkPageTitle($str, $rec) {
+               $url = \TYPO3\CMS\Core\Utility\GeneralUtility::linkThisScript(array('uid' => (int)$rec['uid'], 'moveUid' => $GLOBALS['SOBE']->moveUid));
+               return '<a href="' . htmlspecialchars($url) . '">' . $str . '</a>';
+       }
+
+       /**
+        * Wrap $t_code in bold IF the $dat uid matches $id
+        *
+        * @param string $t_code Title string
+        * @param array $dat Information array with record array inside.
+        * @param int $id The current id.
+        * @return string The title string.
+        */
+       public function boldTitle($t_code, $dat, $id) {
+               return parent::boldTitle($t_code, $dat, $GLOBALS['SOBE']->moveUid);
+       }
+}
index 3b22c67..fe1bf62 100644 (file)
@@ -106,7 +106,7 @@ class PagePositionMap {
         *
         * @var string
         */
-       protected $pageTreeClassName = 'localPageTree';
+       protected $pageTreeClassName = ElementBrowserPageTreeView::class;
 
        /**
         * Constructor allowing to set pageTreeImplementation
index 1c1c7c6..33052a7 100644 (file)
@@ -1266,4 +1266,12 @@ return array(
        'Tx_Workspaces_Service_Workspaces' => \TYPO3\CMS\Workspaces\Service\WorkspaceService::class,
        'Tx_Workspaces_Service_AutoPublishTask' => \TYPO3\CMS\Workspaces\Task\AutoPublishTask::class,
        'Tx_Workspaces_Service_CleanupPreviewLinkTask' => \TYPO3\CMS\Workspaces\Task\CleanupPreviewLinkTask::class,
-);
\ No newline at end of file
+       'moveElementLocalPageTree' => \TYPO3\CMS\Backend\Tree\View\MoveElementPageTreeView::class,
+       'ext_posMap_pages' => \TYPO3\CMS\Backend\Tree\View\PageMovingPagePositionMap::class,
+       'ext_posMap_tt_content' => \TYPO3\CMS\Backend\Tree\View\ContentMovingPagePositionMap::class,
+       'localPageTree' => \TYPO3\CMS\Backend\Tree\View\ElementBrowserPageTreeView::class,
+       'TBE_PageTree' => \TYPO3\CMS\Recordlist\Tree\View\ElementBrowserPageTreeView::class,
+       'localFolderTree' => \TYPO3\CMS\Backend\Tree\View\ElementBrowserFolderTreeView::class,
+       'TBE_FolderTree' => \TYPO3\CMS\Recordlist\Tree\View\ElementBrowserFolderTreeView::class,
+       'newRecordLocalPageTree' => \TYPO3\CMS\Backend\Tree\View\NewRecordPageTreeView::class
+);
index 2c5a7c2..e2e0f91 100644 (file)
@@ -276,7 +276,6 @@ class Bootstrap {
        public function initializeClassLoader() {
                $classLoader = new ClassLoader($this->applicationContext);
                $this->setEarlyInstance(\TYPO3\CMS\Core\Core\ClassLoader::class, $classLoader);
-               $classLoader->setRuntimeClassLoadingInformationFromAutoloadRegistry((array)include __DIR__ . '/../../ext_autoload.php');
                $classAliasMap = new ClassAliasMap();
                $classAliasMap->injectClassLoader($classLoader);
                $this->setEarlyInstance(\TYPO3\CMS\Core\Core\ClassAliasMap::class, $classAliasMap);
diff --git a/typo3/sysext/core/ext_autoload.php b/typo3/sysext/core/ext_autoload.php
deleted file mode 100644 (file)
index efdf42b..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-// Adapt this file if things need to be available in the bootstrap
-$flowClassesPath = __DIR__ . '/Resources/PHP/TYPO3.Flow/Classes/';
-return array(
-       'ext_posmap_pages' => PATH_typo3 . 'move_el.php',
-       'ext_posmap_tt_content' => PATH_typo3 . 'move_el.php',
-       'moveelementlocalpagetree' => PATH_typo3 . 'move_el.php',
-       'newrecordlocalpagetree' => PATH_typo3 . 'db_new.php',
-       'localfoldertree' => PATH_typo3 . 'class.browse_links.php',
-       'tbe_foldertree' => PATH_typo3 . 'class.browse_links.php',
-       'tbe_pagetree' => PATH_typo3 . 'class.browse_links.php',
-       'localpagetree' => PATH_typo3 . 'class.browse_links.php',
-       'transferdata' => PATH_typo3 . 'show_item.php',
-);
index efd285f..8438ff7 100644 (file)
@@ -1166,7 +1166,7 @@ class ElementBrowser {
         * @param string $treeClassName
         * @return string
         */
-       protected function getFileSelectorHtml($treeClassName = 'localFolderTree') {
+       protected function getFileSelectorHtml($treeClassName = \TYPO3\CMS\Backend\Tree\View\ElementBrowserFolderTreeView::class) {
                $folderTree = GeneralUtility::makeInstance($treeClassName);
                $folderTree->thisScript = $this->thisScript;
                $tree = $folderTree->getBrowsableTree();
@@ -1329,7 +1329,7 @@ class ElementBrowser {
         * @param string $treeClassName name of the class used for page tree rendering
         * @return string
         */
-       protected function getPageSelectorHtml($treeClassName = 'localPageTree') {
+       protected function getPageSelectorHtml($treeClassName = \TYPO3\CMS\Backend\Tree\View\ElementBrowserPageTreeView::class) {
                $pageTree = GeneralUtility::makeInstance($treeClassName);
                $pageTree->thisScript = $this->thisScript;
                $pageTree->ext_showPageId = $GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.showPageIdWithTitle');
@@ -1369,8 +1369,8 @@ class ElementBrowser {
                $tables = $pArr[3];
 
                // Making the browsable pagetree:
-               /** @var \TBE_PageTree $pageTree */
-               $pageTree = GeneralUtility::makeInstance(\TBE_PageTree::class);
+               /** @var \TYPO3\CMS\Recordlist\Tree\View\ElementBrowserPageTreeView $pageTree */
+               $pageTree = GeneralUtility::makeInstance(\TYPO3\CMS\Recordlist\Tree\View\ElementBrowserPageTreeView::class);
                $pageTree->thisScript = $this->thisScript;
                $pageTree->ext_pArrPages = $tables === 'pages' ? 1 : 0;
                $pageTree->ext_showNavTitle = $GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.showNavTitle');
@@ -1506,7 +1506,8 @@ class ElementBrowser {
                }
                $noThumbs = $noThumbs ?: !$_MOD_SETTINGS['displayThumbs'];
                // Create folder tree:
-               $folderTree = GeneralUtility::makeInstance(\TBE_FolderTree::class);
+               /** @var \TYPO3\CMS\Recordlist\Tree\View\ElementBrowserFolderTreeView $folderTree */
+               $folderTree = GeneralUtility::makeInstance(\TYPO3\CMS\Recordlist\Tree\View\ElementBrowserFolderTreeView::class);
                $folderTree->thisScript = $this->thisScript;
                $folderTree->ext_noTempRecyclerDirs = $this->mode == 'filedrag';
                $tree = $folderTree->getBrowsableTree();
@@ -1577,7 +1578,8 @@ class ElementBrowser {
                        $createFolder = '';
                }
                // Create folder tree:
-               $folderTree = GeneralUtility::makeInstance(\TBE_FolderTree::class);
+               /** @var \TYPO3\CMS\Recordlist\Tree\View\ElementBrowserFolderTreeView $folderTree */
+               $folderTree = GeneralUtility::makeInstance(\TYPO3\CMS\Recordlist\Tree\View\ElementBrowserFolderTreeView::class);
                $folderTree->thisScript = $this->thisScript;
                $folderTree->ext_noTempRecyclerDirs = $this->mode == 'filedrag';
                $tree = $folderTree->getBrowsableTree(FALSE);
diff --git a/typo3/sysext/recordlist/Classes/Tree/View/ElementBrowserFolderTreeView.php b/typo3/sysext/recordlist/Classes/Tree/View/ElementBrowserFolderTreeView.php
new file mode 100644 (file)
index 0000000..0130d71
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+namespace TYPO3\CMS\Recordlist\Tree\View;
+
+/*
+ * 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!
+ */
+
+/**
+ * Extension class for the TBE file browser
+ */
+class ElementBrowserFolderTreeView extends \TYPO3\CMS\Backend\Tree\View\ElementBrowserFolderTreeView {
+
+       /**
+        * If file-drag mode is set, temp and recycler folders are filtered out.
+        *
+        * @var int
+        */
+       public $ext_noTempRecyclerDirs = 0;
+
+       /**
+        * Returns TRUE if the input "record" contains a folder which can be linked.
+        *
+        * @param \TYPO3\CMS\Core\Resource\Folder $folderObject object with information about the folder element. Contains keys like title, uid, path, _title
+        *
+        * @return bool TRUE is returned if the path is NOT a recycler or temp folder AND if ->ext_noTempRecyclerDirs is not set.
+        */
+       public function ext_isLinkable($folderObject) {
+               if ($this->ext_noTempRecyclerDirs && (substr($folderObject->getIdentifier(), -7) == '_temp_/' || substr($folderObject->getIdentifier(), -11) == '_recycler_/')) {
+                       return FALSE;
+               } else {
+                       return TRUE;
+               }
+       }
+
+       /**
+        * Wrapping the title in a link, if applicable.
+        *
+        * @param string $title Title, ready for output.
+        * @param \TYPO3\CMS\Core\Resource\Folder $folderObject The folderObject 'record'
+        *
+        * @return string Wrapping title string.
+        */
+       public function wrapTitle($title, $folderObject) {
+               if ($this->ext_isLinkable($folderObject)) {
+                       $aOnClick = 'return jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($this->getThisScript() . 'act=' . $GLOBALS['SOBE']->browser->act . '&mode=' . $GLOBALS['SOBE']->browser->mode . '&expandFolder=' . rawurlencode($folderObject->getCombinedIdentifier())) . ');';
+
+                       return '<a href="#" onclick="' . htmlspecialchars($aOnClick) . '">' . $title . '</a>';
+               } else {
+                       return '<span class="typo3-dimmed">' . $title . '</span>';
+               }
+       }
+}
diff --git a/typo3/sysext/recordlist/Classes/Tree/View/ElementBrowserPageTreeView.php b/typo3/sysext/recordlist/Classes/Tree/View/ElementBrowserPageTreeView.php
new file mode 100644 (file)
index 0000000..5264d98
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+namespace TYPO3\CMS\Recordlist\Tree\View;
+
+/*
+ * 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!
+ */
+
+/**
+ * Extension class for the TBE record browser
+ */
+class ElementBrowserPageTreeView extends \TYPO3\CMS\Backend\Tree\View\ElementBrowserPageTreeView {
+
+       /**
+        * Returns TRUE if a doktype can be linked (which is always the case here).
+        *
+        * @param int $doktype Doktype value to test
+        * @param int $uid uid to test.
+        * @return bool
+        */
+       public function ext_isLinkable($doktype, $uid) {
+               return TRUE;
+       }
+
+       /**
+        * Wrapping the title in a link, if applicable.
+        *
+        * @param string $title Title, ready for output.
+        * @param array $v The record
+        * @param bool $ext_pArrPages If set, pages clicked will return immediately, otherwise reload page.
+        * @return string Wrapping title string.
+        */
+       public function wrapTitle($title, $v, $ext_pArrPages) {
+               if ($ext_pArrPages) {
+                       $ficon = \TYPO3\CMS\Backend\Utility\IconUtility::getIcon('pages', $v);
+                       $onClick = 'return insertElement(\'pages\', \'' . $v['uid'] . '\', \'db\', ' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($v['title']) . ', \'\', \'\', \'' . $ficon . '\',\'\',1);';
+               } else {
+                       $onClick = 'return jumpToUrl(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue($this->getThisScript() . 'act=' . $GLOBALS['SOBE']->browser->act . '&mode=' . $GLOBALS['SOBE']->browser->mode . '&expandPage=' . $v['uid']) . ');';
+               }
+               return '<a href="#" onclick="' . htmlspecialchars($onClick) . '">' . $title . '</a>';
+       }
+
+}
index ac9008d..4859e5c 100644 (file)
@@ -19,7 +19,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
 /**
  * RTE class which generates the folder tree.
  */
-class FolderTree extends \localFolderTree {
+class FolderTree extends \TYPO3\CMS\Backend\Tree\View\ElementBrowserFolderTreeView {
 
        /**
         * Will create and return the HTML code for a browsable tree of folders.
index bcbeb1e..9dc9ed6 100644 (file)
@@ -31,7 +31,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  *
  * @author Kasper Skårhøj <kasperYYYY@typo3.com>
  */
-class PageTree extends \localPageTree {
+class PageTree extends \TYPO3\CMS\Backend\Tree\View\ElementBrowserPageTreeView {
 
        /**
         * Create the page navigation tree in HTML