From aaece791d6930be4866ce6f6aa0cb425cce77cef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kasper=20Sk=C3=A5rh=C3=B8j?= <kasper@typo3.org>
Date: Fri, 24 Oct 2003 14:45:09 +0000
Subject: [PATCH] Added support for JavaScript window open in target parameter
 for typoLink. See next version of TSref.

git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@42 709f56b5-9817-0410-a4d7-c38de5d9e867
---
 .../sysext/cms/tslib/class.tslib_content.php  | 35 ++++++++++++++++---
 1 file changed, 30 insertions(+), 5 deletions(-)

diff --git a/typo3/sysext/cms/tslib/class.tslib_content.php b/typo3/sysext/cms/tslib/class.tslib_content.php
index 9752df393130..a9f2b7ecf68e 100755
--- a/typo3/sysext/cms/tslib/class.tslib_content.php
+++ b/typo3/sysext/cms/tslib/class.tslib_content.php
@@ -2322,7 +2322,7 @@ class tslib_cObj {
 			$info[3] = t3lib_div::png_to_gif_by_imagemagick($info[3]);
 			$GLOBALS['TSFE']->imagesOnPage[]=$info[3];		// This array is used to collect the image-refs on the page...
 			$alttext = strip_tags($this->stdWrap($conf['alttext'],$conf['alttext.']));
-			$theValue = '<img src="'.htmlspecialchars($GLOBALS['TSFE']->absRefPrefix.$info[3]).'" width="'.$info[0].'" height="'.$info[1].'"  border="0"'.($conf['params']?' '.$conf['params']:'').($alttext?' alt="'.htmlspecialchars($alttext).'"':' alt=""').' />';
+			$theValue = '<img src="'.htmlspecialchars($GLOBALS['TSFE']->absRefPrefix.$info[3]).'" width="'.$info[0].'" height="'.$info[1].'"  border="'.intval($conf['border']).'"'.($conf['params']?' '.$conf['params']:'').($alttext?' alt="'.htmlspecialchars($alttext).'"':' alt=""').' />';
 			if ($conf['linkWrap'])	{
 				$theValue = $this->linkWrap($theValue,$conf['linkWrap']);
 			} elseif ($conf['imageLinkWrap']) {
@@ -4448,10 +4448,29 @@ class tslib_cObj {
 		$this->lastTypoLinkTarget = '';
 		if ($link_param)	{
 			$link_paramA = t3lib_div::trimExplode(' ',$link_param,1);
-			$link_param = trim($link_paramA[0]);
-			$forceTarget = trim($link_paramA[1]);
+			$link_param = trim($link_paramA[0]);	// Link parameter value
+			$linkClass = trim($link_paramA[2]);		// Link class
+			$forceTarget = trim($link_paramA[1]);	// Target value
 			if ($forceTarget=='-')	$forceTarget='';	// The '-' character means 'no target'. Necessary in order to specify a class as third parameter without setting the target!
-			$linkClass = trim($link_paramA[2]);
+				// Check, if the target is coded as a JS open window link:
+			$JSwindowParts=array();
+			$JSwindowParams='';
+			$onClick = '';
+			if ($forceTarget && ereg('^([0-9]+)x([0-9]+)(:(.*)|.*)$',$forceTarget,$JSwindowParts))	{
+					// Take all pre-configured and inserted parameters and compile parameter list, including width+height:
+				$JSwindow_tempParamsArr = t3lib_div::trimExplode(',',strtolower($conf['JSwindow_params'].','.$JSwindowParts[4]),1);
+				$JSwindow_paramsArr=array();
+				foreach($JSwindow_tempParamsArr as $JSv)	{
+					list($JSp,$JSv) = explode('=',$JSv);
+					$JSwindow_paramsArr[$JSp]=$JSp.'='.$JSv;
+				}
+					// Add width/height:
+				$JSwindow_paramsArr['width']='width='.$JSwindowParts[1];
+				$JSwindow_paramsArr['height']='height='.$JSwindowParts[2];
+					// Imploding into string:
+				$JSwindowParams = implode(',',$JSwindow_paramsArr);
+				$forceTarget = '';	// Resetting the target since we will use onClick.
+			}
 			
 				// Internal target:
 			$target = isset($conf['target']) ? $conf['target'] : $GLOBALS['TSFE']->intTarget;
@@ -4619,7 +4638,13 @@ class tslib_cObj {
 				}		
 			}
 			
-			$res = '<a href="'.htmlspecialchars($finalTagParts['url']).'"'.$finalTagParts['targetParams'].($linkClass?' class="'.$linkClass.'"':'').$finalTagParts['aTagParams'].'>';
+			if ($JSwindowParams)	{
+				$onClick="vHWin=window.open('".$finalTagParts['url']."','FEopenLink','".$JSwindowParams."');vHWin.focus();return false;";
+				$res = '<a href="#" onclick="'.htmlspecialchars($onClick).'"'.($linkClass?' class="'.$linkClass.'"':'').$finalTagParts['aTagParams'].'>';
+			} else {
+				$res = '<a href="'.htmlspecialchars($finalTagParts['url']).'"'.$finalTagParts['targetParams'].($linkClass?' class="'.$linkClass.'"':'').$finalTagParts['aTagParams'].'>';
+			}
+			
 				// Call user function:
 			if ($conf['userFunc'])	{
 				$finalTagParts['TAG']=$res;
-- 
GitLab