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
00097 class t3lib_clipboard {
00098 var $numberTabs = 3;
00099
00119 var $clipData=array();
00120
00121 var $changed=0;
00122 var $current='';
00123 var $backPath='';
00124 var $lockToNormal=0;
00125 var $fileMode=0;
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00150 function initializeClipboard() {
00151 global $BE_USER;
00152
00153
00154 $clipData = $BE_USER->getModuleData('clipboard',$BE_USER->getTSConfigVal('options.saveClipboard')?'':'ses');
00155
00156
00157 $clNP = $BE_USER->getTSConfigVal('options.clipboardNumberPads');
00158 if (t3lib_div::testInt($clNP) && $clNP>=0) {
00159 $this->numberTabs = t3lib_div::intInRange($clNP,0,20);
00160 }
00161
00162
00163 $this->clipData['normal'] = is_array($clipData['normal']) ? $clipData['normal'] : array();
00164 for ($a=1;$a<=$this->numberTabs;$a++) {
00165 $this->clipData['tab_'.$a] = is_array($clipData['tab_'.$a]) ? $clipData['tab_'.$a] : array();
00166 }
00167
00168
00169 $this->clipData['current'] = $this->current = isset($this->clipData[$clipData['current']]) ? $clipData['current'] : 'normal';
00170 $this->clipData['_setThumb'] = $clipData['_setThumb'];
00171 }
00172
00179 function lockToNormal() {
00180 $this->lockToNormal = 1;
00181 $this->current = 'normal';
00182 }
00183
00196 function setCmd($cmd) {
00197 if (is_array($cmd['el'])) {
00198 reset($cmd['el']);
00199 while(list($k,$v)=each($cmd['el'])) {
00200 if ($this->current=='normal') {
00201 unset($this->clipData['normal']);
00202 }
00203 if ($v) {
00204 $this->clipData[$this->current]['el'][$k]=$v;
00205 } else {
00206 $this->removeElement($k);
00207 }
00208 $this->changed=1;
00209 }
00210 }
00211
00212 if ($cmd['setP']) {
00213 $this->setCurrentPad($cmd['setP']);
00214 }
00215
00216 if ($cmd['remove']) {
00217 $this->removeElement($cmd['remove']);
00218 $this->changed=1;
00219 }
00220
00221 if ($cmd['removeAll']) {
00222 $this->clipData[$cmd['removeAll']]=array();
00223 $this->changed=1;
00224 }
00225
00226 if (isset($cmd['setCopyMode'])) {
00227 $this->clipData[$this->current]['mode']=$this->isElements()?($cmd['setCopyMode']?'copy':''):'';
00228 $this->changed=1;
00229 }
00230
00231 if (isset($cmd['setThumb'])) {
00232 $this->clipData['_setThumb']=$cmd['setThumb'];
00233 $this->changed=1;
00234 }
00235 }
00236
00243 function setCurrentPad($padIdent) {
00244
00245 if (!$this->lockToNormal && $this->current!=$padIdent) {
00246 if (isset($this->clipData[$padIdent])) $this->clipData['current'] = $this->current = $padIdent;
00247 if ($this->current!='normal' || !$this->isElements()) $this->clipData[$this->current]['mode']='';
00248 $this->changed=1;
00249 }
00250 }
00251
00258 function endClipboard() {
00259 if ($this->changed) $this->saveClipboard();
00260 $this->changed=0;
00261 }
00262
00271 function cleanUpCBC($CBarr,$table,$removeDeselected=0) {
00272 if (is_array($CBarr)) {
00273 reset($CBarr);
00274 while(list($k,$v)=each($CBarr)) {
00275 $p=explode('|',$k);
00276 if ((string)$p[0]!=(string)$table || ($removeDeselected && !$v)) {
00277 unset($CBarr[$k]);
00278 }
00279 }
00280 }
00281 return $CBarr;
00282 }
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00306 function printClipboard() {
00307 global $TBE_TEMPLATE,$LANG;
00308
00309 $out=array();
00310 $elCount = count($this->elFromTable($this->fileMode?'_FILE':''));
00311
00312
00313 $out[]='
00314 <tr class="bgColor2">
00315 <td colspan="3" nowrap="nowrap" align="center"><span class="uppercase"><strong>'.$this->clLabel('clipboard','buttons').'</strong></span></td>
00316 </tr>';
00317
00318
00319 $thumb_url = t3lib_div::linkThisScript(array('CB'=>array('setThumb'=>$this->clipData['_setThumb']?0:1)));
00320 $copymode_url = t3lib_div::linkThisScript(array('CB'=>array('setCopyMode'=>($this->currentMode()=='copy'?'':'copy'))));
00321 $rmall_url = t3lib_div::linkThisScript(array('CB'=>array('removeAll'=>$this->current)));
00322
00323
00324 $opt=array();
00325 $opt[]='<option value="" selected="selected">'.$this->clLabel('menu','rm').'</option>';
00326
00327 if ($elCount && t3lib_extMgm::isLoaded('impexp')) {
00328 $opt[] = '<option value="'.htmlspecialchars("window.location.href='".$this->backPath.'mod.php?M=xMOD_tximpexp'.$this->exportClipElementParameters().'\';').'">'.$this->clLabel('export','rm').'</option>';
00329 }
00330
00331 if (!$this->fileMode && $elCount) {
00332 $opt[]='<option value="'.htmlspecialchars("window.location.href='".$this->editUrl()."&returnUrl='+top.rawurlencode(window.location.href);").'">'.$this->clLabel('edit','rm').'</option>';
00333 }
00334
00335 if ($elCount) {
00336 if($GLOBALS['BE_USER']->jsConfirmation(4)) {
00337 $js = "
00338 if(confirm(".$GLOBALS['LANG']->JScharCode(sprintf($LANG->sL('LLL:EXT:lang/locallang_core.php:mess.deleteClip'),$elCount)).")){
00339 window.location.href='".$this->deleteUrl(0,$this->fileMode?1:0)."&redirect='+top.rawurlencode(window.location.href);
00340 }
00341 ";
00342 } else {
00343 $js = " window.location.href='".$this->deleteUrl(0,$this->fileMode?1:0)."&redirect='+top.rawurlencode(window.location.href); ";
00344 }
00345 $opt[]='<option value="'.htmlspecialchars($js).'">'.$this->clLabel('delete','rm').'</option>';
00346 }
00347 $selector_menu = '<select name="_clipMenu" onchange="eval(this.options[this.selectedIndex].value);this.selectedIndex=0;">'.implode('',$opt).'</select>';
00348
00349 $out[]='
00350 <tr class="typo3-clipboard-head">
00351 <td nowrap="nowrap">'.
00352 '<a href="'.htmlspecialchars($thumb_url).'#clip_head">'.
00353 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/thumb_'.($this->clipData['_setThumb']?'s':'n').'.gif','width="21" height="16"').' vspace="2" border="0" title="'.$this->clLabel('thumbmode_clip').'" alt="" />'.
00354 '</a>'.
00355 '<a href="'.htmlspecialchars($copymode_url).'#clip_head">'.
00356 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/copymode_'.($this->currentMode()=='copy'?'s':'n').'.gif','width="21" height="16"').' vspace="2" border="0" title="'.$this->clLabel('copymode').'" alt="" />'.
00357 '</a>'.
00358 '</td>
00359 <td width="95%">'.$selector_menu.'</td>
00360 <td>'.
00361 '<a href="'.htmlspecialchars($rmall_url).'#clip_head">'.
00362 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/closedok_2.gif','width="21" height="16"').' vspace="2" border="0" title="'.$LANG->sL('LLL:EXT:lang/locallang_core.php:buttons.clear',1).'" alt="" />'.
00363 '</a></td>
00364 </tr>';
00365
00366
00367
00368 $out[]='
00369 <tr class="bgColor5">
00370 <td colspan="3"><a href="'.htmlspecialchars(t3lib_div::linkThisScript(array('CB'=>array('setP'=>'normal')))).'#clip_head">'.
00371 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/'.($this->current=='normal'?'minus':'plus').'bullet.gif','width="18" height="16"').' border="0" align="top" alt="" />'.
00372 $this->padTitleWrap('Normal','normal').
00373 '</a></td>
00374 </tr>';
00375 if ($this->current=='normal') $out=array_merge($out,$this->printContentFromTab('normal'));
00376
00377
00378 for ($a=1;$a<=$this->numberTabs;$a++) {
00379 $out[]='
00380 <tr class="bgColor5">
00381 <td colspan="3"><a href="'.htmlspecialchars(t3lib_div::linkThisScript(array('CB'=>array('setP'=>'tab_'.$a)))).'#clip_head">'.
00382 '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/ol/'.($this->current=='tab_'.$a?'minus':'plus').'bullet.gif','width="18" height="16"').' border="0" align="top" alt="" />'.
00383 $this->padTitleWrap($this->clLabel('cliptabs').$a,'tab_'.$a).
00384 '</a></td>
00385 </tr>';
00386 if ($this->current=='tab_'.$a) $out=array_merge($out,$this->printContentFromTab('tab_'.$a));
00387 }
00388
00389
00390 $output = '<a name="clip_head"></a>
00391
00392 <!--
00393 TYPO3 Clipboard:
00394 -->
00395 <table cellpadding="0" cellspacing="1" border="0" width="290" id="typo3-clipboard">
00396 '.implode('',$out).'
00397 </table>';
00398
00399
00400 $output = '<form action="">'.$output.'</form>';
00401
00402
00403 return $output;
00404 }
00405
00413 function printContentFromTab($pad) {
00414 global $TBE_TEMPLATE;
00415
00416 $lines=array();
00417 if (is_array($this->clipData[$pad]['el'])) {
00418 reset($this->clipData[$pad]['el']);
00419 while(list($k,$v)=each($this->clipData[$pad]['el'])) {
00420 if ($v) {
00421 list($table,$uid) = explode('|',$k);
00422 $bgColClass = ($table=='_FILE'&&$this->fileMode)||($table!='_FILE'&&!$this->fileMode) ? 'bgColor4-20' : 'bgColor4';
00423
00424 if ($table=='_FILE') {
00425 if (@file_exists($v) && t3lib_div::isAllowedAbsPath($v)) {
00426 $fI = pathinfo($v);
00427 $icon = is_dir($v) ? 'folder.gif' : t3lib_BEfunc::getFileIcon(strtolower($fI['extension']));
00428 $size = ' ('.t3lib_div::formatSize(filesize($v)).'bytes)';
00429 $icon = '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/fileicons/'.$icon,'width="18" height="16"').' border="0" hspace="20" class="absmiddle" title="'.htmlspecialchars($fI['basename'].$size).'" alt="" />';
00430 $thumb = $this->clipData['_setThumb'] ? (t3lib_div::inList($GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],$fI['extension']) ? t3lib_BEfunc::getThumbNail($this->backPath.'thumbs.php',$v,' vspace="4"') : '') :'';
00431
00432 $lines[]='
00433 <tr>
00434 <td class="'.$bgColClass.'">'.$icon.'</td>
00435 <td class="'.$bgColClass.'" nowrap="nowrap" width="95%"> '.$this->linkItemText(htmlspecialchars(t3lib_div::fixed_lgd_cs(basename($v),$GLOBALS['BE_USER']->uc['titleLen'])),$v).
00436 ($pad=='normal'?(' <strong>('.($this->clipData['normal']['mode']=='copy'?$this->clLabel('copy','cm'):$this->clLabel('cut','cm')).')</strong>'):'').' '.($thumb?'<br />'.$thumb:'').'</td>
00437 <td class="'.$bgColClass.'" align="center" nowrap="nowrap">'.
00438 '<a href="#" onclick="'.htmlspecialchars('top.launchView(\''.$v.'\', \'\'); return false;').'"><img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/zoom2.gif','width="12" height="12"').' hspace="2" border="0" title="'.$this->clLabel('info','cm').'" alt="" /></a>'.
00439 '<a href="'.htmlspecialchars($this->removeUrl('_FILE',t3lib_div::shortmd5($v))).'#clip_head"><img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/close_12h.gif','width="11" height="12"').' border="0" title="'.$this->clLabel('removeItem').'" alt="" /></a>'.
00440 '</td>
00441 </tr>';
00442 } else {
00443
00444 unset($this->clipData[$pad]['el'][$k]);
00445 $this->changed=1;
00446 }
00447 } else {
00448 $rec=t3lib_BEfunc::getRecordWSOL($table,$uid);
00449 if (is_array($rec)) {
00450 $lines[]='
00451 <tr>
00452 <td class="'.$bgColClass.'">'.$this->linkItemText(t3lib_iconWorks::getIconImage($table,$rec,$this->backPath,'hspace="20" title="'.htmlspecialchars(t3lib_BEfunc::getRecordIconAltText($rec,$table)).'"'),$rec,$table).'</td>
00453 <td class="'.$bgColClass.'" nowrap="nowrap" width="95%"> '.$this->linkItemText(htmlspecialchars(t3lib_div::fixed_lgd_cs(t3lib_BEfunc::getRecordTitle($table,$rec),$GLOBALS['BE_USER']->uc['titleLen'])),$rec,$table).
00454 ($pad=='normal'?(' <strong>('.($this->clipData['normal']['mode']=='copy'?$this->clLabel('copy','cm'):$this->clLabel('cut','cm')).')</strong>'):'').' </td>
00455 <td class="'.$bgColClass.'" align="center" nowrap="nowrap">'.
00456 '<a href="#" onclick="'.htmlspecialchars('top.launchView(\''.$table.'\', \''.intval($uid).'\'); return false;').'"><img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/zoom2.gif','width="12" height="12"').' hspace="2" border="0" title="'.$this->clLabel('info','cm').'" alt="" /></a>'.
00457 '<a href="'.htmlspecialchars($this->removeUrl($table,$uid)).'#clip_head"><img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/close_12h.gif','width="11" height="12"').' border="0" title="'.$this->clLabel('removeItem').'" alt="" /></a>'.
00458 '</td>
00459 </tr>';
00460 } else {
00461 unset($this->clipData[$pad]['el'][$k]);
00462 $this->changed=1;
00463 }
00464 }
00465 }
00466 }
00467 }
00468 if (!count($lines)) {
00469 $lines[]='
00470 <tr>
00471 <td class="bgColor4"><img src="clear.gif" width="56" height="1" alt="" /></td>
00472 <td colspan="2" class="bgColor4" nowrap="nowrap" width="95%"> <em>('.$this->clLabel('clipNoEl').')</em> </td>
00473 </tr>';
00474 }
00475
00476 $this->endClipboard();
00477 return $lines;
00478 }
00479
00487 function padTitleWrap($str,$pad) {
00488 $el = count($this->elFromTable($this->fileMode?'_FILE':'',$pad));
00489 if ($el) {
00490 return '<strong>'.$str.'</strong> ('.($pad=='normal'?($this->clipData['normal']['mode']=='copy'?$this->clLabel('copy','cm'):$this->clLabel('cut','cm')):htmlspecialchars($el)).')';
00491 } else {
00492 return $GLOBALS['TBE_TEMPLATE']->dfw($str);
00493 }
00494 }
00495
00504 function linkItemText($str,$rec,$table='') {
00505 if (is_array($rec) && $table) {
00506 if ($this->fileMode) {
00507 $str=$GLOBALS['TBE_TEMPLATE']->dfw($str);
00508 } else {
00509 $str='<a href="'.htmlspecialchars($this->backPath.'db_list.php?id='.$rec['pid']).'">'.$str.'</a>';
00510 }
00511 } elseif (@file_exists($rec)) {
00512 if (!$this->fileMode) {
00513 $str=$GLOBALS['TBE_TEMPLATE']->dfw($str);
00514 } else {
00515 $str='<a href="'.htmlspecialchars($this->backPath.'file_list.php?id='.dirname($rec)).'">'.$str.'</a>';
00516 }
00517 }
00518 return $str;
00519 }
00520
00531 function selUrlDB($table,$uid,$copy=0,$deselect=0,$baseArray=array()) {
00532 $CB = array('el'=>array(rawurlencode($table.'|'.$uid)=>$deselect?0:1));
00533 if ($copy) $CB['setCopyMode'] = 1;
00534 $baseArray['CB'] = $CB;
00535 return t3lib_div::linkThisScript($baseArray);
00536 }
00537
00547 function selUrlFile($path,$copy=0,$deselect=0,$baseArray=array()) {
00548 $CB=array('el'=>array(rawurlencode('_FILE|'.t3lib_div::shortmd5($path))=>$deselect?'':$path));
00549 if ($copy) $CB['setCopyMode']=1;
00550 $baseArray['CB']=$CB;
00551 return t3lib_div::linkThisScript($baseArray);
00552 }
00553
00564 function pasteUrl($table,$uid,$setRedirect=1) {
00565 $rU = $this->backPath.($table=='_FILE'?'tce_file.php':'tce_db.php').'?'.
00566 ($setRedirect ? 'redirect='.rawurlencode(t3lib_div::linkThisScript(array('CB'=>''))) : '').
00567 '&vC='.$GLOBALS['BE_USER']->veriCode().
00568 '&prErr=1&uPT=1'.
00569 '&CB[paste]='.rawurlencode($table.'|'.$uid).
00570 '&CB[pad]='.$this->current;
00571 return $rU;
00572 }
00573
00581 function deleteUrl($setRedirect=1,$file=0) {
00582 $rU = $this->backPath.($file?'tce_file.php':'tce_db.php').'?'.
00583 ($setRedirect ? 'redirect='.rawurlencode(t3lib_div::linkThisScript(array('CB'=>''))) : '').
00584 '&vC='.$GLOBALS['BE_USER']->veriCode().
00585 '&prErr=1&uPT=1'.
00586 '&CB[delete]=1'.
00587 '&CB[pad]='.$this->current;
00588 return $rU;
00589 }
00590
00598 function editUrl() {
00599 $elements = $this->elFromTable('');
00600 reset($elements);
00601 $editCMDArray=array();
00602 while(list($tP)=each($elements)) {
00603 list($table,$uid) = explode('|',$tP);
00604 $editCMDArray[] = '&edit['.$table.']['.$uid.']=edit';
00605 }
00606
00607 $rU = $this->backPath.'alt_doc.php?'.implode('',$editCMDArray);
00608 return $rU;
00609 }
00610
00619 function removeUrl($table,$uid) {
00620 return t3lib_div::linkThisScript(array('CB'=>array('remove'=>$table.'|'.$uid)));
00621 }
00622
00632 function confirmMsg($table,$rec,$type,$clElements) {
00633 if($GLOBALS['BE_USER']->jsConfirmation(2)) {
00634 $labelKey = 'LLL:EXT:lang/locallang_core.php:mess.'.($this->currentMode()=='copy'?'copy':'move').($this->current=='normal'?'':'cb').'_'.$type;
00635 $msg = $GLOBALS['LANG']->sL($labelKey);
00636
00637 if ($table=='_FILE') {
00638 $thisRecTitle = basename($rec);
00639 if ($this->current=='normal') {
00640 reset($clElements);
00641 $selItem = current($clElements);
00642 $selRecTitle = basename($selItem);
00643 } else {
00644 $selRecTitle=count($clElements);
00645 }
00646 } else {
00647 $thisRecTitle = (
00648 $table=='pages' && !is_array($rec) ?
00649 $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] :
00650 t3lib_BEfunc::getRecordTitle($table,$rec)
00651 );
00652
00653 if ($this->current=='normal') {
00654 $selItem = $this->getSelectedRecord();
00655 $selRecTitle=$selItem['_RECORD_TITLE'];
00656 } else {
00657 $selRecTitle=count($clElements);
00658 }
00659 }
00660
00661
00662 $conf='confirm('.$GLOBALS['LANG']->JScharCode(sprintf(
00663 $msg,
00664 t3lib_div::fixed_lgd_cs($selRecTitle,30),
00665 t3lib_div::fixed_lgd_cs($thisRecTitle,30)
00666 )).')';
00667 } else {
00668 $conf = '';
00669 }
00670 return $conf;
00671 }
00672
00680 function clLabel($key,$Akey='labels') {
00681 return htmlspecialchars($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:'.$Akey.'.'.$key));
00682 }
00683
00689 function exportClipElementParameters() {
00690
00691
00692 $pad = $this->current;
00693 $params = array();
00694 $params[] = 'tx_impexp[action]=export';
00695
00696
00697 if (is_array($this->clipData[$pad]['el'])) {
00698 reset($this->clipData[$pad]['el']);
00699 while(list($k,$v)=each($this->clipData[$pad]['el'])) {
00700 if ($v) {
00701 list($table,$uid) = explode('|',$k);
00702
00703 if ($table=='_FILE') {
00704 if (@file_exists($v) && t3lib_div::isAllowedAbsPath($v)) {
00705 $params[] = 'tx_impexp['.(is_dir($v) ? 'dir' : 'file').'][]='.rawurlencode($v);
00706 }
00707 } else {
00708 $rec = t3lib_BEfunc::getRecord($table,$uid);
00709 if (is_array($rec)) {
00710 $params[] = 'tx_impexp[record][]='.rawurlencode($table.':'.$uid);
00711 }
00712 }
00713 }
00714 }
00715 }
00716
00717 return '&'.implode('&', $params);
00718 }
00719
00720
00721
00722
00723
00724
00725
00726
00727
00728
00729
00730
00731
00732
00739 function removeElement($el) {
00740 unset($this->clipData[$this->current]['el'][$el]);
00741 $this->changed=1;
00742 }
00743
00751 function saveClipboard() {
00752 global $BE_USER;
00753 $BE_USER->pushModuleData('clipboard',$this->clipData);
00754 }
00755
00761 function currentMode() {
00762 return $this->clipData[$this->current]['mode']=='copy' ? 'copy' : 'cut';
00763 }
00764
00771 function cleanCurrent() {
00772 if (is_array($this->clipData[$this->current]['el'])) {
00773 reset($this->clipData[$this->current]['el']);
00774 while(list($k,$v)=each($this->clipData[$this->current]['el'])) {
00775 list($table,$uid) = explode('|',$k);
00776 if ($table!='_FILE') {
00777 if (!$v || !is_array(t3lib_BEfunc::getRecord($table,$uid,'uid'))) {
00778 unset($this->clipData[$this->current]['el'][$k]);
00779 $this->changed=1;
00780 }
00781 } else {
00782 if (!$v || !@file_exists($v)) {
00783 unset($this->clipData[$this->current]['el'][$k]);
00784 $this->changed=1;
00785 }
00786 }
00787 }
00788 }
00789 }
00790
00798 function elFromTable($matchTable='',$pad='') {
00799 $pad = $pad ? $pad : $this->current;
00800 $list=array();
00801 if (is_array($this->clipData[$pad]['el'])) {
00802 reset($this->clipData[$pad]['el']);
00803 while(list($k,$v)=each($this->clipData[$pad]['el'])) {
00804 if ($v) {
00805 list($table,$uid) = explode('|',$k);
00806 if ($table!='_FILE') {
00807 if ((!$matchTable || (string)$table==(string)$matchTable) && $GLOBALS['TCA'][$table]) {
00808 $list[$k]= ($pad=='normal'?$v:$uid);
00809 }
00810 } else {
00811 if ((string)$table==(string)$matchTable) {
00812 $list[$k]=$v;
00813 }
00814 }
00815 }
00816 }
00817 }
00818 return $list;
00819 }
00820
00829 function isSelected($table,$uid) {
00830 $k=$table.'|'.$uid;
00831 return $this->clipData[$this->current]['el'][$k] ? ($this->current=='normal'?$this->currentMode():1) : '';
00832 }
00833
00843 function getSelectedRecord($table='',$uid='') {
00844 if (!$table && !$uid) {
00845 $elArr = $this->elFromTable('');
00846 reset($elArr);
00847 list($table,$uid) = explode('|',key($elArr));
00848 }
00849 if ($this->isSelected($table,$uid)) {
00850 $selRec = t3lib_BEfunc::getRecordWSOL($table,$uid);
00851 $selRec['_RECORD_TITLE'] = t3lib_BEfunc::getRecordTitle($table,$selRec);
00852 return $selRec;
00853 }
00854 }
00855
00861 function isElements() {
00862 return is_array($this->clipData[$this->current]['el']) && count($this->clipData[$this->current]['el']);
00863 }
00864
00865
00866
00867
00868
00869
00870
00871
00872
00873
00874
00875
00876
00877
00878
00879
00880
00881
00882
00883
00884
00902 function makePasteCmdArray($ref,$CMD) {
00903 list($pTable,$pUid) = explode('|',$ref);
00904 $pUid = intval($pUid);
00905
00906 if ($pTable || $pUid>=0) {
00907 $elements = $this->elFromTable($pTable);
00908
00909 $elements = array_reverse($elements);
00910 $mode = $this->currentMode()=='copy' ? 'copy' : 'move';
00911
00912
00913 reset($elements);
00914 while(list($tP)=each($elements)) {
00915 list($table,$uid) = explode('|',$tP);
00916 if (!is_array($CMD[$table])) $CMD[$table]=array();
00917 $CMD[$table][$uid][$mode]=$pUid;
00918 if ($mode=='move') $this->removeElement($tP);
00919 }
00920 $this->endClipboard();
00921 }
00922 return $CMD;
00923 }
00924
00931 function makeDeleteCmdArray($CMD) {
00932 $elements = $this->elFromTable('');
00933 reset($elements);
00934 while(list($tP)=each($elements)) {
00935 list($table,$uid) = explode('|',$tP);
00936 if (!is_array($CMD[$table])) $CMD[$table]=array();
00937 $CMD[$table][$uid]['delete']=1;
00938 $this->removeElement($tP);
00939 }
00940 $this->endClipboard();
00941 return $CMD;
00942 }
00943
00944
00945
00946
00947
00948
00949
00950
00951
00952
00953
00954
00955
00956
00957
00958
00959
00960
00961
00962
00963
00964
00965
00974 function makePasteCmdArray_file($ref,$FILE) {
00975 list($pTable,$pUid) = explode('|',$ref);
00976 $elements = $this->elFromTable('_FILE');
00977 $mode = $this->currentMode()=='copy' ? 'copy' : 'move';
00978
00979
00980 reset($elements);
00981 while(list($tP,$path)=each($elements)) {
00982 $FILE[$mode][]=array('data'=>$path,'target'=>$pUid,'altName'=>1);
00983 if ($mode=='move') $this->removeElement($tP);
00984 }
00985 $this->endClipboard();
00986
00987 return $FILE;
00988 }
00989
00996 function makeDeleteCmdArray_file($FILE) {
00997 $elements = $this->elFromTable('_FILE');
00998
00999 reset($elements);
01000 while(list($tP,$path)=each($elements)) {
01001 $FILE['delete'][]=array('data'=>$path);
01002 $this->removeElement($tP);
01003 }
01004 $this->endClipboard();
01005
01006 return $FILE;
01007 }
01008 }
01009
01010
01011
01012 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_clipboard.php']) {
01013 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_clipboard.php']);
01014 }
01015 ?>