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 2edd53d..62b74ea
@@ -1,22 +1,22 @@
 <?php
 /***************************************************************
 *  Copyright notice
-*  
-*  (c) 1999-2003 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 
+*  This script is part of the TYPO3 project. The TYPO3 project is
 *  free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
-* 
+*
 *  The GNU General Public License can be found at
 *  http://www.gnu.org/copyleft/gpl.html.
-*  A copy is found in the textfile GPL.txt and important notices to the license 
+*  A copy is found in the textfile GPL.txt and important notices to the license
 *  from the author is found in LICENSE.txt distributed with these scripts.
 *
-* 
+*
 *  This script is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *
 *  This copyright notice MUST APPEAR in all copies of the script!
 ***************************************************************/
-/** 
+/**
  * Generate a page-tree, browsable.
  *
  * $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>
  */
 /**
  *
  *
  *
- *   73: class t3lib_browseTree extends t3lib_treeView 
- *   82:     function init($clause='') 
- *  105:     function getTitleAttrib($row) 
+ *   74: class t3lib_browseTree extends t3lib_treeView
+ *   83:     function init($clause='')
+ *  116:     function getTitleAttrib($row)
+ *  128:     function wrapIcon($icon,$row)
+ *  150:     function getTitleStr($row,$titleLen=30)
  *
- * TOTAL FUNCTIONS: 2
+ * TOTAL FUNCTIONS: 4
  * (This index is automatically created/updated by the extension "extdeveval")
  *
  */
-require_once (PATH_t3lib.'class.t3lib_treeview.php');
 
 
 
@@ -63,8 +63,8 @@ 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
@@ -75,40 +75,59 @@ class t3lib_browseTree extends t3lib_treeView {
        /**
         * Initialize, setting what is necessary for browsing pages.
         * Using the current user.
-        * 
+        *
         * @param       string          Additional clause for selecting pages.
-        * @return      void            
+        * @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 NOT deleted AND '.$GLOBALS['BE_USER']->getPagePermsClause(1).' '.$clause.' ORDER BY sorting');
+               parent::init(' AND '.$GLOBALS['BE_USER']->getPagePermsClause(1).' '.$clause.$clauseExludePidList, 'sorting');
 
-               $this->table='pages';
-               $this->treeName='browsePages';
+               $this->table = 'pages';
+               $this->setTreeName('browsePages');
                $this->domIdPrefix = 'pages';
                $this->iconName = '';
                $this->title = $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'];
                $this->MOUNTS = $GLOBALS['WEBMOUNTS'];
 
+               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('doktype','php_tree_stop','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')
+                       );
                }
        }
 
        /**
         * Creates title attribute content for pages.
         * Uses API function in t3lib_BEfunc which will retrieve lots of useful information for pages.
-        * 
+        *
         * @param       array           The table row.
-        * @return      string          
+        * @return      string
         */
        function getTitleAttrib($row) {
                return t3lib_BEfunc::titleAttribForPages($row,'1=1 '.$this->clause,0);
        }
-       
+
        /**
         * Wrapping the image tag, $icon, for the row, $row (except for mount points)
-        * 
+        *
         * @param       string          The image tag for the icon
         * @param       array           The row for the current element
         * @return      string          The processed icon input value.
@@ -122,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->getJumpToParm($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