* Added feature #7332: htmlArea RTE: Add default target to classes configured with...
[Packages/TYPO3.CMS.git] / typo3 / class.file_list.inc
index b8ffc3c..c78dbdd 100755 (executable)
@@ -1,22 +1,22 @@
 <?php
 /***************************************************************
 *  Copyright notice
-*  
-*  (c) 1999-2003 Kasper Skaarhoj (kasper@typo3.com)
+*
+*  (c) 1999-2006 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!
 ***************************************************************/
-/** 
+/**
  * Include file extending t3lib_recordList
  *
  * $Id$
  * Revised for TYPO3 3.6 2/2003 by Kasper Skaarhoj
  *
- * @author     Kasper Skaarhoj <kasper@typo3.com>
+ * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
  */
 /**
  * [CLASS/FUNCTION INDEX of SCRIPT]
  *
  *
  *
- *   74: class fileList extends t3lib_recordList 
- *  111:     function start($path,$pointer,$sort,$sortRev,$clipBoard=0)        
- *  132:     function generateList()   
- *  145:     function writeTop($path)  
- *  204:     function linkClipboardHeaderIcon($string,$table,$cmd,$warning='') 
- *  218:     function getTable($files,$dirs,$rowlist)  
- *  306:     function formatDirList($items)    
- *  369:     function linkWrapDir($code,$path) 
- *  381:     function linkWrapFile($code,$path)        
- *  394:     function listURL()        
- *  404:     function dirData($theFile)        
- *  429:     function formatFileList($items)   
- *  503:     function isImage($ext)    
- *  515:     function linkWrapSort($code,$path,$col)   
- *  533:     function readDirectory($path,$type,$extList='')   
- *  587:     function makeClip($theData)       
+ *   75: class fileList extends t3lib_recordList
+ *  112:     function start($path,$pointer,$sort,$sortRev,$clipBoard=0)
+ *  133:     function generateList()
+ *  146:     function writeTop($path)
+ *  204:     function linkClipboardHeaderIcon($string,$table,$cmd,$warning='')
+ *  218:     function getTable($files,$dirs,$rowlist)
+ *  306:     function formatDirList($items)
+ *  372:     function linkWrapDir($code,$path)
+ *  391:     function linkWrapFile($code,$path)
+ *  406:     function listURL()
+ *  416:     function dirData($theFile)
+ *  441:     function formatFileList($items)
+ *  518:     function isImage($ext)
+ *  530:     function linkWrapSort($code,$path,$col)
+ *  548:     function readDirectory($path,$type,$extList='')
+ *  602:     function makeClip($theData)
+ *  647:     function makeRef($theData)
  *
- * TOTAL FUNCTIONS: 15
+ * TOTAL FUNCTIONS: 16
  * (This index is automatically created/updated by the extension "extdeveval")
  *
  */
 
 /**
  * Class for rendering of File>Filelist
- * 
- * @author     Kasper Skaarhoj <kasper@typo3.com>
+ *
+ * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
  * @package TYPO3
  * @subpackage core
  */
 class fileList extends t3lib_recordList {
-       var $iLimit = 40;                                       // default Max items shown 
+       var $iLimit = 40;                                       // default Max items shown
        var $thumbs = 0;                                        // Boolean. Thumbnails on records containing files (pictures)
        var $widthGif = '<img src="clear.gif" width="1" height="1" hspace="165" alt="" />';
        var $fixedL = 30;                                       // Max length of strings
@@ -83,9 +84,9 @@ class fileList extends t3lib_recordList {
        var $sortRev = 1;                                       // Reverse sorting flag
        var $firstElementNumber=0;
        var $clipBoard = 0;
-       
+
                // internal
-       var $JScode = '';       
+       var $JScode = '';
        var $HTMLcode = '';
        var $totalbytes=0;
        var $dirs = Array();
@@ -100,13 +101,13 @@ class fileList extends t3lib_recordList {
 
        /**
         * Initialization of class
-        * 
+        *
         * @param       string          The path to list
         * @param       integer         Pointer
         * @param       boolean         Sorting column
         * @param       boolean         Sorting direction
         * @param       boolean         Show clipboard flag
-        * @return      void            
+        * @return      void
         */
        function start($path,$pointer,$sort,$sortRev,$clipBoard=0)      {
                $this->counter=0;
@@ -126,61 +127,60 @@ class fileList extends t3lib_recordList {
 
        /**
         * Reading files and directories, counting elements and generating the list in ->HTMLcode
-        * 
-        * @return      void            
+        *
+        * @return      void
         */
        function generateList() {
-               $this->dirs = $this->readDirectory($this->path,'dir');
+               $this->dirs = $this->readDirectory($this->path,'dir,link');
                $this->files = $this->readDirectory($this->path,'file');
                $this->totalItems=count($this->dirs['sorting'])+count($this->files['sorting']);
-               $this->HTMLcode.=$this->getTable($this->files, $this->dirs, 'fileext,tstamp,size,rw');
+               $this->HTMLcode.=$this->getTable($this->files, $this->dirs, 'fileext,tstamp,size,rw,_REF_');
        }
 
        /**
         * Make the top of the list
-        * 
+        *
         * @param       string          The path to list.
-        * @return      void            
+        * @return      void
         */
        function writeTop($path)        {
                        // Makes the code for the foldericon in the top
                $path = $GLOBALS['SOBE']->basicFF->is_directory($path); // Cleaning name...
-               
+
                if ($path)      {
                        $out='';
-                       $this->counter++;
                        $theFile = $GLOBALS['SOBE']->basicFF->getTotalFileInfo($path);
                        $root = $GLOBALS['SOBE']->basicFF->checkPathAgainstMounts($theFile['path']);
                        $titleCol='path';
                        $this->fieldArray = Array($titleCol,'up');
-       
+
                        list($title,$icon,$path) =  $this->dirData($theFile);
-       
+
                                // Start compiling the HTML
                        $theData = Array();
                        $theData[$titleCol] = $this->widthGif;
-       
+
                        $title = $GLOBALS['SOBE']->basicFF->blindPath($path);
                        $theData['up']='<a href="'.htmlspecialchars($this->listURL()).'">'.
                                        '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/refresh_n.gif','width="14" height="14"').' title="'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.reload',1).'" alt="" />'.
                                        '</a>';
-                               
+
                        if ($root)      {
-                                       // The icon with link   
+                                       // The icon with link
                                $theIcon = '<img'.t3lib_iconWorks::skinImg($this->backPath,$icon,'width="18" height="16"').' title="'.htmlspecialchars($theFile['file']).'" alt="" />';
                                if ($this->clickMenus) $theIcon = $GLOBALS['SOBE']->doc->wrapClickMenuOnIcon($theIcon,$path);
 
-                               $theData[$titleCol].='<br />'.t3lib_div::fixed_lgd_pre($title,$this->fixedL+20);        // No HTML specialchars here - HTML like <b> </b> is allowed
+                               $theData[$titleCol].='<br />'.t3lib_div::fixed_lgd_cs($title,-($this->fixedL+20));      // No HTML specialchars here - HTML like <b> </b> is allowed
                                $theData['up'].=$this->linkWrapDir('<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/i/folder_up.gif','width="18" height="16"').' title="'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.upOneLevel',1).'" alt="" />',$theFile['path']);
-                       } else {        
+                       } else {
                                        // root:0
                                $theIcon='<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/i/_icon_ftp.gif','width="18" height="16"').' alt="" />';
-                               $theData[$titleCol].='<br />'.htmlspecialchars(t3lib_div::fixed_lgd_pre($title,$this->fixedL+20));
+                               $theData[$titleCol].='<br />'.htmlspecialchars(t3lib_div::fixed_lgd_cs($title,-($this->fixedL+20)));
                        }
-       
+
                                // Adding top element
-                       $out.=$this->addelement(1,'',$theData,'',$this->leftMargin,$theIcon);
-       
+                       $out.=$this->addelement(1,'',$theData,'','',$theIcon);
+
                        $this->HTMLcode.='
 
                <!--
@@ -194,7 +194,7 @@ class fileList extends t3lib_recordList {
 
        /**
         * Wrapping input string in a link with clipboard command.
-        * 
+        *
         * @param       string          String to be linked - must be htmlspecialchar'ed / prepared before.
         * @param       string          table - NOT USED
         * @param       string          "cmd" value
@@ -209,7 +209,7 @@ class fileList extends t3lib_recordList {
 
        /**
         * Returns a table with directories and files listed.
-        * 
+        *
         * @param       array           Array of files from path
         * @param       array           Array of directories from path
         * @param       string          List of rows to display horizontallyh
@@ -219,24 +219,24 @@ class fileList extends t3lib_recordList {
                        // Adds the code of files/dirs
                $out='';
                $titleCol = 'file';
-               
+
                        // Cleaning rowlist for duplicates and place the $titleCol as the first column always!
                $rowlist = t3lib_div::rmFromList($titleCol,$rowlist);
                $rowlist = t3lib_div::uniqueList($rowlist);
                $rowlist = $rowlist ? $titleCol.','.$rowlist : $titleCol;
                if ($this->clipBoard)   $rowlist.=',_CLIPBOARD_';
                $this->fieldArray = explode(',',$rowlist);
-               
+
                        // half line is drawn
                $theData = Array();
                $theData[$titleCol] = $this->widthGif;
-               $out.=$this->addelement(0,'',$theData,'',$this->leftMargin);
+               $out.=$this->addelement(0,'',$theData,'');
 
 
 
                        // Directories are added
                $iOut = '';
-               $iOut.= $this->formatDirList($dirs,$titleCol);
+               $iOut.= $this->formatDirList($dirs);
 
                if (count($dirs['sorting']))    {
                                // half line is drawn
@@ -249,7 +249,7 @@ class fileList extends t3lib_recordList {
 
                        // Files are added
                $iOut.= $this->formatFileList($files,$titleCol);
-               
+
                        // Header line is drawn
                $theData = Array();
                reset($this->fieldArray);
@@ -279,12 +279,12 @@ class fileList extends t3lib_recordList {
                }
                $out.=$this->addelement(1,'',$theData,' class="c-headLine"','');
                $out.=$iOut;
-               
+
                        // half line is drawn
                $theData = Array();
-               $theData[$titleCol] = $this->counter.' Files, '.$GLOBALS['SOBE']->basicFF->formatSize($this->totalbytes).'bytes';
+               $theData[$titleCol] = $this->counter.' File(s), '.t3lib_div::formatSize($this->totalbytes).'bytes';
                $out.=$this->addelement(1,'',$theData);
-               
+
                        // finish
                return '
 
@@ -299,7 +299,7 @@ class fileList extends t3lib_recordList {
 
        /**
         * This returns tablerows for the directories in the array $items['sorting'].
-        * 
+        *
         * @param       array           Directory items
         * @return      string          HTML table rows.
         */
@@ -316,36 +316,39 @@ class fileList extends t3lib_recordList {
                                                // Initialization
                                        $theFile = $items['files'][$key];
                                        $this->counter++;
-       
+
                                        list($title,$icon,$path) =  $this->dirData($theFile);
-       
-                                               // The icon with link   
+
+                                               // The icon with link
                                        $theIcon = '<img'.t3lib_iconWorks::skinImg($this->backPath,$icon,'width="18" height="16"').' title="'.htmlspecialchars($theFile['file']).'" alt="" />';
                                        if ($this->clickMenus) $theIcon = $GLOBALS['SOBE']->doc->wrapClickMenuOnIcon($theIcon,$path);
-       
+
                                                //      Preparing and getting the data-array
                                        $theData = Array();
                                        reset($this->fieldArray);
                                        while(list(,$field)=each($this->fieldArray))    {
                                                switch($field)  {
                                                        case 'size':
-       //                                                      $theData[$field]=$GLOBALS['SOBE']->basicFF->formatSize($theFile[$field]);
+       //                                                      $theData[$field]=t3lib_div::formatSize($theFile[$field]);
                                                        break;
                                                        case 'rw':
-                                                               $theData[$field]= (($theFile['readable'])?'':'<span class="typo3-red"><b>R</b></span>').(($theFile['writeable'])?'':'<span class="typo3-red"><b>W</b></span>');
+                                                               $theData[$field]= (($theFile['readable'])?'':'<span class="typo3-red"><b>R</b></span>').(($theFile['writable'])?'':'<span class="typo3-red"><b>W</b></span>');
                                                        break;
-                                                       case 'fileext': 
+                                                       case 'fileext':
        //                                                      $theData[$field]=strtoupper($theFile['fileext']);
                                                        break;
                                                        case 'tstamp':
                                                                $theData[$field]=Date($GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy'], $theFile['tstamp']);
                                                        break;
                                                        case 'file':
-                                                               $theData[$field]= $this->linkWrapDir(t3lib_div::fixed_lgd($title,$this->fixedL),$path);
+                                                               $theData[$field]= $this->linkWrapDir($title,$path);
                                                        break;
                                                        case '_CLIPBOARD_':
                                                                $theData[$field]=$this->makeClip($theFile);
                                                        break;
+                                                       case '_REF_':
+                                                               $theData[$field]=$this->makeRef($theFile);
+                                                       break;
                                                        default:
                                                                $theData[$field]=t3lib_div::fixed_lgd($theFile[$field],$this->fixedL);
                                                        break;
@@ -361,35 +364,43 @@ class fileList extends t3lib_recordList {
 
        /**
         * Wraps the directory-titles
-        * 
+        *
         * @param       string          String to be wrapped in links
         * @param       string          ID (path)
         * @return      string          HTML
         */
        function linkWrapDir($code,$path)       {
                $href = $this->script.'?id='.rawurlencode($path);
-               return '<a href="'.htmlspecialchars($href).'">'.$code.'</a>';
+               $onclick = ' onclick="'.htmlspecialchars('top.content.nav_frame.hilight_row("file","folder'.t3lib_div::md5int($path).'_"+top.fsMod.currentBank)').'"';
+
+                       // Sometimes $code contains plain HTML tags. In such a case the string should not be modified!
+               if(!strcmp($code,strip_tags($code)))    {
+                       return '<a href="'.htmlspecialchars($href).'"'.$onclick.' title="'.htmlspecialchars($code).'">'.t3lib_div::fixed_lgd($code,$this->fixedL).'</a>';
+               } else  {
+                       return '<a href="'.htmlspecialchars($href).'"'.$onclick.'>'.$code.'</a>';
+               }
        }
 
        /**
         * Wraps filenames in links which opens them in a window IF they are in web-path.
-        * 
+        *
         * @param       string          String to be wrapped in links
         * @param       string          ID (path)
         * @return      string          HTML
         */
        function linkWrapFile($code,$path)      {
+
                if (t3lib_div::isFirstPartOfStr($path,t3lib_div::getIndpEnv('TYPO3_DOCUMENT_ROOT')))    {
                        $href = substr($path,strlen(t3lib_div::getIndpEnv('TYPO3_DOCUMENT_ROOT')));
                        $aOnClick = "return top.openUrlInWindow('".$href."','WebFile');";
-                       $code = '<a href="#" onclick="'.htmlspecialchars($aOnClick).'">'.$code.'</a>';
-               } 
+                       $code = '<a href="#" title="'.htmlspecialchars($code).'" onclick="'.htmlspecialchars($aOnClick).'">'.t3lib_div::fixed_lgd($code,$this->fixedL).'</a>';
+               }
                return $code;
        }
 
        /**
         * Returns list URL; This is the URL of the current script with id and imagemode parameters, thats all.
-        * 
+        *
         * @return      string          URL
         */
        function listURL()      {
@@ -398,7 +409,7 @@ class fileList extends t3lib_recordList {
 
        /**
         * Returns some data specific for the directories...
-        * 
+        *
         * @param       array           File information array
         * @return      array           (title, icon, path)
         */
@@ -423,7 +434,7 @@ class fileList extends t3lib_recordList {
 
        /**
         * This returns tablerows for the files in the array $items['sorting'].
-        * 
+        *
         * @param       array           File items
         * @return      string          HTML table rows.
         */
@@ -440,25 +451,25 @@ class fileList extends t3lib_recordList {
                                                // Initialization
                                        $theFile = $items['files'][$key];
                                        $this->counter++;
-       
+
                                        $this->totalbytes+=$theFile['size'];
                                        $ext = $items['files'][$key][fileext];
                                        $icon = t3lib_BEfunc::getFileIcon($ext);
 
-                                               // The icon with link   
+                                               // The icon with link
                                        $theIcon = '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/fileicons/'.$icon,'width="18" height="16"').' title="'.htmlspecialchars($theFile['file']).'" alt="" />';
                                        if ($this->clickMenus) $theIcon = $GLOBALS['SOBE']->doc->wrapClickMenuOnIcon($theIcon,$theFile['path'].$theFile['file']);
-       
+
                                                //      Preparing and getting the data-array
                                        $theData = Array();
                                        reset($this->fieldArray);
                                        while(list(,$field)=each($this->fieldArray))    {
                                                switch($field)  {
                                                        case 'size':
-                                                               $theData[$field]=$GLOBALS['SOBE']->basicFF->formatSize($theFile[$field]);
+                                                               $theData[$field]=t3lib_div::formatSize($theFile[$field]);
                                                        break;
                                                        case 'rw':
-                                                               $theData[$field]= (($theFile['readable'])?'':'<span class="typo3-red"><b>R</b></span>').(($theFile['writeable'])?'':'<span class="typo3-red"><b>W</b></span>');
+                                                               $theData[$field]= (($theFile['readable'])?'':'<span class="typo3-red"><b>R</b></span>').(($theFile['writable'])?'':'<span class="typo3-red"><b>W</b></span>');
                                                        break;
                                                        case 'fileext':
                                                                $theData[$field]=strtoupper($theFile[$field]);
@@ -469,24 +480,33 @@ class fileList extends t3lib_recordList {
                                                        case '_CLIPBOARD_':
                                                                $theData[$field]=$this->makeClip($theFile);
                                                        break;
+                                                       case '_REF_':
+                                                               $theData[$field]=$this->makeRef($theFile);
+                                                       break;
                                                        case 'file':
-                                                               $theData[$field] = $this->linkWrapFile(t3lib_div::fixed_lgd($theFile[$field],$this->fixedL),$theFile['path'].$theFile['file']);
-                                                       break;                                                  
+                                                               $theData[$field] = $this->linkWrapFile($theFile[$field],$theFile['path'].$theFile['file']);
+                                                       break;
                                                        default:
                                                                $theData[$field]=t3lib_div::fixed_lgd($theFile[$field],$this->fixedL);
                                                        break;
                                                }
                                        }
-                                       $out.=$this->addelement(1,$theIcon,$theData);
-                                       
+                                       $out.= $this->addelement(1,$theIcon,$theData);
+
                                                // Thumbsnails?
                                        if ($this->thumbs && $this->isImage($theFile['fileext']))       {
-                                               $thumbData=Array();
+                                               $thumbData = array();
                                                $theFile_R = rawurlencode($theFile['path'].$theFile['file']);
-                                               $titleCol=$this->fieldArray[0];
-                                               $href = $this->backPath.$this->thumbScript.'?&dummy='.$GLOBALS['EXEC_TIME'].'&file='.$theFile_R;
+                                               $titleCol = $this->fieldArray[0];
+
+                                               $theFile_abs = $theFile['path'].$theFile['file'];
+                                               $check = basename($theFile_abs).':'.filemtime($theFile_abs).':'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'];
+                                               $params = '&file='.$theFile_R;
+                                               $params.= '&md5sum='.t3lib_div::shortMD5($check);
+                                               $href = $this->backPath.$this->thumbScript.'?&dummy='.$GLOBALS['EXEC_TIME'].$params;
+
                                                $thumbData[$titleCol]='<img src="'.htmlspecialchars($href).'" hspace="2" title="'.htmlspecialchars(trim($theFile['file'])).'" alt="" />';
-                                               $out.=$this->addelement(4,'',$thumbData);
+                                               $out.= $this->addelement(4,'',$thumbData);
                                        }
                                }
                                $this->eCounter++;
@@ -497,9 +517,9 @@ class fileList extends t3lib_recordList {
 
        /**
         * Returns true if $ext is an image-extension according to $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
-        * 
+        *
         * @param       string          file extension
-        * @return      boolean         
+        * @return      boolean
         */
        function isImage($ext)  {
                return t3lib_div::inList($GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],strtolower($ext));
@@ -507,7 +527,7 @@ class fileList extends t3lib_recordList {
 
        /**
         * Wraps the directory-titles ($code) in a link to file_list.php (id=$path) and sorting commands...
-        * 
+        *
         * @param       string          String to be wrapped
         * @param       string          ID (path)
         * @param       string          Sorting column
@@ -525,7 +545,7 @@ class fileList extends t3lib_recordList {
 
        /**
         * Returns an array with file/dir items + an array with the sorted items
-        * 
+        *
         * @param       string          Path (absolute) to read
         * @param       string          $type is the technical type; file,dir,link. empty is all kinds of stuff.
         * @param       string          $extList: List of fileextensions to select. If empty, all are selected.
@@ -542,7 +562,7 @@ class fileList extends t3lib_recordList {
                                while($entry=$d->read()) {
                                        if ($entry!='.' && $entry!='..')        {
                                                $wholePath = $path.'/'.$entry;          // Because of odd PHP-error where  <br />-tag is sometimes placed after a filename!!
-                                               if (@file_exists($wholePath) && (!$type || filetype($wholePath)==$type))        {
+                                               if (@file_exists($wholePath) && (!$type || t3lib_div::inList($type,filetype($wholePath))))      {
                                                        if ($extList)   {
                                                                $fI = t3lib_div::split_fileref($entry);
                                                                if (t3lib_div::inList($extList,$fI['fileext'])) {
@@ -581,7 +601,7 @@ class fileList extends t3lib_recordList {
 
        /**
         * Creates the clipboard control pad
-        * 
+        *
         * @param       array           Array with information about the file/directory for which to make the clipboard panel for the listing.
         * @return      string          HTML-table
         */
@@ -623,6 +643,41 @@ class fileList extends t3lib_recordList {
                                                                                                ',$cells).'
                                                                                        </div>';
        }
+
+       /**
+        * Make reference count
+        *
+        * @param       array           Array with information about the file/directory for which to make the clipboard panel for the listing.
+        * @return      string          HTML
+        */
+       function makeRef($theData)      {
+
+                       // First, fit path to match what is stored in the refindex:
+               $fullIdent = $theData['path'].$theData['file'];
+
+               if (t3lib_div::isFirstPartOfStr($fullIdent,PATH_site))  {
+                       $fullIdent = substr($fullIdent,strlen(PATH_site));
+               }
+
+                       // Look up the path:
+               $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
+                       '*',
+                       'sys_refindex',
+                       'ref_table='.$GLOBALS['TYPO3_DB']->fullQuoteStr('_FILE','sys_refindex').
+                               ' AND ref_string='.$GLOBALS['TYPO3_DB']->fullQuoteStr($fullIdent,'sys_refindex').
+                               ' AND deleted=0'
+               );
+
+                       // Compile information for title tag:
+               $infoData=array();
+               if (is_array($rows)) {
+                       foreach($rows as $row)  {
+                               $infoData[]=$row['tablename'].':'.$row['recuid'].':'.$row['field'];
+                       }
+               }
+
+               return count($infoData) ? '<a href="#" onclick="'.htmlspecialchars('top.launchView(\''.$theData['path'].$theData['file'].'\', \'\'); return false;').'" title="'.htmlspecialchars(t3lib_div::fixed_lgd(implode(' / ',$infoData),100)).'">'.count($infoData).'</a>' : '';
+       }
 }
 
 
@@ -630,4 +685,4 @@ class fileList extends t3lib_recordList {
 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/class.file_list.inc'])      {
        include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/class.file_list.inc']);
 }
-?>
\ No newline at end of file
+?>