Project

General

Profile

Feature #17738 » rtehtmlarea_feature_6619.patch

Administrator Admin, 2007-11-01 07:12

View differences:

typo3/sysext/rtehtmlarea/class.tx_rtehtmlarea_base.php (working copy)
var $spellCheckerMode;
var $quickTagHideTags;
var $specConf;
var $toolbar = array(); // Save the buttons for the toolbar
var $toolbar_level_size; // The size for each level in the toolbar:
var $toolbar = array(); // Save the buttons for the toolbar
var $toolbar_level_size; // The size for each level in the toolbar:
var $toolbarOrderArray = array();
private $pluginEnabledArray = array(); // Array of plugin id's enabled in the current RTE editing area
private $pluginEnabledCumulativeArray = array();// Cumulative array of plugin id's enabled so far in any of the RTE editing areas of the form
private $registeredPlugins = array(); // Array of registered plugins indexed by their plugin Id's
protected $pluginEnabledArray = array(); // Array of plugin id's enabled in the current RTE editing area
protected $pluginEnabledCumulativeArray = array(); // Cumulative array of plugin id's enabled so far in any of the RTE editing areas of the form
protected $registeredPlugins = array(); // Array of registered plugins indexd by their plugin Id's
/**
* Returns true if the RTE is available. Here you check if the browser requirements are met.
......
var RTEarea = new Array();
RTEarea[0] = new Object();
RTEarea[0]["version"] = "' . $TYPO3_CONF_VARS['EXTCONF'][$this->ID]['version'] . '";
RTEarea[0]["popupwin"] = "' . $this->writeJSFileToTypo3tempDir('EXT:' . $this->ID . '/htmlarea/popupwin' . ($TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableCompressedScripts']?'-compressed':'') .'.js', "popupwin", $TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableCompressedScripts']) . '";'
RTEarea[0]["popupwin"] = "' . $this->writeTemporaryFile('EXT:' . $this->ID . '/htmlarea/popupwin.js', "popupwin") . '";'
. (($this->client['BROWSER'] == 'msie') ? ('
RTEarea[0]["htmlarea-ie"] = "' . $this->writeJSFileToTypo3tempDir('EXT:' . $this->ID . '/htmlarea/htmlarea-ie' . ($TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableCompressedScripts']?'-compressed':'') .'.js', "htmlarea-ie", $TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableCompressedScripts']) . '";')
RTEarea[0]["htmlarea-ie"] = "' . $this->writeTemporaryFile('EXT:' . $this->ID . '/htmlarea/htmlarea-ie.js', "htmlarea-ie") . '";')
: ('
RTEarea[0]["htmlarea-gecko"] = "' . $this->writeJSFileToTypo3tempDir('EXT:' . $this->ID . '/htmlarea/htmlarea-gecko' . ($TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableCompressedScripts']?'-compressed':'') .'.js', "htmlarea-gecko", $TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableCompressedScripts']) . '";')) . '
RTEarea[0]["htmlarea-gecko"] = "' . $this->writeTemporaryFile('EXT:' . $this->ID . '/htmlarea/htmlarea-gecko.js', "htmlarea-gecko") . '";')) . '
var _editor_url = "' . $this->extHttpPath . 'htmlarea";
var _editor_lang = "' . $this->language . '";
var _editor_CSS = "' . $this->editorCSS . '";
......
</script>';
$loadJavascriptCode .= '
<script type="text/javascript" src="' . $this->buildJSMainLangFile($RTEcounter) . '"></script>
<script type="text/javascript" src="' . $this->writeJSFileToTypo3tempDir('EXT:' . $this->ID . '/htmlarea/htmlarea' . ($TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableCompressedScripts']?'-compressed':'') .'.js', "htmlarea", $TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableCompressedScripts']) . '"></script>
<script type="text/javascript" src="' . $this->writeTemporaryFile('EXT:' . $this->ID . '/htmlarea/htmlarea.js', "htmlarea") . '"></script>
';
return $loadJavascriptCode;
}
......
foreach ($this->pluginEnabledCumulativeArray[$RTEcounter] as $pluginId) {
$extensionKey = is_object($this->registeredPlugins[$pluginId]) ? $this->registeredPlugins[$pluginId]->getExtensionKey() : $this->ID;
$loadPluginCode .= '
HTMLArea.loadPlugin("' . $pluginId . '", true, "' . $this->writeJSFileToTypo3tempDir('EXT:' . $extensionKey . '/htmlarea/plugins/' . $pluginId . '/' . strtolower(preg_replace('/([a-z])([A-Z])([a-z])/', "$1".'-'."$2"."$3", $pluginId)) . ($TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableCompressedScripts']?'-compressed':'') .'.js', $pluginId, $TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableCompressedScripts']) . '");';
HTMLArea.loadPlugin("' . $pluginId . '", true, "' . $this->writeTemporaryFile('EXT:' . $extensionKey . '/htmlarea/plugins/' . $pluginId . '/' . strtolower(preg_replace('/([a-z])([A-Z])([a-z])/', "$1".'-'."$2"."$3", $pluginId)) . '.js', $pluginId) . '");';
}
return (!$this->is_FE() ? '' : '
' . '/*<![CDATA[*/') . ($this->is_FE() ? '' : '
......
// Process default style configuration
$configureRTEInJavascriptString .= '
RTEarea['.$RTEcounter.']["defaultPageStyle"] = "' . $this->hostURL . $this->buildJSFile('css', $this->buildStyleSheet(), 'css') . '";';
RTEarea['.$RTEcounter.']["defaultPageStyle"] = "' . $this->hostURL . $this->writeTemporaryFile('', 'defaultPageStyle', 'css', $this->buildStyleSheet()) . '";';
// Setting the pageStyle
$filename = trim($this->thisConfig['contentCSS']) ? trim($this->thisConfig['contentCSS']) : 'EXT:' . $this->ID . '/htmlarea/plugins/DynamicCSS/dynamiccss.css';
......
if ($this->isPluginEnabled('Acronym')) {
$configureRTEInJavascriptString .= '
RTEarea['.$RTEcounter.']["acronymUrl"] = "' . $this->buildJSFile('acronym_'.$this->contentLanguageUid, $this->buildJSAcronymArray()) . '";';
RTEarea['.$RTEcounter.']["acronymUrl"] = "' . $this->writeTemporaryFile('', 'acronym_'.$this->contentLanguageUid, 'js', $this->buildJSAcronymArray()) . '";';
}
if ($this->isPluginEnabled('TYPO3Browsers')) {
......
// Include JS arrays of configured classes
$configureRTEInJavascriptString .= '
RTEarea['.$RTEcounter.']["classesUrl"] = "' . $this->hostURL . $this->buildJSFile('classes_'.$this->language, $this->buildJSClassesArray()) . '";';
RTEarea['.$RTEcounter.']["classesUrl"] = "' . $this->hostURL . $this->writeTemporaryFile('', 'classes_'.$LANG->lang, 'js', $this->buildJSClassesArray()) . '";';
return $configureRTEInJavascriptString;
}
......
$configureRTEInJavascriptString = '';
if (is_array($RTEProperties['classesAnchor.'])) {
$configureRTEInJavascriptString .= '
RTEarea['.$RTEcounter.']["classesAnchorUrl"] = "' . $this->buildJSFile('classesAnchor_'.$this->contentLanguageUid, $this->buildJSClassesAnchorArray()) . '";';
RTEarea['.$RTEcounter.']["classesAnchorUrl"] = "' . $this->writeTemporaryFile('', 'classesAnchor_'.$this->contentLanguageUid, 'js', $this->buildJSClassesAnchorArray()) . '";';
}
return $configureRTEInJavascriptString;
}
......
}
/**
* Return a file name built with the label and containing the specified contents
* Writes contents in a file in typo3temp/rtehtmlarea directory and returns the file name
*
* @return string filename
*/
function buildJSFile($label,$contents,$ext='js') {
$relFilename = 'typo3temp/' . $this->ID . '_' . $label . '_' . md5($contents) . '.' . $ext;
$outputFilename = PATH_site . $relFilename;
if(!file_exists($outputFilename)) {
$outputHandle = fopen($outputFilename,'wb');
fwrite($outputHandle, $contents);
fclose($outputHandle);
t3lib_div::fixPermissions($outputFilename);
}
return $this->httpTypo3Path . $relFilename;
}
/**
* Return a file name built with the label and containing a cached copy of the specified file
* @param string $sourceFileName: The name of the file from which the contents should be extracted
* @param string $label: A label to insert at the beginning of the name of the file
* @param string $fileExtension: The file extension of the file, defaulting to 'js'
* @param string $contents: The contents to write into the file if no $sourceFileName is provided
*
* @return string filename
* @return string The name of the file writtten to typo3temp/rtehtmlarea
*/
function writeJSFileToTypo3tempDir($JSFile,$label,$compressed=FALSE,$ext='js') {
private function writeTemporaryFile($sourceFileName='', $label, $fileExtension='js', $contents='') {
global $TYPO3_CONF_VARS;
$source = t3lib_div::getFileAbsFileName($JSFile);
$relFilename = 'typo3temp/' . $this->ID . '_' . $label . '_' . md5($JSFile . $TYPO3_CONF_VARS['EXTCONF'][$this->ID]['version']) . ($compressed ? '-compressed' : '') . '.' . $ext;
$destination = PATH_site . $relFilename;
if ($sourceFileName) {
$output = '';
$source = t3lib_div::getFileAbsFileName($sourceFileName);
$inputHandle = @fopen($source, "rb");
while (!feof($inputHandle)) {
$output .= @fread($inputHandle, 8192);
}
fclose($inputHandle);
} else {
$output = $contents;
}
$compress = $TYPO3_CONF_VARS['EXTCONF'][$this->ID]['enableCompressedScripts'] && ($fileExtension == 'js') && ($output != '');
$relativeFilename = 'typo3temp/' . $this->ID . '/' . str_replace('-','_',$label) . '_' . t3lib_div::shortMD5(($TYPO3_CONF_VARS['EXTCONF'][$this->ID]['version'] . ($sourceFileName?$sourceFileName:$output)), 20) . ($compress ? '_compressed' : '') . '.' . $fileExtension;
$destination = PATH_site . $relativeFilename;
if(!file_exists($destination)) {
@copy($source,$destination);
t3lib_div::fixPermissions($destination);
$compressedJavaScript = '';
if ($compress) {
$compressedJavaScript = t3lib_div::minifyJavaScript($output);
}
$failure = t3lib_div::writeFileToTypo3tempDir($destination, $compressedJavaScript?$compressedJavaScript:$output);
if ($failure) {
die($failure);
}
}
return ($this->thisConfig['forceHTTPS']?$this->siteURL:$this->httpTypo3Path) . $relFilename;
return ($this->thisConfig['forceHTTPS']?$this->siteURL:$this->httpTypo3Path) . $relativeFilename;
}
/**
......
$contents .= $this->buildJSLangArray($plugin) . chr(10);
}
}
return $this->buildJSFile($this->language.'_'.$this->OutputCharset,$contents);
return $this->writeTemporaryFile('', $this->language.'_'.$this->OutputCharset, 'js', $contents);
}
/**
(1-1/2)