00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00091 class localRecordList extends recordList {
00092
00093
00094 var $alternateBgColors=FALSE;
00095 var $allowedNewTables=array();
00096 var $newWizards=FALSE;
00097
00098 var $dontShowClipControlPanels=FALSE;
00099 var $showClipboard=FALSE;
00100 var $noControlPanels = FALSE;
00101 var $clickMenuEnabled = TRUE;
00102
00103
00104
00105
00106
00107 var $pageRow=array();
00108
00109 var $csvLines=array();
00110 var $csvOutput=FALSE;
00111
00112 var $clipObj;
00113 var $CBnames=array();
00114 var $duplicateStack=array();
00115
00116
00123 function writeTop($row) {
00124 global $LANG;
00125
00126
00127 $this->pageRow = $row;
00128 $this->counter++;
00129 $alttext = t3lib_BEfunc::getRecordIconAltText($row,'pages');
00130 $iconImg = t3lib_iconWorks::getIconImage('pages',$row,$this->backPath,'class="absmiddle" title="'.htmlspecialchars($alttext).'"');
00131 $titleCol = 'test';
00132 $this->fieldArray = Array($titleCol,'up');
00133
00134
00135
00136 $theData = Array();
00137 $theData[$titleCol] = $this->widthGif;
00138
00139
00140 $localCalcPerms = $GLOBALS['BE_USER']->calcPerms($row);
00141
00142 $theData['up']=array();
00143
00144
00145
00146 $theCtrlPanel =array();
00147
00148
00149 $theCtrlPanel[]='<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::viewOnClick($this->id,'',t3lib_BEfunc::BEgetRootLine($this->id))).'">'.
00150 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/zoom.gif','width="12" height="12"').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.showPage',1).'" alt="" />'.
00151 '</a>';
00152
00153
00154 if ($localCalcPerms&2) {
00155
00156
00157 if ($this->id) {
00158 $params='&edit[pages]['.$row['uid'].']=edit';
00159 $theCtrlPanel[]='<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick($params,'',-1)).'">'.
00160 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/edit2.gif','width="11" height="12"').' title="'.$LANG->getLL('editPage',1).'" alt="" />'.
00161 '</a>';
00162 }
00163
00164
00165 if (!$GLOBALS['SOBE']->modTSconfig['properties']['noCreateRecordsLink']) {
00166 $theCtrlPanel[]='<a href="#" onclick="'.htmlspecialchars('return jumpExt(\'db_new.php?id='.$this->id.'\');').'">'.
00167 '<img'.t3lib_iconWorks::skinImg('','gfx/new_el.gif','width="11" height="12"').' title="'.$LANG->getLL('newRecordGeneral',1).'" alt="" />'.
00168 '</a>';
00169 }
00170
00171
00172 if ($this->id) {
00173 if ($row['hidden']) {
00174 $params='&data[pages]['.$row['uid'].'][hidden]=0';
00175 $theCtrlPanel[]='<a href="#" onclick="'.htmlspecialchars('return jumpToUrl(\''.$GLOBALS['SOBE']->doc->issueCommand($params,-1).'\');').'">'.
00176 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/button_unhide.gif','width="11" height="10"').' title="'.$LANG->getLL('unHidePage',1).'" alt="" />'.
00177 '</a>';
00178 } else {
00179 $params='&data[pages]['.$row['uid'].'][hidden]=1';
00180 $theCtrlPanel[]='<a href="#" onclick="'.htmlspecialchars('return jumpToUrl(\''.$GLOBALS['SOBE']->doc->issueCommand($params,-1).'\');').'">'.
00181 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/button_hide.gif','width="11" height="10"').' title="'.$LANG->getLL('hidePage',1).'" alt="" />'.
00182 '</a>';
00183 }
00184 }
00185
00186
00187 if ($this->id) {
00188 $theCtrlPanel[]='<a href="#" onclick="'.htmlspecialchars('return jumpExt(\'move_el.php?table=pages&uid='.$row['uid'].'\');').'">'.
00189 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/move_'.($this->table=='tt_content'?'record':'page').'.gif','width="11" height="12"').' title="'.$LANG->getLL('move_page',1).'" alt="" />'.
00190 '</a>';
00191 }
00192 }
00193
00194
00195 if (($localCalcPerms&8) || ($localCalcPerms&16)) {
00196 $elFromTable = $this->clipObj->elFromTable('');
00197 if (count($elFromTable)) {
00198 $theCtrlPanel[]='<a href="'.htmlspecialchars($this->clipObj->pasteUrl('',$this->id)).'" onclick="'.htmlspecialchars('return '.$this->clipObj->confirmMsg('pages',$this->pageRow,'into',$elFromTable)).'">'.
00199 '<img'.t3lib_iconWorks::skinImg('','gfx/clip_pasteafter.gif','width="12" height="12"').' title="'.$LANG->getLL('clip_paste',1).'" alt="" />'.
00200 '</a>';
00201 }
00202 }
00203
00204
00205 if (count($theCtrlPanel)) {
00206 $theData['up'][]='
00207
00208 <!--
00209 Control panel for page
00210 -->
00211 <table border="0" cellpadding="0" cellspacing="0" class="bgColor4" id="typo3-dblist-ctrltop">
00212 <tr>
00213 <td>'.implode('</td>
00214 <td>',$theCtrlPanel).'</td>
00215 </tr>
00216 </table>';
00217 }
00218
00219
00220
00221 $theData['up'][]='<a href="'.htmlspecialchars($this->listURL().'&clear_cache=1').'">'.
00222 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/clear_cache.gif','width="14" height="14"').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.clear_cache',1).'" alt="" />'.
00223 '</a>';
00224
00225
00226 if ($this->table) {
00227 $theData['up'][]='<a href="'.htmlspecialchars($this->listURL().'&csv=1').'">'.
00228 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/csv.gif','width="27" height="14"').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.csv',1).'" alt="" />'.
00229 '</a>';
00230 }
00231
00232
00233 if ($this->table && t3lib_extMgm::isLoaded('impexp')) {
00234 $theData['up'][]='<a href="'.htmlspecialchars($this->backPath.t3lib_extMgm::extRelPath('impexp').'app/index.php?tx_impexp[action]=export&tx_impexp[list][]='.rawurlencode($this->table.':'.$this->id)).'">'.
00235 '<img'.t3lib_iconWorks::skinImg($this->backPath,t3lib_extMgm::extRelPath('impexp').'export.gif',' width="18" height="16"').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:rm.export',1).'" alt="" />'.
00236 '</a>';
00237 }
00238
00239
00240 $theData['up'][]='<a href="'.htmlspecialchars($this->listURL()).'">'.
00241 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/refresh_n.gif','width="14" height="14"').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.reload',1).'" alt="" />'.
00242 '</a>';
00243
00244
00245
00246 if ($this->id) {
00247
00248
00249 $theData[$titleCol].='<br /><span title="'.htmlspecialchars($row['_thePathFull']).'">'.htmlspecialchars(t3lib_div::fixed_lgd_cs($row['_thePath'],-$this->fixedL)).'</span>';
00250 $theData['up'][]='<a href="'.htmlspecialchars($this->listURL($row['pid'])).'" onclick="setHighlight('.$row['pid'].')">'.
00251 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/i/pages_up.gif','width="18" height="16"').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.upOneLevel',1).'" alt="" />'.
00252 '</a>';
00253
00254
00255 $theIcon = $this->clickMenuEnabled ? $GLOBALS['SOBE']->doc->wrapClickMenuOnIcon($iconImg,'pages',$this->id) : $iconImg;
00256 } else {
00257
00258
00259 $theData[$titleCol].='<br />'.htmlspecialchars(t3lib_div::fixed_lgd_cs($GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'],-$this->fixedL));
00260
00261
00262 $theIcon = '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/i/_icon_website.gif','width="18" height="16"').' alt="" />';
00263 }
00264
00265
00266 if ($this->returnUrl) {
00267 $theData['up'][]='<a href="'.htmlspecialchars(t3lib_div::linkThisUrl($this->returnUrl,array('id'=>$this->id))).'" class="typo3-goBack">'.
00268 '<img'.t3lib_iconWorks::skinImg($GLOBALS["BACK_PATH"],'gfx/goback.gif','width="14" height="14"').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.goBack',1).'" alt="" />'.
00269 '</a>';
00270 }
00271
00272
00273 $theData['up']='
00274 <table border="0" cellpadding="0" cellspacing="0">
00275 <tr>
00276 <td>'.implode('</td>
00277 <td>',$theData['up']).'</td>
00278 </tr>
00279 </table>';
00280
00281
00282 $out.=$this->addelement(1,$theIcon,$theData,'',$this->leftMargin);
00283
00284
00285 $this->HTMLcode.='
00286
00287
00288 <!--
00289 Page header for db_list:
00290 -->
00291 <table border="0" cellpadding="0" cellspacing="0" id="typo3-dblist-top">
00292 '.$out.'
00293 </table>';
00294 }
00295
00304 function getTable($table,$id,$rowlist) {
00305 global $TCA;
00306
00307
00308 t3lib_div::loadTCA($table);
00309
00310
00311 $addWhere = '';
00312 $titleCol = $TCA[$table]['ctrl']['label'];
00313 $thumbsCol = $TCA[$table]['ctrl']['thumbnail'];
00314 $l10nEnabled = $TCA[$table]['ctrl']['languageField'] && $TCA[$table]['ctrl']['transOrigPointerField'] && !$TCA[$table]['ctrl']['transOrigPointerTable'];
00315
00316
00317 $this->fieldArray=array();
00318 $this->fieldArray[] = $titleCol;
00319 if ($this->localizationView && $l10nEnabled) {
00320 $this->fieldArray[] = '_LOCALIZATION_';
00321 $this->fieldArray[] = '_LOCALIZATION_b';
00322 $addWhere.=' AND '.$TCA[$table]['ctrl']['languageField'].'<=0';
00323 }
00324 if (!t3lib_div::inList($rowlist,'_CONTROL_')) {
00325 $this->fieldArray[] = '_CONTROL_';
00326 }
00327 if ($this->showClipboard) {
00328 $this->fieldArray[] = '_CLIPBOARD_';
00329 }
00330 if (!$this->dontShowClipControlPanels) {
00331 $this->fieldArray[]='_REF_';
00332 }
00333 if ($this->searchLevels) {
00334 $this->fieldArray[]='_PATH_';
00335 }
00336
00337 $this->fieldArray=array_unique(array_merge($this->fieldArray,t3lib_div::trimExplode(',',$rowlist,1)));
00338 if ($this->noControlPanels) {
00339 $tempArray = array_flip($this->fieldArray);
00340 unset($tempArray['_CONTROL_']);
00341 unset($tempArray['_CLIPBOARD_']);
00342 $this->fieldArray = array_keys($tempArray);
00343 }
00344
00345
00346 $selectFields = $this->fieldArray;
00347 $selectFields[] = 'uid';
00348 $selectFields[] = 'pid';
00349 if ($thumbsCol) $selectFields[] = $thumbsCol;
00350 if ($table=='pages') {
00351 if (t3lib_extMgm::isLoaded('cms')) {
00352 $selectFields[] = 'module';
00353 $selectFields[] = 'extendToSubpages';
00354 }
00355 $selectFields[] = 'doktype';
00356 }
00357 if (is_array($TCA[$table]['ctrl']['enablecolumns'])) {
00358 $selectFields = array_merge($selectFields,$TCA[$table]['ctrl']['enablecolumns']);
00359 }
00360 if ($TCA[$table]['ctrl']['type']) {
00361 $selectFields[] = $TCA[$table]['ctrl']['type'];
00362 }
00363 if ($TCA[$table]['ctrl']['typeicon_column']) {
00364 $selectFields[] = $TCA[$table]['ctrl']['typeicon_column'];
00365 }
00366 if ($TCA[$table]['ctrl']['versioningWS']) {
00367 $selectFields[] = 't3ver_id';
00368 $selectFields[] = 't3ver_state';
00369 $selectFields[] = 't3ver_wsid';
00370 $selectFields[] = 't3ver_swapmode';
00371 }
00372 if ($l10nEnabled) {
00373 $selectFields[] = $TCA[$table]['ctrl']['languageField'];
00374 $selectFields[] = $TCA[$table]['ctrl']['transOrigPointerField'];
00375 }
00376 if ($TCA[$table]['ctrl']['label_alt']) {
00377 $selectFields = array_merge($selectFields,t3lib_div::trimExplode(',',$TCA[$table]['ctrl']['label_alt'],1));
00378 }
00379 $selectFields = array_unique($selectFields);
00380 $selectFields = array_intersect($selectFields,$this->makeFieldList($table,1));
00381 $selFieldList = implode(',',$selectFields);
00382
00383
00384 $queryParts = $this->makeQueryArray($table, $id,$addWhere,$selFieldList);
00385 $this->setTotalItems($queryParts);
00386
00387
00388 $dbCount = 0;
00389 $out = '';
00390
00391
00392 if ($this->totalItems) {
00393 $result = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts);
00394 $dbCount = $GLOBALS['TYPO3_DB']->sql_num_rows($result);
00395 }
00396
00397 $LOISmode = $this->listOnlyInSingleTableMode && !$this->table;
00398
00399
00400 if ($dbCount) {
00401
00402
00403 if (!$LOISmode) {
00404 $theData = Array();
00405 if (!$this->table && !$rowlist) {
00406 $theData[$titleCol] = '<img src="clear.gif" width="'.($GLOBALS['SOBE']->MOD_SETTINGS['bigControlPanel']?'230':'350').'" height="1" alt="" />';
00407 if (in_array('_CONTROL_',$this->fieldArray)) $theData['_CONTROL_']='';
00408 if (in_array('_CLIPBOARD_',$this->fieldArray)) $theData['_CLIPBOARD_']='';
00409 }
00410 $out.=$this->addelement(0,'',$theData,'class="c-table-row-spacer"',$this->leftMargin);
00411 }
00412
00413
00414 $theData = Array();
00415 if ($this->disableSingleTableView) {
00416 $theData[$titleCol] = '<span class="c-table">'.$GLOBALS['LANG']->sL($TCA[$table]['ctrl']['title'],1).'</span> ('.$this->totalItems.')';
00417 } else {
00418 $theData[$titleCol] = $this->linkWrapTable($table,'<span class="c-table">'.$GLOBALS['LANG']->sL($TCA[$table]['ctrl']['title'],1).'</span> ('.$this->totalItems.') <img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/'.($this->table?'minus':'plus').'bullet_list.gif','width="18" height="12"').' hspace="10" class="absmiddle" title="'.$GLOBALS['LANG']->getLL(!$this->table?'expandView':'contractView',1).'" alt="" />');
00419 }
00420
00421
00422 $theData[$titleCol].= t3lib_BEfunc::cshItem($table,'',$this->backPath,'',FALSE,'margin-bottom:0px; white-space: normal;');
00423
00424 if ($LOISmode) {
00425 $out.='
00426 <tr>
00427 <td class="c-headLineTable" style="width:95%;">'.$theData[$titleCol].'</td>
00428 </tr>';
00429
00430 if ($GLOBALS['BE_USER']->uc["edit_showFieldHelp"]) {
00431 $GLOBALS['LANG']->loadSingleTableDescription($table);
00432 if (isset($GLOBALS['TCA_DESCR'][$table]['columns'][''])) {
00433 $onClick = 'vHWin=window.open(\'view_help.php?tfID='.$table.'.\',\'viewFieldHelp\',\'height=400,width=600,status=0,menubar=0,scrollbars=1\');vHWin.focus();return false;';
00434 $out.='
00435 <tr>
00436 <td class="c-tableDescription">'.t3lib_BEfunc::helpTextIcon($table,'',$this->backPath,TRUE).$GLOBALS['TCA_DESCR'][$table]['columns']['']['description'].'</td>
00437 </tr>';
00438 }
00439 }
00440 } else {
00441 $theUpIcon = ($table=='pages'&&$this->id&&isset($this->pageRow['pid'])) ? '<a href="'.htmlspecialchars($this->listURL($this->pageRow['pid'])).'" onclick="setHighlight('.$this->pageRow['pid'].')"><img'.t3lib_iconWorks::skinImg('','gfx/i/pages_up.gif','width="18" height="16"').' title="'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.upOneLevel',1).'" alt="" /></a>':'';
00442 $out.=$this->addelement(1,$theUpIcon,$theData,' class="c-headLineTable"','');
00443 }
00444
00445 If (!$LOISmode) {
00446
00447 $this->currentTable = array();
00448 $currentIdList = array();
00449 $doSort = ($TCA[$table]['ctrl']['sortby'] && !$this->sortField);
00450
00451 $prevUid = 0;
00452 $prevPrevUid = 0;
00453 $accRows = array();
00454 while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($result)) {
00455 $accRows[] = $row;
00456 $currentIdList[] = $row['uid'];
00457 if ($doSort) {
00458 if ($prevUid) {
00459 $this->currentTable['prev'][$row['uid']] = $prevPrevUid;
00460 $this->currentTable['next'][$prevUid] = '-'.$row['uid'];
00461 $this->currentTable['prevUid'][$row['uid']] = $prevUid;
00462 }
00463 $prevPrevUid = isset($this->currentTable['prev'][$row['uid']]) ? -$prevUid : $row['pid'];
00464 $prevUid=$row['uid'];
00465 }
00466 }
00467 $GLOBALS['TYPO3_DB']->sql_free_result($result);
00468
00469
00470 if ($this->csvOutput) $this->initCSV();
00471
00472
00473 $this->CBnames=array();
00474 $this->duplicateStack=array();
00475 $this->eCounter=$this->firstElementNumber;
00476
00477 $iOut = '';
00478 $cc = 0;
00479 foreach($accRows as $row) {
00480
00481
00482 list($flag,$code) = $this->fwd_rwd_nav($table);
00483 $iOut.=$code;
00484
00485
00486 if ($flag) {
00487 $cc++;
00488 $iOut.= $this->renderListRow($table,$row,$cc,$titleCol,$thumbsCol);
00489
00490
00491 if ($this->localizationView && $l10nEnabled) {
00492
00493
00494 $translations = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
00495 $selFieldList,
00496 $table,
00497 'pid='.$row['pid'].
00498 ' AND '.$TCA[$table]['ctrl']['languageField'].'>0'.
00499 ' AND '.$TCA[$table]['ctrl']['transOrigPointerField'].'='.intval($row['uid']).
00500 t3lib_BEfunc::deleteClause($table).
00501 t3lib_BEfunc::versioningPlaceholderClause($table)
00502 );
00503
00504
00505 if (is_array($translations)) {
00506 foreach($translations as $lRow) {
00507 if ($GLOBALS['BE_USER']->checkLanguageAccess($lRow[$TCA[$table]['ctrl']['languageField']])) {
00508 $iOut.=$this->renderListRow($table,$lRow,$cc,$titleCol,$thumbsCol,18);
00509 }
00510 }
00511 }
00512 }
00513 }
00514
00515
00516 $this->eCounter++;
00517 }
00518
00519
00520 $out.=$this->renderListHeader($table,$currentIdList);
00521 }
00522
00523
00524 $out.=$iOut;
00525
00526
00527 $out='
00528
00529
00530
00531 <!--
00532 DB listing of elements: "'.htmlspecialchars($table).'"
00533 -->
00534 <table border="0" cellpadding="0" cellspacing="0" class="typo3-dblist'.($LOISmode?' typo3-dblist-overview':'').'">
00535 '.$out.'
00536 </table>';
00537
00538
00539 if ($this->csvOutput) $this->outputCSV($table);
00540 }
00541
00542
00543 return $out;
00544 }
00545
00559 function renderListRow($table,$row,$cc,$titleCol,$thumbsCol,$indent=0) {
00560 $iOut = '';
00561
00562 if (strlen($this->searchString)) {
00563 $id_orig = $this->id;
00564 $this->id = $row['pid'];
00565 }
00566
00567
00568 t3lib_BEfunc::workspaceOL($table, $row, $GLOBALS['BE_USER']->workspace);
00569
00570
00571 $row_bgColor=
00572 $this->alternateBgColors ?
00573 (($cc%2)?'' :' class="db_list_alt"') :
00574 '';
00575
00576
00577 $row_bgColor = $row['_CSSCLASS'] ? ' class="'.$row['_CSSCLASS'].'"' : $row_bgColor;
00578
00579
00580 $alttext = t3lib_BEfunc::getRecordIconAltText($row,$table);
00581 $recTitle = t3lib_BEfunc::getRecordTitle($table,$row);
00582
00583
00584 $this->counter++;
00585
00586
00587 $iconImg = t3lib_iconWorks::getIconImage($table,$row,$this->backPath,'title="'.htmlspecialchars($alttext).'"'.($indent ? ' style="margin-left: '.$indent.'px;"' : ''));
00588 $theIcon = $this->clickMenuEnabled ? $GLOBALS['SOBE']->doc->wrapClickMenuOnIcon($iconImg,$table,$row['uid']) : $iconImg;
00589
00590
00591 $theData = Array();
00592 foreach($this->fieldArray as $fCol) {
00593 if ($fCol==$titleCol) {
00594 if ($GLOBALS['TCA'][$table]['ctrl']['label_alt'] && ($GLOBALS['TCA'][$table]['ctrl']['label_alt_force'] || !strcmp($row[$fCol],''))) {
00595 $altFields=t3lib_div::trimExplode(',',$GLOBALS['TCA'][$table]['ctrl']['label_alt'],1);
00596 $tA=array();
00597 if ($row[$fCol]) { $tA[]=$row[$fCol]; }
00598 while(list(,$fN)=each($altFields)) {
00599 $t = t3lib_BEfunc::getProcessedValueExtra($table,$fN,$row[$fN],$GLOBALS['BE_USER']->uc['titleLen'],$row['uid']);
00600 if($t) { $tA[] = $t; }
00601 }
00602 if ($GLOBALS['TCA'][$table]['ctrl']['label_alt_force']) { $t=implode(', ',$tA); }
00603 if ($t) { $recTitle = $t; }
00604 } else {
00605 $recTitle = t3lib_BEfunc::getProcessedValueExtra($table,$fCol,$row[$fCol],$GLOBALS['BE_USER']->uc['titleLen'],$row['uid']);
00606 }
00607 $theData[$fCol] = $this->linkWrapItems($table,$row['uid'],$recTitle,$row);
00608 } elseif ($fCol=='pid') {
00609 $theData[$fCol]=$row[$fCol];
00610 } elseif ($fCol=='_PATH_') {
00611 $theData[$fCol]=$this->recPath($row['pid']);
00612 } elseif ($fCol=='_REF_') {
00613 $theData[$fCol]=$this->makeRef($table,$row['uid']);
00614 } elseif ($fCol=='_CONTROL_') {
00615 $theData[$fCol]=$this->makeControl($table,$row);
00616 } elseif ($fCol=='_CLIPBOARD_') {
00617 $theData[$fCol]=$this->makeClip($table,$row);
00618 } elseif ($fCol=='_LOCALIZATION_') {
00619 list($lC1, $lC2) = $this->makeLocalizationPanel($table,$row);
00620 $theData[$fCol] = $lC1;
00621 $theData[$fCol.'b'] = $lC2;
00622 } elseif ($fCol=='_LOCALIZATION_b') {
00623
00624 } else {
00625 $theData[$fCol] = $this->linkUrlMail(htmlspecialchars(t3lib_BEfunc::getProcessedValueExtra($table,$fCol,$row[$fCol],100,$row['uid'])),$row[$fCol]);
00626 }
00627 }
00628
00629 if (strlen($this->searchString)) {
00630 $this->id = $id_orig;
00631 }
00632
00633
00634 if ($this->csvOutput) $this->addToCSV($row,$table);
00635
00636
00637 $iOut.=$this->addelement(1,$theIcon,$theData,$row_bgColor);
00638
00639
00640 if ($this->thumbs && trim($row[$thumbsCol])) {
00641 $iOut.=$this->addelement(4,'', Array($titleCol=>$this->thumbCode($row,$table,$thumbsCol)),$row_bgColor);
00642 }
00643
00644
00645 return $iOut;
00646 }
00647
00657 function renderListHeader($table,$currentIdList) {
00658 global $TCA, $LANG;
00659
00660
00661 $theData = Array();
00662
00663
00664 foreach($this->fieldArray as $fCol) {
00665
00666
00667 $permsEdit = $this->calcPerms & ($table=='pages'?2:16);
00668
00669 switch((string)$fCol) {
00670 case '_PATH_':
00671 $theData[$fCol] = '<i>['.$LANG->sL('LLL:EXT:lang/locallang_core.php:labels._PATH_',1).']</i>';
00672 break;
00673 case '_REF_':
00674 $theData[$fCol] = '<i>['.$LANG->sL('LLL:EXT:lang/locallang_mod_file_list.xml:c__REF_',1).']</i>';
00675 break;
00676 case '_LOCALIZATION_':
00677 $theData[$fCol] = '<i>['.$LANG->sL('LLL:EXT:lang/locallang_core.php:labels._LOCALIZATION_',1).']</i>';
00678 break;
00679 case '_LOCALIZATION_b':
00680 $theData[$fCol] = $LANG->getLL('Localize',1);
00681 break;
00682 case '_CLIPBOARD_':
00683 $cells=array();
00684
00685
00686 $elFromTable = $this->clipObj->elFromTable($table);
00687 if (count($elFromTable)) {
00688 $cells[]='<a href="'.htmlspecialchars($this->clipObj->pasteUrl($table,$this->id)).'" onclick="'.htmlspecialchars('return '.$this->clipObj->confirmMsg('pages',$this->pageRow,'into',$elFromTable)).'">'.
00689 '<img'.t3lib_iconWorks::skinImg('','gfx/clip_pasteafter.gif','width="12" height="12"').' title="'.$LANG->getLL('clip_paste',1).'" alt="" />'.
00690 '</a>';
00691 }
00692
00693
00694 if ($this->clipObj->current!='normal') {
00695
00696
00697 $cells[]=$this->linkClipboardHeaderIcon('<img'.t3lib_iconWorks::skinImg('','gfx/clip_copy.gif','width="12" height="12"').' title="'.$LANG->getLL('clip_selectMarked',1).'" alt="" />',$table,'setCB');
00698
00699
00700 $editIdList = implode(',',$currentIdList);
00701 $editIdList = "'+editList('".$table."','".$editIdList."')+'";
00702 $params='&edit['.$table.']['.$editIdList.']=edit&disHelp=1';
00703 $cells[]='<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick($params,'',-1)).'">'.
00704 '<img'.t3lib_iconWorks::skinImg('','gfx/edit2.gif','width="11" height="12"').' title="'.$LANG->getLL('clip_editMarked',1).'" alt="" />'.
00705 '</a>';
00706
00707
00708 $cells[]=$this->linkClipboardHeaderIcon('<img'.t3lib_iconWorks::skinImg('','gfx/garbage.gif','width="11" height="12"').' title="'.$LANG->getLL('clip_deleteMarked',1).'" alt="" />',$table,'delete',sprintf($LANG->getLL('clip_deleteMarkedWarning'),$LANG->sL($TCA[$table]['ctrl']['title'])));
00709
00710
00711 $cells[]='<a href="#" onclick="'.htmlspecialchars('checkOffCB(\''.implode(',',$this->CBnames).'\'); return false;').'">'.
00712 '<img'.t3lib_iconWorks::skinImg('','gfx/clip_select.gif','width="12" height="12"').' title="'.$LANG->getLL('clip_markRecords',1).'" alt="" />'.
00713 '</a>';
00714 } else {
00715 $cells[]='';
00716 }
00717 $theData[$fCol]=implode('',$cells);
00718 break;
00719 case '_CONTROL_':
00720 if (!$TCA[$table]['ctrl']['readOnly']) {
00721
00722
00723 if ($this->calcPerms&($table=='pages'?8:16) && $this->showNewRecLink($table)) {
00724 if ($table=="tt_content" && $this->newWizards) {
00725
00726 $tmpTSc = t3lib_BEfunc::getModTSconfig($this->pageinfo['uid'],'mod.web_list');
00727 $tmpTSc = $tmpTSc ['properties']['newContentWiz.']['overrideWithExtension'];
00728 $newContentWizScriptPath = t3lib_extMgm::isLoaded($tmpTSc) ? (t3lib_extMgm::extRelPath($tmpTSc).'mod1/db_new_content_el.php') : 'sysext/cms/layout/db_new_content_el.php';
00729
00730 $theData[$fCol]='<a href="#" onclick="'.htmlspecialchars('return jumpExt(\''.$newContentWizScriptPath.'?id='.$this->id.'\');').'">'.
00731 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/new_'.($table=='pages'?'page':'el').'.gif','width="'.($table=='pages'?13:11).'" height="12"').' title="'.$LANG->getLL('new',1).'" alt="" />'.
00732 '</a>';
00733 } elseif ($table=='pages' && $this->newWizards) {
00734 $theData[$fCol]='<a href="'.htmlspecialchars('db_new.php?id='.$this->id.'&pagesOnly=1returnUrl='.rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))).'">'.
00735 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/new_'.($table=='pages'?'page':'el').'.gif','width="'.($table=='pages'?13:11).'" height="12"').' title="'.$LANG->getLL('new',1).'" alt="" />'.
00736 '</a>';
00737 } else {
00738 $params='&edit['.$table.']['.$this->id.']=new';
00739 $theData[$fCol]='<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick($params,'',-1)).'">'.
00740 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/new_'.($table=='pages'?'page':'el').'.gif','width="'.($table=='pages'?13:11).'" height="12"').' title="'.$LANG->getLL('new',1).'" alt="" />'.
00741 '</a>';
00742 }
00743 }
00744
00745
00746 if ($permsEdit && $this->table && is_array($currentIdList)) {
00747 $editIdList = implode(',',$currentIdList);
00748 if ($this->clipNumPane()) $editIdList = "'+editList('".$table."','".$editIdList."')+'";
00749 $params='&edit['.$table.']['.$editIdList.']=edit&columnsOnly='.implode(',',$this->fieldArray).'&disHelp=1';
00750 $theData[$fCol].='<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick($params,'',-1)).'">'.
00751 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/edit2.gif','width="11" height="12"').' title="'.$LANG->getLL('editShownColumns',1).'" alt="" />'.
00752 '</a>';
00753 }
00754 }
00755 break;
00756 default:
00757 $theData[$fCol]='';
00758 if ($this->table && is_array($currentIdList)) {
00759
00760
00761 if ($this->clipNumPane()) {
00762 $theData[$fCol].='<a href="'.htmlspecialchars($this->listURL('',-1).'&duplicateField='.$fCol).'">'.
00763 '<img'.t3lib_iconWorks::skinImg('','gfx/select_duplicates.gif','width="11" height="11"').' title="'.$LANG->getLL('clip_duplicates',1).'" alt="" />'.
00764 '</a>';
00765 }
00766
00767
00768 if (!$TCA[$table]['ctrl']['readOnly'] && $permsEdit && $TCA[$table]['columns'][$fCol]) {
00769 $editIdList = implode(',',$currentIdList);
00770 if ($this->clipNumPane()) $editIdList = "'+editList('".$table."','".$editIdList."')+'";
00771 $params='&edit['.$table.']['.$editIdList.']=edit&columnsOnly='.$fCol.'&disHelp=1';
00772 $iTitle = sprintf($LANG->getLL('editThisColumn'),ereg_replace(':$','',trim($LANG->sL(t3lib_BEfunc::getItemLabel($table,$fCol)))));
00773 $theData[$fCol].='<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick($params,'',-1)).'">'.
00774 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/edit2.gif','width="11" height="12"').' title="'.htmlspecialchars($iTitle).'" alt="" />'.
00775 '</a>';
00776 }
00777 }
00778 $theData[$fCol].=$this->addSortLink($LANG->sL(t3lib_BEfunc::getItemLabel($table,$fCol,'<i>[|]</i>')),$fCol,$table);
00779 break;
00780 }
00781 }
00782
00783
00784 return $this->addelement(1,'',$theData,' class="c-headLine"','');
00785 }
00786
00787
00788
00789
00790
00791
00792
00793
00794
00795
00796
00797
00805 function makeControl($table,$row) {
00806 global $TCA, $LANG, $SOBE;
00807 if ($this->dontShowClipControlPanels) return '';
00808
00809
00810 t3lib_div::loadTCA($table);
00811 $cells=array();
00812
00813
00814 if ($table=='pages') {
00815 $localCalcPerms = $GLOBALS['BE_USER']->calcPerms(t3lib_BEfunc::getRecord('pages',$row['uid']));
00816 }
00817
00818
00819 $permsEdit = ($table=='pages' && ($localCalcPerms&2)) || ($table!='pages' && ($this->calcPerms&16));
00820
00821
00822 if ($table=='pages' || $table=='tt_content') {
00823 $params='&edit['.$table.']['.$row['uid'].']=edit';
00824 $cells[]='<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::viewOnClick($table=='tt_content'?$this->id.'#'.$row['uid']:$row['uid'])).'">'.
00825 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/zoom.gif','width="12" height="12"').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.showPage',1).'" alt="" />'.
00826 '</a>';
00827 }
00828
00829
00830 if ($permsEdit) {
00831 $params='&edit['.$table.']['.$row['uid'].']=edit';
00832 $cells[]='<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick($params,'',-1)).'">'.
00833 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/edit2'.(!$TCA[$table]['ctrl']['readOnly']?'':'_d').'.gif','width="11" height="12"').' title="'.$LANG->getLL('edit',1).'" alt="" />'.
00834 '</a>';
00835 }
00836
00837
00838 if (($table=="tt_content" && $permsEdit) || ($table=='pages')) {
00839 $cells[]='<a href="#" onclick="'.htmlspecialchars('return jumpExt(\'move_el.php?table='.$table.'&uid='.$row['uid'].'\');').'">'.
00840 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/move_'.($table=='tt_content'?'record':'page').'.gif','width="11" height="12"').' title="'.$LANG->getLL('move_'.($table=='tt_content'?'record':'page'),1).'" alt="" />'.
00841 '</a>';
00842 }
00843
00844
00845 if ($SOBE->MOD_SETTINGS['bigControlPanel'] || $this->table) {
00846
00847
00848 $cells[]='<a href="#" onclick="'.htmlspecialchars('top.launchView(\''.$table.'\', \''.$row['uid'].'\'); return false;').'">'.
00849 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/zoom2.gif','width="12" height="12"').' title="'.$LANG->getLL('showInfo',1).'" alt="" />'.
00850 '</a>';
00851
00852
00853 if (!$TCA[$table]['ctrl']['readOnly']) {
00854
00855
00856 $cells[]='<a href="#" onclick="'.htmlspecialchars('return jumpExt(\'show_rechis.php?element='.rawurlencode($table.':'.$row['uid']).'\',\'#latest\');').'">'.
00857 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/history2.gif','width="13" height="12"').' title="'.$LANG->getLL('history',1).'" alt="" />'.
00858 '</a>';
00859
00860
00861 if (t3lib_extMgm::isLoaded('version')) {
00862 $vers = t3lib_BEfunc::selectVersionsOfRecord($table, $row['uid'], 'uid', $GLOBALS['BE_USER']->workspace);
00863 if (is_array($vers)) {
00864 if (count($vers)>1) {
00865 $st = 'background-color: #FFFF00; font-weight: bold;';
00866 $lab = count($vers)-1;
00867 } else {
00868 $st = 'background-color: #9999cc; font-weight: bold;';
00869 $lab = 'V';
00870 }
00871
00872 $cells[]='<a href="'.htmlspecialchars(t3lib_extMgm::extRelPath('version')).'cm1/index.php?table='.rawurlencode($table).'&uid='.rawurlencode($row['uid']).'" style="'.htmlspecialchars($st).'">'.
00873 $lab.
00874 '</a>';
00875 }
00876 }
00877
00878
00879 if ($table=='pages' && $GLOBALS['BE_USER']->check('modules','web_perm')) {
00880 $cells[]='<a href="'.htmlspecialchars('mod/web/perm/index.php?id='.$row['uid'].'&return_id='.$row['uid'].'&edit=1').'">'.
00881 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/perm.gif','width="7" height="12"').' title="'.$LANG->getLL('permissions',1).'" alt="" />'.
00882 '</a>';
00883 }
00884
00885
00886 if ($TCA[$table]['ctrl']['sortby'] || $TCA[$table]['ctrl']['useColumnsForDefaultValues']) {
00887 if (
00888 ($table!='pages' && ($this->calcPerms&16)) ||
00889 ($table=='pages' && ($this->calcPerms&8))
00890 ) {
00891 if ($this->showNewRecLink($table)) {
00892 $params='&edit['.$table.']['.(-$row['uid']).']=new';
00893 $cells[]='<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick($params,'',-1)).'">'.
00894 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/new_'.($table=='pages'?'page':'el').'.gif','width="'.($table=='pages'?13:11).'" height="12"').' title="'.$LANG->getLL('new'.($table=='pages'?'Page':'Record'),1).'" alt="" />'.
00895 '</a>';
00896 }
00897 }
00898 }
00899
00900
00901 if ($permsEdit && $TCA[$table]['ctrl']['sortby'] && !$this->sortField && !$this->searchLevels) {
00902 if (isset($this->currentTable['prev'][$row['uid']])) {
00903 $params='&cmd['.$table.']['.$row['uid'].'][move]='.$this->currentTable['prev'][$row['uid']];
00904 $cells[]='<a href="#" onclick="'.htmlspecialchars('return jumpToUrl(\''.$SOBE->doc->issueCommand($params,-1).'\');').'">'.
00905 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/button_up.gif','width="11" height="10"').' title="'.$LANG->getLL('moveUp',1).'" alt="" />'.
00906 '</a>';
00907 } else {
00908 $cells[]='<img src="clear.gif" '.t3lib_iconWorks::skinImg($this->backPath,'gfx/button_up.gif','width="11" height="10"',2).' alt="" />';
00909 }
00910 if ($this->currentTable['next'][$row['uid']]) {
00911 $params='&cmd['.$table.']['.$row['uid'].'][move]='.$this->currentTable['next'][$row['uid']];
00912 $cells[]='<a href="#" onclick="'.htmlspecialchars('return jumpToUrl(\''.$SOBE->doc->issueCommand($params,-1).'\');').'">'.
00913 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/button_down.gif','width="11" height="10"').' title="'.$LANG->getLL('moveDown',1).'" alt="" />'.
00914 '</a>';
00915 } else {
00916 $cells[]='<img src="clear.gif" '.t3lib_iconWorks::skinImg($this->backPath,'gfx/button_down.gif','width="11" height="10"',2).' alt="" />';
00917 }
00918 }
00919
00920
00921 $hiddenField = $TCA[$table]['ctrl']['enablecolumns']['disabled'];
00922 if ($permsEdit && $hiddenField && $TCA[$table]['columns'][$hiddenField] && (!$TCA[$table]['columns'][$hiddenField]['exclude'] || $GLOBALS['BE_USER']->check('non_exclude_fields',$table.':'.$hiddenField))) {
00923 if ($row[$hiddenField]) {
00924 $params='&data['.$table.']['.$row['uid'].']['.$hiddenField.']=0';
00925 $cells[]='<a href="#" onclick="'.htmlspecialchars('return jumpToUrl(\''.$SOBE->doc->issueCommand($params,-1).'\');').'">'.
00926 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/button_unhide.gif','width="11" height="10"').' title="'.$LANG->getLL('unHide'.($table=='pages'?'Page':''),1).'" alt="" />'.
00927 '</a>';
00928 } else {
00929 $params='&data['.$table.']['.$row['uid'].']['.$hiddenField.']=1';
00930 $cells[]='<a href="#" onclick="'.htmlspecialchars('return jumpToUrl(\''.$SOBE->doc->issueCommand($params,-1).'\');').'">'.
00931 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/button_hide.gif','width="11" height="10"').' title="'.$LANG->getLL('hide'.($table=='pages'?'Page':''),1).'" alt="" />'.
00932 '</a>';
00933 }
00934 }
00935
00936
00937 if (
00938 ($table=='pages' && ($localCalcPerms&4)) || ($table!='pages' && ($this->calcPerms&16))
00939 ) {
00940 $params='&cmd['.$table.']['.$row['uid'].'][delete]=1';
00941 $cells[]='<a href="#" onclick="'.htmlspecialchars('if (confirm('.$LANG->JScharCode($LANG->getLL('deleteWarning').t3lib_BEfunc::referenceCount($table,$row['uid'],' (There are %s reference(s) to this record!)')).')) {jumpToUrl(\''.$SOBE->doc->issueCommand($params,-1).'\');} return false;').'">'.
00942 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/garbage.gif','width="11" height="12"').' title="'.$LANG->getLL('delete',1).'" alt="" />'.
00943 '</a>';
00944 }
00945
00946
00947 if ($permsEdit && $table=='pages' && !$this->searchLevels) {
00948
00949
00950 if ($this->calcPerms&8) {
00951 $params='&cmd['.$table.']['.$row['uid'].'][move]='.-$this->id;
00952 $cells[]='<a href="#" onclick="'.htmlspecialchars('return jumpToUrl(\''.$SOBE->doc->issueCommand($params,-1).'\');').'">'.
00953 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/button_left.gif','width="11" height="10"').' title="'.$LANG->getLL('prevLevel',1).'" alt="" />'.
00954 '</a>';
00955 }
00956
00957 if ($this->currentTable['prevUid'][$row['uid']]) {
00958 $localCalcPerms = $GLOBALS['BE_USER']->calcPerms(t3lib_BEfunc::getRecord('pages',$this->currentTable['prevUid'][$row['uid']]));
00959 if ($localCalcPerms&8) {
00960 $params='&cmd['.$table.']['.$row['uid'].'][move]='.$this->currentTable['prevUid'][$row['uid']];
00961 $cells[]='<a href="#" onclick="'.htmlspecialchars('return jumpToUrl(\''.$SOBE->doc->issueCommand($params,-1).'\');').'">'.
00962 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/button_right.gif','width="11" height="10"').' title="'.$LANG->getLL('nextLevel',1).'" alt="" />'.
00963 '</a>';
00964 } else {
00965 $cells[]='<img src="clear.gif" '.t3lib_iconWorks::skinImg($this->backPath,'gfx/button_right.gif','width="11" height="10"',2).' alt="" />';
00966 }
00967 } else {
00968 $cells[]='<img src="clear.gif" '.t3lib_iconWorks::skinImg($this->backPath,'gfx/button_right.gif','width="11" height="10"',2).' alt="" />';
00969 }
00970 }
00971 }
00972 }
00973
00974
00975 if ($lockInfo=t3lib_BEfunc::isRecordLocked($table,$row['uid'])) {
00976 $cells[]='<a href="#" onclick="'.htmlspecialchars('alert('.$LANG->JScharCode($lockInfo['msg']).');return false;').'">'.
00977 '<img'.t3lib_iconWorks::skinImg('','gfx/recordlock_warning3.gif','width="17" height="12"').' title="'.htmlspecialchars($lockInfo['msg']).'" alt="" />'.
00978 '</a>';
00979 }
00980
00981
00982
00983 return '
00984 <!-- CONTROL PANEL: '.$table.':'.$row['uid'].' -->
00985 <div class="typo3-DBctrl">'.implode('',$cells).'</div>';
00986 }
00987
00995 function makeClip($table,$row) {
00996 global $TCA, $LANG;
00997
00998
00999 if ($this->dontShowClipControlPanels) return '';
01000 $cells=array();
01001
01002
01003
01004
01005 if ($this->clipObj->current=='normal') {
01006
01007
01008 $isSel = (string)$this->clipObj->isSelected($table,$row['uid']);
01009 $cells[]='<a href="#" onclick="'.htmlspecialchars('return jumpSelf(\''.$this->clipObj->selUrlDB($table,$row['uid'],1,($isSel=='copy'),array('returnUrl'=>'')).'\');').'">'.
01010 '<img'.t3lib_iconWorks::skinImg('','gfx/clip_copy'.($isSel=='copy'?'_h':'').'.gif','width="12" height="12"').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:cm.copy',1).'" alt="" />'.
01011 '</a>';
01012 $cells[]='<a href="#" onclick="'.htmlspecialchars('return jumpSelf(\''.$this->clipObj->selUrlDB($table,$row['uid'],0,($isSel=='cut'),array('returnUrl'=>'')).'\');').'">'.
01013 '<img'.t3lib_iconWorks::skinImg('','gfx/clip_cut'.($isSel=='cut'?'_h':'').'.gif','width="12" height="12"').' title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:cm.cut',1).'" alt="" />'.
01014 '</a>';