[ Index ]
 

Code source de Typo3 4.1.3

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/t3lib/ -> class.t3lib_recordlist.php (source)

   1  <?php
   2  /***************************************************************
   3  *  Copyright notice
   4  *
   5  *  (c) 1999-2006 Kasper Skaarhoj (kasperYYYY@typo3.com)
   6  *  All rights reserved
   7  *
   8  *  This script is part of the TYPO3 project. The TYPO3 project is
   9  *  free software; you can redistribute it and/or modify
  10  *  it under the terms of the GNU General Public License as published by
  11  *  the Free Software Foundation; either version 2 of the License, or
  12  *  (at your option) any later version.
  13  *
  14  *  The GNU General Public License can be found at
  15  *  http://www.gnu.org/copyleft/gpl.html.
  16  *  A copy is found in the textfile GPL.txt and important notices to the license
  17  *  from the author is found in LICENSE.txt distributed with these scripts.
  18  *
  19  *
  20  *  This script is distributed in the hope that it will be useful,
  21  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  22  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  23  *  GNU General Public License for more details.
  24  *
  25  *  This copyright notice MUST APPEAR in all copies of the script!
  26  ***************************************************************/
  27  /**
  28   * Library with a single function addElement that returns tablerows based on some input.
  29   *
  30   * $Id: class.t3lib_recordlist.php 1817 2006-11-28 17:27:00Z typo3 $
  31   * Revised for TYPO3 3.6 July/2003 by Kasper Skaarhoj
  32   * XHTML compliant
  33   *
  34   * @author    Kasper Skaarhoj <kasperYYYY@typo3.com>
  35   */
  36  /**
  37   * [CLASS/FUNCTION INDEX of SCRIPT]
  38   *
  39   *
  40   *
  41   *   80: class t3lib_recordList
  42   *  123:     function addElement($h,$icon,$data,$tdParams='',$lMargin='',$altLine='')
  43   *  198:     function writeTop()
  44   *  206:     function writeBottom()
  45   *  225:     function fwd_rwd_nav($table='')
  46   *  258:     function fwd_rwd_HTML($type,$pointer,$table='')
  47   *  284:     function listURL($altId='')
  48   *  294:     function CBfunctions()
  49   *  344:     function initializeLanguages()
  50   *  411:     function languageFlag($sys_language_uid)
  51   *
  52   * TOTAL FUNCTIONS: 9
  53   * (This index is automatically created/updated by the extension "extdeveval")
  54   *
  55   */
  56  
  57  
  58  
  59  
  60  
  61  
  62  
  63  
  64  
  65  
  66  
  67  
  68  
  69  
  70  
  71  
  72  /**
  73   * This class is the base for listing of database records and files in the modules Web>List and File>Filelist
  74   *
  75   * @author    Kasper Skaarhoj <kasperYYYY@typo3.com>
  76   * @package TYPO3
  77   * @subpackage t3lib
  78   * @see typo3/db_list.php, typo3/file_list.php
  79   */
  80  class t3lib_recordList {
  81  
  82          // Used in this class:
  83      var $iLimit = 10;                        // default Max items shown
  84      var $leftMargin = 0;                    // OBSOLETE - NOT USED ANYMORE. leftMargin
  85      var $showIcon = 1;
  86      var $no_noWrap = 0;
  87      var $oddColumnsTDParams ='';            // If set this is <td>-params for odd columns in addElement. Used with db_layout / pages section
  88      var $backPath='';
  89      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.
  90      var $addElement_tdParams = array();        // Keys are fieldnames and values are td-parameters to add in addElement();
  91  
  92          // Not used in this class - but maybe extension classes...
  93      var $fixedL = 50;                        // Max length of strings
  94      var $script = '';
  95      var $thumbScript = 'thumbs.php';
  96      var $setLMargin=1;                        // Set to zero, if you don't want a left-margin with addElement function
  97  
  98      var $counter=0;                            // Counter increased for each element. Used to index elements for the JavaScript-code that transfers to the clipboard
  99      var $totalItems = '';                    // This could be set to the total number of items. Used by the fwd_rew_navigation...
 100  
 101          // Internal (used in this class.)
 102      var $firstElementNumber=0;
 103      var $eCounter=0;
 104      var $HTMLcode='';            // String with accumulated HTML content
 105  
 106      var $pageOverlays = array();            // Contains page translation languages
 107      var $languageIconTitles = array();        // Contains sys language icons and titles
 108  
 109  
 110  
 111      /**
 112       * Returns a table-row with the content from the fields in the input data array.
 113       * OBS: $this->fieldArray MUST be set! (represents the list of fields to display)
 114       *
 115       * @param    integer        $h is an integer >=0 and denotes how tall a element is. Set to '0' makes a halv line, -1 = full line, set to 1 makes a 'join' and above makes 'line'
 116       * @param    string        $icon is the <img>+<a> of the record. If not supplied the first 'join'-icon will be a 'line' instead
 117       * @param    array        $data is the dataarray, record with the fields. Notice: These fields are (currently) NOT htmlspecialchar'ed before being wrapped in <td>-tags
 118       * @param    string        $tdParams is insert in the <td>-tags. Must carry a ' ' as first character
 119       * @param    integer        OBSOLETE - NOT USED ANYMORE. $lMargin is the leftMargin (integer)
 120       * @param    string        $altLine is the HTML <img>-tag for an alternative 'gfx/ol/line.gif'-icon (used in the top)
 121       * @return    string        HTML content for the table row
 122       */
 123  	function addElement($h,$icon,$data,$tdParams='',$lMargin='',$altLine='')    {
 124          $noWrap = ($this->no_noWrap) ? '' : ' nowrap="nowrap"';
 125  
 126              // Start up:
 127          $out='
 128          <!-- Element, begin: -->
 129          <tr>';
 130              // Show icon and lines
 131          if ($this->showIcon)    {
 132              $out.='
 133              <td nowrap="nowrap"'.$tdParams.'>';
 134  
 135              if (!$h)    {
 136  #                $out.='<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/halfline.gif','width="18" height="8"').' alt="" />';
 137                  $out.='<img src="clear.gif" width="1" height="8" alt="" />';
 138              } else {
 139                  for ($a=0;$a<$h;$a++)    {
 140                      if (!$a)    {
 141  #                        $out.= $altLine ? $altLine : '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/line.gif','width="18" height="16"').' alt="" />';
 142                          if ($icon)    $out.= $icon;
 143                      } else {
 144  #                        $out.= $altLine ? $altLine :'<br /><img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/line.gif','width="18" height="16"').' alt="" />';
 145                      }
 146                  }
 147              }
 148              $out.='</td>
 149              ';
 150          }
 151  
 152              // Init rendering.
 153          $colsp='';
 154          $lastKey='';
 155          $c=0;
 156          $ccount=0;
 157          $tdP[0] = $this->oddColumnsTDParams ? $this->oddColumnsTDParams : $tdParams;
 158          $tdP[1] = $tdParams;
 159  
 160              // Traverse field array which contains the data to present:
 161          reset($this->fieldArray);
 162          while(list(,$vKey)=each($this->fieldArray))    {
 163              if (isset($data[$vKey]))    {
 164                  if ($lastKey)    {
 165                      $out.='
 166                          <td'.
 167                          $noWrap.
 168                          $tdP[($ccount%2)].
 169                          $colsp.
 170                          $this->addElement_tdParams[$lastKey].
 171                          '>'.$data[$lastKey].'</td>';
 172                  }
 173                  $lastKey=$vKey;
 174                  $c=1;
 175                  $ccount++;
 176              } else {
 177                  if (!$lastKey) {$lastKey=$vKey;}
 178                  $c++;
 179              }
 180              if ($c>1)    {$colsp=' colspan="'.$c.'"';} else {$colsp='';}
 181          }
 182          if ($lastKey)    {    $out.='
 183                          <td'.$noWrap.$tdP[($ccount%2)].$colsp.$this->addElement_tdParams[$lastKey].'>'.$data[$lastKey].'</td>';    }
 184  
 185              // End row
 186          $out.='
 187          </tr>';
 188  
 189              // Return row.
 190          return $out;
 191      }
 192  
 193      /**
 194       * Dummy function, used to write the top of a table listing.
 195       *
 196       * @return    void
 197       */
 198  	function writeTop()    {
 199      }
 200  
 201      /**
 202       * Finishes the list with the "stopper"-gif, adding the HTML code for that item to the internal ->HTMLcode string
 203       *
 204       * @return    void
 205       */
 206  	function writeBottom()    {
 207          $this->HTMLcode.='
 208  
 209          <!--
 210              End of list table:
 211          -->
 212          <table border="0" cellpadding="0" cellspacing="0">';
 213          $theIcon='<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/stopper.gif','width="18" height="16"').' alt="" />';
 214          $this->HTMLcode.=$this->addElement(1,'','','',$this->leftMargin,$theIcon);
 215          $this->HTMLcode.='
 216          </table>';
 217      }
 218  
 219      /**
 220       * Creates a forward/reverse button based on the status of ->eCounter, ->firstElementNumber, ->iLimit
 221       *
 222       * @param    string        Table name
 223       * @return    array        array([boolean], [HTML]) where [boolean] is 1 for reverse element, [HTML] is the table-row code for the element
 224       */
 225  	function fwd_rwd_nav($table='')    {
 226          $code='';
 227          if ($this->eCounter >= $this->firstElementNumber   &&   $this->eCounter < $this->firstElementNumber+$this->iLimit)    {
 228              if ($this->firstElementNumber && $this->eCounter==$this->firstElementNumber)    {
 229                      //     reverse
 230                  $theData = Array();
 231                  $titleCol=$this->fieldArray[0];
 232                  $theData[$titleCol] = $this->fwd_rwd_HTML('fwd',$this->eCounter,$table);
 233                  $code=$this->addElement(1,'',$theData);
 234              }
 235              return Array(1,$code);
 236          } else {
 237              if ($this->eCounter==$this->firstElementNumber+$this->iLimit)    {
 238                      //     forward
 239                  $theData = Array();
 240                  $titleCol=$this->fieldArray[0];
 241                  $theData[$titleCol] = $this->fwd_rwd_HTML('rwd',$this->eCounter,$table);
 242                  $code=$this->addElement(1,'',$theData);
 243              }
 244              return Array(0,$code);
 245          }
 246  
 247      }
 248  
 249      /**
 250       * Creates the button with link to either forward or reverse
 251       *
 252       * @param    string        Type: "fwd" or "rwd"
 253       * @param    integer        Pointer
 254       * @param    string        Table name
 255       * @return    string
 256       * @access private
 257       */
 258  	function fwd_rwd_HTML($type,$pointer,$table='')    {
 259          $content = '';
 260          $tParam = $table ? '&table='.rawurlencode($table) : '';
 261          switch($type)    {
 262              case 'fwd':
 263                  $href = $this->listURL().'&pointer='.($pointer-$this->iLimit).$tParam;
 264                  $content = '<a href="'.htmlspecialchars($href).'">'.
 265                          '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/pilup.gif','width="14" height="14"').' alt="" />'.
 266                          '</a> <i>[1 - '.$pointer.']</i>';
 267              break;
 268              case 'rwd':
 269                  $href = $this->listURL().'&pointer='.$pointer.$tParam;
 270                  $content = '<a href="'.htmlspecialchars($href).'">'.
 271                          '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/pildown.gif','width="14" height="14"').' alt="" />'.
 272                          '</a> <i>['.($pointer+1).' - '.$this->totalItems.']</i>';
 273              break;
 274          }
 275          return $content;
 276      }
 277  
 278      /**
 279       * Creates the URL to this script, including all relevant GPvars
 280       *
 281       * @param    string        Alternative id value. Enter blank string for the current id ($this->id)
 282       * @return    string        URL
 283       */
 284  	function listURL($altId='')    {
 285          return $this->script.
 286              '?id='.(strcmp($altId,'')?$altId:$this->id);
 287      }
 288  
 289      /**
 290       * Returning JavaScript for ClipBoard functionality.
 291       *
 292       * @return    string
 293       */
 294  	function CBfunctions()    {
 295          return '
 296          // checkOffCB()
 297  	function checkOffCB(listOfCBnames)    {    //
 298          var notChecked=0;
 299          var total=0;
 300  
 301              // Checking how many is checked, how many is not
 302          var pointer=0;
 303          var pos = listOfCBnames.indexOf(",");
 304          while (pos!=-1)    {
 305              if (!cbValue(listOfCBnames.substr(pointer,pos-pointer))) notChecked++;
 306              total++;
 307              pointer=pos+1;
 308              pos = listOfCBnames.indexOf(",",pointer);
 309          }
 310          if (!cbValue(listOfCBnames.substr(pointer))) notChecked++;
 311          total++;
 312  
 313              // Setting the status...
 314          var flag = notChecked*2>total;
 315          pointer=0;
 316          pos = listOfCBnames.indexOf(",");
 317          while (pos!=-1)    {
 318              setcbValue(listOfCBnames.substr(pointer,pos-pointer),flag);
 319  
 320              pointer=pos+1;
 321              pos = listOfCBnames.indexOf(",",pointer);
 322          }
 323          setcbValue(listOfCBnames.substr(pointer),flag);
 324      }
 325          // cbValue()
 326  	function cbValue(CBname)    {    //
 327          var CBfullName = "CBC["+CBname+"]";
 328          return (document.dblistForm[CBfullName] && document.dblistForm[CBfullName].checked ? 1 : 0);
 329      }
 330          // setcbValue()
 331  	function setcbValue(CBname,flag)    {    //
 332          CBfullName = "CBC["+CBname+"]";
 333          document.dblistForm[CBfullName].checked = flag ? "on" : 0;
 334      }
 335  
 336          ';
 337      }
 338  
 339      /**
 340       * Initializes page languages and icons
 341       *
 342       * @return    void
 343       */
 344  	function initializeLanguages()    {
 345          global $TCA,$LANG;
 346  
 347              // Look up page overlays:
 348          $this->pageOverlays = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
 349              '*',
 350              'pages_language_overlay',
 351              'pid='.intval($this->id).
 352                  t3lib_BEfunc::deleteClause('pages_language_overlay').
 353                  t3lib_BEfunc::versioningPlaceholderClause('pages_language_overlay'),
 354              '',
 355              '',
 356              '',
 357              'sys_language_uid'
 358          );
 359          
 360          $t8Tools = t3lib_div::makeInstance('t3lib_transl8tools');
 361          $this->languageIconTitles = $t8Tools->getSystemLanguages($this->id, $this->backPath);
 362      }
 363  
 364      /**
 365       * Return the icon for the language
 366       *
 367       * @param    integer        Sys language uid
 368       * @return    string        Language icon
 369       */
 370  	function languageFlag($sys_language_uid)    {
 371          return ($this->languageIconTitles[$sys_language_uid]['flagIcon'] ? '<img src="'.$this->languageIconTitles[$sys_language_uid]['flagIcon'].'" class="absmiddle" alt="" />&nbsp;' : '').
 372                  htmlspecialchars($this->languageIconTitles[$sys_language_uid]['title']);
 373      }
 374  }
 375  
 376  
 377  if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_recordlist.php'])    {
 378      include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_recordlist.php']);
 379  }
 380  ?>


Généré le : Sun Nov 25 17:13:16 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics