Index: t3lib/class.t3lib_tceforms.php
===================================================================
--- t3lib/class.t3lib_tceforms.php	(révision 4344)
+++ t3lib/class.t3lib_tceforms.php	(copie de travail)
@@ -6015,6 +6015,19 @@
 			);
 		}
 	}
+
+	/**
+	 * Insert additional style sheet link
+	 *
+	 * @param	string		$key: some key identifying the style sheet
+	 * @param	string		$href: uri to the style sheet file
+	 * @param	string		$title: value for the title attribute of the link element
+	 * @return	string		$relation: value for the rel attribute of the link element
+	 * @return	void
+	 */
+	public function addStyleSheet($key, $href, $title='', $relation='stylesheet') {
+		$GLOBALS['SOBE']->doc->addStyleSheet($key, $href, $title, $relation);
+	 }
 }
 
 
@@ -6107,6 +6120,21 @@
 			$GLOBALS['TSFE']->additionalHeaderData[$lib] = '<script type="text/javascript" src="' . $this->backPath . $lib . '"></script>';
 		}
 	}
+	
+	/**
+	 * Insert additional style sheet link
+	 *
+	 * @param	string		$key: some key identifying the style sheet
+	 * @param	string		$href: uri to the style sheet file
+	 * @param	string		$title: value for the title attribute of the link element
+	 * @return	string		$relation: value for the rel attribute of the link element
+	 * @return	void
+	 */
+	public function addStyleSheet($key, $href, $title='', $relation='stylesheet') {
+		if (!isset($GLOBALS['TSFE']->additionalHeaderData[$key])) {
+			$GLOBALS['TSFE']->additionalHeaderData[$key] = '<link rel="' . $relation . '" type="text/css" href="' . $href . '"' . ($title ? (' title="' . $title . '"') : '') . ' />';
+		}
+	 }
 }
 
 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_tceforms.php'])	{
Index: typo3/sysext/rtehtmlarea/class.tx_rtehtmlarea_base.php
===================================================================
--- typo3/sysext/rtehtmlarea/class.tx_rtehtmlarea_base.php	(révision 4344)
+++ typo3/sysext/rtehtmlarea/class.tx_rtehtmlarea_base.php	(copie de travail)
@@ -339,10 +339,10 @@
 			 * LOAD CSS AND JAVASCRIPT
 			 * =======================================
 			 */
-				// Preloading the pageStyle
-			$GLOBALS['SOBE']->doc->JScodeLibArray['rtehtmlarea-contentCSS'] = $this->getPageStyle();
-				// Including RTE skin stylesheets
-			$GLOBALS['SOBE']->doc->JScodeLibArray['rtehtmlarea-skin'] = $this->getSkin();
+				// Preloading the pageStyle and including RTE skin stylesheets
+			$this->addPageStyle();
+			$this->addSkin();
+			
 				// Loading JavaScript files and code
 			$this->TCEform->additionalCode_pre['rtehtmlarea-loadJSfiles'] = $this->loadJSfiles($this->TCEform->RTEcounter);
 			$this->TCEform->additionalJS_pre['rtehtmlarea-loadJScode'] = $this->loadJScode($this->TCEform->RTEcounter);
@@ -406,22 +406,27 @@
 	}
 
 	/**
-	 * Get links to content style sheet(s)
+	 * Add link to content style sheet to document header
 	 *
-	 * @return	string	link tag referenceing the content stylesheet
+	 * @return	void
 	 */
-	protected function getPageStyle() {
+	protected function addPageStyle() {
 			// Get stylesheet file name from Page TSConfig if any
 		$filename = trim($this->thisConfig['contentCSS']) ? trim($this->thisConfig['contentCSS']) : 'EXT:' . $this->ID . '/res/contentcss/default.css';
-		return '<link rel="alternate stylesheet" type="text/css" href="' . $this->getFullFileName($filename) . '" title="HTMLArea RTE Content CSS" />';
+		$this->addStyleSheet(
+			'rtehtmlarea-page-style',
+			$this->getFullFileName($filename),
+			'htmlArea RTE Content CSS',
+			'alternate stylesheet'
+			);
 	}
 
 	/**
-	 * Get links to skin style sheet(s)
+	 * Add links to skin style sheet(s) to document header
 	 *
-	 * @return	string	link tags referenceing the skin stylesheets
+	 * @return	void
 	 */
-	protected function getSkin() {
+	protected function addSkin() {
 			// Get skin file name from Page TSConfig if any
 		$skinFilename = trim($this->thisConfig['skin']) ? trim($this->thisConfig['skin']) : 'EXT:' . $this->ID . '/htmlarea/skins/default/htmlarea.css';
 		if($this->client['BROWSER'] == 'gecko' && $this->client['VERSION'] == '1.3' && substr($skinFilename,0,4) == 'EXT:')  {
@@ -444,24 +449,47 @@
 		$this->editorCSS = $skinFilename;
 			// Editing area style sheet
 		$this->editedContentCSS = $skinDir . '/htmlarea-edited-content.css';
-		$skin = '<link rel="alternate stylesheet" type="text/css" href="' . $this->editedContentCSS . '" title="HTMLArea RTE Editing Area CSS" />';
+		$this->addStyleSheet(
+			'rtehtmlarea-editing-area-skin',
+			$this->editedContentCSS,
+			'htmlArea RTE Editing Area Skin',
+			'alternate stylesheet'
+			);
 			// Main skin
-		$skin .= '
-<link rel="stylesheet" type="text/css" href="' . $this->editorCSS . '" title="HTMLArea RTE Skin" />';
+		$this->addStyleSheet(
+			'rtehtmlarea-skin',
+			$this->editorCSS,
+			'htmlArea RTE Skin'
+			);
 			// Additional icons from registered plugins
 		foreach ($this->pluginEnabledCumulativeArray[$this->TCEform->RTEcounter] as $pluginId) {
 			if (is_object($this->registeredPlugins[$pluginId])) {
 				$pathToSkin = $this->registeredPlugins[$pluginId]->getPathToSkin();
 				if ($pathToSkin) {
-					$skin .= '
-<link rel="stylesheet" type="text/css" href="' . $this->httpTypo3Path . t3lib_extMgm::siteRelPath($this->registeredPlugins[$pluginId]->getExtensionKey()) . $pathToSkin . '" />';
+					$this->addStyleSheet(
+						'rtehtmlarea-plugin-' . $pluginId . '-skin',
+						$this->httpTypo3Path . t3lib_extMgm::siteRelPath($this->registeredPlugins[$pluginId]->getExtensionKey()) . $pathToSkin,
+						'htmlArea RTE ' . $pluginId . ' Skin'
+						);
 				}
 			}
 		}
-		return $skin;
 	}
 
 	/**
+	 * Add style sheet file to document header
+	 *
+	 * @param	string		$key: some key identifying the style sheet
+	 * @param	string		$href: uri to the style sheet file
+	 * @param	string		$title: value for the title attribute of the link element
+	 * @return	string		$relation: value for the rel attribute of the link element
+	 * @return	void
+	 */
+	protected function addStyleSheet($key, $href, $title='', $relation='stylesheet') {
+		$this->TCEform->addStyleSheet($key, $href, $title, $relation);
+	}
+
+	/**
 	 * Initialize toolbar configuration and enable registered plugins
 	 *
 	 * @return	void
Index: typo3/sysext/rtehtmlarea/pi2/class.tx_rtehtmlarea_pi2.php
===================================================================
--- typo3/sysext/rtehtmlarea/pi2/class.tx_rtehtmlarea_pi2.php	(révision 4344)
+++ typo3/sysext/rtehtmlarea/pi2/class.tx_rtehtmlarea_pi2.php	(copie de travail)
@@ -212,10 +212,9 @@
 		 * LOAD JS, CSS and more
 		 * =======================================
 		 */
-			// Preloading the pageStyle
-		$GLOBALS['TSFE']->additionalHeaderData['rtehtmlarea-contentCSS'] = $this->getPageStyle();
-			// Loading RTE skin style sheets
-		$GLOBALS['TSFE']->additionalHeaderData['rtehtmlarea-skin'] = $this->getSkin();
+			// Preloading the pageStyle and including RTE skin stylesheets
+		$this->addPageStyle();
+		$this->addSkin();
 			// Loading JavaScript files and code
 		$this->TCEform->additionalJS_initial = $this->loadJSfiles($this->TCEform->RTEcounter);
 		$this->TCEform->additionalJS_pre['rtehtmlarea-loadJScode'] = $this->loadJScode($this->TCEform->RTEcounter);
@@ -255,6 +254,21 @@
 	}
 	
 	/**
+	 * Add style sheet file to document header
+	 *
+	 * @param	string		$key: some key identifying the style sheet
+	 * @param	string		$href: uri to the style sheet file
+	 * @param	string		$title: value for the title attribute of the link element
+	 * @return	string		$relation: value for the rel attribute of the link element
+	 * @return	void
+	 */
+	protected function addStyleSheet($key, $href, $title='', $relation='stylesheet') {
+		if (!isset($GLOBALS['TSFE']->additionalHeaderData[$key])) {
+			$GLOBALS['TSFE']->additionalHeaderData[$key] = '<link rel="' . $relation . '" type="text/css" href="' . $href . '"' . ($title ? (' title="' . $title . '"') : '') . ' />';
+		}
+	}
+	
+	/**
 	 * Return the JS-Code for copy the HTML-Code from the editor in the hidden input field.
 	 * This is for submit function from the form.
 	 *
Index: typo3/template.php
===================================================================
--- typo3/template.php	(révision 4344)
+++ typo3/template.php	(copie de travail)
@@ -187,6 +187,7 @@
 	var $form_rowsToStylewidth = 9.58;	// Multiplication factor for formWidth() input size (default is 48* this value).
 	var $form_largeComp = 1.33;		// Compensation for large documents (used in class.t3lib_tceforms.php)
 	var $endJS=1;					// If set, then a JavaScript section will be outputted in the bottom of page which will try and update the top.busy session expiry object.
+	protected $additionalStyleSheets=array();	// Links to additional style sheets
 
 		// TYPO3 Colorscheme.
 		// If you want to change this, please do so through a skin using the global var $TBE_STYLES
@@ -937,7 +938,8 @@
 					/*###POSTCSSMARKER###*/
 				/*]]>*/
 			</style>
-			'.($this->styleSheetFile_post?'<link rel="stylesheet" type="text/css" href="'.$this->backPath.$this->styleSheetFile_post.'" />':'')
+			'.($this->styleSheetFile_post?'<link rel="stylesheet" type="text/css" href="'.$this->backPath.$this->styleSheetFile_post.'" />':'').'
+			'.implode("\n", $this->additionalStyleSheets)
 		)
 		;
 		$this->inDocStyles='';
@@ -948,6 +950,21 @@
 	}
 
 	/**
+	 * Insert additional style sheet link
+	 *
+	 * @param	string		$key: some key identifying the style sheet
+	 * @param	string		$href: uri to the style sheet file
+	 * @param	string		$title: value for the title attribute of the link element
+	 * @return	string		$relation: value for the rel attribute of the link element
+	 * @return	void
+	 */
+	function addStyleSheet($key, $href, $title='', $relation='stylesheet') {
+		if (!isset($this->additionalStyleSheets[$key])) {
+			$this->additionalStyleSheets[$key] = '<link rel="' . $relation . '" type="text/css" href="' . $href . '"' . ($title ? (' title="' . $title . '"') : '') . ' />';
+		}
+	 }
+
+	/**
 	 * Insert post rendering document style into already rendered content
 	 * This is needed for extobjbase
 	 *
