Main Page | Directories | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages | Examples

class.t3lib_recordlist.php

Go to the documentation of this file.
00001 <?php
00002 /***************************************************************
00003 *  Copyright notice
00004 *
00005 *  (c) 1999-2004 Kasper Skaarhoj (kasperYYYY@typo3.com)
00006 *  All rights reserved
00007 *
00008 *  This script is part of the TYPO3 project. The TYPO3 project is
00009 *  free software; you can redistribute it and/or modify
00010 *  it under the terms of the GNU General Public License as published by
00011 *  the Free Software Foundation; either version 2 of the License, or
00012 *  (at your option) any later version.
00013 *
00014 *  The GNU General Public License can be found at
00015 *  http://www.gnu.org/copyleft/gpl.html.
00016 *  A copy is found in the textfile GPL.txt and important notices to the license
00017 *  from the author is found in LICENSE.txt distributed with these scripts.
00018 *
00019 *
00020 *  This script is distributed in the hope that it will be useful,
00021 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00022 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00023 *  GNU General Public License for more details.
00024 *
00025 *  This copyright notice MUST APPEAR in all copies of the script!
00026 ***************************************************************/
00080 class t3lib_recordList {
00081 
00082       // Used in this class:
00083    var $iLimit = 10;                // default Max items shown
00084    var $leftMargin = 0;             // OBSOLETE - NOT USED ANYMORE. leftMargin
00085    var $showIcon = 1;
00086    var $no_noWrap = 0;
00087    var $oddColumnsTDParams ='';        // If set this is <td>-params for odd columns in addElement. Used with db_layout / pages section
00088    var $backPath='';
00089    var $fieldArray = Array();          // Decides the columns shown. Filled with values that refers to the keys of the data-array. $this->fieldArray[0] is the title column.
00090    var $addElement_tdParams = array();    // Keys are fieldnames and values are td-parameters to add in addElement();
00091 
00092       // Not used in this class - but maybe extension classes...
00093    var $fixedL = 50;                // Max length of strings
00094    var $script = '';
00095    var $thumbScript = 'thumbs.php';
00096    var $setLMargin=1;                  // Set to zero, if you don't want a left-margin with addElement function
00097 
00098    var $counter=0;                     // Counter increased for each element. Used to index elements for the JavaScript-code that transfers to the clipboard
00099    var $totalItems = '';               // This could be set to the total number of items. Used by the fwd_rew_navigation...
00100 
00101       // Internal (used in this class.)
00102    var $firstElementNumber=0;
00103    var $eCounter=0;
00104    var $HTMLcode='';       // String with accumulated HTML content
00105 
00106    var $pageOverlays = array();        // Contains page translation languages
00107    var $languageIconTitles = array();     // Contains sys language icons and titles
00108 
00109 
00110 
00123    function addElement($h,$icon,$data,$tdParams='',$lMargin='',$altLine='')   {
00124       $noWrap = ($this->no_noWrap) ? '' : ' nowrap="nowrap"';
00125 
00126          // Start up:
00127       $out='
00128       <!-- Element, begin: -->
00129       <tr>';
00130          // Show icon and lines
00131       if ($this->showIcon) {
00132          $out.='
00133          <td nowrap="nowrap"'.$tdParams.'>';
00134 
00135          if (!$h) {
00136 #           $out.='<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/halfline.gif','width="18" height="8"').' alt="" />';
00137             $out.='<img src="clear.gif" width="1" height="8" alt="" />';
00138          } else {
00139             for ($a=0;$a<$h;$a++)   {
00140                if (!$a) {
00141 #                 $out.= $altLine ? $altLine : '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/line.gif','width="18" height="16"').' alt="" />';
00142                   if ($icon)  $out.= $icon;
00143                } else {
00144 #                 $out.= $altLine ? $altLine :'<br /><img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/line.gif','width="18" height="16"').' alt="" />';
00145                }
00146             }
00147          }
00148          $out.='</td>
00149          ';
00150       }
00151 
00152          // Init rendering.
00153       $colsp='';
00154       $lastKey='';
00155       $c=0;
00156       $ccount=0;
00157       $tdP[0] = $this->oddColumnsTDParams ? $this->oddColumnsTDParams : $tdParams;
00158       $tdP[1] = $tdParams;
00159 
00160          // Traverse field array which contains the data to present:
00161       reset($this->fieldArray);
00162       while(list(,$vKey)=each($this->fieldArray))  {
00163          if (isset($data[$vKey]))   {
00164             if ($lastKey)  {
00165                $out.='
00166                   <td'.
00167                   $noWrap.
00168                   $tdP[($ccount%2)].
00169                   $colsp.
00170                   $this->addElement_tdParams[$lastKey].
00171                   '>'.$data[$lastKey].'</td>';
00172             }
00173             $lastKey=$vKey;
00174             $c=1;
00175             $ccount++;
00176          } else {
00177             if (!$lastKey) {$lastKey=$vKey;}
00178             $c++;
00179          }
00180          if ($c>1)   {$colsp=' colspan="'.$c.'"';} else {$colsp='';}
00181       }
00182       if ($lastKey)  {  $out.='
00183                   <td'.$noWrap.$tdP[($ccount%2)].$colsp.$this->addElement_tdParams[$lastKey].'>'.$data[$lastKey].'</td>';  }
00184 
00185          // End row
00186       $out.='
00187       </tr>';
00188 
00189          // Return row.
00190       return $out;
00191    }
00192 
00198    function writeTop()  {
00199    }
00200 
00206    function writeBottom()  {
00207       $this->HTMLcode.='
00208 
00209       <!--
00210          End of list table:
00211       -->
00212       <table border="0" cellpadding="0" cellspacing="0">';
00213       $theIcon='<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/stopper.gif','width="18" height="16"').' alt="" />';
00214       $this->HTMLcode.=$this->addElement(1,'','','',$this->leftMargin,$theIcon);
00215       $this->HTMLcode.='
00216       </table>';
00217    }
00218 
00225    function fwd_rwd_nav($table='')  {
00226       $code='';
00227       if ($this->eCounter >= $this->firstElementNumber   &&   $this->eCounter < $this->firstElementNumber+$this->iLimit)   {
00228          if ($this->firstElementNumber && $this->eCounter==$this->firstElementNumber)  {
00229                //    reverse
00230             $theData = Array();
00231             $titleCol=$this->fieldArray[0];
00232             $theData[$titleCol] = $this->fwd_rwd_HTML('fwd',$this->eCounter,$table);
00233             $code=$this->addElement(1,'',$theData);
00234          }
00235          return Array(1,$code);
00236       } else {
00237          if ($this->eCounter==$this->firstElementNumber+$this->iLimit)  {
00238                //    forward
00239             $theData = Array();
00240             $titleCol=$this->fieldArray[0];
00241             $theData[$titleCol] = $this->fwd_rwd_HTML('rwd',$this->eCounter,$table);
00242             $code=$this->addElement(1,'',$theData);
00243          }
00244          return Array(0,$code);
00245       }
00246 
00247    }
00248 
00258    function fwd_rwd_HTML($type,$pointer,$table='') {
00259       $tParam = $table ? '&table='.rawurlencode($table) : '';
00260       switch($type)  {
00261          case 'fwd':
00262             $href = $this->listURL().'&pointer='.($pointer-$this->iLimit).$tParam;
00263             return '<a href="'.htmlspecialchars($href).'">'.
00264                   '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/pilup.gif','width="14" height="14"').' alt="" />'.
00265                   '</a> <i>[1 - '.$pointer.']</i>';
00266          break;
00267          case 'rwd':
00268             $href = $this->listURL().'&pointer='.$pointer.$tParam;
00269             return '<a href="'.htmlspecialchars($href).'">'.
00270                   '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/pildown.gif','width="14" height="14"').' alt="" />'.
00271                   '</a> <i>['.($pointer+1).' - '.$this->totalItems.']</i>';
00272          break;
00273       }
00274    }
00275 
00282    function listURL($altId='')   {
00283       return $this->script.
00284          '?id='.(strcmp($altId,'')?$altId:$this->id);
00285    }
00286 
00292    function CBfunctions()  {
00293       return '
00294       // checkOffCB()
00295    function checkOffCB(listOfCBnames)  {  //
00296       var notChecked=0;
00297       var total=0;
00298 
00299          // Checking how many is checked, how many is not
00300       var pointer=0;
00301       var pos = listOfCBnames.indexOf(",");
00302       while (pos!=-1)   {
00303          if (!cbValue(listOfCBnames.substr(pointer,pos-pointer))) notChecked++;
00304          total++;
00305          pointer=pos+1;
00306          pos = listOfCBnames.indexOf(",",pointer);
00307       }
00308       if (!cbValue(listOfCBnames.substr(pointer))) notChecked++;
00309       total++;
00310 
00311          // Setting the status...
00312       var flag = notChecked*2>total;
00313       pointer=0;
00314       pos = listOfCBnames.indexOf(",");
00315       while (pos!=-1)   {
00316          setcbValue(listOfCBnames.substr(pointer,pos-pointer),flag);
00317 
00318          pointer=pos+1;
00319          pos = listOfCBnames.indexOf(",",pointer);
00320       }
00321       setcbValue(listOfCBnames.substr(pointer),flag);
00322    }
00323       // cbValue()
00324    function cbValue(CBname)   {  //
00325       var CBfullName = "CBC["+CBname+"]";
00326       return (document.dblistForm[CBfullName] && document.dblistForm[CBfullName].checked ? 1 : 0);
00327    }
00328       // setcbValue()
00329    function setcbValue(CBname,flag) {  //
00330       CBfullName = "CBC["+CBname+"]";
00331       document.dblistForm[CBfullName].checked = flag ? "on" : 0;
00332    }
00333 
00334       ';
00335    }
00336 
00342    function initializeLanguages()   {
00343       global $TCA,$LANG;
00344 
00345          // Look up page overlays:
00346       $this->pageOverlays = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
00347          '*',
00348          'pages_language_overlay',
00349          'pid='.intval($this->id).
00350             t3lib_BEfunc::deleteClause('pages_language_overlay'),
00351          '',
00352          '',
00353          '',
00354          'sys_language_uid'
00355       );
00356 
00357          // icons and language titles:
00358       t3lib_div::loadTCA ('sys_language');
00359       $flagAbsPath = t3lib_div::getFileAbsFileName($TCA['sys_language']['columns']['flag']['config']['fileFolder']);
00360       $flagIconPath = $this->backPath.'../'.substr($flagAbsPath, strlen(PATH_site));
00361 
00362       $this->modSharedTSconfig = t3lib_BEfunc::getModTSconfig($this->id, 'mod.SHARED');
00363       $this->languageIconTitles = array();
00364 
00365          // Set default:
00366       $this->languageIconTitles[0]=array(
00367          'uid' => 0,
00368          'title' => strlen ($this->modSharedTSconfig['properties']['defaultLanguageFlag']) ? $this->modSharedTSconfig['properties']['defaultLanguageLabel'].' ('.$LANG->getLL('defaultLanguage').')' : $LANG->getLL('defaultLanguage'),
00369          'ISOcode' => 'DEF',
00370          'flagIcon' => strlen($this->modSharedTSconfig['properties']['defaultLanguageFlag']) && @is_file($flagAbsPath.$this->modSharedTSconfig['properties']['defaultLanguageFlag']) ? $flagIconPath.$this->modSharedTSconfig['properties']['defaultLanguageFlag'] : null,
00371       );
00372 
00373          // Set "All" language:
00374       $this->languageIconTitles[-1]=array(
00375          'uid' => -1,
00376          'title' => $LANG->getLL ('multipleLanguages'),
00377          'ISOcode' => 'DEF',
00378          'flagIcon' => $flagIconPath.'multi-language.gif',
00379       );
00380 
00381          // Find all system languages:
00382       $sys_languages = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
00383          '*',
00384          'sys_language',
00385          ''
00386       );
00387       foreach($sys_languages as $row)     {
00388          $this->languageIconTitles[$row['uid']] = $row;
00389 
00390          if ($row['static_lang_isocode']) {
00391             $staticLangRow = t3lib_BEfunc::getRecord('static_languages',$row['static_lang_isocode'],'lg_iso_2');
00392             if ($staticLangRow['lg_iso_2']) {
00393                $this->languageIconTitles[$row['uid']]['ISOcode'] = $staticLangRow['lg_iso_2'];
00394             }
00395          }
00396          if (strlen ($row['flag'])) {
00397             $this->languageIconTitles[$row['uid']]['flagIcon'] = @is_file($flagAbsPath.$row['flag']) ? $flagIconPath.$row['flag'] : '';
00398          }
00399       }
00400    }
00401 
00408    function languageFlag($sys_language_uid)  {
00409       return ($this->languageIconTitles[$sys_language_uid]['flagIcon'] ? '<img src="'.$this->languageIconTitles[$sys_language_uid]['flagIcon'].'" class="absmiddle" alt="" />&nbsp;' : '').
00410             htmlspecialchars($this->languageIconTitles[$sys_language_uid]['title']);
00411    }
00412 }
00413 
00414 
00415 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_recordlist.php']) {
00416    include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_recordlist.php']);
00417 }
00418 ?>

Generated on Sun Oct 3 01:05:49 2004 for TYPO3core 3.7.0 dev by  doxygen 1.3.8-20040913