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
00116 $BACK_PATH='';
00117 require ('init.php');
00118 require ('template.php');
00119 require_once (PATH_t3lib.'class.t3lib_browsetree.php');
00120 require_once (PATH_t3lib.'class.t3lib_foldertree.php');
00121 require_once (PATH_t3lib.'class.t3lib_stdgraphic.php');
00122 require_once (PATH_t3lib.'class.t3lib_basicfilefunc.php');
00123 $LANG->includeLLFile('EXT:lang/locallang_browse_links.xml');
00124
00125
00126
00127 require_once (PATH_t3lib.'class.t3lib_page.php');
00128 require_once (PATH_t3lib.'class.t3lib_recordlist.php');
00129 require_once ('class.db_list.inc');
00130 require_once ('class.db_list_extra.inc');
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00157 class TBE_browser_recordList extends localRecordList {
00158 var $script='browse_links.php';
00159
00168 function listURL($altId='',$table=-1,$exclList='') {
00169 return $this->script.
00170 '?id='.(strcmp($altId,'')?$altId:$this->id).
00171 '&table='.rawurlencode($table==-1?$this->table:$table).
00172 ($this->thumbs?'&imagemode='.$this->thumbs:'').
00173 ($this->searchString?'&search_field='.rawurlencode($this->searchString):'').
00174 ($this->searchLevels?'&search_levels='.rawurlencode($this->searchLevels):'').
00175 ((!$exclList || !t3lib_div::inList($exclList,'sortField')) && $this->sortField?'&sortField='.rawurlencode($this->sortField):'').
00176 ((!$exclList || !t3lib_div::inList($exclList,'sortRev')) && $this->sortRev?'&sortRev='.rawurlencode($this->sortRev):'').
00177
00178 $this->ext_addP()
00179 ;
00180 }
00181
00187 function ext_addP() {
00188 $str = '&act='.$GLOBALS['SOBE']->act.
00189 '&mode='.$GLOBALS['SOBE']->mode.
00190 '&expandPage='.$GLOBALS['SOBE']->expandPage.
00191 '&bparams='.rawurlencode($GLOBALS['SOBE']->bparams);
00192 return $str;
00193 }
00194
00204 function linkWrapItems($table,$uid,$code,$row) {
00205 global $TCA;
00206
00207 if (!$code) {
00208 $code = '<i>['.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.no_title',1).']</i>';
00209 } else {
00210 $code = htmlspecialchars(t3lib_div::fixed_lgd_cs($code,$this->fixedL));
00211 }
00212
00213 $titleCol = $TCA[$table]['ctrl']['label'];
00214 $title = $row[$titleCol];
00215
00216 $ficon = t3lib_iconWorks::getIcon($table,$row);
00217 $aOnClick = "return insertElement('".$table."', '".$row['uid']."', 'db', unescape('".rawurlencode($title)."'), '', '', '".$ficon."');";
00218 $ATag = '<a href="#" onclick="'.htmlspecialchars($aOnClick).'">';
00219 $ATag_alt = substr($ATag,0,-4).',\'\',1);">';
00220 $ATag_e = '</a>';
00221
00222 return $ATag.
00223 '<img'.t3lib_iconWorks::skinImg('','gfx/plusbullet2.gif','width="18" height="16"').' title="'.$GLOBALS['LANG']->getLL('addToList',1).'" alt="" />'.
00224 $ATag_e.
00225 $ATag_alt.
00226 $code.
00227 $ATag_e;
00228 }
00229
00237 function linkWrapTable($table,$code) {
00238 return $code;
00239 }
00240 }
00241
00242
00243
00244
00245
00246
00254 class localPageTree extends t3lib_browseTree {
00255
00261 function localPageTree() {
00262 $this->init();
00263
00264 $this->clause = ' AND doktype!=255'.$this->clause;
00265 }
00266
00275 function wrapTitle($title,$v,$ext_pArrPages='') {
00276 if ($this->ext_isLinkable($v['doktype'],$v['uid'])) {
00277 $aOnClick = "return link_typo3Page('".$v['uid']."');";
00278 return '<a href="#" onclick="'.htmlspecialchars($aOnClick).'">'.$title.'</a>';
00279 } else {
00280 return '<span style="color: #666666;">'.$title.'</span>';
00281 }
00282 }
00283
00290 function printTree($treeArr='') {
00291 $titleLen=intval($GLOBALS['BE_USER']->uc['titleLen']);
00292 if (!is_array($treeArr)) $treeArr=$this->tree;
00293
00294 $out='';
00295 $c=0;
00296
00297 foreach($treeArr as $k => $v) {
00298 $c++;
00299 $bgColorClass = ($c+1)%2 ? 'bgColor' : 'bgColor-10';
00300 if ($GLOBALS['SOBE']->curUrlInfo['act']=='page' && $GLOBALS['SOBE']->curUrlInfo['pageid']==$v['row']['uid'] && $GLOBALS['SOBE']->curUrlInfo['pageid']) {
00301 $arrCol='<td><img'.t3lib_iconWorks::skinImg('','gfx/blinkarrow_right.gif','width="5" height="9"').' class="c-blinkArrowR" alt="" /></td>';
00302 $bgColorClass='bgColor4';
00303 } else {
00304 $arrCol='<td></td>';
00305 }
00306
00307 $aOnClick = 'return jumpToUrl(\''.$this->script.'?act='.$GLOBALS['SOBE']->act.'&mode='.$GLOBALS['SOBE']->mode.'&expandPage='.$v['row']['uid'].'\');';
00308 $cEbullet = $this->ext_isLinkable($v['row']['doktype'],$v['row']['uid']) ?
00309 '<a href="#" onclick="'.htmlspecialchars($aOnClick).'"><img'.t3lib_iconWorks::skinImg('','gfx/ol/arrowbullet.gif','width="18" height="16"').' alt="" /></a>' :
00310 '';
00311 $out.='
00312 <tr class="'.$bgColorClass.'">
00313 <td nowrap="nowrap">'.
00314 $v['HTML'].
00315 $this->wrapTitle($this->getTitleStr($v['row'],$titleLen),$v['row'],$this->ext_pArrPages).
00316 '</td>'.
00317 $arrCol.
00318 '<td>'.$cEbullet.'</td>
00319 </tr>';
00320 }
00321 $out='
00322
00323
00324 <!--
00325 Navigation Page Tree:
00326 -->
00327 <table border="0" cellpadding="0" cellspacing="0" id="typo3-tree">
00328 '.$out.'
00329 </table>';
00330 return $out;
00331 }
00332
00340 function ext_isLinkable($doktype,$uid) {
00341 if ($uid && $doktype<199) {
00342 return true;
00343 }
00344 }
00345
00354 function PM_ATagWrap($icon,$cmd,$bMark='') {
00355 if ($bMark) {
00356 $anchor = '#'.$bMark;
00357 $name=' name="'.$bMark.'"';
00358 }
00359 $aOnClick = "return jumpToUrl('".$this->script.'?PM='.$cmd."','".$anchor."');";
00360
00361 return '<a href="#"'.$name.' onclick="'.htmlspecialchars($aOnClick).'">'.$icon.'</a>';
00362 }
00363
00371 function wrapIcon($icon,$row) {
00372 return $this->addTagAttributes($icon,' title="id='.$row['uid'].'"');
00373 }
00374 }
00375
00376
00377
00378
00379
00380
00381
00382
00390 class rtePageTree extends localPageTree {
00391 }
00392
00393
00394
00395
00396
00397
00398
00399
00407 class TBE_PageTree extends localPageTree {
00408
00416 function ext_isLinkable($doktype,$uid) {
00417 return true;
00418 }
00419
00428 function wrapTitle($title,$v,$ext_pArrPages) {
00429 if ($ext_pArrPages) {
00430 $ficon=t3lib_iconWorks::getIcon('pages',$v);
00431 $onClick = "return insertElement('pages', '".$v['uid']."', 'db', unescape('".rawurlencode($v['title'])."'), '', '', '".$ficon."','',1);";
00432 } else {
00433 $onClick = 'return jumpToUrl(\'browse_links.php?act='.$GLOBALS['SOBE']->act.'&mode='.$GLOBALS['SOBE']->mode.'&expandPage='.$v['uid'].'\');';
00434 }
00435 return '<a href="#" onclick="'.htmlspecialchars($onClick).'">'.$title.'</a>';
00436 }
00437 }
00438
00439
00440
00441
00442
00443
00444
00445
00454 class localFolderTree extends t3lib_folderTree {
00455 var $ext_IconMode=1;
00456
00464 function wrapTitle($title,$v) {
00465 if ($this->ext_isLinkable($v)) {
00466 $aOnClick = 'return jumpToUrl(\''.$this->script.'?act='.$GLOBALS['SOBE']->act.'&mode='.$GLOBALS['SOBE']->mode.'&expandFolder='.rawurlencode($v['path']).'\');';
00467 return '<a href="#" onclick="'.htmlspecialchars($aOnClick).'">'.$title.'</a>';
00468 } else {
00469 return '<span class="typo3-dimmed">'.$title.'</span>';
00470 }
00471 }
00472
00479 function ext_isLinkable($v) {
00480 $webpath=t3lib_BEfunc::getPathType_web_nonweb($v['path']);
00481 if (strstr($v['path'],'_recycler_') || strstr($v['path'],'_temp_') || $webpath!='web') {
00482 return 0;
00483 }
00484 return 1;
00485 }
00486
00496 function PM_ATagWrap($icon,$cmd,$bMark='') {
00497 if ($bMark) {
00498 $anchor = '#'.$bMark;
00499 $name=' name="'.$bMark.'"';
00500 }
00501 $aOnClick = 'return jumpToUrl(\''.$this->script.'?PM='.$cmd.'\',\''.$anchor.'\');';
00502 return '<a href="#"'.$name.' onclick="'.htmlspecialchars($aOnClick).'">'.$icon.'</a>';
00503 }
00504
00511 function printTree($treeArr='') {
00512 $titleLen=intval($GLOBALS['BE_USER']->uc['titleLen']);
00513
00514 if (!is_array($treeArr)) $treeArr=$this->tree;
00515
00516 $out='';
00517 $c=0;
00518
00519
00520 if (!$GLOBALS['SOBE']->curUrlInfo['value']) {
00521 $cmpPath='';
00522 } else if (substr(trim($GLOBALS['SOBE']->curUrlInfo['info']),-1)!='/') {
00523 $cmpPath=PATH_site.dirname($GLOBALS['SOBE']->curUrlInfo['info']).'/';
00524 } else {
00525 $cmpPath=PATH_site.$GLOBALS['SOBE']->curUrlInfo['info'];
00526 }
00527
00528
00529 foreach($treeArr as $k => $v) {
00530 $c++;
00531 $bgColorClass=($c+1)%2 ? 'bgColor' : 'bgColor-10';
00532
00533
00534 if ($GLOBALS['SOBE']->curUrlInfo['act']=='file' && $cmpPath==$v['row']['path']) {
00535 $arrCol='<td><img'.t3lib_iconWorks::skinImg('','gfx/blinkarrow_right.gif','width="5" height="9"').' class="c-blinkArrowR" alt="" /></td>';
00536 $bgColorClass='bgColor4';
00537 } else {
00538 $arrCol='<td></td>';
00539 }
00540
00541 $aOnClick = 'return jumpToUrl(\''.$this->script.'?act='.$GLOBALS['SOBE']->act.'&mode='.$GLOBALS['SOBE']->mode.'&expandFolder='.rawurlencode($v['row']['path']).'\');';
00542 $cEbullet = $this->ext_isLinkable($v['row']) ? '<a href="#" onclick="'.htmlspecialchars($aOnClick).'"><img'.t3lib_iconWorks::skinImg('','gfx/ol/arrowbullet.gif','width="18" height="16"').' alt="" /></a>' : '';
00543
00544
00545 $out.='
00546 <tr class="'.$bgColorClass.'">
00547 <td nowrap="nowrap">'.$v['HTML'].$this->wrapTitle(t3lib_div::fixed_lgd_cs($v['row']['title'],$titleLen),$v['row']).'</td>
00548 '.$arrCol.'
00549 <td>'.$cEbullet.'</td>
00550 </tr>';
00551 }
00552
00553 $out='
00554
00555 <!--
00556 Folder tree:
00557 -->
00558 <table border="0" cellpadding="0" cellspacing="0" id="typo3-tree">
00559 '.$out.'
00560 </table>';
00561 return $out;
00562 }
00563 }
00564
00565
00566
00567
00568
00569
00577 class rteFolderTree extends localFolderTree {
00578 }
00579
00580
00581
00582
00583
00584
00585
00593 class TBE_FolderTree extends localFolderTree {
00594 var $ext_noTempRecyclerDirs=0;
00595
00602 function ext_isLinkable($v) {
00603 if ($this->ext_noTempRecyclerDirs && (substr($v['path'],-7)=='_temp_/' || substr($v['path'],-11)=='_recycler_/')) {
00604 return 0;
00605 } return 1;
00606 }
00607
00615 function wrapTitle($title,$v) {
00616 if ($this->ext_isLinkable($v)) {
00617 $aOnClick = 'return jumpToUrl(\'browse_links.php?act='.$GLOBALS['SOBE']->act.'&mode='.$GLOBALS['SOBE']->mode.'&expandFolder='.rawurlencode($v['path']).'\');';
00618 return '<a href="#" onclick="'.htmlspecialchars($aOnClick).'">'.$title.'</a>';
00619 } else {
00620 return '<span class="typo3-dimmed">'.$title.'</span>';
00621 }
00622 }
00623 }
00624
00625
00626
00627
00628
00636 class SC_browse_links {
00637
00638
00639 var $siteURL;
00640 var $thisConfig;
00641 var $setTarget;
00642 var $doc;
00643
00644
00655 var $mode;
00656
00662 var $act;
00663
00667 var $expandPage;
00668
00672 var $expandFolder;
00673
00674
00675
00679 var $P;
00680
00685 var $bparams;
00686
00691 var $RTEtsConfigParams;
00692
00693
00694
00695
00699 var $PM;
00700
00704 var $pointer;
00705
00706
00707
00708
00712 var $curUrlArray;
00713
00717 var $curUrlInfo;
00718
00719
00720
00721
00722
00729 function init() {
00730 global $BE_USER,$BACK_PATH;
00731
00732
00733 $this->pointer = t3lib_div::_GP('pointer');
00734 $this->bparams = t3lib_div::_GP('bparams');
00735 $this->P = t3lib_div::_GP('P');
00736 $this->RTEtsConfigParams = t3lib_div::_GP('RTEtsConfigParams');
00737 $this->expandPage = t3lib_div::_GP('expandPage');
00738 $this->expandFolder = t3lib_div::_GP('expandFolder');
00739 $this->PM = t3lib_div::_GP('PM');
00740
00741
00742 $this->mode=t3lib_div::_GP('mode');
00743 if (!$this->mode) {
00744 $this->mode='rte';
00745 }
00746
00747
00748 $this->siteURL = t3lib_div::getIndpEnv('TYPO3_SITE_URL');
00749
00750
00751 if ($this->mode=='wizard') {
00752 $currentLinkParts = t3lib_div::trimExplode(' ',$this->P['currentValue']);
00753 $this->curUrlArray = array(
00754 'target' => $currentLinkParts[1]
00755 );
00756 $this->curUrlInfo=$this->parseCurUrl($this->siteURL.'?id='.$currentLinkParts[0],$this->siteURL);
00757 } else {
00758 $this->curUrlArray = t3lib_div::_GP('curUrl');
00759 if ($this->curUrlArray['all']) {
00760 $this->curUrlArray=t3lib_div::get_tag_attributes($this->curUrlArray['all']);
00761 }
00762 $this->curUrlInfo=$this->parseCurUrl($this->curUrlArray['href'],$this->siteURL);
00763 }
00764
00765
00766 $this->act=t3lib_div::_GP('act');
00767 if (!$this->act) {
00768 $this->act=$this->curUrlInfo['act'];
00769 }
00770
00771
00772 $addPassOnParams='';
00773 if ((string)$this->mode=='rte') {
00774 $RTEtsConfigParts = explode(':',$this->RTEtsConfigParams);
00775 $addPassOnParams.='&RTEtsConfigParams='.rawurlencode($this->RTEtsConfigParams);
00776 $RTEsetup = $GLOBALS['BE_USER']->getTSConfig('RTE',t3lib_BEfunc::getPagesTSconfig($RTEtsConfigParts[5]));
00777 $this->thisConfig = t3lib_BEfunc::RTEsetup($RTEsetup['properties'],$RTEtsConfigParts[0],$RTEtsConfigParts[2],$RTEtsConfigParts[4]);
00778 }
00779
00780
00781 $this->setTarget = $this->curUrlArray['target'];
00782 if ($this->thisConfig['defaultLinkTarget'] && !isset($this->curUrlArray['target'])) {
00783 $this->setTarget=$this->thisConfig['defaultLinkTarget'];
00784 }
00785
00786
00787
00788
00789 $this->doc = t3lib_div::makeInstance('template');
00790 $this->doc->docType= 'xhtml_trans';
00791 $this->doc->backPath = $BACK_PATH;
00792
00793
00794 $JScode = '';
00795 $JScode.= '
00796
00797 var add_href="'.($this->curUrlArray['href']?'&curUrl[href]='.rawurlencode($this->curUrlArray['href']):'').'";
00798 var add_target="'.($this->setTarget?'&curUrl[target]='.rawurlencode($this->setTarget):'').'";
00799 var add_params="'.($this->bparams?'&bparams='.rawurlencode($this->bparams):'').'";
00800
00801 var cur_href="'.($this->curUrlArray['href']?$this->curUrlArray['href']:'').'";
00802 var cur_target="'.($this->setTarget?$this->setTarget:'').'";
00803
00804 function setTarget(target) {
00805 cur_target=target;
00806 add_target="&curUrl[target]="+escape(target);
00807 }
00808 function setValue(value) {
00809 cur_href=value;
00810 add_href="&curUrl[href]="+value;
00811 }
00812 ';
00813
00814
00815 if ($this->mode=='wizard') {
00816 unset($this->P['fieldChangeFunc']['alert']);
00817 reset($this->P['fieldChangeFunc']);
00818 $update='';
00819 while(list($k,$v)=each($this->P['fieldChangeFunc'])) {
00820 $update.= '
00821 window.opener.'.$v;
00822 }
00823
00824 $P2=array();
00825 $P2['itemName']=$this->P['itemName'];
00826 $P2['formName']=$this->P['formName'];
00827 $P2['fieldChangeFunc']=$this->P['fieldChangeFunc'];
00828 $addPassOnParams.=t3lib_div::implodeArrayForUrl('P',$P2);
00829
00830 $JScode.='
00831 function link_typo3Page(id,anchor) {
00832 updateValueInMainForm(id+(anchor?anchor:"")+" "+cur_target);
00833 close();
00834 return false;
00835 }
00836 function link_folder(folder) {
00837 updateValueInMainForm(folder+" "+cur_target);
00838 close();
00839 return false;
00840 }
00841 function link_current() {
00842 if (cur_href!="http://" && cur_href!="mailto:") {
00843 var setValue = cur_href+" "+cur_target;
00844 if (setValue.substr(0,7)=="http://") setValue = setValue.substr(7);
00845 if (setValue.substr(0,7)=="mailto:") setValue = setValue.substr(7);
00846 updateValueInMainForm(setValue);
00847 close();
00848 }
00849 return false;
00850 }
00851 function checkReference() {
00852 if (window.opener && window.opener.document && window.opener.document.'.$this->P['formName'].' && window.opener.document.'.$this->P['formName'].'["'.$this->P['itemName'].'"] ) {
00853 return window.opener.document.'.$this->P['formName'].'["'.$this->P['itemName'].'"];
00854 } else {
00855 close();
00856 }
00857 }
00858 function updateValueInMainForm(input) {
00859 var field = checkReference();
00860 if (field) {
00861 field.value = input;
00862 '.$update.'
00863 }
00864 }
00865 ';
00866 } else {
00867 $JScode.='
00868 function link_typo3Page(id,anchor) {
00869 var theLink = \''.$this->siteURL.'?id=\'+id+(anchor?anchor:"");
00870 self.parent.parent.renderPopup_addLink(theLink,cur_target);
00871 return false;
00872 }
00873 function link_folder(folder) {
00874 var theLink = \''.$this->siteURL.'\'+folder;
00875 self.parent.parent.renderPopup_addLink(theLink,cur_target);
00876 return false;
00877 }
00878 function link_spec(theLink) {
00879 self.parent.parent.renderPopup_addLink(theLink,cur_target);
00880 return false;
00881 }
00882 function link_current() {
00883 if (cur_href!="http://" && cur_href!="mailto:") {
00884 self.parent.parent.renderPopup_addLink(cur_href,cur_target);
00885 }
00886 return false;
00887 }
00888 ';
00889 }
00890
00891
00892 $JScode.='
00893 function jumpToUrl(URL,anchor) {
00894 var add_act = URL.indexOf("act=")==-1 ? "&act='.$this->act.'" : "";
00895 var add_mode = URL.indexOf("mode=")==-1 ? "&mode='.$this->mode.'" : "";
00896 var theLocation = URL+add_act+add_mode+add_href+add_target+add_params'.($addPassOnParams?'+"'.$addPassOnParams.'"':'').'+(anchor?anchor:"");
00897 document.location = theLocation;
00898 return false;
00899 }
00900 ';
00901
00902
00903
00904 $pArr = explode('|',$this->bparams);
00905 $formFieldName = 'data['.$pArr[0].']['.$pArr[1].']['.$pArr[2].']';
00906 $JScode.='
00907 var elRef="";
00908 var targetDoc="";
00909
00910 function launchView(url) {
00911 var thePreviewWindow="";
00912 thePreviewWindow = window.open("show_item.php?table="+url,"ShowItem","height=300,width=410,status=0,menubar=0,resizable=0,location=0,directories=0,scrollbars=1,toolbar=0");
00913 if (thePreviewWindow && thePreviewWindow.focus) {
00914 thePreviewWindow.focus();
00915 }
00916 }
00917 function setReferences() {
00918 if (parent.window.opener
00919 && parent.window.opener.content
00920 && parent.window.opener.content.document.editform
00921 && parent.window.opener.content.document.editform["'.$formFieldName.'"]
00922 ) {
00923 targetDoc = parent.window.opener.content.document;
00924 elRef = targetDoc.editform["'.$formFieldName.'"];
00925 return true;
00926 } else {
00927 return false;
00928 }
00929 }
00930 function insertElement(table, uid, type, filename,fp,filetype,imagefile,action, close) {
00931 if (1=='.($pArr[0]&&!$pArr[1]&&!$pArr[2] ? 1 : 0).') {
00932 addElement(filename,table+"_"+uid,fp,close);
00933 } else {
00934 if (setReferences()) {
00935 parent.window.opener.group_change("add","'.$pArr[0].'","'.$pArr[1].'","'.$pArr[2].'",elRef,targetDoc);
00936 } else {
00937 alert("Error - reference to main window is not set properly!");
00938 }
00939 if (close) {
00940 parent.window.opener.focus();
00941 parent.close();
00942 }
00943 }
00944 return false;
00945 }
00946 function addElement(elName,elValue,altElValue,close) {
00947 if (parent.window.opener && parent.window.opener.setFormValueFromBrowseWin) {
00948 parent.window.opener.setFormValueFromBrowseWin("'.$pArr[0].'",altElValue?altElValue:elValue,elName);
00949 if (close) {
00950 parent.window.opener.focus();
00951 parent.close();
00952 }
00953 } else {
00954 alert("Error - reference to main window is not set properly!");
00955 parent.close();
00956 }
00957 }
00958 ';
00959
00960
00961 $this->doc->JScode = $this->doc->wrapScriptTags($JScode);
00962
00963
00964 if (FALSE) debug(array(
00965 'pointer' => $this->pointer,
00966 'act' => $this->act,
00967 'mode' => $this->mode,
00968 'curUrlInfo' => $this->curUrlInfo,
00969 'curUrlArray' => $this->curUrlArray,
00970 'P' => $this->P,
00971 'bparams' => $this->bparams,
00972 'RTEtsConfigParams' => $this->RTEtsConfigParams,
00973 'expandPage' => $this->expandPage,
00974 'expandFolder' => $this->expandFolder,
00975 'PM' => $this->PM,
00976 ),'Internal variables of Script Class:');
00977 }
00978
00984 function main() {
00985 global $BE_USER;
00986
00987 $modData = $BE_USER->getModuleData('browse_links.php','ses');
00988
00989
00990 switch((string)$this->mode) {
00991 case 'rte':
00992 $this->content=$this->main_rte();
00993 break;
00994 case 'db':
00995 if (isset($this->expandPage)) {
00996 $modData['expandPage']=$this->expandPage;
00997 $BE_USER->pushModuleData('browse_links.php',$modData);
00998 } else {
00999 $this->expandPage=$modData['expandPage'];
01000 }
01001
01002 $this->content=$this->main_db();
01003 break;
01004 case 'file':
01005 case 'filedrag':
01006 if (isset($this->expandFolder)) {
01007 $modData['expandFolder']=$this->expandFolder;
01008 $BE_USER->pushModuleData('browse_links.php',$modData);
01009 } else {
01010 $this->expandFolder=$modData['expandFolder'];
01011 }
01012
01013 $this->content=$this->main_file();
01014 break;
01015 case 'wizard':
01016 $this->content=$this->main_rte(1);
01017 break;
01018 }
01019 }
01020
01026 function printContent() {
01027 echo $this->content;
01028 }
01029
01030
01031
01032
01033
01034
01035
01036
01037
01038
01039
01040
01041
01042
01043
01044
01045
01046
01047
01048
01057 function main_rte($wiz=0) {
01058 global $LANG;
01059
01060
01061 $content=$this->doc->startPage('RTE link');
01062
01063
01064 $allowedItems = array_diff(explode(',','page,file,url,mail,spec'),t3lib_div::trimExplode(',',$this->thisConfig['blindLinkOptions'],1));
01065 reset($allowedItems);
01066 if (!in_array($this->act,$allowedItems)) $this->act = current($allowedItems);
01067
01068
01069 $menuDef = array();
01070 if (!$wiz) {
01071 $menuDef['removeLink']['isActive'] = $this->act=='removeLink';
01072 $menuDef['removeLink']['label'] = $LANG->getLL('removeLink',1);
01073 $menuDef['removeLink']['url'] = '#';
01074 $menuDef['removeLink']['addParams'] = 'onclick="self.parent.parent.renderPopup_unLink();return false;"';
01075 }
01076 if (in_array('page',$allowedItems)) {
01077 $menuDef['page']['isActive'] = $this->act=='page';
01078 $menuDef['page']['label'] = $LANG->getLL('page',1);
01079 $menuDef['page']['url'] = '#';
01080 $menuDef['page']['addParams'] = 'onclick="jumpToUrl(\'?act=page\');return false;"';
01081 }
01082 if (in_array('file',$allowedItems)){
01083 $menuDef['file']['isActive'] = $this->act=='file';
01084 $menuDef['file']['label'] = $LANG->getLL('file',1);
01085 $menuDef['file']['url'] = '#';
01086 $menuDef['file']['addParams'] = 'onclick="jumpToUrl(\'?act=file\');return false;"';
01087 }
01088 if (in_array('url',$allowedItems)) {
01089 $menuDef['url']['isActive'] = $this->act=='url';
01090 $menuDef['url']['label'] = $LANG->getLL('extUrl',1);
01091 $menuDef['url']['url'] = '#';
01092 $menuDef['url']['addParams'] = 'onclick="jumpToUrl(\'?act=url\');return false;"';
01093 }
01094 if (in_array('mail',$allowedItems)) {
01095 $menuDef['mail']['isActive'] = $this->act=='mail';
01096 $menuDef['mail']['label'] = $LANG->getLL('email',1);
01097 $menuDef['mail']['url'] = '#';
01098 $menuDef['mail']['addParams'] = 'onclick="jumpToUrl(\'?act=mail\');return false;"';
01099 }
01100 if (is_array($this->thisConfig['userLinks.']) && in_array('spec',$allowedItems)) {
01101 $menuDef['spec']['isActive'] = $this->act=='spec';
01102 $menuDef['spec']['label'] = $LANG->getLL('special',1);
01103 $menuDef['spec']['url'] = '#';
01104 $menuDef['spec']['addParams'] = 'onclick="jumpToUrl(\'?act=spec\');return false;"';
01105 }
01106 $content .= $this->doc->getTabMenuRaw($menuDef);
01107
01108
01109 $content.=$this->printCurrentUrl($this->curUrlInfo['info']).'<br />';
01110
01111
01112
01113 switch($this->act) {
01114 case 'mail':
01115 $extUrl='
01116
01117 <!--
01118 Enter mail address:
01119 -->
01120 <form action="" name="lurlform" id="lurlform">
01121 <table border="0" cellpadding="2" cellspacing="1" id="typo3-linkMail">
01122 <tr>
01123 <td>'.$GLOBALS['LANG']->getLL('emailAddress',1).':</td>
01124 <td><input type="text" name="lemail"'.$this->doc->formWidth(20).' value="'.htmlspecialchars($this->curUrlInfo['act']=='mail'?$this->curUrlInfo['info']:'').'" /> '.
01125 '<input type="submit" value="'.$GLOBALS['LANG']->getLL('setLink',1).'" onclick="setTarget(\'\');setValue(\'mailto:\'+document.lurlform.lemail.value); return link_current();" /></td>
01126 </tr>
01127 </table>
01128 </form>';
01129 $content.=$extUrl;
01130 break;
01131 case 'url':
01132 $extUrl='
01133
01134 <!--
01135 Enter External URL:
01136 -->
01137 <form action="" name="lurlform" id="lurlform">
01138 <table border="0" cellpadding="2" cellspacing="1" id="typo3-linkURL">
01139 <tr>
01140 <td>URL:</td>
01141 <td><input type="text" name="lurl"'.$this->doc->formWidth(20).' value="'.htmlspecialchars($this->curUrlInfo['act']=='url'?$this->curUrlInfo['info']:'http://').'" /> '.
01142 '<input type="submit" value="'.$GLOBALS['LANG']->getLL('setLink',1).'" onclick="setValue(document.lurlform.lurl.value); return link_current();" /></td>
01143 </tr>
01144 </table>
01145 </form>';
01146 $content.=$extUrl;
01147 break;
01148 case 'file':
01149 $foldertree = t3lib_div::makeInstance('rteFolderTree');
01150 $tree=$foldertree->getBrowsableTree();
01151
01152 if (!$this->curUrlInfo['value'] || $this->curUrlInfo['act']!='file') {
01153 $cmpPath='';
01154 } elseif (substr(trim($this->curUrlInfo['info']),-1)!='/') {
01155 $cmpPath=PATH_site.dirname($this->curUrlInfo['info']).'/';
01156 if (!isset($this->expandFolder)) $this->expandFolder = $cmpPath;
01157 } else {
01158 $cmpPath=PATH_site.$this->curUrlInfo['info'];
01159 }
01160
01161 list(,,$specUid) = explode('_',$this->PM);
01162 $files = $this->expandFolder($foldertree->specUIDmap[$specUid]);
01163
01164 $content.= '
01165
01166 <!--
01167 Wrapper table for folder tree / file list:
01168 -->
01169 <table border="0" cellpadding="0" cellspacing="0" id="typo3-linkFiles">
01170 <tr>
01171 <td class="c-wCell" valign="top">'.$this->barheader($GLOBALS['LANG']->getLL('folderTree').':').$tree.'</td>
01172 <td class="c-wCell" valign="top">'.$files.'</td>
01173 </tr>
01174 </table>
01175 ';
01176 break;
01177 case 'spec':
01178 if (is_array($this->thisConfig['userLinks.'])) {
01179 $subcats=array();
01180 $v=$this->thisConfig['userLinks.'];
01181 reset($v);
01182 while(list($k2)=each($v)) {
01183 $k2i = intval($k2);
01184 if (substr($k2,-1)=='.' && is_array($v[$k2i.'.'])) {
01185
01186
01187 $title = trim($v[$k2i]);
01188 if (!$title) {
01189 $title=$v[$k2i.'.']['url'];
01190 } else {
01191 $title=$LANG->sL($title);
01192 }
01193
01194 $description=$v[$k2i.'.']['description'] ? $LANG->sL($v[$k2i.'.']['description'],1).'<br />' : '';
01195
01196
01197 $onClickEvent='';
01198 if (isset($v[$k2i.'.']['target'])) $onClickEvent.="setTarget('".$v[$k2i.'.']['target']."');";
01199 $v[$k2i.'.']['url'] = str_replace('###_URL###',$this->siteURL,$v[$k2i.'.']['url']);
01200 if (substr($v[$k2i.'.']['url'],0,7)=="http://" || substr($v[$k2i.'.']['url'],0,7)=='mailto:') {
01201 $onClickEvent.="cur_href=unescape('".rawurlencode($v[$k2i.'.']['url'])."');link_current();";
01202 } else {
01203 $onClickEvent.="link_spec(unescape('".$this->siteURL.rawurlencode($v[$k2i.'.']['url'])."'));";
01204 }
01205
01206
01207 $A=array('<a href="#" onclick="'.htmlspecialchars($onClickEvent).'return false;">','</a>');
01208
01209
01210 $subcats[$k2i]='
01211 <tr>
01212 <td class="bgColor4">'.$A[0].'<strong>'.htmlspecialchars($title).($this->curUrlInfo['info']==$v[$k2i.'.']['url']?'<img'.t3lib_iconWorks::skinImg('','gfx/blinkarrow_right.gif','width="5" height="9"').' class="c-blinkArrowR" alt="" />':'').'</strong><br />'.$description.$A[1].'</td>
01213 </tr>';
01214 }
01215 }
01216
01217
01218 ksort($subcats);
01219
01220
01221 $content.= '
01222
01223 <!--
01224 Special userdefined menu:
01225 -->
01226 <table border="0" cellpadding="1" cellspacing="1" id="typo3-linkSpecial">
01227 <tr>
01228 <td class="bgColor5" class="c-wCell" valign="top"><strong>'.$LANG->getLL('special',1).'</strong></td>
01229 </tr>
01230 '.implode('',$subcats).'
01231 </table>
01232 ';
01233 }
01234 break;
01235 case 'page':
01236 default:
01237 $pagetree = t3lib_div::makeInstance('rtePageTree');
01238 $tree=$pagetree->getBrowsableTree();
01239 $cElements = $this->expandPage();
01240 $content.= '
01241
01242 <!--
01243 Wrapper table for page tree / record list:
01244 -->
01245 <table border="0" cellpadding="0" cellspacing="0" id="typo3-linkPages">
01246 <tr>
01247 <td class="c-wCell" valign="top">'.$this->barheader($GLOBALS['LANG']->getLL('pageTree').':').$tree.'</td>
01248 <td class="c-wCell" valign="top">'.$cElements.'</td>
01249 </tr>
01250 </table>
01251 ';
01252 break;
01253 }
01254
01255
01256 if ($this->act!='mail') {
01257 $ltarget='
01258
01259
01260 <!--
01261 Selecting target for link:
01262 -->
01263 <form action="" name="ltargetform" id="ltargetform">
01264 <table border="0" cellpadding="2" cellspacing="1" id="typo3-linkTarget">
01265 <tr>
01266 <td>'.$GLOBALS['LANG']->getLL('target',1).':</td>
01267 <td><input type="text" name="ltarget" onchange="setTarget(this.value);" value="'.htmlspecialchars($this->setTarget).'"'.$this->doc->formWidth(10).' /></td>
01268 <td>
01269 <select name="ltarget_type" onchange="setTarget(this.options[this.selectedIndex].value);document.ltargetform.ltarget.value=this.options[this.selectedIndex].value;this.selectedIndex=0;">
01270 <option></option>
01271 <option value="_top">'.$GLOBALS['LANG']->getLL('top',1).'</option>
01272 <option value="_blank">'.$GLOBALS['LANG']->getLL('newWindow',1).'</option>
01273 </select>
01274 </td>
01275 <td>';
01276
01277 if (($this->curUrlInfo['act']=="page" || $this->curUrlInfo['act']=='file') && $this->curUrlArray['href']) {
01278 $ltarget.='
01279 <input type="submit" value="'.$GLOBALS['LANG']->getLL('update',1).'" onclick="return link_current();" />';
01280 }
01281
01282 $selectJS = '
01283 if (document.ltargetform.popup_width.options[document.ltargetform.popup_width.selectedIndex].value>0 && document.ltargetform.popup_height.options[document.ltargetform.popup_height.selectedIndex].value>0) {
01284 document.ltargetform.ltarget.value = document.ltargetform.popup_width.options[document.ltargetform.popup_width.selectedIndex].value+"x"+document.ltargetform.popup_height.options[document.ltargetform.popup_height.selectedIndex].value;
01285 setTarget(document.ltargetform.ltarget.value);
01286 document.ltargetform.popup_width.selectedIndex=0;
01287 document.ltargetform.popup_height.selectedIndex=0;
01288 }
01289 ';
01290
01291 $ltarget.=' </td>
01292 </tr>
01293 <tr>
01294 <td>'.$GLOBALS['LANG']->getLL('target_popUpWindow',1).':</td>
01295 <td colspan="3">
01296 <select name="popup_width" onchange="'.htmlspecialchars($selectJS).'">
01297 <option value="0">'.$GLOBALS['LANG']->getLL('target_popUpWindow_width',1).'</option>
01298 <option value="300">300</option>
01299 <option value="400">400</option>
01300 <option value="500">500</option>
01301 <option value="600">600</option>
01302 <option value="700">700</option>
01303 <option value="800">800</option>
01304 </select>
01305 x
01306 <select name="popup_height" onchange="'.htmlspecialchars($selectJS).'">
01307 <option value="0">'.$GLOBALS['LANG']->getLL('target_popUpWindow_height',1).'</option>
01308 <option value="200">200</option>
01309 <option value="300">300</option>
01310 <option value="400">400</option>
01311 <option value="500">500</option>
01312 <option value="600">600</option>
01313 </select>
01314 </td>
01315 </tr>
01316 </table>
01317 </form>';
01318
01319
01320 $content.=$ltarget;
01321
01322
01323 $content.='<br /><br />';
01324 }
01325
01326
01327 $content.= $this->doc->endPage();
01328 return $content;
01329 }
01330
01336 function main_db() {
01337
01338
01339 $content=$this->doc->startPage('TBE file selector');
01340
01341
01342 $pArr = explode('|',$this->bparams);
01343
01344
01345 $pagetree = t3lib_div::makeInstance('TBE_PageTree');
01346 $pagetree->script='browse_links.php';
01347 $pagetree->ext_pArrPages = !strcmp($pArr[3],'pages')?1:0;
01348 $tree=$pagetree->getBrowsableTree();
01349
01350
01351 $cElements = $this->TBE_expandPage($pArr[3]);
01352
01353
01354 $content.= '
01355
01356 <!--
01357 Wrapper table for page tree / record list:
01358 -->
01359 <table border="0" cellpadding="0" cellspacing="0" id="typo3-EBrecords">
01360 <tr>
01361 <td class="c-wCell" valign="top">'.$this->barheader($GLOBALS['LANG']->getLL('pageTree').':').$tree.'</td>
01362 <td class="c-wCell" valign="top">'.$cElements.'</td>
01363 </tr>
01364 </table>
01365 ';
01366
01367
01368 $content.='<br /><br />';
01369
01370
01371 $content.= $this->doc->endPage();
01372 return $content;
01373 }
01374
01380 function main_file() {
01381 global $BE_USER;
01382
01383
01384 $content.=$this->doc->startPage('TBE file selector');
01385
01386
01387 $pArr = explode('|',$this->bparams);
01388
01389
01390 $fileProcessor = t3lib_div::makeInstance('t3lib_basicFileFunctions');
01391 $fileProcessor->init($GLOBALS['FILEMOUNTS'], $GLOBALS['TYPO3_CONF_VARS']['BE']['fileExtensions']);
01392 $path=$this->expandFolder;
01393 if (!$path || !@is_dir($path)) {
01394 $path = $fileProcessor->findTempFolder().'/';
01395 }
01396 if ($path!='/' && @is_dir($path)) {
01397 $uploadForm=$this->uploadForm($path);
01398 $createFolder=$this->createFolder($path);
01399 } else {
01400 $createFolder='';
01401 $uploadForm='';
01402 }
01403 if ($BE_USER->getTSConfigVal('options.uploadFieldsInTopOfEB')) $content.=$uploadForm;
01404
01405
01406 $noThumbs = $GLOBALS['BE_USER']->getTSConfigVal('options.noThumbsInEB');
01407
01408 if (!$noThumbs) {
01409
01410 $_MOD_MENU = array('displayThumbs' => '');
01411 $_MCONF['name']='file_list';
01412 $_MOD_SETTINGS = t3lib_BEfunc::getModuleData($_MOD_MENU, t3lib_div::_GP('SET'), $_MCONF['name']);
01413 $addParams = '&act='.$this->act.'&mode='.$this->mode.'&expandFolder='.rawurlencode($path).'&bparams='.rawurlencode($this->bparams);
01414 $thumbNailCheck = t3lib_BEfunc::getFuncCheck('','SET[displayThumbs]',$_MOD_SETTINGS['displayThumbs'],'browse_links.php',$addParams).' '.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_file_list.php:displayThumbs',1);
01415 } else {
01416 $thumbNailCheck='';
01417 }
01418 $noThumbs = $noThumbs?$noThumbs:!$_MOD_SETTINGS['displayThumbs'];
01419
01420
01421 $foldertree = t3lib_div::makeInstance('TBE_FolderTree');
01422 $foldertree->script='browse_links.php';
01423 $foldertree->ext_noTempRecyclerDirs = ($this->mode == 'filedrag');
01424 $tree=$foldertree->getBrowsableTree();
01425
01426 list(,,$specUid) = explode('_',$this->PM);
01427
01428 if ($this->mode=='filedrag') {
01429 $files = $this->TBE_dragNDrop($foldertree->specUIDmap[$specUid],$pArr[3]);
01430 } else {
01431 $files = $this->TBE_expandFolder($foldertree->specUIDmap[$specUid],$pArr[3],$noThumbs);
01432 }
01433
01434
01435 $content.= '
01436
01437 <!--
01438 Wrapper table for folder tree / file list:
01439 -->
01440 <table border="0" cellpadding="0" cellspacing="0" id="typo3-EBfiles">
01441 <tr>
01442 <td class="c-wCell" valign="top">'.$this->barheader($GLOBALS['LANG']->getLL('folderTree').':').$tree.'</td>
01443 <td class="c-wCell" valign="top">'.$files.'</td>
01444 </tr>
01445 </table>
01446 ';
01447 $content.=$thumbNailCheck;
01448
01449
01450 if (!$BE_USER->getTSConfigVal('options.uploadFieldsInTopOfEB')) $content.=$uploadForm;
01451 if ($BE_USER->isAdmin() || $BE_USER->getTSConfigVal('options.createFoldersInEB')) $content.=$createFolder;
01452
01453
01454 $content.='<br /><br />';
01455
01456
01457 $content.= $this->doc->endPage();
01458 return $content;
01459 }
01460
01461
01462
01463
01464
01465
01466
01467
01468
01469
01470
01471
01472
01473
01474
01475
01476
01477
01478
01479
01480
01481
01482
01483
01489 function expandPage() {
01490 global $BE_USER;
01491
01492 $out='';
01493 $expPageId = $this->expandPage;
01494
01495
01496 if (!$this->expandPage && $this->curUrlInfo['cElement']) {
01497 $expPageId = $this->curUrlInfo['pageid'];
01498 }
01499
01500
01501 if ($expPageId && t3lib_div::testInt($expPageId) && $BE_USER->isInWebMount($expPageId)) {
01502
01503
01504 $out.=$this->barheader($GLOBALS['LANG']->getLL('contentElements').':');
01505
01506
01507 $titleLen=intval($GLOBALS['BE_USER']->uc['titleLen']);
01508 $mainPageRec = t3lib_BEfunc::getRecord('pages',$expPageId);
01509 $picon=t3lib_iconWorks::getIconImage('pages',$mainPageRec,'','');
01510 $picon.= htmlspecialchars(t3lib_div::fixed_lgd_cs($mainPageRec['title'],$titleLen));
01511 $out.=$picon.'<br />';
01512
01513
01514 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
01515 'uid,header,hidden,starttime,endtime,fe_group,CType,colpos,bodytext',
01516 'tt_content',
01517 'pid='.intval($expPageId).t3lib_BEfunc::deleteClause('tt_content'),
01518 '',
01519 'colpos,sorting'
01520 );
01521 $cc = $GLOBALS['TYPO3_DB']->sql_num_rows($res);
01522
01523
01524 $c=0;
01525 while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
01526 $c++;
01527 $icon=t3lib_iconWorks::getIconImage('tt_content',$row,'','');
01528 if ($this->curUrlInfo['act']=='page' && $this->curUrlInfo['cElement']==$row['uid']) {
01529 $arrCol='<img'.t3lib_iconWorks::skinImg('','gfx/blinkarrow_left.gif','width="5" height="9"').' class="c-blinkArrowL" alt="" />';
01530 } else {
01531 $arrCol='';
01532 }
01533
01534 $out.='<img'.t3lib_iconWorks::skinImg('','gfx/ol/join'.($c==$cc?'bottom':'').'.gif','width="18" height="16"').' alt="" />'.
01535 $arrCol.
01536 '<a href="#" onclick="return link_typo3Page(\''.$expPageId.'\',\'#'.$row['uid'].'\');">'.
01537 $icon.
01538 htmlspecialchars(t3lib_div::fixed_lgd_cs($row['header'],$titleLen)).
01539 '</a><br />';
01540
01541
01542 if (t3lib_div::inList('text,textpic', $row['CType'])) {
01543 $split = preg_split('/(<a[^>]+name=[\'"]?([^"\'>[:space:]]+)[\'"]?[^>]*>)/i', $row['bodytext'], -1, PREG_SPLIT_DELIM_CAPTURE);
01544
01545 foreach($split as $skey => $sval) {
01546 if (($skey%3)==2) {
01547 // Putting list element HTML together:
01548 $sval = substr($sval,0,100);
01549 $out.='<img'.t3lib_iconWorks::skinImg('','gfx/ol/line.gif','width="18" height="16"').' alt="" />'.
01550 '<img'.t3lib_iconWorks::skinImg('','gfx/ol/join'.($skey+3>count($split)?'bottom':'').'.gif','width="18" height="16"').' alt="" />'.
01551 '<a href="#" onclick="return link_typo3Page(\''.$expPageId.'\',\'#'.rawurlencode($sval).'\');">'.
01552 htmlspecialchars(' <A> '.$sval).
01553 '</a><br />';
01554 }
01555 }
01556 }
01557 }
01558 }
01559 return $out;
01560 }
01561
01568 function TBE_expandPage($tables) {
01569 global $TCA,$BE_USER;
01570
01571 $out='';
01572 if ($this->expandPage>=0 && t3lib_div::testInt($this->expandPage) && $BE_USER->isInWebMount($this->expandPage)) {
01573
01574 // Set array with table names to list:
01575 if (!strcmp(trim($tables),'*')) {
01576 $tablesArr = array_keys($TCA);
01577 } else {
01578 $tablesArr = t3lib_div::trimExplode(',',$tables,1);
01579 }
01580 reset($tablesArr);
01581
01582 // Headline for selecting records:
01583 $out.=$this->barheader($GLOBALS['LANG']->getLL('selectRecords').':');
01584
01585 // Create the header, showing the current page for which the listing is. Includes link to the page itself, if pages are amount allowed tables.
01586 $titleLen=intval($GLOBALS['BE_USER']->uc['titleLen']);
01587 $mainPageRec = t3lib_BEfunc::getRecord('pages',$this->expandPage);
01588 $ATag='';
01589 $ATag_e='';
01590 $ATag2='';
01591 if (in_array('pages',$tablesArr)) {
01592 $ficon=t3lib_iconWorks::getIcon('pages',$mainPageRec);
01593 $ATag="<a href=\"#\" onclick=\"return insertElement('pages', '".$mainPageRec['uid']."', 'db', unescape('".rawurlencode($mainPageRec['title'])."'), '', '', '".$ficon."','',1);\">";
01594 $ATag2="<a href=\"#\" onclick=\"return insertElement('pages', '".$mainPageRec['uid']."', 'db', unescape('".rawurlencode($mainPageRec['title'])."'), '', '', '".$ficon."','',0);\">";
01595 $ATag_alt=substr($ATag,0,-4).",'',1);\">";
01596 $ATag_e='</a>';
01597 }
01598 $picon=t3lib_iconWorks::getIconImage('pages',$mainPageRec,'','');
01599 $pBicon=$ATag2?'<img'.t3lib_iconWorks::skinImg('','gfx/plusbullet2.gif','width="18" height="16"').' alt="" />':'';
01600 $pText=htmlspecialchars(t3lib_div::fixed_lgd_cs($mainPageRec['title'],$titleLen));
01601 $out.=$picon.$ATag2.$pBicon.$ATag_e.$ATag.$pText.$ATag_e.'<br />';
01602
01603
01604 $id = $this->expandPage;
01605 $pointer = t3lib_div::intInRange($this->pointer,0,100000);
01606 $perms_clause = $GLOBALS['BE_USER']->getPagePermsClause(1);
01607 $pageinfo = t3lib_BEfunc::readPageAccess($id,$perms_clause);
01608 $table='';
01609
01610
01611 $dblist = t3lib_div::makeInstance('TBE_browser_recordList');
01612 $dblist->script='browse_links.php';
01613 $dblist->backPath = $GLOBALS['BACK_PATH'];
01614 $dblist->thumbs = 0;
01615 $dblist->calcPerms = $GLOBALS['BE_USER']->calcPerms($pageinfo);
01616 $dblist->noControlPanels=1;
01617 $dblist->clickMenuEnabled=0;
01618 $dblist->tableList=implode(',',$tablesArr);
01619
01620 $dblist->start($id,t3lib_div::_GP('table'),$pointer,
01621 t3lib_div::_GP('search_field'),
01622 t3lib_div::_GP('search_levels'),
01623 t3lib_div::_GP('showLimit')
01624 );
01625 $dblist->setDispFields();
01626 $dblist->generateList($id,$table);
01627 $dblist->writeBottom();
01628
01629
01630 $out.=$dblist->HTMLcode;
01631 $out.=$dblist->getSearchBox();
01632 }
01633
01634
01635 return $out;
01636 }
01637
01638
01639
01640
01641
01642
01643
01644
01645
01646
01647
01648
01649
01650
01651
01652
01653
01661 function expandFolder($expandFolder=0,$extensionList='') {
01662
01663 $expandFolder = $expandFolder ? $expandFolder : $this->expandFolder;
01664 $out='';
01665 if ($expandFolder && $this->checkFolder($expandFolder)) {
01666
01667
01668 $out.=$this->barheader($GLOBALS['LANG']->getLL('files').':');
01669
01670
01671 if (!$this->curUrlInfo['value']) {
01672 $cmpPath='';
01673 } else {
01674 $cmpPath=PATH_site.$this->curUrlInfo['info'];
01675 }
01676
01677
01678
01679 $titleLen=intval($GLOBALS['BE_USER']->uc['titleLen']);
01680 $picon='<img'.t3lib_iconWorks::skinImg('','gfx/i/_icon_webfolders.gif','width="18" height="16"').' alt="" />';
01681 $picon.=htmlspecialchars(t3lib_div::fixed_lgd_cs(basename($expandFolder),$titleLen));
01682 $picon='<a href="#" onclick="return link_folder(\''.t3lib_div::rawUrlEncodeFP(substr($expandFolder,strlen(PATH_site))).'\');">'.$picon.'</a>';
01683 $out.=$picon.'<br />';
01684
01685
01686 $files = t3lib_div::getFilesInDir($expandFolder,$extensionList,1,1);
01687 $c=0;
01688 $cc=count($files);
01689
01690 if (is_array($files)) {
01691 foreach($files as $filepath) {
01692 $c++;
01693 $fI=pathinfo($filepath);
01694
01695
01696 $icon = t3lib_BEfunc::getFileIcon(strtolower($fI['extension']));
01697
01698
01699 if ($this->curUrlInfo['act']=="file" && $cmpPath==$filepath) {
01700 $arrCol='<img'.t3lib_iconWorks::skinImg('','gfx/blinkarrow_left.gif','width="5" height="9"').' class="c-blinkArrowL" alt="" />';
01701 } else {
01702 $arrCol='';
01703 }
01704
01705
01706 $size=' ('.t3lib_div::formatSize(filesize($filepath)).'bytes)';
01707 $icon = '<img'.t3lib_iconWorks::skinImg('','gfx/fileicons/'.$icon.'','width="18" height="16"').' title="'.htmlspecialchars($fI['basename'].$size).'" alt="" />';
01708
01709
01710 $out.='<img'.t3lib_iconWorks::skinImg('','gfx/ol/join'.($c==$cc?'bottom':'').'.gif','width="18" height="16"').' alt="" />'.
01711 $arrCol.
01712 '<a href="#" onclick="return link_folder(\''.t3lib_div::rawUrlEncodeFP(substr($filepath,strlen(PATH_site))).'\');">'.
01713 $icon.
01714 htmlspecialchars(t3lib_div::fixed_lgd_cs(basename($filepath),$titleLen)).
01715 '</a><br />';
01716 }
01717 }
01718 }
01719 return $out;
01720 }
01721
01730 function TBE_expandFolder($expandFolder=0,$extensionList='',$noThumbs=0) {
01731 global $LANG;
01732
01733 $expandFolder = $expandFolder ? $expandFolder : $this->expandFolder;
01734 $out='';
01735 if ($expandFolder && $this->checkFolder($expandFolder)) {
01736
01737 $files = t3lib_div::getFilesInDir($expandFolder,$extensionList,1,1);
01738 $out.= $this->fileList($files, $expandFolder, $noThumbs);
01739 }
01740
01741
01742 return $out;
01743 }
01744
01753 function fileList($files, $folderName='', $noThumbs=0) {
01754 global $LANG;
01755
01756 $out='';
01757
01758
01759 if (is_array($files)) {
01760
01761
01762 $out.=$this->barheader(sprintf($GLOBALS['LANG']->getLL('files').' (%s):',count($files)));
01763
01764 $titleLen=intval($GLOBALS['BE_USER']->uc['titleLen']);
01765
01766
01767 if($folderName) {
01768 $picon='<img'.t3lib_iconWorks::skinImg('','gfx/i/_icon_webfolders.gif','width="18" height="16"').' alt="" />';
01769 $picon.=htmlspecialchars(t3lib_div::fixed_lgd_cs(basename($folderName),$titleLen));
01770 $out.=$picon.'<br />';
01771 }
01772
01773
01774 $imgObj = t3lib_div::makeInstance('t3lib_stdGraphic');
01775 $imgObj->init();
01776 $imgObj->mayScaleUp=0;
01777 $imgObj->tempPath=PATH_site.$imgObj->tempPath;
01778
01779
01780 $lines=array();
01781 foreach($files as $filepath) {
01782 $fI=pathinfo($filepath);
01783
01784
01785 if (t3lib_div::inList($GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],$fI['extension']) && !$noThumbs) {
01786 $imgInfo = $imgObj->getImageDimensions($filepath);
01787 $pDim = $imgInfo[0].'x'.$imgInfo[1].' pixels';
01788 $clickIcon = t3lib_BEfunc::getThumbNail('thumbs.php',$filepath,'hspace="5" vspace="5" border="1"');
01789 } else {
01790 $clickIcon = '';
01791 $pDim = '';
01792 }
01793
01794
01795 $ficon = t3lib_BEfunc::getFileIcon(strtolower($fI['extension']));
01796 $size=' ('.t3lib_div::formatSize(filesize($filepath)).'bytes'.($pDim?', '.$pDim:'').')';
01797 $icon = '<img'.t3lib_iconWorks::skinImg('','gfx/fileicons/'.$ficon,'width="18" height="16"').' title="'.htmlspecialchars($fI['basename'].$size).'" class="absmiddle" alt="" />';
01798
01799
01800 if (strstr($filepath,',') || strstr($filepath,'|')) {
01801 $eMsg = $LANG->JScharCode(sprintf($LANG->getLL('invalidChar'),', |'));
01802 $ATag = $ATag_alt = "<a href=\"#\" onclick=\"alert(".$eMsg.");return false;\">";
01803 } else {
01804 $ATag = "<a href=\"#\" onclick=\"return insertElement('','".t3lib_div::shortMD5($filepath)."', 'file', '".rawurlencode($fI['basename'])."', unescape('".rawurlencode($filepath)."'), '".$fI['extension']."', '".$ficon."');\">";
01805 $ATag_alt = substr($ATag,0,-4).",'',1);\">";
01806 }
01807 $ATag_e='</a>';
01808
01809
01810 $Ahref = 'show_item.php?table='.rawurlencode($filepath).'&returnUrl='.rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'));
01811 $ATag2='<a href="'.htmlspecialchars($Ahref).'">';
01812 $ATag2_e='</a>';
01813
01814
01815 $filenameAndIcon=$ATag_alt.$icon.htmlspecialchars(t3lib_div::fixed_lgd_cs(basename($filepath),$titleLen)).$ATag_e;
01816
01817
01818 if ($pDim) {
01819 $lines[]='
01820 <tr class="bgColor4">
01821 <td nowrap="nowrap">'.$filenameAndIcon.' </td>
01822 <td>'.$ATag.'<img'.t3lib_iconWorks::skinImg('','gfx/plusbullet2.gif','width="18" height="16"').' title="'.$LANG->getLL('addToList',1).'" alt="" />'.$ATag_e.'</td>
01823 <td nowrap="nowrap">'.($ATag2.'<img'.t3lib_iconWorks::skinImg('','gfx/zoom2.gif','width="12" height="12"').' title="'.$LANG->getLL('info',1).'" alt="" /> '.$LANG->getLL('info',1).$ATag2_e).'</td>
01824 <td nowrap="nowrap"> '.$pDim.'</td>
01825 </tr>';
01826 $lines[]='
01827 <tr>
01828 <td colspan="4">'.$ATag_alt.$clickIcon.$ATag_e.'</td>
01829 </tr>';
01830 } else {
01831 $lines[]='
01832 <tr class="bgColor4">
01833 <td nowrap="nowrap">'.$filenameAndIcon.' </td>
01834 <td>'.$ATag.'<img'.t3lib_iconWorks::skinImg('','gfx/plusbullet2.gif','width="18" height="16"').' title="'.$LANG->getLL('addToList',1).'" alt="" />'.$ATag_e.'</td>
01835 <td nowrap="nowrap">'.($ATag2.'<img'.t3lib_iconWorks::skinImg('','gfx/zoom2.gif','width="12" height="12"').' title="'.$LANG->getLL('info',1).'" alt="" /> '.$LANG->getLL('info',1).$ATag2_e).'</td>
01836 <td> </td>
01837 </tr>';
01838 }
01839 $lines[]='
01840 <tr>
01841 <td colspan="3"><img src="clear.gif" width="1" height="3" alt="" /></td>
01842 </tr>';
01843 }
01844
01845
01846 $out.='
01847
01848
01849
01850 <!--
01851 File listing
01852 -->
01853 <table border="0" cellpadding="0" cellspacing="1" id="typo3-fileList">
01854 '.implode('',$lines).'
01855 </table>';
01856 }
01857
01858
01859 return $out;
01860 }
01861
01870 function TBE_dragNDrop($expandFolder=0,$extensionList='') {
01871
01872 $expandFolder = $expandFolder ? $expandFolder : $this->expandFolder;
01873 $out='';
01874 if ($expandFolder && $this->checkFolder($expandFolder)) {
01875 if ($this->isWebFolder($expandFolder)) {
01876
01877
01878 $files = t3lib_div::getFilesInDir($expandFolder,$extensionList,1,1);
01879 if (is_array($files)) {
01880 $out.=$this->barheader(sprintf($GLOBALS['LANG']->getLL('files').' (%s):',count($files)));
01881
01882 $titleLen=intval($GLOBALS['BE_USER']->uc['titleLen']);
01883 $picon='<img'.t3lib_iconWorks::skinImg('','gfx/i/_icon_webfolders.gif','width="18" height="16"').' alt="" />';
01884 $picon.=htmlspecialchars(t3lib_div::fixed_lgd_cs(basename($expandFolder),$titleLen));
01885 $out.=$picon.'<br />';
01886
01887
01888 $lines=array();
01889
01890
01891 $lines[]='
01892 <tr>
01893 <td colspan="2">'.$this->getMsgBox($GLOBALS['LANG']->getLL('findDragDrop')).'</td>
01894 </tr>';
01895
01896
01897 while(list(,$filepath)=each($files)) {
01898 $fI=pathinfo($filepath);
01899
01900
01901 $iurl = $this->siteURL.t3lib_div::rawurlencodeFP(substr($filepath,strlen(PATH_site)));
01902
01903
01904 if (t3lib_div::inList('gif,jpeg,jpg,png',$fI['extension'])) {
01905 $imgInfo = @getimagesize($filepath);
01906 $pDim = $imgInfo[0].'x'.$imgInfo[1].' pixels';
01907
01908 $ficon = t3lib_BEfunc::getFileIcon(strtolower($fI['extension']));
01909 $size=' ('.t3lib_div::formatSize(filesize($filepath)).'bytes'.($pDim?', '.$pDim:'').')';
01910 $icon = '<img'.t3lib_iconWorks::skinImg('','gfx/fileicons/'.$ficon,'width="18" height="16"').' class="absmiddle" title="'.htmlspecialchars($fI['basename'].$size).'" alt="" />';
01911 $filenameAndIcon=$icon.htmlspecialchars(t3lib_div::fixed_lgd_cs(basename($filepath),$titleLen));
01912
01913 if (t3lib_div::_GP('noLimit')) {
01914 $maxW=10000;
01915 $maxH=10000;
01916 } else {
01917 $maxW=380;
01918 $maxH=500;
01919 }
01920 $IW = $imgInfo[0];
01921 $IH = $imgInfo[1];
01922 if ($IW>$maxW) {
01923 $IH=ceil($IH/$IW*$maxW);
01924 $IW=$maxW;
01925 }
01926 if ($IH>$maxH) {
01927 $IW=ceil($IW/$IH*$maxH);
01928 $IH=$maxH;
01929 }
01930
01931
01932 $lines[]='
01933 <tr class="bgColor4">
01934 <td nowrap="nowrap">'.$filenameAndIcon.' </td>
01935 <td nowrap="nowrap">'.
01936 ($imgInfo[0]!=$IW ? '<a href="'.htmlspecialchars(t3lib_div::linkThisScript(array('noLimit'=>'1'))).'">'.
01937 '<img'.t3lib_iconWorks::skinImg('','gfx/icon_warning2.gif','width="18" height="16"').' title="'.$GLOBALS['LANG']->getLL('clickToRedrawFullSize',1).'" alt="" />'.
01938 '</a>':'').
01939 $pDim.' </td>
01940 </tr>';
01941
01942 $lines[]='
01943 <tr>
01944 <td colspan="2"><img src="'.$iurl.'" width="'.$IW.'" height="'.$IH.'" border="1" alt="" /></td>
01945 </tr>';
01946 $lines[]='
01947 <tr>
01948 <td colspan="2"><img src="clear.gif" width="1" height="3" alt="" /></td>
01949 </tr>';
01950 }
01951 }
01952
01953
01954 $out.='
01955
01956
01957 <!--
01958 File listing / Drag-n-drop
01959 -->
01960 <table border="0" cellpadding="0" cellspacing="1" id="typo3-dragBox">
01961 '.implode('',$lines).'
01962 </table>';
01963 }
01964 } else {
01965
01966 $out.=$this->barheader($GLOBALS['LANG']->getLL('files'));
01967 $out.=$this->getMsgBox($GLOBALS['LANG']->getLL('noWebFolder'),'icon_warning2');
01968 }
01969 }
01970 return $out;
01971 }
01972
01973
01974
01975
01976
01977
01978
01979
01980
01981
01982
01983
01984
01985
01986
01987
01988
01989
01990
01997 function isWebFolder($folder) {
01998 $folder = ereg_replace('\/$','',$folder).'/';
01999 return t3lib_div::isFirstPartOfStr($folder,PATH_site) ? TRUE : FALSE;
02000 }
02001
02008 function checkFolder($folder) {
02009 $fileProcessor = t3lib_div::makeInstance('t3lib_basicFileFunctions');
02010 $fileProcessor->init($GLOBALS['FILEMOUNTS'], $GLOBALS['TYPO3_CONF_VARS']['BE']['fileExtensions']);
02011
02012 return $fileProcessor->checkPathAgainstMounts(ereg_replace('\/$','',$folder).'/') ? TRUE : FALSE;
02013 }
02014
02021 function barheader($str) {
02022 return '
02023
02024 <!--
02025 Bar header:
02026 -->
02027 <h3 class="bgColor5">'.htmlspecialchars($str).'</h3>
02028 ';
02029 }
02030
02038 function getMsgBox($in_msg,$icon='icon_note') {
02039 $msg = '<img'.t3lib_iconWorks::skinImg('','gfx/'.$icon.'.gif','width="18" height="16"').' alt="" />'.htmlspecialchars($in_msg);
02040 $msg = '
02041
02042 <!--
02043 Message box:
02044 -->
02045 <table cellspacing="0" class="bgColor4" id="typo3-msgBox">
02046 <tr>
02047 <td>'.$msg.'</td>
02048 </tr>
02049 </table>
02050 ';
02051 return $msg;
02052 }
02053
02060 function printCurrentUrl($str) {
02061 return '
02062
02063 <!--
02064 Print current URL
02065 -->
02066 <table border="0" cellpadding="0" cellspacing="0" class="bgColor5" id="typo3-curUrl">
02067 <tr>
02068 <td>'.$GLOBALS['LANG']->getLL('currentLink',1).': '.htmlspecialchars(rawurldecode($str)).'</td>
02069 </tr>
02070 </table>';
02071 }
02072
02080 function parseCurUrl($href,$siteUrl) {
02081 $href = trim($href);
02082 if ($href) {
02083 $info=array();
02084
02085
02086 $info['value']=$href;
02087 $info['act']='url';
02088
02089 $specialParts = explode('#_SPECIAL',$href);
02090 if (count($specialParts)==2) {
02091 $info['value']='#_SPECIAL'.$specialParts[1];
02092 $info['act']='spec';
02093 } elseif (t3lib_div::isFirstPartOfStr($href,$siteUrl)) {
02094 $rel = substr($href,strlen($siteUrl));
02095 if (@file_exists(PATH_site.rawurldecode($rel))) {
02096 $info['value']=rawurldecode($rel);
02097 $info['act']='file';
02098 } else {
02099 $uP=parse_url($rel);
02100 if (!trim($uP['path'])) {
02101 $pp = explode('id=',$uP['query']);
02102 $id = $pp[1];
02103 if ($id) {
02104
02105 if (!t3lib_div::testInt($id)) {
02106 list($idPartR) = t3lib_BEfunc::getRecordsByField('pages','alias',$id);
02107 $id=intval($idPartR['uid']);
02108 }
02109
02110 $pageRow = t3lib_BEfunc::getRecord('pages',$id);
02111 $titleLen=intval($GLOBALS['BE_USER']->uc['titleLen']);
02112 $info['value']=$GLOBALS['LANG']->getLL('page',1)." '".htmlspecialchars(t3lib_div::fixed_lgd_cs($pageRow['title'],$titleLen))."' (ID:".$id.($uP['fragment']?', #'.$uP['fragment']:'').')';
02113 $info['pageid']=$id;
02114 $info['cElement']=$uP['fragment'];
02115 $info['act']='page';
02116 }
02117 }
02118 }
02119 } else {
02120 if (strtolower(substr($href,0,7))=='mailto:') {
02121 $info['value']=trim(substr($href,7));
02122 $info['act']='mail';
02123 }
02124 }
02125 $info['info'] = $info['value'];
02126 } else {
02127 $info=array();
02128 $info['info']=$GLOBALS['LANG']->getLL('none');
02129 $info['value']='';
02130 $info['act']='page';
02131 }
02132 return $info;
02133 }
02134
02142 function uploadForm($path) {
02143 $count=3;
02144
02145
02146 $header = t3lib_div::isFirstPartOfStr($path,PATH_site)?substr($path,strlen(PATH_site)):$path;
02147 $code=$this->barheader($GLOBALS['LANG']->getLL('uploadImage').':');
02148 $code.='
02149
02150 <!--
02151 Form, for uploading files:
02152 -->
02153 <form action="tce_file.php" method="post" name="editform" enctype="'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'].'">
02154 <table border="0" cellpadding="0" cellspacing="3" id="typo3-uplFiles">
02155 <tr>
02156 <td><strong>'.$GLOBALS['LANG']->getLL('path',1).':</strong> '.htmlspecialchars($header).'</td>
02157 </tr>
02158 <tr>
02159 <td>';
02160
02161
02162 for ($a=1;$a<=$count;$a++) {
02163 $code.='<input type="file" name="upload_'.$a.'"'.$this->doc->formWidth(35).' size="50" />
02164 <input type="hidden" name="file[upload]['.$a.'][target]" value="'.htmlspecialchars($path).'" />
02165 <input type="hidden" name="file[upload]['.$a.'][data]" value="'.$a.'" /><br />';
02166 }
02167
02168
02169 $redirectValue = 'browse_links.php?act='.$this->act.'&mode='.$this->mode.'&expandFolder='.rawurlencode($path).'&bparams='.rawurlencode($this->bparams);
02170 $code.='<input type="hidden" name="redirect" value="'.htmlspecialchars($redirectValue).'" />'.
02171 '<input type="submit" name="submit" value="'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:file_upload.php.submit',1).'" />';
02172
02173 $code.='
02174 <div id="c-override">
02175 <input type="checkbox" name="overwriteExistingFiles" value="1" /> '.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_misc.xml:overwriteExistingFiles',1).'
02176 </div>
02177 ';
02178
02179
02180 $code.='</td>
02181 </tr>
02182 </table>
02183 </form>';
02184
02185 return $code;
02186 }
02187
02195 function createFolder($path) {
02196
02197
02198 $header = t3lib_div::isFirstPartOfStr($path,PATH_site)?substr($path,strlen(PATH_site)):$path;
02199 $code=$this->barheader($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:file_newfolder.php.pagetitle').':');
02200 $code.='
02201
02202 <!--
02203 Form, for creating new folders:
02204 -->
02205 <form action="tce_file.php" method="post" name="editform2">
02206 <table border="0" cellpadding="0" cellspacing="3" id="typo3-crFolder">
02207 <tr>
02208 <td><strong>'.$GLOBALS['LANG']->getLL('path',1).':</strong> '.htmlspecialchars($header).'</td>
02209 </tr>
02210 <tr>
02211 <td>';
02212
02213
02214 $a=1;
02215 $code.='<input'.$this->doc->formWidth(20).' type="text" name="file[newfolder]['.$a.'][data]" />'.
02216 '<input type="hidden" name="file[newfolder]['.$a.'][target]" value="'.htmlspecialchars($path).'" />';
02217
02218
02219 $redirectValue = 'browse_links.php?act='.$this->act.'&mode='.$this->mode.'&expandFolder='.rawurlencode($path).'&bparams='.rawurlencode($this->bparams);
02220 $code.='<input type="hidden" name="redirect" value="'.htmlspecialchars($redirectValue).'" />'.
02221 '<input type="submit" name="submit" value="'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:file_newfolder.php.submit',1).'" />';
02222
02223 $code.='</td>
02224 </tr>
02225 </table>
02226 </form>';
02227
02228 return $code;
02229 }
02230 }
02231
02232
02233 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/browse_links.php']) {
02234 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/browse_links.php']);
02235 }
02236
02237
02238
02239
02240
02241
02242
02243
02244
02245 $SOBE = t3lib_div::makeInstance('SC_browse_links');
02246 $SOBE->init();
02247 $SOBE->main();
02248 $SOBE->printContent();
02249 ?>