Index: t3lib/class.t3lib_parsehtml_proc.php =================================================================== --- t3lib/class.t3lib_parsehtml_proc.php (révision 7397) +++ t3lib/class.t3lib_parsehtml_proc.php (copie de travail) @@ -643,6 +643,7 @@ unset($attribArray_copy['target']); unset($attribArray_copy['class']); unset($attribArray_copy['title']); + unset($attribArray_copy['external']); if ($attribArray_copy['rteerror']) { // Unset "rteerror" and "style" attributes if "rteerror" is set! unset($attribArray_copy['style']); unset($attribArray_copy['rteerror']); @@ -652,17 +653,22 @@ $attribArray['class'] = preg_match('/ /', $attribArray['class']) ? '"' . $attribArray['class'] . '"' : $attribArray['class']; $attribArray['title'] = preg_match('/ /', $attribArray['title']) ? '"' . $attribArray['title'] . '"' : $attribArray['title']; // Creating the TYPO3 pseudo-tag "" for the link (includes href/url, target and class attributes): - $bTag=''; + // If external attribute is set, keep the href unchanged + $href = $attribArray['external'] ? $attribArray['href'] : $info['url'].($info['query']?',0,'.$info['query']:''); + $bTag=''; $eTag=''; $blockSplit[$k] = $bTag.$this->TS_links_db($this->removeFirstAndLastTag($blockSplit[$k])).$eTag; } else { // ... otherwise store the link as a-tag. // Unsetting 'rtekeep' attribute if that had been set. unset($attribArray['rtekeep']); - // If the url is local, remove url-prefix - $siteURL = $this->siteUrl(); - if ($siteURL && substr($attribArray['href'],0,strlen($siteURL))==$siteURL) { - $attribArray['href']=$this->relBackPath.substr($attribArray['href'],strlen($siteURL)); + if (!$attribArray['external']) { + // If the url is local, remove url-prefix + $siteURL = $this->siteUrl(); + if ($siteURL && substr($attribArray['href'],0,strlen($siteURL))==$siteURL) { + $attribArray['href']=$this->relBackPath.substr($attribArray['href'],strlen($siteURL)); + } } + unset($attribArray['external']); $bTag=''; $eTag=''; $blockSplit[$k] = $bTag.$this->TS_links_db($this->removeFirstAndLastTag($blockSplit[$k])).$eTag; @@ -700,7 +706,7 @@ } else { $fileChar=intval(strpos($link_param, '/')); $urlChar=intval(strpos($link_param, '.')); - + $external = FALSE; // Detects if a file is found in site-root OR is a simulateStaticDocument. list($rootFileDat) = explode('?',$link_param); $rFD_fI = pathinfo($rootFileDat); @@ -709,6 +715,7 @@ } elseif($urlChar && (strstr($link_param,'//') || !$fileChar || $urlChar<$fileChar)) { // url (external): If doubleSlash or if a '.' comes before a '/'. if (!preg_match('/^[a-z]*:\/\//',trim(strtolower($link_param)))) {$scheme='http://';} else {$scheme='';} $href = $scheme.$link_param; + $external = TRUE; } elseif($fileChar) { // file (internal) $href = $siteUrl.$link_param; } else { // integer or alias (alias is without slashes or periods or commas, that is 'nospace,alphanum_x,lower,unique' according to tables.php!!) @@ -743,6 +750,7 @@ ($tagCode[2]&&$tagCode[2]!='-' ? ' target="'.htmlspecialchars($tagCode[2]).'"' : ''). ($tagCode[3]&&$tagCode[3]!='-' ? ' class="'.htmlspecialchars($tagCode[3]).'"' : ''). ($tagCode[4] ? ' title="'.htmlspecialchars($tagCode[4]).'"' : ''). + ($external ? ' external="1"' : ''). ($error ? ' rteerror="'.htmlspecialchars($error).'" style="background-color: yellow; border:2px red solid; color: black;"' : ''). // Should be OK to add the style; the transformation back to databsae will remove it... '>'; $eTag = ''; @@ -1589,6 +1597,8 @@ $uP = parse_url(strtolower($attribArray['href'])); if (!$uP['scheme']) { $attribArray['href'] = $this->siteUrl().substr($attribArray['href'],strlen($this->relBackPath)); + } elseif ($uP['scheme'] != 'mailto') { + $attribArray['external'] = 1; } } else { $attribArray['rtekeep'] = 1; Index: typo3/sysext/rtehtmlarea/extensions/TYPO3Link/class.tx_rtehtmlarea_typo3link.php =================================================================== --- typo3/sysext/rtehtmlarea/extensions/TYPO3Link/class.tx_rtehtmlarea_typo3link.php (révision 7397) +++ typo3/sysext/rtehtmlarea/extensions/TYPO3Link/class.tx_rtehtmlarea_typo3link.php (copie de travail) @@ -87,10 +87,8 @@ $registerRTEinJavascriptString .= ' RTEarea['.$RTEcounter.'].buttons.'. $button .'.classesAnchorUrl = "' . $this->htmlAreaRTE->writeTemporaryFile('', 'classesAnchor_'.$this->htmlAreaRTE->contentLanguageUid, 'js', $this->buildJSClassesAnchorArray()) . '";'; } - if ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extensionKey]['plugins'][$this->pluginName]['additionalAttributes']) { - $registerRTEinJavascriptString .= ' - RTEarea['.$RTEcounter.'].buttons.'. $button .'.additionalAttributes = "' . $GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extensionKey]['plugins'][$this->pluginName]['additionalAttributes'] .'";'; - } + $registerRTEinJavascriptString .= ' + RTEarea['.$RTEcounter.'].buttons.'. $button .'.additionalAttributes = "external' . ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extensionKey]['plugins'][$this->pluginName]['additionalAttributes'] ? (',' . $GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extensionKey]['plugins'][$this->pluginName]['additionalAttributes']) : '') . '";'; } return $registerRTEinJavascriptString; } Index: typo3/sysext/rtehtmlarea/mod3/class.tx_rtehtmlarea_browse_links.php =================================================================== --- typo3/sysext/rtehtmlarea/mod3/class.tx_rtehtmlarea_browse_links.php (révision 7397) +++ typo3/sysext/rtehtmlarea/mod3/class.tx_rtehtmlarea_browse_links.php (copie de travail) @@ -247,6 +247,10 @@ } // Note: parseCurUrl will invoke the hooks $this->curUrlInfo = $this->parseCurUrl($this->curUrlArray['href'],$this->siteURL); + if (isset($this->curUrlArray['external']) && $this->curUrlInfo['act'] != 'mail') { + $this->curUrlInfo['act'] = 'url'; + $this->curUrlInfo['info'] = $this->curUrlArray['href']; + } // Determine nature of current url: $this->act = t3lib_div::_GP('act'); if (!$this->act) { @@ -699,7 +703,7 @@ URL: doc->formWidth(20).' value="'.htmlspecialchars($this->curUrlInfo['act']=='url'?$this->curUrlInfo['info']:'http://').'" /> '. - ' + ' '; @@ -878,7 +882,7 @@ - + '; }