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
00027
00036 require_once(PATH_typo3.'class.browse_links.php');
00037 require_once(PATH_t3lib.'class.t3lib_foldertree.php');
00038 require_once(PATH_t3lib.'class.t3lib_stdgraphic.php');
00039 require_once(PATH_t3lib.'class.t3lib_basicfilefunc.php');
00040
00048 class tx_rtehtmlarea_image_folderTree extends t3lib_folderTree {
00049 var $ext_IconMode=1;
00050
00058 function wrapTitle($title,$v) {
00059 if ($this->ext_isLinkable($v)) {
00060 $aOnClick = 'return jumpToUrl(\'?editorNo='.$GLOBALS['SOBE']->browser->editorNo.'&expandFolder='.rawurlencode($v['path']).'\');';
00061 return '<a href="#" onclick="'.htmlspecialchars($aOnClick).'">'.$title.'</a>';
00062 } else {
00063 return '<span class="typo3-dimmed">'.$title.'</span>';
00064 }
00065 }
00066
00073 function ext_isLinkable($v) {
00074 $webpath=t3lib_BEfunc::getPathType_web_nonweb($v['path']);
00075 if ($GLOBALS['SOBE']->browser->act=='magic') return 1;
00076
00077 if (strstr($v['path'],'_recycler_') || strstr($v['path'],'_temp_') || $webpath!='web') {
00078 return 0;
00079 }
00080 return 1;
00081 }
00082
00092 function PM_ATagWrap($icon,$cmd,$bMark='') {
00093 if ($bMark) {
00094 $anchor = '#'.$bMark;
00095 $name=' name="'.$bMark.'"';
00096 }
00097 $aOnClick = 'return jumpToUrl(\'?PM='.$cmd.'\',\''.$anchor.'\');';
00098 return '<a href="#"'.$name.' onclick="'.htmlspecialchars($aOnClick).'">'.$icon.'</a>';
00099 }
00100
00107 function printTree($treeArr='') {
00108 $titleLen=intval($GLOBALS['BE_USER']->uc['titleLen']);
00109
00110 if (!is_array($treeArr)) $treeArr=$this->tree;
00111
00112 $out='';
00113 $c=0;
00114
00115
00116 foreach($treeArr as $k => $v) {
00117 $c++;
00118 $bgColor=' class="'.(($c+1)%2 ? 'bgColor' : 'bgColor-10').'"';
00119 $out.='<tr'.$bgColor.'><td nowrap="nowrap">'.$v['HTML'].$this->wrapTitle(t3lib_div::fixed_lgd($v['row']['title'],$titleLen),$v['row']).'</td></tr>';
00120 }
00121
00122 $out='<table border="0" cellpadding="0" cellspacing="0">'.$out.'</table>';
00123 return $out;
00124 }
00125 }
00126
00127
00135 class tx_rtehtmlarea_select_image extends browse_links {
00136 var $extKey = 'rtehtmlarea';
00137 var $content;
00138 var $act;
00139 var $allowedItems;
00140 var $plainMaxWidth;
00141 var $plainMaxHeight;
00142 var $magicMaxWidth;
00143 var $magicMaxHeight;
00144 var $imgPath;
00145 var $classesImageJSOptions;
00146 var $editorNo;
00147 var $buttonConfig = array();
00148
00154 function init() {
00155 global $BE_USER,$BACK_PATH,$TYPO3_CONF_VARS;
00156
00157
00158 $this->siteUrl = t3lib_div::getIndpEnv('TYPO3_SITE_URL');
00159 $this->act = t3lib_div::_GP('act');
00160 $this->editorNo = t3lib_div::_GP('editorNo');
00161 $this->expandPage = t3lib_div::_GP('expandPage');
00162 $this->expandFolder = t3lib_div::_GP('expandFolder');
00163
00164
00165 $this->mode = t3lib_div::_GP('mode');
00166 if (!$this->mode) {
00167 $this->mode='rte';
00168 }
00169
00170
00171 $this->siteURL = t3lib_div::getIndpEnv('TYPO3_SITE_URL');
00172
00173
00174 $this->thisScript = t3lib_div::getIndpEnv('SCRIPT_NAME');
00175
00176 if (!$this->act) {
00177 $this->act='magic';
00178 }
00179
00180 $RTEtsConfigParts = explode(':',t3lib_div::_GP('RTEtsConfigParams'));
00181 $RTEsetup = $BE_USER->getTSConfig('RTE',t3lib_BEfunc::getPagesTSconfig($RTEtsConfigParts[5]));
00182 $this->thisConfig = t3lib_BEfunc::RTEsetup($RTEsetup['properties'],$RTEtsConfigParts[0],$RTEtsConfigParts[2],$RTEtsConfigParts[4]);
00183 $this->imgPath = $RTEtsConfigParts[6];
00184
00185 if (is_array($this->thisConfig['buttons.']) && is_array($this->thisConfig['buttons.']['image.'])) {
00186 $this->buttonConfig = $this->thisConfig['buttons.']['image.'];
00187 }
00188
00189 $this->allowedItems = explode(',','magic,plain,dragdrop,image');
00190 if (is_array($this->buttonConfig['options.']) && $this->buttonConfig['options.']['removeItems']) {
00191 $this->allowedItems = array_diff($this->allowedItems,t3lib_div::trimExplode(',',$this->buttonConfig['options.']['removeItems'],1));
00192 } else {
00193 $this->allowedItems = array_diff($this->allowedItems,t3lib_div::trimExplode(',',$this->thisConfig['blindImageOptions'],1));
00194 }
00195 reset($this->allowedItems);
00196 if (!in_array($this->act,$this->allowedItems)) {
00197 $this->act = current($this->allowedItems);
00198 }
00199
00200 if ($this->act == 'plain') {
00201 if ($TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['plainImageMaxWidth']) $this->plainMaxWidth = $TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['plainImageMaxWidth'];
00202 if ($TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['plainImageMaxHeight']) $this->plainMaxHeight = $TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['plainImageMaxHeight'];
00203 if (is_array($this->buttonConfig['options.']) && is_array($this->buttonConfig['options.']['plain.'])) {
00204 if ($this->buttonConfig['options.']['plain.']['maxWidth']) $this->plainMaxWidth = $this->buttonConfig['options.']['plain.']['maxWidth'];
00205 if ($this->buttonConfig['options.']['plain.']['maxHeight']) $this->plainMaxHeight = $this->buttonConfig['options.']['plain.']['maxHeight'];
00206 }
00207 if (!$this->plainMaxWidth) $this->plainMaxWidth = 640;
00208 if (!$this->plainMaxHeight) $this->plainMaxHeight = 680;
00209 } elseif ($this->act == 'magic') {
00210 if (is_array($this->buttonConfig['options.']) && is_array($this->buttonConfig['options.']['magic.'])) {
00211 if ($this->buttonConfig['options.']['magic.']['maxWidth']) $this->magicMaxWidth = $this->buttonConfig['options.']['magic.']['maxWidth'];
00212 if ($this->buttonConfig['options.']['magic.']['maxHeight']) $this->magicMaxHeight = $this->buttonConfig['options.']['magic.']['maxHeight'];
00213 }
00214
00215 if (!$this->magicMaxWidth) $this->magicMaxWidth = 300;
00216 if (!$this->magicMaxHeight) $this->magicMaxHeight = 1000;
00217 }
00218
00219 if($this->thisConfig['classesImage']) {
00220 $classesImageArray = t3lib_div::trimExplode(',',$this->thisConfig['classesImage'],1);
00221 $this->classesImageJSOptions = '<option value=""></option>';
00222 reset($classesImageArray);
00223 while(list(,$class)=each($classesImageArray)) {
00224 $this->classesImageJSOptions .= '<option value="' .$class . '">' . $class . '</option>';
00225 }
00226 }
00227
00228 $this->magicProcess();
00229
00230
00231 $this->doc = t3lib_div::makeInstance('template');
00232 $this->doc->docType= 'xhtml_trans';
00233 $this->doc->backPath = $BACK_PATH;
00234
00235 $this->getJSCode();
00236 }
00237
00243 function rteImageStorageDir() {
00244 $dir = $this->imgPath ? $this->imgPath : $GLOBALS['TYPO3_CONF_VARS']['BE']['RTE_imageStorageDir'];;
00245 return $dir;
00246 }
00247
00253 function magicProcess() {
00254 global $TYPO3_CONF_VARS;
00255
00256 if ($this->act=='magic' && t3lib_div::_GP('insertMagicImage')) {
00257 $filepath = t3lib_div::_GP('insertMagicImage');
00258
00259 $imgObj = t3lib_div::makeInstance('t3lib_stdGraphic');
00260 $imgObj->init();
00261 $imgObj->mayScaleUp=0;
00262 $imgObj->tempPath=PATH_site.$imgObj->tempPath;
00263
00264 $imgInfo = $imgObj->getImageDimensions($filepath);
00265
00266 if (is_array($imgInfo) && count($imgInfo)==4 && $this->rteImageStorageDir()) {
00267 $fI=pathinfo($imgInfo[3]);
00268 $fileFunc = t3lib_div::makeInstance('t3lib_basicFileFunctions');
00269 $basename = $fileFunc->cleanFileName('RTEmagicP_'.$fI['basename']);
00270 $destPath =PATH_site.$this->rteImageStorageDir();
00271 if (@is_dir($destPath)) {
00272 $destName = $fileFunc->getUniqueName($basename,$destPath);
00273 @copy($imgInfo[3],$destName);
00274
00275 $cWidth = t3lib_div::intInRange(t3lib_div::_GP('cWidth'),0,$this->magicMaxWidth);
00276 $cHeight = t3lib_div::intInRange(t3lib_div::_GP('cHeight'),0,$this->magicMaxHeight);
00277 if (!$cWidth) $cWidth = $this->magicMaxWidth;
00278 if (!$cHeight) $cHeight = $this->magicMaxHeight;
00279
00280 $imgI = $imgObj->imageMagickConvert($filepath,'WEB',$cWidth.'m',$cHeight.'m');
00281 if ($imgI[3]) {
00282 $fI=pathinfo($imgI[3]);
00283 $mainBase='RTEmagicC_'.substr(basename($destName),10).'.'.$fI['extension'];
00284 $destName = $fileFunc->getUniqueName($mainBase,$destPath);
00285 @copy($imgI[3],$destName);
00286
00287 $destName = dirname($destName).'/'.rawurlencode(basename($destName));
00288 $iurl = $this->siteUrl.substr($destName,strlen(PATH_site));
00289 echo'
00290 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
00291 <html>
00292 <head>
00293 <title>Untitled</title>
00294 </head>
00295 <script language="javascript" type="text/javascript">
00296
00297 var editor = window.opener.RTEarea[' . $this->editorNo . ']["editor"];
00298 var HTMLArea = window.opener.HTMLArea;
00299 function insertImage(file,width,height,origFile) {
00300 var styleWidth, styleHeight;
00301 styleWidth = parseInt(width);
00302 if (isNaN(styleWidth) || styleWidth == 0) {
00303 styleWidth = "auto";
00304 } else {
00305 styleWidth += "px";
00306 }
00307 styleHeight = parseInt(height);
00308 if (isNaN(styleHeight) || styleHeight == 0) {
00309 styleHeight = "auto";
00310 } else {
00311 styleHeight += "px";
00312 }
00313 editor.renderPopup_insertImage(\'<img src="\'+file+\'" style="width: \'+styleWidth+\'; height: \'+styleHeight+\';"'.(($TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['enableClickEnlarge'] && !(is_array($this->buttonConfig['clickEnlarge.']) && $this->buttonConfig['clickEnlarge.']['disabled']))?' clickenlargesrc="\'+origFile+\'" clickenlarge="0"':'').' />\');
00314 }
00315
00316 </script>
00317 <body>
00318 <script type="text/javascript">
00319
00320 insertImage(\''.$iurl.'\','.$imgI[0].','.$imgI[1].',\''.substr($imgInfo[3],strlen(PATH_site)).'\');
00321
00322 </script>
00323 </body>
00324 </html>';
00325 }
00326
00327 }
00328 }
00329 exit;
00330 }
00331 }
00332
00338 function getJSCode() {
00339 global $LANG,$BACK_PATH,$TYPO3_CONF_VARS;
00340
00341 $JScode='
00342 var editor = window.opener.RTEarea[' . $this->editorNo . ']["editor"];
00343 var HTMLArea = window.opener.HTMLArea;
00344 function jumpToUrl(URL,anchor) {
00345 var add_act = URL.indexOf("act=")==-1 ? "&act='.$this->act.'" : "";
00346 var add_editorNo = URL.indexOf("editorNo=")==-1 ? "&editorNo='.$this->editorNo.'" : "";
00347 var RTEtsConfigParams = "&RTEtsConfigParams='.rawurlencode(t3lib_div::_GP('RTEtsConfigParams')).'";
00348
00349 var cur_width = selectedImageRef ? "&cWidth="+selectedImageRef.style.width : "";
00350 var cur_height = selectedImageRef ? "&cHeight="+selectedImageRef.style.height : "";
00351
00352 var theLocation = URL+add_act+add_editorNo+RTEtsConfigParams+cur_width+cur_height+(anchor?anchor:"");
00353 window.location.href = theLocation;
00354 return false;
00355 }
00356 function insertImage(file,width,height,origFile) {
00357 var styleWidth, styleHeight;
00358 styleWidth = parseInt(width);
00359 if (isNaN(styleWidth) || styleWidth == 0) {
00360 styleWidth = "auto";
00361 } else {
00362 styleWidth += "px";
00363 }
00364 styleHeight = parseInt(height);
00365 if (isNaN(styleHeight) || styleHeight == 0) {
00366 styleHeight = "auto";
00367 } else {
00368 styleHeight += "px";
00369 }
00370 editor.renderPopup_insertImage(\'<img src="\'+file+\'" style="width: \'+styleWidth+\'; height: \'+styleHeight+\';"'.(($TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['enableClickEnlarge'] && !(is_array($this->buttonConfig['clickEnlarge.']) && $this->buttonConfig['clickEnlarge.']['disabled']))?' clickenlargesrc="\'+origFile+\'" clickenlarge="0"':'').' />\');
00371 }
00372 function launchView(url) {
00373 var thePreviewWindow="";
00374 thePreviewWindow = window.open("'.$this->siteUrl.TYPO3_mainDir.'show_item.php?table="+url,"ShowItem","height=300,width=410,status=0,menubar=0,resizable=0,location=0,directories=0,scrollbars=1,toolbar=0");
00375 if (thePreviewWindow && thePreviewWindow.focus) {
00376 thePreviewWindow.focus();
00377 }
00378 }
00379 function getCurrentImageRef() {
00380 if (editor._selectedImage) {
00381 return editor._selectedImage;
00382 } else {
00383 return null;
00384 }
00385 }
00386 function printCurrentImageOptions() {
00387 var classesImage = ' . ($this->thisConfig['classesImage']?'true':'false') . ';
00388 if(classesImage) var styleSelector=\'<select name="iClass" style="width:140px;">' . $this->classesImageJSOptions . '</select>\';
00389 var floatSelector=\'<select name="iFloat"><option value="">' . $LANG->getLL('notSet') . '</option><option value="none">' . $LANG->getLL('nonFloating') . '</option><option value="left">' . $LANG->getLL('left') . '</option><option value="right">' . $LANG->getLL('right') . '</option></select>\';
00390 var bgColor=\' class="bgColor4"\';
00391 var sz="";
00392 sz+=\'<table border=0 cellpadding=1 cellspacing=1><form action="" name="imageData">\';
00393 if(classesImage) {
00394 sz+=\'<tr><td\'+bgColor+\'>'.$LANG->getLL('class').': </td><td>\'+styleSelector+\'</td></tr>\';
00395 }
00396 sz+=\'<tr><td\'+bgColor+\'>'.$LANG->getLL('width').': </td><td><input type="text" name="iWidth" value=""'.$GLOBALS['TBE_TEMPLATE']->formWidth(4).' /></td></tr>\';
00397 sz+=\'<tr><td\'+bgColor+\'>'.$LANG->getLL('height').': </td><td><input type="text" name="iHeight" value=""'.$GLOBALS['TBE_TEMPLATE']->formWidth(4).' /></td></tr>\';
00398 sz+=\'<tr><td\'+bgColor+\'>'.$LANG->getLL('border').': </td><td><input type="checkbox" name="iBorder" value="1" /></td></tr>\';
00399 sz+=\'<tr><td\'+bgColor+\'>'.$LANG->getLL('float').': </td><td>\'+floatSelector+\'</td></tr>\';
00400 sz+=\'<tr><td\'+bgColor+\'>'.$LANG->getLL('margin_lr').': </td><td><input type="text" name="iHspace" value=""'.$GLOBALS['TBE_TEMPLATE']->formWidth(4).'></td></tr>\';
00401 sz+=\'<tr><td\'+bgColor+\'>'.$LANG->getLL('margin_tb').': </td><td><input type="text" name="iVspace" value=""'.$GLOBALS['TBE_TEMPLATE']->formWidth(4).' /></td></tr>\';
00402 sz+=\'<tr><td\'+bgColor+\'>'.$LANG->getLL('title').': </td><td><input type="text" name="iTitle"'.$GLOBALS['TBE_TEMPLATE']->formWidth(20).' /></td></tr>\';
00403 sz+=\'<tr><td\'+bgColor+\'>'.$LANG->getLL('alt').': </td><td><input type="text" name="iAlt"'.$GLOBALS['TBE_TEMPLATE']->formWidth(20).' /></td></tr>\';
00404 '.(($TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['enableClickEnlarge'] && !(is_array($this->buttonConfig['clickEnlarge.']) && $this->buttonConfig['clickEnlarge.']['disabled']))?'if (selectedImageRef && selectedImageRef.getAttribute("clickenlargesrc")) sz+=\'<tr><td\'+bgColor+\'><label for="iClickEnlarge">'.$LANG->sL('LLL:EXT:cms/locallang_ttc.php:image_zoom',1).' </label></td><td><input type="checkbox" name="iClickEnlarge" id="iClickEnlarge" value="1" /></td></tr>\';':'').' sz+=\'<tr><td><input type="submit" value="'.$LANG->getLL('update').'" onClick="return setImageProperties();"></td></tr>\';
00405 sz+=\'</form></table>\';
00406 return sz;
00407 }
00408 function setImageProperties() {
00409 var classesImage = ' . ($this->thisConfig['classesImage']?'true':'false') . ';
00410 if (selectedImageRef) {
00411 if(document.imageData.iWidth.value && document.imageData.iWidth.value != "auto") {
00412 selectedImageRef.style.width = document.imageData.iWidth.value + "px";
00413 } else {
00414 selectedImageRef.style.width = "auto";
00415 }
00416 selectedImageRef.removeAttribute("width");
00417 if(document.imageData.iHeight.value && document.imageData.iHeight.value != "auto") {
00418 selectedImageRef.style.height=document.imageData.iHeight.value + "px";
00419 } else {
00420 selectedImageRef.style.height = "auto";
00421 }
00422 selectedImageRef.removeAttribute("height");
00423
00424 selectedImageRef.style.paddingTop = "0px";
00425 selectedImageRef.style.paddingBottom = "0px";
00426 selectedImageRef.style.paddingRight = "0px";
00427 selectedImageRef.style.paddingLeft = "0px";
00428 selectedImageRef.style.padding = "";
00429 if(document.imageData.iVspace.value != "" && !isNaN(parseInt(document.imageData.iVspace.value))) {
00430 selectedImageRef.style.paddingTop = parseInt(document.imageData.iVspace.value) + "px";
00431 selectedImageRef.style.paddingBottom = selectedImageRef.style.paddingTop;
00432 }
00433 if(document.imageData.iHspace.value != "" && !isNaN(parseInt(document.imageData.iHspace.value))) {
00434 selectedImageRef.style.paddingRight = parseInt(document.imageData.iHspace.value) + "px";
00435 selectedImageRef.style.paddingLeft = selectedImageRef.style.paddingRight;
00436 }
00437 selectedImageRef.removeAttribute("vspace");
00438 selectedImageRef.removeAttribute("hspace");
00439
00440 selectedImageRef.title=document.imageData.iTitle.value;
00441 selectedImageRef.alt=document.imageData.iAlt.value;
00442
00443 selectedImageRef.style.borderStyle = "none";
00444 selectedImageRef.style.borderWidth = "0px";
00445 selectedImageRef.style.border = "";
00446 if(document.imageData.iBorder.checked) {
00447 selectedImageRef.style.borderStyle = "solid";
00448 selectedImageRef.style.borderWidth = "thin";
00449 }
00450 selectedImageRef.removeAttribute("border");
00451
00452 var iFloat = document.imageData.iFloat.options[document.imageData.iFloat.selectedIndex].value;
00453 if (iFloat || selectedImageRef.style.cssFloat || selectedImageRef.style.styleFloat) {
00454 if(document.all) {
00455 selectedImageRef.style.styleFloat = iFloat;
00456 } else {
00457 selectedImageRef.style.cssFloat = iFloat;
00458 }
00459 }
00460
00461 if(classesImage) {
00462 var iClass = document.imageData.iClass.options[document.imageData.iClass.selectedIndex].value;
00463 if (iClass || (selectedImageRef.attributes["class"] && selectedImageRef.attributes["class"].value)) {
00464 selectedImageRef.className = iClass;
00465 }
00466 }
00467
00468 '.(($TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['enableClickEnlarge'] && !(is_array($this->buttonConfig['clickEnlarge.']) && $this->buttonConfig['clickEnlarge.']['disabled']))?'
00469 if (document.imageData.iClickEnlarge && document.imageData.iClickEnlarge.checked) selectedImageRef.setAttribute("clickenlarge","1");
00470 else selectedImageRef.setAttribute("clickenlarge","0");':'').'
00471
00472 HTMLArea.edHidePopup();
00473 }
00474 return false;
00475 }
00476 function insertImagePropertiesInForm() {
00477 var classesImage = ' . ($this->thisConfig['classesImage']?'true':'false') . ';
00478 if (selectedImageRef) {
00479 var styleWidth, styleHeight, paddingTop, paddingRight;
00480 styleWidth = selectedImageRef.style.width ? selectedImageRef.style.width : selectedImageRef.width;
00481 styleWidth = parseInt(styleWidth);
00482 if (isNaN(styleWidth) || styleWidth == 0) { styleWidth = "auto"; }
00483 document.imageData.iWidth.value = styleWidth;
00484 styleHeight = selectedImageRef.style.height ? selectedImageRef.style.height : selectedImageRef.height;
00485 styleHeight = parseInt(styleHeight);
00486 if (isNaN(styleHeight) || styleHeight == 0) { styleHeight = "auto"; }
00487 document.imageData.iHeight.value = styleHeight;
00488
00489 paddingTop = selectedImageRef.style.paddingTop ? selectedImageRef.style.paddingTop : selectedImageRef.vspace;
00490 paddingTop = parseInt(paddingTop);
00491 if (isNaN(paddingTop) || paddingTop < 0) { paddingTop = ""; }
00492 document.imageData.iVspace.value = paddingTop;
00493 paddingRight = selectedImageRef.style.paddingRight ? selectedImageRef.style.paddingRight : selectedImageRef.hspace;
00494 paddingRight = parseInt(paddingRight);
00495 if (isNaN(paddingRight) || paddingRight < 0) { paddingRight = ""; }
00496 document.imageData.iHspace.value = paddingRight;
00497
00498 document.imageData.iTitle.value = selectedImageRef.title;
00499 document.imageData.iAlt.value = selectedImageRef.alt;
00500
00501 if((selectedImageRef.style.borderStyle && selectedImageRef.style.borderStyle != "none" && selectedImageRef.style.borderStyle != "none none none none") || selectedImageRef.border) {
00502 document.imageData.iBorder.checked = 1;
00503 }
00504
00505 var fObj=document.imageData.iFloat;
00506 var value = (selectedImageRef.style.cssFloat ? selectedImageRef.style.cssFloat : selectedImageRef.style.styleFloat);
00507 var l=fObj.length;
00508 for (a=0;a<l;a++) {
00509 if (fObj.options[a].value == value) {
00510 fObj.selectedIndex = a;
00511 }
00512 }
00513
00514 if(classesImage) {
00515 var fObj=document.imageData.iClass;
00516 var value=selectedImageRef.className;
00517 var l=fObj.length;
00518 for (a=0;a<l;a++) {
00519 if (fObj.options[a].value == value) {
00520 fObj.selectedIndex = a;
00521 }
00522 }
00523 }
00524
00525 '.(($TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['enableClickEnlarge'] && !(is_array($this->buttonConfig['clickEnlarge.']) && $this->buttonConfig['clickEnlarge.']['disabled']))?'if (selectedImageRef.getAttribute("clickenlargesrc")) {
00526 if (selectedImageRef.getAttribute("clickenlarge") == "1") document.imageData.iClickEnlarge.checked = 1;
00527 else document.imageData.iClickEnlarge.removeAttribute("checked");
00528 }':'').'
00529 }
00530 return false;
00531 }
00532
00533 function openDragDrop() {
00534 var url = "' . $BACK_PATH . t3lib_extMgm::extRelPath($this->extKey) . 'mod3/browse_links.php?mode=filedrag&editorNo='.$this->editorNo.'&bparams=|||"+escape("gif,jpg,jpeg,png");
00535 window.opener.browserWin = window.open(url,"Typo3WinBrowser","height=350,width=600,status=0,menubar=0,resizable=1,scrollbars=1");
00536 HTMLArea.edHidePopup();
00537 }
00538
00539 var selectedImageRef = getCurrentImageRef();
00540
00541 '.($this->act=='dragdrop'?'openDragDrop();':'');
00542
00543
00544 $this->doc->JScode = $this->doc->wrapScriptTags($JScode);
00545 }
00546
00554 function processSessionData($data) {
00555 $store = false;
00556
00557 if ($this->act != 'image') {
00558 if (isset($this->act)) {
00559 $data['act'] = $this->act;
00560 $store = true;
00561 } else {
00562 $this->act = $data['act'];
00563 }
00564 }
00565
00566 if (isset($this->expandFolder)) {
00567 $data['expandFolder'] = $this->expandFolder;
00568 $store = true;
00569 } else {
00570 $this->expandFolder = $data['expandFolder'];
00571 }
00572
00573 return array($data, $store);
00574 }
00575
00581 function main_rte() {
00582 global $LANG, $TYPO3_CONF_VARS, $FILEMOUNTS, $BE_USER;
00583
00584
00585 $this->content = $this->doc->startPage($LANG->getLL('Insert Image',1));
00586
00587
00588 $menuDef = array();
00589 if (in_array('image',$this->allowedItems) && ($this->act=='image' || t3lib_div::_GP('cWidth'))) {
00590 $menuDef['page']['isActive'] = $this->act=='image';
00591 $menuDef['page']['label'] = $LANG->getLL('currentImage',1);
00592 $menuDef['page']['url'] = '#';
00593 $menuDef['page']['addParams'] = 'onClick="jumpToUrl(\'?act=image&editorNo='.$this->editorNo.'\');return false;"';
00594 }
00595 if (in_array('magic',$this->allowedItems)){
00596 $menuDef['file']['isActive'] = $this->act=='magic';
00597 $menuDef['file']['label'] = $LANG->getLL('magicImage',1);
00598 $menuDef['file']['url'] = '#';
00599 $menuDef['file']['addParams'] = 'onClick="jumpToUrl(\'?act=magic&editorNo='.$this->editorNo.'\');return false;"';
00600 }
00601 if (in_array('plain',$this->allowedItems)) {
00602 $menuDef['url']['isActive'] = $this->act=='plain';
00603 $menuDef['url']['label'] = $LANG->getLL('plainImage',1);
00604 $menuDef['url']['url'] = '#';
00605 $menuDef['url']['addParams'] = 'onClick="jumpToUrl(\'?act=plain&editorNo='.$this->editorNo.'\');return false;"';
00606 }
00607 if (in_array('dragdrop',$this->allowedItems)) {
00608 $menuDef['mail']['isActive'] = $this->act=='dragdrop';
00609 $menuDef['mail']['label'] = $LANG->getLL('dragDropImage',1);
00610 $menuDef['mail']['url'] = '#';
00611 $menuDef['mail']['addParams'] = 'onClick="openDragDrop();return false;"';
00612 }
00613 $this->content .= $this->doc->getTabMenuRaw($menuDef);
00614
00615 if ($this->act!='image') {
00616
00617
00618
00619
00620
00621 if ($BE_USER->getTSConfigVal('options.uploadFieldsInTopOfEB')) {
00622 $fileProcessor = t3lib_div::makeInstance('t3lib_basicFileFunctions');
00623 $fileProcessor->init($GLOBALS['FILEMOUNTS'], $GLOBALS['TYPO3_CONF_VARS']['BE']['fileExtensions']);
00624 $path=$this->expandFolder;
00625 if (!$path || !@is_dir($path)) {
00626 $path = $fileProcessor->findTempFolder().'/';
00627 }
00628 if ($path!='/' && @is_dir($path)) {
00629 $uploadForm=$this->uploadForm($path);
00630 $createFolder=$this->createFolder($path);
00631 } else {
00632 $createFolder='';
00633 $uploadForm='';
00634 }
00635 $this->content .= $uploadForm;
00636 if ($BE_USER->isAdmin() || $BE_USER->getTSConfigVal('options.createFoldersInEB')) {
00637 $this->content.=$createFolder;
00638 }
00639 }
00640
00641
00642 $noThumbs = $BE_USER->getTSConfigVal('options.noThumbsInRTEimageSelect');
00643
00644 if (!$noThumbs) {
00645
00646 $_MOD_MENU = array('displayThumbs' => '');
00647 $_MCONF['name']='file_list';
00648 $_MOD_SETTINGS = t3lib_BEfunc::getModuleData($_MOD_MENU, t3lib_div::_GP('SET'), $_MCONF['name']);
00649 $addParams = '&act='.$this->act.'&editorNo='.$this->editorNo.'&expandFolder='.rawurlencode($this->expandFolder);
00650 $thumbNailCheck = t3lib_BEfunc::getFuncCheck('','SET[displayThumbs]',$_MOD_SETTINGS['displayThumbs'],'select_image.php',$addParams,'id="checkDisplayThumbs"').' <label for="checkDisplayThumbs">'.$LANG->sL('LLL:EXT:lang/locallang_mod_file_list.php:displayThumbs',1).'</label>';
00651 } else {
00652 $thumbNailCheck='';
00653 }
00654
00655
00656 $foldertree = t3lib_div::makeInstance('tx_rtehtmlarea_image_folderTree');
00657 $tree=$foldertree->getBrowsableTree();
00658 list(,,$specUid) = explode('_',t3lib_div::_GP('PM'));
00659 $files = $this->expandFolder($foldertree->specUIDmap[$specUid],$this->act=='plain',$noThumbs?$noThumbs:!$_MOD_SETTINGS['displayThumbs']);
00660
00661 $this->content.= '<table border=0 cellpadding=0 cellspacing=0>
00662 <tr>
00663 <td valign=top>'.$this->barheader($LANG->getLL('folderTree').':').$tree.'</td>
00664 <td> </td>
00665 <td valign=top>'.$files.'</td>
00666 </tr>
00667 </table>
00668 <br />'.$thumbNailCheck;
00669
00670
00671
00672
00673 if ($this->act=='magic') {
00674 $this->content .= $this->getMsgBox($LANG->getLL('magicImage_msg'));
00675 }
00676 if ($this->act=='plain') {
00677 $this->content .= $this->getMsgBox(sprintf($LANG->getLL('plainImage_msg'), $this->plainMaxWidth, $this->plainMaxHeight));
00678 }
00679 } else {
00680 $JScode = '
00681 document.write(printCurrentImageOptions());
00682 insertImagePropertiesInForm();';
00683 $this->content.= '<br />'.$this->doc->wrapScriptTags($JScode);
00684 }
00685 $this->content.= $this->doc->endPage();
00686 return $this->content;
00687 }
00688
00689
00690
00691
00692
00693
00699 function expandFolder($expandFolder=0,$plainFlag=0,$noThumbs=0) {
00700 global $LANG, $BE_USER, $BACK_PATH;
00701
00702 $expandFolder = $expandFolder ? $expandFolder :t3lib_div::_GP('expandFolder');
00703 $out='';
00704
00705 if ($expandFolder && $this->checkFolder($expandFolder)) {
00706 $files = t3lib_div::getFilesInDir($expandFolder,($plainFlag?'jpg,jpeg,gif,png':$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']),1,1);
00707 if (is_array($files)) {
00708 reset($files);
00709
00710 $out.=$this->barheader(sprintf($LANG->getLL('images').' (%s):',count($files)));
00711
00712 $titleLen = intval($BE_USER->uc['titleLen']);
00713 $picon='<img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/i/_icon_webfolders.gif','width="18" height="16"').' alt="" />';
00714 $picon.=htmlspecialchars(t3lib_div::fixed_lgd(basename($expandFolder),$titleLen));
00715 $out.='<span class="nobr">'.$picon.'</span><br />';
00716
00717 $imgObj = t3lib_div::makeInstance('t3lib_stdGraphic');
00718 $imgObj->init();
00719 $imgObj->mayScaleUp=0;
00720 $imgObj->tempPath=PATH_site.$imgObj->tempPath;
00721
00722 $lines=array();
00723 while(list(,$filepath)=each($files)) {
00724 $fI=pathinfo($filepath);
00725
00726 $origFile = t3lib_div::rawUrlEncodeFP(substr($filepath,strlen(PATH_site)));
00727 $iurl = $this->siteUrl.$origFile;
00728 $imgInfo = $imgObj->getImageDimensions($filepath);
00729
00730 $icon = t3lib_BEfunc::getFileIcon(strtolower($fI['extension']));
00731 $pDim = $imgInfo[0].'x'.$imgInfo[1].' '.$LANG->getLL('pixels',1);
00732 $size=' ('.t3lib_div::formatSize(filesize($filepath)).$LANG->getLL('bytes',1).', '.$pDim.')';
00733 $icon = '<img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/fileicons/'.$icon.'','width="18" height="16"').' title="'.htmlspecialchars($fI['basename'].$size).'" alt="" />';
00734 if (!$plainFlag) {
00735 $ATag = '<a href="#" onclick="return jumpToUrl(\'?editorNo='.$this->editorNo.'&insertMagicImage='.rawurlencode($filepath).'\');">';
00736 } else {
00737 $ATag = '<a href="#" onclick="return insertImage(\''.$iurl.'\','.$imgInfo[0].','.$imgInfo[1].',\''.$origFile.'\');">';
00738 }
00739 $ATag_e='</a>';
00740 if ($plainFlag && (($imgInfo[0] > $this->plainMaxWidth) || ($imgInfo[1] > $this->plainMaxHeight))) {
00741 $ATag='';
00742 $ATag_e='';
00743 $ATag2='';
00744 $ATag2_e='';
00745 } else {
00746 $ATag2='<a href="#" onClick="launchView(\''.rawurlencode($filepath).'\'); return false;">';
00747 $ATag2_e='</a>';
00748 }
00749
00750 $filenameAndIcon=$ATag.$icon.htmlspecialchars(t3lib_div::fixed_lgd(basename($filepath),$titleLen)).$ATag_e;
00751
00752
00753 $lines[]='<tr class="bgColor4"><td nowrap="nowrap">'.$filenameAndIcon.' </td><td nowrap="nowrap">'.$pDim.' </td></tr>';
00754 $lines[]='<tr><td colspan="2">'.($noThumbs ? '' : $ATag2.t3lib_BEfunc::getThumbNail($this->doc->backPath.'thumbs.php',$filepath,'hspace="5" vspace="5" border="1"').$ATag2_e).
00755 '</td></tr>';
00756 $lines[]='<tr><td colspan="2"><img src="clear.gif" width="1" height="3"></td></tr>';
00757 }
00758 $out.='<table border="0" cellpadding="0" cellspacing="1">'.implode('',$lines).'</table>';
00759 }
00760 }
00761 return $out;
00762 }
00763
00771 function uploadForm($path) {
00772 global $BACK_PATH;
00773 $count=3;
00774
00775
00776 $header = t3lib_div::isFirstPartOfStr($path,PATH_site)?substr($path,strlen(PATH_site)):$path;
00777 $code=$this->barheader($GLOBALS['LANG']->getLL('uploadImage').':');
00778 $code.='
00779
00780 <!--
00781 Form, for uploading files:
00782 -->
00783 <form action="'.$BACK_PATH.'tce_file.php" method="post" name="editform" enctype="'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'].'">
00784 <table border="0" cellpadding="0" cellspacing="3" id="typo3-uplFiles">
00785 <tr>
00786 <td><strong>'.$GLOBALS['LANG']->getLL('path',1).':</strong> '.htmlspecialchars($header).'</td>
00787 </tr>
00788 <tr>
00789 <td>';
00790
00791
00792 for ($a=1;$a<=$count;$a++) {
00793 $code.='<input type="file" name="upload_'.$a.'"'.$this->doc->formWidth(35).' size="50" />
00794 <input type="hidden" name="file[upload]['.$a.'][target]" value="'.htmlspecialchars($path).'" />
00795 <input type="hidden" name="file[upload]['.$a.'][data]" value="'.$a.'" /><br />';
00796 }
00797
00798
00799 $redirectValue = $this->thisScript.'?act='.$this->act.'&editorNo='.$this->editorNo.'&mode='.$this->mode.'&expandFolder='.rawurlencode($path).'&bparams='.rawurlencode($this->bparams);
00800 $code.='<input type="hidden" name="redirect" value="'.htmlspecialchars($redirectValue).'" />'.
00801 '<input type="submit" name="submit" value="'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:file_upload.php.submit',1).'" />';
00802
00803 $code.='
00804 <div id="c-override">
00805 <input type="checkbox" name="overwriteExistingFiles" id="overwriteExistingFiles" value="1" /> <label for="overwriteExistingFiles">'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_misc.xml:overwriteExistingFiles',1).'</label>
00806 </div>
00807 ';
00808
00809
00810 $code.='</td>
00811 </tr>
00812 </table>
00813 </form>';
00814
00815 return $code;
00816 }
00817
00818
00826 function createFolder($path) {
00827 global $BACK_PATH;
00828
00829 $header = t3lib_div::isFirstPartOfStr($path,PATH_site)?substr($path,strlen(PATH_site)):$path;
00830 $code=$this->barheader($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:file_newfolder.php.pagetitle').':');
00831 $code.='
00832
00833 <!--
00834 Form, for creating new folders:
00835 -->
00836 <form action="'.$BACK_PATH.'tce_file.php" method="post" name="editform2">
00837 <table border="0" cellpadding="0" cellspacing="3" id="typo3-crFolder">
00838 <tr>
00839 <td><strong>'.$GLOBALS['LANG']->getLL('path',1).':</strong> '.htmlspecialchars($header).'</td>
00840 </tr>
00841 <tr>
00842 <td>';
00843
00844
00845 $a=1;
00846 $code.='<input'.$this->doc->formWidth(20).' type="text" name="file[newfolder]['.$a.'][data]" />'.
00847 '<input type="hidden" name="file[newfolder]['.$a.'][target]" value="'.htmlspecialchars($path).'" />';
00848
00849
00850 $redirectValue = $this->thisScript.'?act='.$this->act.'&editorNo='.$this->editorNo.'&mode='.$this->mode.'&expandFolder='.rawurlencode($path).'&bparams='.rawurlencode($this->bparams);
00851 $code.='<input type="hidden" name="redirect" value="'.htmlspecialchars($redirectValue).'" />'.
00852 '<input type="submit" name="submit" value="'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:file_newfolder.php.submit',1).'" />';
00853
00854 $code.='</td>
00855 </tr>
00856 </table>
00857 </form>';
00858
00859 return $code;
00860 }
00861
00862
00863 }
00864
00865 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rtehtmlarea/mod4/class.tx_rtehtmlarea_select_image.php']) {
00866 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rtehtmlarea/mod4/class.tx_rtehtmlarea_select_image.php']);
00867 }
00868
00869 ?>