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>';
01015
01016 } else {
01017
01018
01019 $n=$table.'|'.$row['uid'];
01020 $this->CBnames[]=$n;
01021
01022
01023 $checked = ($this->clipObj->isSelected($table,$row['uid'])?' checked="checked"':'');
01024
01025
01026 if ($this->duplicateField && isset($row[$this->duplicateField])) {
01027 $checked='';
01028 if (in_array($row[$this->duplicateField], $this->duplicateStack)) {
01029 $checked=' checked="checked"';
01030 }
01031 $this->duplicateStack[] = $row[$this->duplicateField];
01032 }
01033
01034
01035 $cells[]='<input type="hidden" name="CBH['.$n.']" value="0" /><input type="checkbox" name="CBC['.$n.']" value="1" class="smallCheckboxes"'.$checked.' />';
01036 }
01037
01038
01039 $elFromTable = $this->clipObj->elFromTable($table);
01040 if (count($elFromTable) && $TCA[$table]['ctrl']['sortby']) {
01041 $cells[]='<a href="'.htmlspecialchars($this->clipObj->pasteUrl($table,-$row['uid'])).'" onclick="'.htmlspecialchars('return '.$this->clipObj->confirmMsg($table,$row,'after',$elFromTable)).'">'.
01042 '<img'.t3lib_iconWorks::skinImg('','gfx/clip_pasteafter.gif','width="12" height="12"').' title="'.$LANG->getLL('clip_pasteAfter',1).'" alt="" />'.
01043 '</a>';
01044 }
01045
01046
01047 $elFromTable = $this->clipObj->elFromTable('');
01048 if ($table=='pages' && count($elFromTable)) {
01049 $cells[]='<a href="'.htmlspecialchars($this->clipObj->pasteUrl('',$row['uid'])).'" onclick="'.htmlspecialchars('return '.$this->clipObj->confirmMsg($table,$row,'into',$elFromTable)).'">'.
01050 '<img'.t3lib_iconWorks::skinImg('','gfx/clip_pasteinto.gif','width="12" height="12"').' title="'.$LANG->getLL('clip_pasteInto',1).'" alt="" />'.
01051 '</a>';
01052 }
01053
01054
01055 return ' <!-- CLIPBOARD PANEL: '.$table.':'.$row['uid'].' -->
01056 <div class="typo3-clipCtrl">'.implode('',$cells).'</div>';
01057 }
01058
01066 function makeRef($table,$uid) {
01067
01068
01069 $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
01070 '*',
01071 'sys_refindex',
01072 'ref_table='.$GLOBALS['TYPO3_DB']->fullQuoteStr($table,'sys_refindex').
01073 ' AND ref_uid='.intval($uid).
01074 ' AND deleted=0'
01075 );
01076
01077
01078 $infoData=array();
01079 if (is_array($rows)) {
01080 foreach($rows as $row) {
01081 $infoData[]=$row['tablename'].':'.$row['recuid'].':'.$row['field'];
01082 }
01083 }
01084
01085 return count($infoData) ? '<a href="#" onclick="'.htmlspecialchars('top.launchView(\''.$table.'\', \''.$uid.'\'); return false;').'" title="'.htmlspecialchars(t3lib_div::fixed_lgd(implode(' / ',$infoData),100)).'">'.count($infoData).'</a>' : '';
01086 }
01087
01095 function makeLocalizationPanel($table,$row) {
01096 global $TCA,$LANG;
01097
01098 $out = array(
01099 0 => '',
01100 1 => '',
01101 );
01102 if ($TCA[$table]['ctrl']['languageField'] && $TCA[$table]['ctrl']['transOrigPointerField'] && !$TCA[$table]['ctrl']['transOrigPointerTable']) {
01103
01104
01105 $out[0] = $this->languageFlag($row[$TCA[$table]['ctrl']['languageField']]);
01106
01107
01108 if ($row[$TCA[$table]['ctrl']['languageField']] <=0) {
01109
01110
01111 $translations = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
01112 'uid,'.$TCA[$table]['ctrl']['languageField'],
01113 $table,
01114 'pid='.intval($this->id).
01115 ' AND '.$TCA[$table]['ctrl']['languageField'].'>0'.
01116 ' AND '.$TCA[$table]['ctrl']['transOrigPointerField'].'='.intval($row['uid']).
01117 t3lib_BEfunc::deleteClause($table).
01118 t3lib_BEfunc::versioningPlaceholderClause($table),
01119 '',
01120 '',
01121 '',
01122 $TCA[$table]['ctrl']['languageField']
01123 );
01124
01125
01126 $lNew = '';
01127 foreach($this->pageOverlays as $lUid_OnPage => $lsysRec) {
01128 if (!isset($translations[$lUid_OnPage]) && $GLOBALS['BE_USER']->checkLanguageAccess($lUid_OnPage)) {
01129 $href = $GLOBALS['TBE_TEMPLATE']->issueCommand(
01130 '&cmd['.$table.']['.$row['uid'].'][localize]='.$lUid_OnPage,
01131 $this->listURL().'&justLocalized='.rawurlencode($table.':'.$row['uid'].':'.$lUid_OnPage)
01132 );
01133
01134 $lC = ($this->languageIconTitles[$lUid_OnPage]['flagIcon'] ? '<img src="'.$this->languageIconTitles[$lUid_OnPage]['flagIcon'].'" class="absmiddle" alt="" />' : $this->languageIconTitles[$lUid_OnPage]['title']);
01135 $lC = '<a href="'.htmlspecialchars($href).'">'.$lC.'</a> ';
01136
01137 $lNew.=$lC;
01138 }
01139 }
01140
01141 if ($lNew) $out[1].= $lNew;
01142 } else {
01143 $out[0] = ' '.$out[0];
01144 }
01145 }
01146
01147 return $out;
01148 }
01149
01157 function fieldSelectBox($table,$formFields=1) {
01158 global $TCA, $LANG;
01159
01160
01161 t3lib_div::loadTCA($table);
01162 $formElements=array('','');
01163 if ($formFields) {
01164 $formElements=array('<form action="'.htmlspecialchars($this->listURL()).'" method="post">','</form>');
01165 }
01166
01167
01168 $setFields=is_array($this->setFields[$table]) ? $this->setFields[$table] : array();
01169
01170
01171 $fields = $this->makeFieldList($table);
01172
01173
01174 $fields[]='tstamp';
01175 $fields[]='crdate';
01176 $fields[]='_PATH_';
01177 $fields[]='_REF_';
01178 $fields[]='_LOCALIZATION_';
01179 $fields[]='_CONTROL_';
01180 $fields[]='_CLIPBOARD_';
01181
01182
01183 $opt=array();
01184 $opt[] = '<option value=""></option>';
01185 foreach($fields as $fN) {
01186 $fL = is_array($TCA[$table]['columns'][$fN]) ? ereg_replace(':$','',$LANG->sL($TCA[$table]['columns'][$fN]['label'])) : '['.$fN.']';
01187 $opt[] = '
01188 <option value="'.$fN.'"'.(in_array($fN,$setFields)?' selected="selected"':'').'>'.htmlspecialchars($fL).'</option>';
01189 }
01190
01191
01192 $lMenu = '
01193 <select size="'.t3lib_div::intInRange(count($fields)+1,3,20).'" multiple="multiple" name="displayFields['.$table.'][]">'.implode('',$opt).'
01194 </select>
01195 ';
01196
01197
01198 $content.= '
01199 '.$formElements[0].'
01200
01201 <!--
01202 Field selector for extended table view:
01203 -->
01204 <table border="0" cellpadding="0" cellspacing="0" class="bgColor4" id="typo3-dblist-fieldSelect">
01205 <tr>
01206 <td>'.$lMenu.'</td>
01207 <td><input type="submit" name="search" value="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.setFields',1).'" /></td>
01208 </tr>
01209 </table>
01210 '.$formElements[1];
01211 return $content;
01212 }
01213
01214
01215
01216
01217
01218
01219
01220
01221
01222
01223
01224
01225
01226
01227
01228
01229
01240 function linkClipboardHeaderIcon($string,$table,$cmd,$warning='') {
01241 $onClickEvent = 'document.dblistForm.cmd.value=\''.$cmd.'\';document.dblistForm.cmd_table.value=\''.$table.'\';document.dblistForm.submit();';
01242 if ($warning) $onClickEvent = 'if (confirm('.$GLOBALS['LANG']->JScharCode($warning).')){'.$onClickEvent.'}';
01243 return '<a href="#" onclick="'.htmlspecialchars($onClickEvent.'return false;').'">'.$string.'</a>';
01244 }
01245
01251 function clipNumPane() {
01252 return in_Array('_CLIPBOARD_',$this->fieldArray) && $this->clipObj->current!='normal';
01253 }
01254
01265 function addSortLink($code,$field,$table) {
01266
01267
01268 if ($field=='_CONTROL_' || $field=='_LOCALIZATION_' || $field=='_CLIPBOARD_' || $field=='_REF_' || $this->disableSingleTableView) return $code;
01269
01270
01271 if ($field=='_PATH_') $field=pid;
01272
01273
01274 $sortUrl = $this->listURL('',-1,'sortField,sortRev,table').'&table='.$table.'&sortField='.$field.'&sortRev='.($this->sortRev || ($this->sortField!=$field)?0:1);
01275 $sortArrow = ($this->sortField==$field?'<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/red'.($this->sortRev?'up':'down').'.gif','width="7" height="4"').' alt="" />':'');
01276
01277
01278 return '<a href="'.htmlspecialchars($sortUrl).'">'.$code.
01279 $sortArrow.
01280 '</a>';
01281 }
01282
01290 function recPath($pid) {
01291 if (!isset($this->recPath_cache[$pid])) {
01292 $this->recPath_cache[$pid] = t3lib_BEfunc::getRecordPath($pid,$this->perms_clause,20);
01293 }
01294 return $this->recPath_cache[$pid];
01295 }
01296
01303 function showNewRecLink($table) {
01304 return !count($this->allowedNewTables) || in_array($table,$this->allowedNewTables);
01305 }
01306
01313 function makeReturnUrl() {
01314 return '&returnUrl='.rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'));
01315 }
01316
01317
01318
01319
01320
01321
01322
01323
01324
01325
01326
01327
01328
01329
01330
01331
01332
01338 function initCSV() {
01339
01340
01341 $this->csvLines=array();
01342
01343
01344 $csvRow=array();
01345 foreach($this->fieldArray as $fN) {
01346 $csvRow[]=$fN;
01347 }
01348
01349
01350 $this->setCsvRow($csvRow);
01351 $this->csvLines[]='';
01352 }
01353
01361 function addToCSV($row,$table) {
01362
01363
01364 $csvRow=array();
01365 foreach($this->fieldArray as $fN) {
01366 if ($fN=='_PATH_') {
01367 $csvRow[]=$this->recPath($row['pid']);
01368 } elseif ($fN=='_REF_') {
01369 $csvRow[]=$this->makeRef($table, $row['uid']);
01370 } else {
01371 $csvRow[]=$row[$fN];
01372 }
01373 }
01374
01375
01376 $this->setCsvRow($csvRow);
01377 }
01378
01385 function setCsvRow($csvRow) {
01386 $this->csvLines[] = t3lib_div::csvValues($csvRow);
01387 }
01388
01396 function outputCSV($prefix) {
01397
01398
01399 $filename=$prefix.'_'.date('dmy-Hi').'.csv';
01400
01401
01402 $mimeType = 'application/octet-stream';
01403 Header('Content-Type: '.$mimeType);
01404 Header('Content-Disposition: attachment; filename='.$filename);
01405
01406
01407 echo implode(chr(13).chr(10),$this->csvLines);
01408
01409
01410 exit;
01411 }
01412 }
01413
01414
01415
01416 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/class.db_list_extra.inc']) {
01417 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/class.db_list_extra.inc']);
01418 }
01419 ?>