Fixed bug #14097: Preview in BE opens Workspace-preview
[Packages/TYPO3.CMS.git] / t3lib / class.t3lib_browsetree.php
old mode 100755 (executable)
new mode 100644 (file)
index 05c43b5..62b74ea
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 1999-2004 Kasper Skaarhoj (kasper@typo3.com)
+*  (c) 1999-2009 Kasper Skaarhoj (kasperYYYY@typo3.com)
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -30,7 +30,7 @@
  * $Id$
  * Revised for TYPO3 3.6 November/2003 by Kasper Skaarhoj
  *
- * @author     Kasper Skaarhoj <kasper@typo3.com>
+ * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
  * @coauthor   RenĂ© Fritz <r.fritz@colorcube.de>
  */
 /**
  *
  *   74: class t3lib_browseTree extends t3lib_treeView
  *   83:     function init($clause='')
- *  106:     function getTitleAttrib($row)
- *  118:     function wrapIcon($icon,$row)
+ *  116:     function getTitleAttrib($row)
+ *  128:     function wrapIcon($icon,$row)
+ *  150:     function getTitleStr($row,$titleLen=30)
  *
- * TOTAL FUNCTIONS: 3
+ * TOTAL FUNCTIONS: 4
  * (This index is automatically created/updated by the extension "extdeveval")
  *
  */
 
-require_once (PATH_t3lib.'class.t3lib_treeview.php');
-
 
 
 
@@ -65,7 +64,7 @@ require_once (PATH_t3lib.'class.t3lib_treeview.php');
 /**
  * Extension class for the t3lib_treeView class, specially made for browsing pages
  *
- * @author     Kasper Skaarhoj <kasper@typo3.com>
+ * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
  * @coauthor   RenĂ© Fritz <r.fritz@colorcube.de>
  * @see t3lib_treeView, t3lib_pageTree
  * @package TYPO3
@@ -81,8 +80,17 @@ class t3lib_browseTree extends t3lib_treeView {
         * @return      void
         */
        function init($clause='')       {
+
+                       // this will hide records from display - it has nothing todo with user rights!!
+               $clauseExludePidList = '';
+               if ($pidList = $GLOBALS['BE_USER']->getTSConfigVal('options.hideRecords.pages')) {
+                       if ($pidList = $GLOBALS['TYPO3_DB']->cleanIntList($pidList)) {
+                               $clauseExludePidList = ' AND pages.uid NOT IN ('.$pidList.')';
+                       }
+               }
+
                        // This is very important for making trees of pages: Filtering out deleted pages, pages with no access to and sorting them correctly:
-               parent::init(' AND '.$GLOBALS['BE_USER']->getPagePermsClause(1).' '.$clause, 'sorting');
+               parent::init(' AND '.$GLOBALS['BE_USER']->getPagePermsClause(1).' '.$clause.$clauseExludePidList, 'sorting');
 
                $this->table = 'pages';
                $this->setTreeName('browsePages');
@@ -91,9 +99,18 @@ class t3lib_browseTree extends t3lib_treeView {
                $this->title = $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'];
                $this->MOUNTS = $GLOBALS['WEBMOUNTS'];
 
-               $this->fieldArray = array_merge($this->fieldArray,array('doktype','php_tree_stop'));
+               if ($pidList)   {
+                               // Remove mountpoint if explicitely set in options.hideRecords.pages (see above)
+                       $hideList = explode(',',$pidList);
+                       $this->MOUNTS = array_diff($this->MOUNTS,$hideList);
+               }
+
+               $this->fieldArray = array_merge($this->fieldArray,array('doktype','php_tree_stop','t3ver_id','t3ver_state','t3ver_wsid','t3ver_swapmode','t3ver_state','t3ver_move_id'));
                if (t3lib_extMgm::isLoaded('cms'))      {
-                       $this->fieldArray = array_merge($this->fieldArray,array('hidden','starttime','endtime','fe_group','module','extendToSubpages'));
+                       $this->fieldArray = array_merge(
+                               $this->fieldArray,
+                               array('hidden', 'starttime', 'endtime', 'fe_group', 'module', 'extendToSubpages', 'is_siteroot', 'nav_hide')
+                       );
                }
        }
 
@@ -124,14 +141,36 @@ class t3lib_browseTree extends t3lib_treeView {
                if (!$this->ext_IconMode)       {
                        $theIcon = $GLOBALS['TBE_TEMPLATE']->wrapClickMenuOnIcon($theIcon,$this->treeName,$this->getId($row),0);
                } elseif (!strcmp($this->ext_IconMode,'titlelink'))     {
-                       $aOnClick = 'return jumpTo(\''.$this->getJumpToParam($row).'\',this,\''.$this->domIdPrefix.$this->getId($row).'_'.$this->bank.'\');';
+                       $aOnClick = 'return jumpTo(\''.$this->getJumpToParam($row).'\',this,\''.$this->domIdPrefix.$this->getId($row).'\','.$this->bank.');';
                        $theIcon='<a href="#" onclick="'.htmlspecialchars($aOnClick).'">'.$theIcon.'</a>';
                }
                return $theIcon;
        }
+
+       /**
+        * Returns the title for the input record. If blank, a "no title" label (localized) will be returned.
+        * Do NOT htmlspecialchar the string from this function - has already been done.
+        *
+        * @param       array           The input row array (where the key "title" is used for the title)
+        * @param       integer         Title length (30)
+        * @return      string          The title.
+        */
+       function getTitleStr($row,$titleLen=30) {
+                       // get the basic title from the parent implementation in t3lib_treeview
+               $title = parent::getTitleStr($row,$titleLen);
+               if (isset($row['is_siteroot']) && $row['is_siteroot'] != 0 && $GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.showDomainNameWithTitle')) {
+                       $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('domainName,sorting', 'sys_domain',
+                                               'pid=' . $GLOBALS['TYPO3_DB']->quoteStr($row['uid'], 'sys_domain'), '', 'sorting', 1);
+                       if (is_array($rows) && count($rows) > 0) {
+                               $title = sprintf('%s [%s]', $title, $rows[0]['domainName']);
+                       }
+               }
+               return $title;
+       }
 }
 
 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_browsetree.php'])       {
        include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_browsetree.php']);
 }
-?>
+
+?>
\ No newline at end of file