Index: typo3/class.browse_links.php =================================================================== --- typo3/class.browse_links.php (revision 3534) +++ typo3/class.browse_links.php (working copy) @@ -552,7 +552,7 @@ $bgColorClass=($c+1)%2 ? 'bgColor' : 'bgColor-10'; // Creating blinking arrow, if applicable: - if ($GLOBALS['SOBE']->browser->curUrlInfo['act']=='file' && $cmpPath==$v['row']['path']) { + if (($GLOBALS['SOBE']->browser->curUrlInfo['act']=='file' || $GLOBALS['SOBE']->browser->curUrlInfo['act']=='folder') && $cmpPath==$v['row']['path']) { $arrCol=''; $bgColorClass='bgColor4'; } else { @@ -660,7 +660,8 @@ var $siteURL; // Current site URL (Frontend) var $thisScript; // the script to link to var $thisConfig; // RTE specific TSconfig - var $setTarget; // Target (RTE specific) + var $setTarget; // Target (RTE specific) + var $setClass; // CSS Class (RTE specific) var $setTitle; // title (RTE specific) var $doc; // Backend template object var $elements = array(); // Holds information about files @@ -813,9 +814,31 @@ if ($this->mode == 'wizard') { $currentLinkParts = t3lib_div::trimExplode(' ',$this->P['currentValue']); $this->curUrlArray = array( - 'target' => $currentLinkParts[1] + 'target' => $currentLinkParts[1], + 'class' => $currentLinkParts[2], + 'title' => $currentLinkParts[3], ); - $this->curUrlInfo=$this->parseCurUrl($this->siteURL.'?id='.$currentLinkParts[0],$this->siteURL); + + if ($this->curUrlInfo['pageid']==0) { // pageid==0 means that this is not an internal (page) link + if (@file_exists(PATH_site.rawurldecode($currentLinkParts[0]))) { // check if this is a link to a file + if (t3lib_div::isFirstPartOfStr($currentLinkParts[0],PATH_site)) { + $currentLinkParts[0] = substr($currentLinkParts[0], strlen(PATH_site)); + } + $this->curUrlInfo = $this->parseCurUrl($this->siteURL.$currentLinkParts[0],$this->siteURL); + } elseif (strstr($currentLinkParts[0],'@')) { // check for email link + if (t3lib_div::isFirstPartOfStr($currentLinkParts[0],'mailto:')) { + $currentLinkParts[0] = substr($currentLinkParts[0],7); + } + $this->curUrlInfo = $this->parseCurUrl('mailto:'.$currentLinkParts[0],$this->siteURL); + } else { // nothing of the above. this is an external link + if(strpos($currentLinkParts[0], '://') === false) { + $currentLinkParts[0] = 'http://' . $currentLinkParts[0]; + } + $this->curUrlInfo = $this->parseCurUrl($currentLinkParts[0],$this->siteURL); + } + } else { + $this->curUrlInfo=$this->parseCurUrl($this->siteURL.'?id='.$currentLinkParts[0],$this->siteURL); + } } else { $this->curUrlArray = t3lib_div::_GP('curUrl'); if ($this->curUrlArray['all']) { @@ -845,6 +868,9 @@ $this->setTarget=$this->thisConfig['defaultLinkTarget']; } + // Initializing the class value (RTE) + $this->setClass = $this->curUrlArray['class']; + // Initializing the title value (RTE) $this->setTitle = $this->curUrlArray['title']; @@ -861,22 +887,28 @@ // This JavaScript is primarily for RTE/Link. jumpToUrl is used in the other cases as well... var add_href="'.($this->curUrlArray['href']?'&curUrl[href]='.rawurlencode($this->curUrlArray['href']):'').'"; var add_target="'.($this->setTarget?'&curUrl[target]='.rawurlencode($this->setTarget):'').'"; + var add_class="'.($this->setClass?'&curUrl[class]='.rawurlencode($this->setClass):'').'"; var add_title="'.($this->setTitle?'&curUrl[title]='.rawurlencode($this->setTitle):'').'"; var add_params="'.($this->bparams?'&bparams='.rawurlencode($this->bparams):'').'"; var cur_href="'.($this->curUrlArray['href']?$this->curUrlArray['href']:'').'"; var cur_target="'.($this->setTarget?$this->setTarget:'').'"; + var cur_class="'.($this->setClass?$this->setClass:'-').'"; var cur_title="'.($this->setTitle?$this->setTitle:'').'"; - function setTarget(target) { // + function browse_links_setTarget(target) { // cur_target=target; add_target="&curUrl[target]="+escape(target); } - function setTitle(title) { // + function browse_links_setClass(class) { // + cur_class=class; + add_class="&curUrl[class]="+escape(class); + } + function browse_links_setTitle(title) { // cur_title=title; add_title="&curUrl[title]="+escape(title); } - function setValue(value) { // + function browse_links_setValue(value) { // cur_href=value; add_href="&curUrl[href]="+value; } @@ -912,10 +944,25 @@ } function link_current() { // if (cur_href!="http://" && cur_href!="mailto:") { - var setValue = cur_href+" "+cur_target+" "+cur_title; - if (setValue.substr(0,7)=="http://") setValue = setValue.substr(7); - if (setValue.substr(0,7)=="mailto:") setValue = setValue.substr(7); - updateValueInMainForm(setValue); + if (cur_target =="" && (cur_title!="" || cur_class!="-")) { + cur_target="_top"; + } + if (cur_title=="" && cur_class=="-") { + cur_class=""; + } + returnBeforeCleaned = cur_href + " " + cur_target + " " + cur_class + " " + cur_title; + if (returnBeforeCleaned.substr(0,7)=="http://") { + returnToMainFormValue = returnBeforeCleaned.substr(7); + } else if (returnBeforeCleaned.substr(0,7)=="mailto:") { + if (returnBeforeCleaned.substr(0,14)=="mailto:mailto:") { + returnToMainFormValue = returnBeforeCleaned.substr(14); + } else { + returnToMainFormValue = returnBeforeCleaned.substr(7); + } + } else { + returnToMainFormValue = returnBeforeCleaned; + } + updateValueInMainForm(returnToMainFormValue); close(); } return false; @@ -939,21 +986,21 @@ $JScode.=' function link_typo3Page(id,anchor) { // var theLink = \''.$this->siteURL.'?id=\'+id+(anchor?anchor:""); - self.parent.parent.renderPopup_addLink(theLink,cur_target,cur_title); + self.parent.parent.renderPopup_addLink(theLink,cur_target,cur_class,cur_title); return false; } function link_folder(folder) { // var theLink = \''.$this->siteURL.'\'+folder; - self.parent.parent.renderPopup_addLink(theLink,cur_target,cur_title); + self.parent.parent.renderPopup_addLink(theLink,cur_target,cur_class,cur_title); return false; } function link_spec(theLink) { // - self.parent.parent.renderPopup_addLink(theLink,cur_target,cur_title); + self.parent.parent.renderPopup_addLink(theLink,cur_target,cur_class,cur_title); return false; } function link_current() { // if (cur_href!="http://" && cur_href!="mailto:") { - self.parent.parent.renderPopup_addLink(cur_href,cur_target,cur_title); + self.parent.parent.renderPopup_addLink(cur_href,cur_target,cur_class,cur_title); } return false; } @@ -965,7 +1012,7 @@ function jumpToUrl(URL,anchor) { // var add_act = URL.indexOf("act=")==-1 ? "&act='.$this->act.'" : ""; var add_mode = URL.indexOf("mode=")==-1 ? "&mode='.$this->mode.'" : ""; - var theLocation = URL+add_act+add_mode+add_href+add_target+add_title+add_params'.($addPassOnParams?'+"'.$addPassOnParams.'"':'').'+(anchor?anchor:""); + var theLocation = URL+add_act+add_mode+add_href+add_target+add_class+add_title+add_params'.($addPassOnParams?'+"'.$addPassOnParams.'"':'').'+(anchor?anchor:""); window.location.href = theLocation; return false; } @@ -1249,7 +1296,7 @@ '.$GLOBALS['LANG']->getLL('emailAddress',1).': doc->formWidth(20).' value="'.htmlspecialchars($this->curUrlInfo['act']=='mail'?$this->curUrlInfo['info']:'').'" /> '. - ' + ' '; @@ -1264,9 +1311,9 @@
- - + +
URL:doc->formWidth(20).' value="'.htmlspecialchars($this->curUrlInfo['act']=='url'?$this->curUrlInfo['info']:'http://').'" /> '. - 'URL:doc->formWidth(30).' value="'.htmlspecialchars($this->curUrlInfo['act']=='url'?$this->curUrlInfo['info']:'http://').'" /> '. + '
'; @@ -1330,7 +1377,7 @@ // URL + onclick event: $onClickEvent=''; - if (isset($v[$k2i.'.']['target'])) $onClickEvent.="setTarget('".$v[$k2i.'.']['target']."');"; + if (isset($v[$k2i.'.']['target'])) $onClickEvent.="browse_links_setTarget('".$v[$k2i.'.']['target']."');"; $v[$k2i.'.']['url'] = str_replace('###_URL###',$this->siteURL,$v[$k2i.'.']['url']); if (substr($v[$k2i.'.']['url'],0,7)=='http://' || substr($v[$k2i.'.']['url'],0,7)=='mailto:') { $onClickEvent.="cur_href=unescape('".rawurlencode($v[$k2i.'.']['url'])."');link_current();"; @@ -1396,17 +1443,26 @@ $content .= ' + +
+ + + + + +
'.$GLOBALS['LANG']->getLL('class',1).'doc->formWidth(10).' />
+
-
- - - + +
'.$GLOBALS['LANG']->getLL('title',1).'doc->formWidth(10).' />'.$GLOBALS['LANG']->getLL('title',1).'doc->formWidth(10).' />
@@ -1425,9 +1481,9 @@ - +
'.$GLOBALS['LANG']->getLL('target',1).':doc->formWidth(10).' />doc->formWidth(10).' /> - @@ -1443,8 +1499,9 @@ $selectJS = ' 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) { 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; - setTarget(document.ltargetform.ltarget.value); - setTitle(document.ltitleform.ltitle.value); + browse_links_setTarget(document.ltargetform.ltarget.value); + browse_links_setClass(document.lclassform.lclass.value); + browse_links_setTitle(document.ltitleform.ltitle.value); document.ltargetform.popup_width.selectedIndex=0; document.ltargetform.popup_height.selectedIndex=0; } @@ -2513,7 +2570,11 @@ $rel = substr($href,strlen($siteUrl)); if (@file_exists(PATH_site.rawurldecode($rel))) { // URL is a file, which exists: $info['value']=rawurldecode($rel); - $info['act']='file'; + if (@is_dir(PATH_site.$info['value'])) { + $info['act']='folder'; + } else { + $info['act']='file'; + } } else { // URL is a page (id parameter) $uP=parse_url($rel); if (!trim($uP['path'])) { @@ -2684,4 +2745,4 @@ } -?> \ No newline at end of file +?> Index: typo3/sysext/lang/locallang_browse_links.xml =================================================================== --- typo3/sysext/lang/locallang_browse_links.xml (revision 3534) +++ typo3/sysext/lang/locallang_browse_links.xml (working copy) @@ -19,6 +19,7 @@ +