Index: typo3/sysext/cms/tslib/class.tslib_content.php =================================================================== --- typo3/sysext/cms/tslib/class.tslib_content.php (revision 8066) +++ typo3/sysext/cms/tslib/class.tslib_content.php (working copy) @@ -3170,21 +3170,33 @@ if ($conf['sample']) {$params.='&sample=1';} if ($conf['alternativeTempPath']) {$params.='&alternativeTempPath='.rawurlencode($conf['alternativeTempPath']);} - if ($conf['bodyTag']) {$params.='&bodyTag='.rawurlencode($conf['bodyTag']);} - if ($conf['title']) {$params.='&title='.rawurlencode($conf['title']);} - if ($conf['wrap']) {$params.='&wrap='.rawurlencode($conf['wrap']);} + // includes lines above in cache + $showPicContent = ' + + + + '.htmlspecialchars($conf['title'] ? $conf['title'] : "Image").' + ' . ($conf['title'] ? '' : '') . ' + + '.($conf['bodyTag'] ? $conf['bodyTag'] : ''); + + $wrapParts = explode('|', $conf['wrap']); + $showPicContent .= trim($wrapParts[0]) . '###IMAGE###' . trim($wrapParts[1]); + $showPicContent .= ' + + '; + $contentHash = md5('showpic' . $showPicContent); + t3lib_pageSelect::storeHash($contentHash, $showPicContent, 'showpic'); + $md5_value = md5( $imageFile.'|'. $conf['width'].'|'. $conf['height'].'|'. - $conf['effects'].'|'. - $conf['bodyTag'].'|'. - $conf['title'].'|'. - $conf['wrap'].'|'. + $conf['effects'].'||||'. $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'].'|'); - $params.= '&md5='.$md5_value; + $params .= '&md5=' . $md5_value . '&contentHash=' . $contentHash; $url = $GLOBALS['TSFE']->absRefPrefix.'index.php?eID=tx_cms_showpic&file='.rawurlencode($imageFile).$params; if ($conf['JSwindow.']['altUrl'] || $conf['JSwindow.']['altUrl.']) { $altUrl = $this->stdWrap($conf['JSwindow.']['altUrl'], $conf['JSwindow.']['altUrl.']); Index: typo3/sysext/cms/tslib/showpic.php =================================================================== --- typo3/sysext/cms/tslib/showpic.php (revision 8066) +++ typo3/sysext/cms/tslib/showpic.php (working copy) @@ -98,6 +98,9 @@ # NOTICE: ALL LINES above can be commented out since this script is now used via the ?eID=tx_cms_showpic parameter passed to index.php! # For backwards compatibility in extensions using showpic.php directly this is kept for the version 4.0 until 4.5 where it is planned removed! +# NOTICE: The script below is still backwards compatible with the situation in 4.4.0 with 4.5 the parts using bodyTag, wrap and title to build +# the HTML can be removed! + if (!defined ('PATH_typo3conf')) die ('The configuration path was not properly defined!'); require_once(PATH_t3lib.'class.t3lib_stdgraphic.php'); @@ -128,6 +131,7 @@ var $title; var $wrap; var $md5; + var $contentHash; /** * Init function, setting the input vars in the global space. @@ -147,6 +151,7 @@ $this->title = t3lib_div::_GP('title'); $this->wrap = t3lib_div::_GP('wrap'); $this->md5 = t3lib_div::_GP('md5'); + $this->contentHash = t3lib_div::_GP('contentHash'); // *********************** // Check parameters @@ -171,6 +176,18 @@ die('Parameter Error: Wrong parameters sent.'); } + // Need to connect to database, because this is used (typo3temp_db_tracking, cached image dimensions). + $GLOBALS['TYPO3_DB']->sql_pconnect(TYPO3_db_host, TYPO3_db_username, TYPO3_db_password); + $GLOBALS['TYPO3_DB']->sql_select_db(TYPO3_db); + + // Check for the new content cache hash + if (strlen(t3lib_div::_GP('contentHash')) > 0) { + $this->content = t3lib_pageSelect::getHash($this->contentHash); + if (is_null($this->content)) { + die('Parameter Error: Content not available.'); + } + } + // *********************** // Check the file. If must be in a directory beneath the dir of this script... // $this->file remains unchanged, because of the code in stdgraphic, but we do check if the file exists within the current path @@ -202,10 +219,6 @@ $img->tempPath = $this->alternativeTempPath; } - // Need to connect to database, because this is used (typo3temp_db_tracking, cached image dimensions). - $GLOBALS['TYPO3_DB']->sql_pconnect(TYPO3_db_host, TYPO3_db_username, TYPO3_db_password); - $GLOBALS['TYPO3_DB']->sql_select_db(TYPO3_db); - if (strstr($this->width.$this->height, 'm')) {$max='m';} else {$max='';} $this->height = t3lib_div::intInRange($this->height,0); @@ -213,9 +226,15 @@ if ($this->frame) {$this->frame = intval($this->frame);} $imgInfo = $img->imageMagickConvert($this->file,'web',$this->width.$max,$this->height,$img->IMparams($this->effects),$this->frame,''); - // Create HTML output: - $this->content=''; - $this->content.=' + if (strlen($this->content) > 0) { + // insert image in cached HTML content + if (is_array($imgInfo)) { + $this->content = str_replace('###IMAGE###', $img->imgTag($imgInfo), $this->content); + } + } else { + // Create HTML output: + $this->content=''; + $this->content.=' @@ -225,13 +244,14 @@ '.($this->bodyTag ? $this->bodyTag : ''); - if (is_array($imgInfo)) { - $wrapParts = explode('|',$this->wrap); - $this->content.=trim($wrapParts[0]).$img->imgTag($imgInfo).trim($wrapParts[1]); - } - $this->content.=' + if (is_array($imgInfo)) { + $wrapParts = explode('|',$this->wrap); + $this->content.=trim($wrapParts[0]).$img->imgTag($imgInfo).trim($wrapParts[1]); + } + $this->content.=' '; + } } /**