Project

General

Profile

Feature #22140 » rtehtmlarea_feature_13580.patch

Administrator Admin, 2010-02-18 20:55

View differences:

typo3/sysext/rtehtmlarea/class.tx_rtehtmlarea_base.php (copie de travail)
*
* (c) 2004-2009 Kasper Skaarhoj (kasper@typo3.com)
* (c) 2004-2009 Philipp Borgmann <philipp.borgmann@gmx.de>
* (c) 2004-2009 Stanislas Rolland <typo3(arobas)sjbr.ca>
* (c) 2004-2010 Stanislas Rolland <typo3(arobas)sjbr.ca>
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
......
*/
class tx_rtehtmlarea_base extends t3lib_rteapi {
// Configuration of supported browsers
var $conf_supported_browser = array (
'msie' => array (
1 => array (
'version' => 5.5,
'version' => 6.0,
'system' => 'win'
)
),
'gecko' => array (
1 => array (
'version' => 1.3
'version' => 1.8
)
),
'safari' => array (
......
// Conversion array: TYPO3 button names to htmlArea button names
var $convertToolbarForHtmlAreaArray = array (
'line' => 'InsertHorizontalRule',
'showhelp' => 'ShowHelp',
'textindicator' => 'TextIndicator',
'space' => 'space',
'bar' => 'separator',
'linebreak' => 'linebreak',
......
var $editorCSS;
var $specConf;
var $toolbar = array(); // Save the buttons for the toolbar
var $toolbar_level_size; // The size for each level in the toolbar:
var $toolbarOrderArray = array();
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
public $registeredPlugins = array(); // Array of registered plugins indexed by their plugin Id's
protected $fullScreen = false;
/**
* Returns true if the RTE is available. Here you check if the browser requirements are met.
......
// Preloading the pageStyle and including RTE skin stylesheets
$this->addPageStyle();
$this->addSkin();
// Loading JavaScript files and code
if ($this->TCEform->RTEcounter == 1) {
$this->TCEform->additionalJS_pre['rtehtmlarea-loadJScode'] = $this->loadJScode($this->TCEform->RTEcounter);
}
$this->TCEform->additionalCode_pre['rtehtmlarea-loadJSfiles'] = $this->loadJSfiles($this->TCEform->RTEcounter);
$pageRenderer = $GLOBALS['SOBE']->doc->getPageRenderer();
$pageRenderer->enableExtJSQuickTips();
if (!$GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->ID]['enableCompressedScripts']) {
$pageRenderer->enableExtJsDebug();
}
/* =======================================
* DRAW THE EDITOR
* =======================================
......
// Check if wizard_rte called this for fullscreen edtition; if so, change the size of the RTE to fullscreen using JS
if (basename(PATH_thisScript) == 'wizard_rte.php') {
$height = 'window.innerHeight';
$width = 'window.innerWidth';
if ($this->client['BROWSER'] == 'msie') {
$height = 'document.body.offsetHeight';
$width = 'document.body.offsetWidth';
}
// Subtract the docheader height from the calculated window height
$height .= ' - document.getElementById("typo3-docheader").offsetHeight';
$this->fullScreen = true;
$editorWrapWidth = '100%';
$editorWrapHeight = '100%';
$this->RTEdivStyle = 'position:relative; left:0px; top:0px; height:100%; width:100%; border: 1px solid black; padding: 2px 0px 2px 2px;';
$this->TCEform->additionalJS_post[] = $this->setRTEsizeByJS('RTEarea' . $textAreaId, $height, $width);
}
// Register RTE in JS:
......
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:') {
$skinFilename = 'EXT:' . $this->ID . '/htmlarea/skins/default/htmlarea.css';
}
// Skin provided by some extension
if (substr($skinFilename,0,4) == 'EXT:') {
list($extKey,$local) = explode('/',substr($skinFilename,4),2);
......
function setToolbar() {
global $BE_USER;
if ($this->client['BROWSER'] == 'msie' || $this->client['BROWSER'] == 'opera' || ($this->client['BROWSER'] == 'gecko' && $this->client['VERSION'] == '1.3')) {
if ($this->client['BROWSER'] == 'msie' || $this->client['BROWSER'] == 'opera') {
$this->thisConfig['keepButtonGroupTogether'] = 0;
}
$this->defaultToolbarOrder = 'bar, blockstylelabel, blockstyle, space, textstylelabel, textstyle, linebreak,
bar, formattext, bold, strong, italic, emphasis, big, small, insertedtext, deletedtext, citation, code, definition, keyboard, monospaced, quotation, sample, variable, bidioverride, strikethrough, subscript, superscript, underline, span,
bar, fontstyle, space, fontsize, bar, formatblock, insertparagraphbefore, insertparagraphafter, blockquote,
bar, fontstyle, space, fontsize, bar, formatblock, insertparagraphbefore, insertparagraphafter, blockquote, line,
bar, left, center, right, justifyfull,
bar, orderedlist, unorderedlist, definitionlist, definitionitem, outdent, indent, bar, lefttoright, righttoleft, language, showlanguagemarks,
bar, textcolor, bgcolor, textindicator,
bar, emoticon, insertcharacter, line, link, unlink, image, table,' . (($this->thisConfig['hideTableOperationsInToolbar'] && is_array($this->thisConfig['buttons.']) && is_array($this->thisConfig['buttons.']['toggleborders.']) && $this->thisConfig['buttons.']['toggleborders.']['keepInToolbar']) ? ' toggleborders,': '') . ' user, acronym, bar, findreplace, spellcheck,
bar, emoticon, insertcharacter, link, unlink, image, table,' . (($this->thisConfig['hideTableOperationsInToolbar'] && is_array($this->thisConfig['buttons.']) && is_array($this->thisConfig['buttons.']['toggleborders.']) && $this->thisConfig['buttons.']['toggleborders.']['keepInToolbar']) ? ' toggleborders,': '') . ' user, acronym, bar, findreplace, spellcheck,
bar, chMode, inserttag, removeformat, bar, copy, cut, paste, bar, undo, redo, bar, showhelp, about, linebreak,
' . ($this->thisConfig['hideTableOperationsInToolbar'] ? '': 'bar, toggleborders,') . ' bar, tableproperties, tablerestyle, bar, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, bar,
columnproperties, columninsertbefore, columninsertafter, columndelete, columnsplit, bar,
cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge';
// Special toolbar for Mozilla Wamcom on Mac OS 9
if($this->client['BROWSER'] == 'gecko' && $this->client['VERSION'] == '1.3') {
$this->defaultToolbarOrder = $this->TCEform->docLarge ? 'bar, blockstylelabel, blockstyle, space, textstylelabel, textstyle, linebreak,
bar, fontstyle, space, fontsize, space, formatblock, insertparagraphbefore, insertparagraphafter, blockquote, bar, bold, italic, underline, strikethrough,
subscript, superscript, lefttoright, righttoleft, language, showlanguagemarks, bar, left, center, right, justifyfull, linebreak,
bar, orderedlist, unorderedlist, definitionlist, definitionitem, outdent, indent, bar, textcolor, bgcolor, textindicator, bar, emoticon,
insertcharacter, line, link, unlink, image, table, user, acronym, bar, findreplace, spellcheck, bar, chMode, inserttag,
removeformat, bar, copy, cut, paste, bar, undo, redo, bar, showhelp, about, linebreak,
bar, toggleborders, bar, tableproperties, tablerestyle, bar, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, bar,
columnproperties, columninsertbefore, columninsertafter, columndelete, columnsplit, bar,
cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge'
: 'bar, blockstylelabel, blockstyle, space, textstylelabel, textstyle, linebreak,
bar, fontstyle, space, fontsize, space, formatblock, insertparagraphbefore, insertparagraphafter, blockquote, bar, bold, italic, underline, strikethrough,
subscript, superscript, linebreak, bar, lefttoright, righttoleft, language, showlanguagemarks, bar, left, center, right, justifyfull,
orderedlist, unorderedlist, definitionlist, definitionitem, outdent, indent, bar, textcolor, bgcolor, textindicator, bar, emoticon,
insertcharacter, line, link, unlink, image, table, user, acronym, linebreak, bar, findreplace, spellcheck, bar, chMode, inserttag,
removeformat, bar, copy, cut, paste, bar, undo, redo, bar, showhelp, about, linebreak,
bar, toggleborders, bar, tableproperties, tablerestyle, bar, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, bar,
columnproperties, columninsertbefore, columninsertafter, columndelete, columnsplit, bar,
cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge';
}
// Additional buttons from registered plugins
foreach($this->registeredPlugins as $pluginId => $plugin) {
if ($this->isPluginEnabled($pluginId)) {
......
function convertToolbarForHTMLArea($button) {
return $this->convertToolbarForHtmlAreaArray[$button];
}
/**
* Return the JS-function for setting the RTE size.
*
* @param string DivID-Name
* @param int the height for the RTE
* @param int the width for the RTE
* @return string Loader function in JS
*/
function setRTEsizeByJS($divId, $height, $width) {
return '
setRTEsizeByJS(\''.$divId.'\','.$height.', '.$width.');
';
}
/**
* Return the HTML code for loading the Javascript files
*
* @param integer $RTEcounter: The index number of the current RTE editing area within the form.
......
if (typeof(RTEarea) == "undefined") {
RTEarea = new Object();
RTEarea.init = function() {
if (typeof(HTMLArea) == "undefined") {
if (typeof(HTMLArea) == "undefined" || !Ext.isReady) {
window.setTimeout("RTEarea.init();", 40);
} else {'
. $loadPluginCode . '
......
RTEarea[editornumber].deleted = false;
RTEarea[editornumber].textAreaId = "' . $textAreaId . '";
RTEarea[editornumber].id = "RTEarea" + editornumber;
RTEarea[editornumber].RTEWidthOverride = "' . trim($this->thisConfig['RTEWidthOverride']) . '";
RTEarea[editornumber].RTEHeightOverride = "' . trim($this->thisConfig['RTEHeightOverride']) . '";
RTEarea[editornumber].fullScreen = ' . ($this->fullScreen ? 'true' : 'false') . ';
RTEarea[editornumber].showStatusBar = ' . (trim($this->thisConfig['showStatusBar'])?'true':'false') . ';
RTEarea[editornumber].enableWordClean = ' . (trim($this->thisConfig['enableWordClean'])?'true':'false') . ';
RTEarea[editornumber]["htmlRemoveComments"] = ' . (trim($this->thisConfig['removeComments'])?'true':'false') . ';
RTEarea[editornumber].disableEnterParagraphs = ' . (trim($this->thisConfig['disableEnterParagraphs'])?'true':'false') . ';
......
}
/**
* Return the JS-Code for the Toolbar-Config-Array for HTML-Area
* Return the JS code of the toolbar configuration for the HTMLArea editor
*
* @return string the JS-Code as an JS-Array
* @return string the JS code as nested JS arrays
*/
function getJSToolbarArray() {
$toolbar = ''; // The JS-Code for the toolbar
$group = ''; // The TS-Code for the group in the moment, each group are between "bar"s
$group_has_button = false; // True if the group has any enabled buttons
$group_needs_starting_bar = false;
$previous_is_space = false;
// process each button in the order list
foreach ($this->toolbarOrderArray as $button) {
// check if a new group starts
if (($button == 'bar' || $button == 'linebreak') && $group_has_button) {
// New line
if ($button == 'linebreak') {
$convertButton = '"' . $this->convertToolbarForHTMLArea('linebreak') . '"';
$group = ($group!='') ? ($group . ', ' . $convertButton) : $convertButton;
}
// New group
$toolbar .= $toolbar ? (', ' . $group) : ('[[' . $group);
$group = '';
$previous_is_space = false;
$group_has_button = false;
$group_needs_starting_bar = ($button == 'bar');
} elseif ($toolbar && $button == 'linebreak' && !$group_has_button) {
// Insert linebreak if no group is opened
$group = '';
$previous_is_space = false;
$group_needs_starting_bar = false;
$toolbar .= ', "' . $this->convertToolbarForHTMLArea($button) . '"';
} elseif ($button == 'bar' && !$group_has_button) {
$group_needs_starting_bar = true;
} elseif ($button == 'space' && $group_has_button && !$previous_is_space) {
$convertButton = $this->convertToolbarForHTMLArea($button);
$convertButton = '"' . $convertButton . '"';
$group .= $group ? (', ' . $convertButton) : ($group_needs_starting_bar ? ('"' . $this->convertToolbarForHTMLArea('bar') . '", ' . $convertButton) : $convertButton);
$group_needs_starting_bar = false;
$previous_is_space = true;
} elseif (in_array($button, $this->toolbar)) {
// Add the button to the group
$convertButton = $this->convertToolbarForHTMLArea($button);
if ($convertButton) {
$convertButton = '"' . $convertButton . '"';
$group .= $group ? (', ' . $convertButton) : ($group_needs_starting_bar ? ('"' . $this->convertToolbarForHTMLArea('bar') . '", ' . $convertButton) : $convertButton);
$group_has_button = true;
$group_needs_starting_bar = false;
$previous_is_space = false;
}
protected function getJSToolbarArray() {
// The toolbar array
$toolbar = array();
// The current row; a "linebreak" ends the current row
$row = array();
// The current group; each group is between "bar"s; a "linebreak" ends the current group
$group = array();
// Process each toolbar item in the toolbar order list
foreach ($this->toolbarOrderArray as $item) {
switch ($item) {
case 'linebreak':
// Add row to toolbar if not empty
if (!empty($group)) {
$row[] = $group;
$group = array();
}
if (!empty($row)) {
$toolbar[] = $row;
$row = array();
}
break;
case 'bar':
// Add group to row if not empty
if (!empty($group)) {
$row[] = $group;
$group = array();
}
break;
case 'space':
if (end($group) != $this->convertToolbarForHTMLArea($item)) {
$group[] = $this->convertToolbarForHTMLArea($item);
}
break;
default:
if (in_array($item, $this->toolbar)) {
// Add the item to the group
$convertedItem = $this->convertToolbarForHTMLArea($item);
if ($convertedItem) {
$group[] = $convertedItem;
}
}
break;
}
// else ignore
}
// add the last group
if($group_has_button) $toolbar .= $toolbar ? (', ' . $group) : ('[[' . $group);
$toolbar = $toolbar . ']]';
return $toolbar;
// Add the last group and last line, if not empty
if (!empty($group)) {
$row[] = $group;
}
if (!empty($row)) {
$toolbar[] = $row;
}
return json_encode($toolbar);
}
public function getLLContent($string) {
......
* @return string Javascript code
*/
function setSaveRTE($RTEcounter, $formName, $textareaId) {
return 'if (RTEarea["' . $textareaId . '"]) { document.' . $formName . '["' . $textareaId . '"].value = RTEarea["' . $textareaId . '"].editor.getPluginInstance("EditorMode").getHTML(); } else { OK = 0; };';
return 'if (RTEarea["' . $textareaId . '"]) { document.' . $formName . '["' . $textareaId . '"].value = RTEarea["' . $textareaId . '"].editor.getHTML(); } else { OK = 0; };';
}
/**
typo3/sysext/rtehtmlarea/ext_emconf.php (copie de travail)
'conflicts' => 'rte_conf',
'priority' => '',
'loadOrder' => '',
'module' => 'mod2,mod3,mod4,mod5,mod6',
'module' => 'mod3,mod4,mod5,mod6',
'state' => 'stable',
'internal' => 0,
'uploadfolder' => 1,
......
'author_company' => 'SJBR',
'CGLcompliance' => '',
'CGLcompliance_note' => '',
'version' => '1.9.0',
'version' => '1.9.1',
'_md5_values_when_last_written' => 'a:434:{s:9:"ChangeLog";s:4:"e5f3";s:29:"class.tx_rtehtmlarea_base.php";s:4:"8a14";s:27:"class.tx_rtehtmlareaapi.php";s:4:"69b4";s:21:"ext_conf_template.txt";s:4:"afd8";s:12:"ext_icon.gif";s:4:"2f41";s:17:"ext_localconf.php";s:4:"340c";s:14:"ext_tables.php";s:4:"ea2e";s:14:"ext_tables.sql";s:4:"bba8";s:13:"locallang.xml";s:4:"3cca";s:16:"locallang_db.xml";s:4:"c2ed";s:7:"tca.php";s:4:"6b5a";s:14:"doc/manual.sxw";s:4:"e68c";s:59:"extensions/AboutEditor/class.tx_rtehtmlarea_abouteditor.php";s:4:"d8ac";s:40:"extensions/AboutEditor/skin/htmlarea.css";s:4:"eb62";s:44:"extensions/AboutEditor/skin/images/about.gif";s:4:"1690";s:51:"extensions/Acronym/class.tx_rtehtmlarea_acronym.php";s:4:"ee28";s:36:"extensions/Acronym/skin/htmlarea.css";s:4:"c107";s:42:"extensions/Acronym/skin/images/acronym.gif";s:4:"1eaa";s:63:"extensions/BlockElements/class.tx_rtehtmlarea_blockelements.php";s:4:"aeef";s:38:"extensions/BlockElements/locallang.xml";s:4:"479e";s:42:"extensions/BlockElements/skin/htmlarea.css";s:4:"83ce";s:51:"extensions/BlockElements/skin/images/blockquote.gif";s:4:"34dc";s:47:"extensions/BlockElements/skin/images/indent.gif";s:4:"57df";s:58:"extensions/BlockElements/skin/images/insertOrderedList.gif";s:4:"eb1c";s:61:"extensions/BlockElements/skin/images/insertParagraphAfter.gif";s:4:"e335";s:62:"extensions/BlockElements/skin/images/insertParagraphBefore.gif";s:4:"9c42";s:60:"extensions/BlockElements/skin/images/insertUnorderedList.gif";s:4:"5620";s:54:"extensions/BlockElements/skin/images/justifyCenter.gif";s:4:"420d";s:52:"extensions/BlockElements/skin/images/justifyFull.gif";s:4:"b129";s:52:"extensions/BlockElements/skin/images/justifyLeft.gif";s:4:"3799";s:53:"extensions/BlockElements/skin/images/justifyRight.gif";s:4:"0662";s:48:"extensions/BlockElements/skin/images/outdent.gif";s:4:"4786";s:57:"extensions/BlockStyle/class.tx_rtehtmlarea_blockstyle.php";s:4:"3ba0";s:35:"extensions/BlockStyle/locallang.xml";s:4:"26b8";s:61:"extensions/CharacterMap/class.tx_rtehtmlarea_charactermap.php";s:4:"a537";s:41:"extensions/CharacterMap/skin/htmlarea.css";s:4:"06c8";s:55:"extensions/CharacterMap/skin/images/insertCharacter.gif";s:4:"af19";s:59:"extensions/ContextMenu/class.tx_rtehtmlarea_contextmenu.php";s:4:"e4b5";s:55:"extensions/CopyPaste/class.tx_rtehtmlarea_copypaste.php";s:4:"09ad";s:38:"extensions/CopyPaste/skin/htmlarea.css";s:4:"9391";s:41:"extensions/CopyPaste/skin/images/copy.gif";s:4:"98d2";s:40:"extensions/CopyPaste/skin/images/cut.gif";s:4:"1323";s:42:"extensions/CopyPaste/skin/images/paste.gif";s:4:"7df5";s:61:"extensions/DefaultClean/class.tx_rtehtmlarea_defaultclean.php";s:4:"142b";s:61:"extensions/DefaultColor/class.tx_rtehtmlarea_defaultcolor.php";s:4:"fa59";s:37:"extensions/DefaultColor/locallang.xml";s:4:"3fb4";s:41:"extensions/DefaultColor/skin/htmlarea.css";s:4:"6076";s:49:"extensions/DefaultColor/skin/images/forecolor.gif";s:4:"dbc8";s:51:"extensions/DefaultColor/skin/images/hilitecolor.gif";s:4:"d97c";s:59:"extensions/DefaultFont/class.tx_rtehtmlarea_defaultfont.php";s:4:"2172";s:36:"extensions/DefaultFont/locallang.xml";s:4:"8c90";s:61:"extensions/DefaultImage/class.tx_rtehtmlarea_defaultimage.php";s:4:"12cf";s:41:"extensions/DefaultImage/skin/htmlarea.css";s:4:"6cfe";s:45:"extensions/DefaultImage/skin/images/image.gif";s:4:"c0f0";s:63:"extensions/DefaultInline/class.tx_rtehtmlarea_defaultinline.php";s:4:"4e85";s:38:"extensions/DefaultInline/locallang.xml";s:4:"318f";s:42:"extensions/DefaultInline/skin/htmlarea.css";s:4:"6009";s:45:"extensions/DefaultInline/skin/images/bold.gif";s:4:"94f2";s:47:"extensions/DefaultInline/skin/images/italic.gif";s:4:"f60c";s:54:"extensions/DefaultInline/skin/images/strikethrough.gif";s:4:"3fd0";s:50:"extensions/DefaultInline/skin/images/subscript.gif";s:4:"cedd";s:52:"extensions/DefaultInline/skin/images/superscript.gif";s:4:"8aea";s:50:"extensions/DefaultInline/skin/images/underline.gif";s:4:"81e6";s:59:"extensions/DefaultLink/class.tx_rtehtmlarea_defaultlink.php";s:4:"2219";s:40:"extensions/DefaultLink/skin/htmlarea.css";s:4:"680b";s:43:"extensions/DefaultLink/skin/images/link.gif";s:4:"db9a";s:45:"extensions/DefaultLink/skin/images/unlink.gif";s:4:"86c4";s:65:"extensions/DefinitionList/class.tx_rtehtmlarea_definitionlist.php";s:4:"483d";s:43:"extensions/DefinitionList/skin/htmlarea.css";s:4:"a254";s:56:"extensions/DefinitionList/skin/images/definitionItem.gif";s:4:"33ae";s:56:"extensions/DefinitionList/skin/images/definitionList.gif";s:4:"d5d1";s:57:"extensions/EditorMode/class.tx_rtehtmlarea_editormode.php";s:4:"1453";s:39:"extensions/EditorMode/skin/htmlarea.css";s:4:"0793";s:45:"extensions/EditorMode/skin/images/ed_html.gif";s:4:"fa6e";s:59:"extensions/FindReplace/class.tx_rtehtmlarea_findreplace.php";s:4:"a968";s:40:"extensions/FindReplace/skin/htmlarea.css";s:4:"43cc";s:43:"extensions/FindReplace/skin/images/find.gif";s:4:"827f";s:65:"extensions/InlineElements/class.tx_rtehtmlarea_inlineelements.php";s:4:"452a";s:39:"extensions/InlineElements/locallang.xml";s:4:"07c6";s:46:"extensions/InlineElements/res/pageTSConfig.txt";s:4:"088c";s:43:"extensions/InlineElements/skin/htmlarea.css";s:4:"978b";s:54:"extensions/InlineElements/skin/images/bidioverride.gif";s:4:"f38b";s:45:"extensions/InlineElements/skin/images/big.gif";s:4:"779b";s:46:"extensions/InlineElements/skin/images/bold.gif";s:4:"06ac";s:50:"extensions/InlineElements/skin/images/citation.gif";s:4:"b6eb";s:46:"extensions/InlineElements/skin/images/code.gif";s:4:"6057";s:52:"extensions/InlineElements/skin/images/definition.gif";s:4:"692d";s:53:"extensions/InlineElements/skin/images/deletedtext.gif";s:4:"4eec";s:50:"extensions/InlineElements/skin/images/emphasis.gif";s:4:"04c9";s:54:"extensions/InlineElements/skin/images/insertedtext.gif";s:4:"a624";s:48:"extensions/InlineElements/skin/images/italic.gif";s:4:"be83";s:50:"extensions/InlineElements/skin/images/keyboard.gif";s:4:"53ac";s:52:"extensions/InlineElements/skin/images/monospaced.gif";s:4:"78c0";s:51:"extensions/InlineElements/skin/images/quotation.gif";s:4:"7c62";s:48:"extensions/InlineElements/skin/images/sample.gif";s:4:"667c";s:47:"extensions/InlineElements/skin/images/small.gif";s:4:"e013";s:46:"extensions/InlineElements/skin/images/span.gif";s:4:"0dfa";s:55:"extensions/InlineElements/skin/images/strikethrough.gif";s:4:"73b1";s:48:"extensions/InlineElements/skin/images/strong.gif";s:4:"7f50";s:51:"extensions/InlineElements/skin/images/subscript.gif";s:4:"36c0";s:53:"extensions/InlineElements/skin/images/superscript.gif";s:4:"40c4";s:51:"extensions/InlineElements/skin/images/underline.gif";s:4:"dfac";s:50:"extensions/InlineElements/skin/images/variable.gif";s:4:"da61";s:61:"extensions/InsertSmiley/class.tx_rtehtmlarea_insertsmiley.php";s:4:"4d97";s:41:"extensions/InsertSmiley/skin/htmlarea.css";s:4:"fb52";s:46:"extensions/InsertSmiley/skin/images/smiley.gif";s:4:"c331";s:53:"extensions/Language/class.tx_rtehtmlarea_language.php";s:4:"4f0b";s:33:"extensions/Language/locallang.xml";s:4:"ff62";s:37:"extensions/Language/skin/htmlarea.css";s:4:"7034";s:49:"extensions/Language/skin/images/left_to_right.gif";s:4:"1a1f";s:49:"extensions/Language/skin/images/right_to_left.gif";s:4:"2a38";s:55:"extensions/Language/skin/images/show-language-marks.gif";s:4:"0bbb";s:53:"extensions/QuickTag/class.tx_rtehtmlarea_quicktag.php";s:4:"c925";s:37:"extensions/QuickTag/skin/htmlarea.css";s:4:"b006";s:45:"extensions/QuickTag/skin/images/inserttag.gif";s:4:"a463";s:61:"extensions/RemoveFormat/class.tx_rtehtmlarea_removeformat.php";s:4:"f7a1";s:41:"extensions/RemoveFormat/skin/htmlarea.css";s:4:"be33";s:45:"extensions/RemoveFormat/skin/images/clean.gif";s:4:"2a0f";s:57:"extensions/SelectFont/class.tx_rtehtmlarea_selectfont.php";s:4:"281e";s:35:"extensions/SelectFont/locallang.xml";s:4:"cb6e";s:61:"extensions/SpellChecker/class.tx_rtehtmlarea_spellchecker.php";s:4:"9c27";s:41:"extensions/SpellChecker/skin/htmlarea.css";s:4:"cedf";s:51:"extensions/SpellChecker/skin/images/spell-check.gif";s:4:"6e0a";s:55:"extensions/StatusBar/class.tx_rtehtmlarea_statusbar.php";s:4:"7db4";s:57:"extensions/TYPO3Color/class.tx_rtehtmlarea_typo3color.php";s:4:"daad";s:35:"extensions/TYPO3Color/locallang.xml";s:4:"377f";s:39:"extensions/TYPO3Color/skin/htmlarea.css";s:4:"fad4";s:47:"extensions/TYPO3Color/skin/images/forecolor.gif";s:4:"dbc8";s:49:"extensions/TYPO3Color/skin/images/hilitecolor.gif";s:4:"d97c";s:67:"extensions/TYPO3HtmlParser/class.tx_rtehtmlarea_typo3htmlparser.php";s:4:"b885";s:57:"extensions/TYPO3Image/class.tx_rtehtmlarea_typo3image.php";s:4:"55d0";s:39:"extensions/TYPO3Image/skin/htmlarea.css";s:4:"f593";s:43:"extensions/TYPO3Image/skin/images/image.gif";s:4:"c0f0";s:55:"extensions/TYPO3Link/class.tx_rtehtmlarea_typo3link.php";s:4:"50b8";s:38:"extensions/TYPO3Link/skin/htmlarea.css";s:4:"73f9";s:41:"extensions/TYPO3Link/skin/images/link.gif";s:4:"db9a";s:43:"extensions/TYPO3Link/skin/images/unlink.gif";s:4:"86c4";s:67:"extensions/TableOperations/class.tx_rtehtmlarea_tableoperations.php";s:4:"56ba";s:44:"extensions/TableOperations/skin/htmlarea.css";s:4:"b57e";s:54:"extensions/TableOperations/skin/images/cell-delete.gif";s:4:"f371";s:60:"extensions/TableOperations/skin/images/cell-insert-after.gif";s:4:"2dd2";s:61:"extensions/TableOperations/skin/images/cell-insert-before.gif";s:4:"5d13";s:53:"extensions/TableOperations/skin/images/cell-merge.gif";s:4:"cb52";s:52:"extensions/TableOperations/skin/images/cell-prop.gif";s:4:"ca41";s:53:"extensions/TableOperations/skin/images/cell-split.gif";s:4:"0095";s:53:"extensions/TableOperations/skin/images/col-delete.gif";s:4:"da78";s:59:"extensions/TableOperations/skin/images/col-insert-after.gif";s:4:"80d8";s:60:"extensions/TableOperations/skin/images/col-insert-before.gif";s:4:"d47d";s:51:"extensions/TableOperations/skin/images/col-prop.gif";s:4:"b178";s:52:"extensions/TableOperations/skin/images/col-split.gif";s:4:"c168";s:55:"extensions/TableOperations/skin/images/insert_table.gif";s:4:"c01b";s:53:"extensions/TableOperations/skin/images/row-delete.gif";s:4:"a289";s:59:"extensions/TableOperations/skin/images/row-insert-above.gif";s:4:"1ef1";s:59:"extensions/TableOperations/skin/images/row-insert-under.gif";s:4:"9ad6";s:51:"extensions/TableOperations/skin/images/row-prop.gif";s:4:"5344";s:52:"extensions/TableOperations/skin/images/row-split.gif";s:4:"ebfd";s:53:"extensions/TableOperations/skin/images/table-prop.gif";s:4:"0a5c";s:56:"extensions/TableOperations/skin/images/table-restyle.gif";s:4:"9284";s:57:"extensions/TableOperations/skin/images/toggle-borders.gif";s:4:"50cb";s:55:"extensions/TextStyle/class.tx_rtehtmlarea_textstyle.php";s:4:"ed42";s:34:"extensions/TextStyle/locallang.xml";s:4:"23dd";s:53:"extensions/UndoRedo/class.tx_rtehtmlarea_undoredo.php";s:4:"d297";s:37:"extensions/UndoRedo/skin/htmlarea.css";s:4:"de26";s:40:"extensions/UndoRedo/skin/images/redo.gif";s:4:"5fdf";s:40:"extensions/UndoRedo/skin/images/undo.gif";s:4:"8d53";s:61:"extensions/UserElements/class.tx_rtehtmlarea_userelements.php";s:4:"984d";s:41:"extensions/UserElements/skin/htmlarea.css";s:4:"f66d";s:44:"extensions/UserElements/skin/images/user.gif";s:4:"bbb4";s:59:"hooks/clearrtecache/class.tx_rtehtmlarea_clearcachemenu.php";s:4:"b8fe";s:58:"hooks/clearrtecache/class.tx_rtehtmlarea_clearrtecache.php";s:4:"a33e";s:37:"hooks/clearrtecache/clearrtecache.png";s:4:"e03a";s:37:"hooks/clearrtecache/ext_localconf.php";s:4:"3cbb";s:33:"hooks/clearrtecache/locallang.xml";s:4:"3902";s:29:"htmlarea/HTMLAREA_LICENSE.txt";s:4:"a10f";s:26:"htmlarea/htmlarea-gecko.js";s:4:"786d";s:23:"htmlarea/htmlarea-ie.js";s:4:"601e";s:20:"htmlarea/htmlarea.js";s:4:"6dde";s:30:"htmlarea/locallang_dialogs.xml";s:4:"a7aa";s:26:"htmlarea/locallang_msg.xml";s:4:"7b6f";s:31:"htmlarea/locallang_tooltips.xml";s:4:"0152";s:44:"htmlarea/plugins/AboutEditor/about-editor.js";s:4:"8241";s:46:"htmlarea/plugins/AboutEditor/popups/about.html";s:4:"d677";s:35:"htmlarea/plugins/Acronym/acronym.js";s:4:"f9af";s:38:"htmlarea/plugins/Acronym/locallang.xml";s:4:"aea2";s:48:"htmlarea/plugins/BlockElements/block-elements.js";s:4:"4c56";s:44:"htmlarea/plugins/BlockElements/locallang.xml";s:4:"ee21";s:42:"htmlarea/plugins/BlockStyle/block-style.js";s:4:"d9e7";s:41:"htmlarea/plugins/BlockStyle/locallang.xml";s:4:"32ed";s:46:"htmlarea/plugins/CharacterMap/character-map.js";s:4:"3b2b";s:43:"htmlarea/plugins/CharacterMap/locallang.xml";s:4:"7211";s:58:"htmlarea/plugins/CharacterMap/popups/select_character.html";s:4:"c48a";s:44:"htmlarea/plugins/ContextMenu/context-menu.js";s:4:"d88e";s:42:"htmlarea/plugins/ContextMenu/locallang.xml";s:4:"3ead";s:40:"htmlarea/plugins/CopyPaste/copy-paste.js";s:4:"427b";s:40:"htmlarea/plugins/CopyPaste/locallang.xml";s:4:"6703";s:46:"htmlarea/plugins/DefaultClean/default-clean.js";s:4:"409f";s:43:"htmlarea/plugins/DefaultClean/locallang.xml";s:4:"9e62";s:46:"htmlarea/plugins/DefaultColor/default-color.js";s:4:"3c23";s:43:"htmlarea/plugins/DefaultColor/locallang.xml";s:4:"c8d1";s:54:"htmlarea/plugins/DefaultColor/popups/select_color.html";s:4:"8af8";s:44:"htmlarea/plugins/DefaultFont/default-font.js";s:4:"8d1c";s:42:"htmlarea/plugins/DefaultFont/locallang.xml";s:4:"a7f8";s:46:"htmlarea/plugins/DefaultImage/default-image.js";s:4:"9ca0";s:43:"htmlarea/plugins/DefaultImage/locallang.xml";s:4:"1fdd";s:54:"htmlarea/plugins/DefaultImage/popups/insert_image.html";s:4:"6773";s:48:"htmlarea/plugins/DefaultInline/default-inline.js";s:4:"c303";s:44:"htmlarea/plugins/DefaultInline/locallang.xml";s:4:"2b55";s:44:"htmlarea/plugins/DefaultLink/default-link.js";s:4:"3139";s:42:"htmlarea/plugins/DefaultLink/locallang.xml";s:4:"e233";s:45:"htmlarea/plugins/DefaultLink/popups/link.html";s:4:"6157";s:50:"htmlarea/plugins/DefinitionList/definition-list.js";s:4:"581b";s:45:"htmlarea/plugins/DefinitionList/locallang.xml";s:4:"5c85";s:42:"htmlarea/plugins/DynamicCSS/dynamiccss.css";s:4:"85b7";s:41:"htmlarea/plugins/DynamicCSS/locallang.xml";s:4:"b6bf";s:52:"htmlarea/plugins/DynamicCSS/img/red_arrow_bullet.gif";s:4:"82d6";s:42:"htmlarea/plugins/EditorMode/editor-mode.js";s:4:"eaab";s:41:"htmlarea/plugins/EditorMode/locallang.xml";s:4:"5b14";s:44:"htmlarea/plugins/FindReplace/find-replace.js";s:4:"5caf";s:41:"htmlarea/plugins/FindReplace/fr_engine.js";s:4:"4ce4";s:42:"htmlarea/plugins/FindReplace/locallang.xml";s:4:"f836";s:53:"htmlarea/plugins/FindReplace/popups/find_replace.html";s:4:"4ee2";s:40:"htmlarea/plugins/InlineCSS/locallang.xml";s:4:"7840";s:50:"htmlarea/plugins/InlineElements/inline-elements.js";s:4:"d31a";s:45:"htmlarea/plugins/InlineElements/locallang.xml";s:4:"6f8c";s:46:"htmlarea/plugins/InsertSmiley/insert-smiley.js";s:4:"23a1";s:43:"htmlarea/plugins/InsertSmiley/locallang.xml";s:4:"ed64";s:54:"htmlarea/plugins/InsertSmiley/popups/insertsmiley.html";s:4:"6ece";s:46:"htmlarea/plugins/InsertSmiley/smileys/0001.gif";s:4:"4aff";s:46:"htmlarea/plugins/InsertSmiley/smileys/0002.gif";s:4:"02c4";s:46:"htmlarea/plugins/InsertSmiley/smileys/0003.gif";s:4:"834f";s:46:"htmlarea/plugins/InsertSmiley/smileys/0004.gif";s:4:"fb6a";s:46:"htmlarea/plugins/InsertSmiley/smileys/0005.gif";s:4:"2a48";s:46:"htmlarea/plugins/InsertSmiley/smileys/0006.gif";s:4:"f970";s:46:"htmlarea/plugins/InsertSmiley/smileys/0007.gif";s:4:"97ee";s:46:"htmlarea/plugins/InsertSmiley/smileys/0008.gif";s:4:"10a6";s:46:"htmlarea/plugins/InsertSmiley/smileys/0009.gif";s:4:"1907";s:46:"htmlarea/plugins/InsertSmiley/smileys/0010.gif";s:4:"9ee6";s:46:"htmlarea/plugins/InsertSmiley/smileys/0011.gif";s:4:"ae73";s:46:"htmlarea/plugins/InsertSmiley/smileys/0012.gif";s:4:"f058";s:46:"htmlarea/plugins/InsertSmiley/smileys/0013.gif";s:4:"3ed8";s:46:"htmlarea/plugins/InsertSmiley/smileys/0014.gif";s:4:"a948";s:46:"htmlarea/plugins/InsertSmiley/smileys/0015.gif";s:4:"218d";s:46:"htmlarea/plugins/InsertSmiley/smileys/0016.gif";s:4:"3539";s:46:"htmlarea/plugins/InsertSmiley/smileys/0017.gif";s:4:"ee2e";s:46:"htmlarea/plugins/InsertSmiley/smileys/0018.gif";s:4:"8c66";s:46:"htmlarea/plugins/InsertSmiley/smileys/0019.gif";s:4:"ac36";s:46:"htmlarea/plugins/InsertSmiley/smileys/0020.gif";s:4:"71ef";s:37:"htmlarea/plugins/Language/language.js";s:4:"f923";s:39:"htmlarea/plugins/Language/locallang.xml";s:4:"d16c";s:39:"htmlarea/plugins/QuickTag/locallang.xml";s:4:"2f53";s:38:"htmlarea/plugins/QuickTag/quick-tag.js";s:4:"3efd";s:36:"htmlarea/plugins/QuickTag/tag-lib.js";s:4:"ba71";s:46:"htmlarea/plugins/QuickTag/popups/quicktag.html";s:4:"9f4b";s:43:"htmlarea/plugins/RemoveFormat/locallang.xml";s:4:"aa85";s:46:"htmlarea/plugins/RemoveFormat/remove-format.js";s:4:"cbbb";s:54:"htmlarea/plugins/RemoveFormat/popups/removeformat.html";s:4:"061e";s:42:"htmlarea/plugins/SelectColor/locallang.xml";s:4:"9f9e";s:42:"htmlarea/plugins/SelectFont/select-font.js";s:4:"af22";s:43:"htmlarea/plugins/SpellChecker/locallang.xml";s:4:"20d8";s:51:"htmlarea/plugins/SpellChecker/spell-check-style.css";s:4:"82bd";s:47:"htmlarea/plugins/SpellChecker/spell-check-ui.js";s:4:"7831";s:46:"htmlarea/plugins/SpellChecker/spell-checker.js";s:4:"c8a9";s:67:"htmlarea/plugins/SpellChecker/popups/spell-check-ui-iso-8859-1.html";s:4:"8a95";s:56:"htmlarea/plugins/SpellChecker/popups/spell-check-ui.html";s:4:"61dc";s:40:"htmlarea/plugins/StatusBar/status-bar.js";s:4:"c578";s:44:"htmlarea/plugins/TYPO3Browsers/locallang.xml";s:4:"89b8";s:47:"htmlarea/plugins/TYPO3Browsers/img/download.gif";s:4:"f6d9";s:52:"htmlarea/plugins/TYPO3Browsers/img/external_link.gif";s:4:"9e48";s:63:"htmlarea/plugins/TYPO3Browsers/img/external_link_new_window.gif";s:4:"6e8d";s:52:"htmlarea/plugins/TYPO3Browsers/img/internal_link.gif";s:4:"12b9";s:63:"htmlarea/plugins/TYPO3Browsers/img/internal_link_new_window.gif";s:4:"402a";s:43:"htmlarea/plugins/TYPO3Browsers/img/mail.gif";s:4:"d5a2";s:41:"htmlarea/plugins/TYPO3Color/locallang.xml";s:4:"3d3c";s:41:"htmlarea/plugins/TYPO3Color/typo3color.js";s:4:"5afa";s:46:"htmlarea/plugins/TYPO3HtmlParser/locallang.xml";s:4:"8010";s:52:"htmlarea/plugins/TYPO3HtmlParser/typo3html-parser.js";s:4:"99ea";s:41:"htmlarea/plugins/TYPO3Image/locallang.xml";s:4:"ab27";s:41:"htmlarea/plugins/TYPO3Image/typo3image.js";s:4:"ccc3";s:39:"htmlarea/plugins/TYPO3Link/typo3link.js";s:4:"677d";s:46:"htmlarea/plugins/TableOperations/locallang.xml";s:4:"e7ed";s:52:"htmlarea/plugins/TableOperations/table-operations.js";s:4:"1bbc";s:40:"htmlarea/plugins/TextStyle/locallang.xml";s:4:"ff67";s:40:"htmlarea/plugins/TextStyle/text-style.js";s:4:"7356";s:38:"htmlarea/plugins/UndoRedo/undo-redo.js";s:4:"762b";s:43:"htmlarea/plugins/UserElements/locallang.xml";s:4:"33f9";s:46:"htmlarea/plugins/UserElements/user-elements.js";s:4:"52c7";s:26:"htmlarea/popups/blank.html";s:4:"8d8d";s:32:"htmlarea/popups/editor_help.html";s:4:"398a";s:50:"htmlarea/skins/default/htmlarea-edited-content.css";s:4:"6626";s:35:"htmlarea/skins/default/htmlarea.css";s:4:"5112";s:48:"htmlarea/skins/default/images/definitionItem.gif";s:4:"33ae";s:48:"htmlarea/skins/default/images/definitionList.gif";s:4:"d5d1";s:42:"htmlarea/skins/default/images/ed_about.gif";s:4:"2763";s:42:"htmlarea/skins/default/images/ed_blank.gif";s:4:"0208";s:45:"htmlarea/skins/default/images/ed_color_bg.gif";s:4:"c6e2";s:45:"htmlarea/skins/default/images/ed_color_fg.gif";s:4:"5d7f";s:41:"htmlarea/skins/default/images/ed_copy.gif";s:4:"4f55";s:43:"htmlarea/skins/default/images/ed_custom.gif";s:4:"e7b2";s:40:"htmlarea/skins/default/images/ed_cut.gif";s:4:"1b00";s:43:"htmlarea/skins/default/images/ed_delete.gif";s:4:"926b";s:41:"htmlarea/skins/default/images/ed_help.gif";s:4:"e7fc";s:39:"htmlarea/skins/default/images/ed_hr.gif";s:4:"f384";s:41:"htmlarea/skins/default/images/ed_html.gif";s:4:"fa6e";s:42:"htmlarea/skins/default/images/ed_image.gif";s:4:"c0f0";s:50:"htmlarea/skins/default/images/ed_left_to_right.gif";s:4:"1a1f";s:41:"htmlarea/skins/default/images/ed_link.gif";s:4:"db9a";s:48:"htmlarea/skins/default/images/ed_list_bullet.gif";s:4:"5620";s:45:"htmlarea/skins/default/images/ed_list_num.gif";s:4:"eb1c";s:42:"htmlarea/skins/default/images/ed_paste.gif";s:4:"fbd2";s:41:"htmlarea/skins/default/images/ed_redo.gif";s:4:"e9e8";s:50:"htmlarea/skins/default/images/ed_right_to_left.gif";s:4:"2a38";s:41:"htmlarea/skins/default/images/ed_save.gif";s:4:"07ad";s:47:"htmlarea/skins/default/images/ed_splitblock.gif";s:4:"503e";s:45:"htmlarea/skins/default/images/ed_splitcel.gif";s:4:"2c04";s:41:"htmlarea/skins/default/images/ed_undo.gif";s:4:"b9ba";s:43:"htmlarea/skins/default/images/ed_unlink.gif";s:4:"86c4";s:53:"htmlarea/skins/default/images/fullscreen_maximize.gif";s:4:"2118";s:53:"htmlarea/skins/default/images/fullscreen_minimize.gif";s:4:"91d6";s:46:"htmlarea/skins/default/images/insert_table.gif";s:4:"c01b";s:49:"htmlarea/skins/default/images/language-marker.gif";s:4:"7b48";s:53:"htmlarea/skins/default/images/show-language-marks.gif";s:4:"0bbb";s:52:"htmlarea/skins/default/images/Acronym/ed_acronym.gif";s:4:"1eaa";s:58:"htmlarea/skins/default/images/BlockElements/blockquote.gif";s:4:"34dc";s:54:"htmlarea/skins/default/images/BlockElements/indent.gif";s:4:"57df";s:68:"htmlarea/skins/default/images/BlockElements/insertParagraphAfter.gif";s:4:"e335";s:69:"htmlarea/skins/default/images/BlockElements/insertParagraphBefore.gif";s:4:"9c42";s:61:"htmlarea/skins/default/images/BlockElements/justifyCenter.gif";s:4:"420d";s:59:"htmlarea/skins/default/images/BlockElements/justifyFull.gif";s:4:"b129";s:59:"htmlarea/skins/default/images/BlockElements/justifyLeft.gif";s:4:"3799";s:60:"htmlarea/skins/default/images/BlockElements/justifyRight.gif";s:4:"0662";s:55:"htmlarea/skins/default/images/BlockElements/outdent.gif";s:4:"4786";s:57:"htmlarea/skins/default/images/CharacterMap/ed_charmap.gif";s:4:"af19";s:53:"htmlarea/skins/default/images/FindReplace/ed_find.gif";s:4:"827f";s:61:"htmlarea/skins/default/images/InlineElements/bidioverride.gif";s:4:"f38b";s:52:"htmlarea/skins/default/images/InlineElements/big.gif";s:4:"779b";s:53:"htmlarea/skins/default/images/InlineElements/bold.gif";s:4:"06ac";s:57:"htmlarea/skins/default/images/InlineElements/citation.gif";s:4:"b6eb";s:53:"htmlarea/skins/default/images/InlineElements/code.gif";s:4:"6057";s:59:"htmlarea/skins/default/images/InlineElements/definition.gif";s:4:"692d";s:60:"htmlarea/skins/default/images/InlineElements/deletedtext.gif";s:4:"4eec";s:57:"htmlarea/skins/default/images/InlineElements/emphasis.gif";s:4:"04c9";s:61:"htmlarea/skins/default/images/InlineElements/insertedtext.gif";s:4:"a624";s:55:"htmlarea/skins/default/images/InlineElements/italic.gif";s:4:"be83";s:57:"htmlarea/skins/default/images/InlineElements/keyboard.gif";s:4:"53ac";s:59:"htmlarea/skins/default/images/InlineElements/monospaced.gif";s:4:"78c0";s:58:"htmlarea/skins/default/images/InlineElements/quotation.gif";s:4:"7c62";s:55:"htmlarea/skins/default/images/InlineElements/sample.gif";s:4:"667c";s:54:"htmlarea/skins/default/images/InlineElements/small.gif";s:4:"e013";s:53:"htmlarea/skins/default/images/InlineElements/span.gif";s:4:"0dfa";s:62:"htmlarea/skins/default/images/InlineElements/strikethrough.gif";s:4:"73b1";s:55:"htmlarea/skins/default/images/InlineElements/strong.gif";s:4:"7f50";s:58:"htmlarea/skins/default/images/InlineElements/subscript.gif";s:4:"36c0";s:60:"htmlarea/skins/default/images/InlineElements/superscript.gif";s:4:"40c4";s:58:"htmlarea/skins/default/images/InlineElements/underline.gif";s:4:"dfac";s:57:"htmlarea/skins/default/images/InlineElements/variable.gif";s:4:"da61";s:56:"htmlarea/skins/default/images/InsertSmiley/ed_smiley.gif";s:4:"c331";s:54:"htmlarea/skins/default/images/QuickTag/ed_quicktag.gif";s:4:"a463";s:55:"htmlarea/skins/default/images/RemoveFormat/ed_clean.gif";s:4:"2a0f";s:58:"htmlarea/skins/default/images/SpellChecker/spell-check.gif";s:4:"6e0a";s:59:"htmlarea/skins/default/images/TYPO3ViewHelp/module_help.gif";s:4:"a500";s:61:"htmlarea/skins/default/images/TableOperations/cell-delete.gif";s:4:"f371";s:67:"htmlarea/skins/default/images/TableOperations/cell-insert-after.gif";s:4:"2dd2";s:68:"htmlarea/skins/default/images/TableOperations/cell-insert-before.gif";s:4:"5d13";s:60:"htmlarea/skins/default/images/TableOperations/cell-merge.gif";s:4:"a2d2";s:59:"htmlarea/skins/default/images/TableOperations/cell-prop.gif";s:4:"ca41";s:60:"htmlarea/skins/default/images/TableOperations/cell-split.gif";s:4:"d87c";s:60:"htmlarea/skins/default/images/TableOperations/col-delete.gif";s:4:"da78";s:66:"htmlarea/skins/default/images/TableOperations/col-insert-after.gif";s:4:"80d8";s:67:"htmlarea/skins/default/images/TableOperations/col-insert-before.gif";s:4:"d47d";s:58:"htmlarea/skins/default/images/TableOperations/col-prop.gif";s:4:"b178";s:59:"htmlarea/skins/default/images/TableOperations/col-split.gif";s:4:"eacc";s:62:"htmlarea/skins/default/images/TableOperations/insert_table.gif";s:4:"c1db";s:60:"htmlarea/skins/default/images/TableOperations/row-delete.gif";s:4:"a289";s:66:"htmlarea/skins/default/images/TableOperations/row-insert-above.gif";s:4:"1ef1";s:66:"htmlarea/skins/default/images/TableOperations/row-insert-after.gif";s:4:"5e98";s:66:"htmlarea/skins/default/images/TableOperations/row-insert-under.gif";s:4:"9ad6";s:58:"htmlarea/skins/default/images/TableOperations/row-prop.gif";s:4:"5344";s:59:"htmlarea/skins/default/images/TableOperations/row-split.gif";s:4:"a712";s:60:"htmlarea/skins/default/images/TableOperations/table-prop.gif";s:4:"0a5c";s:63:"htmlarea/skins/default/images/TableOperations/table-restyle.gif";s:4:"9284";s:64:"htmlarea/skins/default/images/TableOperations/toggle-borders.gif";s:4:"50cb";s:54:"htmlarea/skins/default/images/UserElements/ed_user.gif";s:4:"bbb4";s:16:"mod2/acronym.php";s:4:"6dce";s:41:"mod2/class.tx_rtehtmlarea_acronym_mod.php";s:4:"9dce";s:14:"mod2/clear.gif";s:4:"cc11";s:13:"mod2/conf.php";s:4:"1ec2";s:18:"mod2/locallang.xml";s:4:"0cd8";s:21:"mod3/browse_links.php";s:4:"8d69";s:42:"mod3/class.tx_rtehtmlarea_browse_links.php";s:4:"f98e";s:46:"mod3/class.tx_rtehtmlarea_dam_browse_links.php";s:4:"e306";s:14:"mod3/clear.gif";s:4:"cc11";s:13:"mod3/conf.php";s:4:"b2fb";s:18:"mod3/locallang.xml";s:4:"2d51";s:46:"mod4/class.tx_rtehtmlarea_dam_browse_media.php";s:4:"a1e8";s:42:"mod4/class.tx_rtehtmlarea_select_image.php";s:4:"a55f";s:14:"mod4/clear.gif";s:4:"cc11";s:13:"mod4/conf.php";s:4:"8598";s:18:"mod4/locallang.xml";s:4:"8995";s:21:"mod4/select_image.php";s:4:"c6b9";s:34:"mod5/class.tx_rtehtmlarea_user.php";s:4:"f5fc";s:14:"mod5/clear.gif";s:4:"cc11";s:13:"mod5/conf.php";s:4:"7149";s:18:"mod5/locallang.xml";s:4:"7a78";s:13:"mod5/user.php";s:4:"f5b5";s:40:"mod6/class.tx_rtehtmlarea_parse_html.php";s:4:"33c4";s:13:"mod6/conf.php";s:4:"0cab";s:19:"mod6/parse_html.php";s:4:"e04e";s:32:"pi1/class.tx_rtehtmlarea_pi1.php";s:4:"54b2";s:17:"pi1/locallang.xml";s:4:"2e58";s:32:"pi2/class.tx_rtehtmlarea_pi2.php";s:4:"91ea";s:17:"pi2/locallang.xml";s:4:"a0a7";s:32:"pi3/class.tx_rtehtmlarea_pi3.php";s:4:"b2b7";s:36:"res/accessibilityicons/locallang.xml";s:4:"8211";s:39:"res/accessibilityicons/pageTSConfig.txt";s:4:"7e1a";s:39:"res/accessibilityicons/img/download.gif";s:4:"f6d9";s:44:"res/accessibilityicons/img/external_link.gif";s:4:"9e48";s:55:"res/accessibilityicons/img/external_link_new_window.gif";s:4:"6e8d";s:44:"res/accessibilityicons/img/internal_link.gif";s:4:"12b9";s:55:"res/accessibilityicons/img/internal_link_new_window.gif";s:4:"402a";s:35:"res/accessibilityicons/img/mail.gif";s:4:"d5a2";s:29:"res/advanced/pageTSConfig.txt";s:4:"414e";s:29:"res/advanced/userTSConfig.txt";s:4:"8e7a";s:26:"res/contentcss/default.css";s:4:"429f";s:28:"res/contentcss/locallang.xml";s:4:"ec0e";s:39:"res/contentcss/img/red_arrow_bullet.gif";s:4:"82d6";s:25:"res/demo/pageTSConfig.txt";s:4:"146c";s:25:"res/demo/userTSConfig.txt";s:4:"9b82";s:26:"res/image/pageTSConfig.txt";s:4:"9b6f";s:32:"res/indentalign/pageTSConfig.txt";s:4:"14d5";s:25:"res/proc/pageTSConfig.txt";s:4:"d4f8";s:26:"res/style/pageTSConfig.txt";s:4:"e8e7";s:28:"res/typical/pageTSConfig.txt";s:4:"d33d";s:28:"res/typical/userTSConfig.txt";s:4:"9fa6";s:29:"static/clickenlarge/setup.txt";s:4:"5681";}',
'constraints' => array(
'depends' => array(
typo3/sysext/rtehtmlarea/ext_localconf.php (copie de travail)
/***************************************************************
* Copyright notice
*
* (c) 2005-2009 Stanislas Rolland <typo3(arobas)sjbr.ca>
* (c) 2005-2010 Stanislas Rolland <typo3(arobas)sjbr.ca>
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
......
// Troubleshooting and experimentation
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['enableDebugMode'] = $_EXTCONF['enableDebugMode'] ? $_EXTCONF['enableDebugMode'] : 0;
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['enableCompressedScripts'] = $_EXTCONF['enableCompressedScripts'] ? $_EXTCONF['enableCompressedScripts'] : 0;
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['enableCompressedScripts'] = $TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['enableCompressedScripts'] && !$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['enableDebugMode'];
// Integrating with DAM
// DAM browser may be enabled here only for DAM version lower than 1.1
......
// Initialize plugin registration array
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins'] = array();
// Status Bar configuration
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['StatusBar'] = array();
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['StatusBar']['objectReference'] = 'EXT:'.$_EXTKEY.'/extensions/StatusBar/class.tx_rtehtmlarea_statusbar.php:&tx_rtehtmlarea_statusbar';
// Editor Mode configuration
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['EditorMode'] = array();
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['EditorMode']['objectReference'] = 'EXT:'.$_EXTKEY.'/extensions/EditorMode/class.tx_rtehtmlarea_editormode.php:&tx_rtehtmlarea_editormode';
......
// Register features that use the style attribute
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['allowStyleAttribute'] = $_EXTCONF['allowStyleAttribute'] ? $_EXTCONF['allowStyleAttribute'] : 0;
if ($TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['allowStyleAttribute']) {
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['DefaultColor'] = array();
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['DefaultColor']['objectReference'] = 'EXT:'.$_EXTKEY.'/extensions/DefaultColor/class.tx_rtehtmlarea_defaultcolor.php:&tx_rtehtmlarea_defaultcolor';
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['DefaultColor']['addIconsToSkin'] = 0;
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['DefaultColor']['disableInFE'] = 0;
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['TYPO3Color'] = array();
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['TYPO3Color']['objectReference'] = 'EXT:'.$_EXTKEY.'/extensions/TYPO3Color/class.tx_rtehtmlarea_typo3color.php:&tx_rtehtmlarea_typo3color';
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['TYPO3Color']['addIconsToSkin'] = 0;
......
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['SelectFont']['disableInFE'] = 0;
t3lib_extMgm::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:' . $_EXTKEY . '/res/style/pageTSConfig.txt">');
}
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['TextIndicator'] = array();
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['TextIndicator']['objectReference'] = 'EXT:'.$_EXTKEY.'/extensions/TextIndicator/class.tx_rtehtmlarea_textindicator.php:&tx_rtehtmlarea_textindicator';
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['TextIndicator']['addIconsToSkin'] = 0;
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['TextIndicator']['disableInFE'] = 0;
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['InsertSmiley'] = array();
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['InsertSmiley']['objectReference'] = 'EXT:'.$_EXTKEY.'/extensions/InsertSmiley/class.tx_rtehtmlarea_insertsmiley.php:&tx_rtehtmlarea_insertsmiley';
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['InsertSmiley']['addIconsToSkin'] = 0;
typo3/sysext/rtehtmlarea/extensions/Acronym/class.tx_rtehtmlarea_acronym.php (copie de travail)
/***************************************************************
* Copyright notice
*
* (c) 2008-2009 Stanislas Rolland <typo3(arobas)sjbr.ca>
* (c) 2008-2010 Stanislas Rolland <typo3(arobas)sjbr.ca>
* All rights reserved
*
* This script is part of the Typo3 project. The Typo3 project is
......
$charset = $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] ? $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] : 'iso-8859-1';
$button = 'acronym';
$acronymArray = array();
$abbrArray = array();
$linebreak = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->htmlAreaRTE->ID]['enableCompressedScripts'] ? '' : chr(10);
$JSAcronymArray .= 'acronyms = { ' . $linebreak;
$JSAcronymLanguageArray .= 'acronymLanguage = { ' . $linebreak;
$JSAbbreviationArray .= 'abbreviations = { ' . $linebreak;
$JSAbbreviationLanguageArray .= 'abbreviationLanguage = { ' . $linebreak;
$tableA = 'tx_rtehtmlarea_acronym';
$tableB = 'static_languages';
$fields = $tableA.'.type,' . $tableA . '.term,' . $tableA . '.acronym,' . $tableB . '.lg_iso_2';
$fields = $tableA.'.type,' . $tableA . '.term,' . $tableA . '.acronym,' . $tableB . '.lg_iso_2,' . $tableB . '.lg_country_iso_2';
$tableAB = $tableA . ' LEFT JOIN ' . $tableB . ' ON ' . $tableA . '.static_lang_isocode=' . $tableB . '.uid';
$whereClause = '1=1';
// Get all acronyms on pages to which the user has access
$lockBeUserToDBmounts = isset($this->thisConfig['buttons.'][$button.'.']['lockBeUserToDBmounts']) ? $this->thisConfig['buttons.'][$button.'.']['lockBeUserToDBmounts'] : $GLOBALS['TYPO3_CONF_VARS']['BE']['lockBeUserToDBmounts'];
if (!$GLOBALS['BE_USER']->isAdmin() && $GLOBALS['TYPO3_CONF_VARS']['BE']['lockBeUserToDBmounts'] && $lockBeUserToDBmounts) {
// Temporarily setting alternative web browsing mounts
// Temporarily setting alternative web browsing mounts
$altMountPoints = trim($GLOBALS['BE_USER']->getTSConfigVal('options.pageTree.altElementBrowserMountPoints'));
if ($altMountPoints) {
$savedGroupDataWebmounts = $GLOBALS['BE_USER']->groupData['webmounts'];
......
$whereClause .= t3lib_BEfunc::deleteClause($tableB);
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields, $tableAB, $whereClause);
while ($acronymRow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
if( $acronymRow['type'] == 1) {
$JSAcronymArray .= (($this->acronymIndex++)?',':'') . '"' . $GLOBALS['LANG']->csConvObj->utf8_encode($acronymRow['term'], $charset) . '":"' . $GLOBALS['LANG']->csConvObj->utf8_encode($acronymRow['acronym'], $charset) . '"' . $linebreak;
$JSAcronymLanguageArray .= (($this->acronymIndex-1)?',':'') . '"' . $GLOBALS['LANG']->csConvObj->utf8_encode($acronymRow['term'], $charset) . '":"' . $GLOBALS['LANG']->csConvObj->utf8_encode(strtolower($acronymRow['lg_iso_2']), $charset) . '"' . $linebreak;
$item = array($GLOBALS['LANG']->csConvObj->utf8_encode($acronymRow['term'], $charset), $GLOBALS['LANG']->csConvObj->utf8_encode($acronymRow['acronym'], $charset), $GLOBALS['LANG']->csConvObj->utf8_encode(strtolower($acronymRow['lg_iso_2']), $charset) . ($acronymRow['lg_country_iso_2'] ? ('-' . $acronymRow['lg_country_iso_2']) : ''));
if ($acronymRow['type'] == 1) {
$acronymArray[] = $item;
} else if ($acronymRow['type'] == 2) {
$abbrArray[] = $item;
}
if ($acronymRow['type'] == 2) {
$JSAbbreviationArray .= (($this->abbreviationIndex++)?',':'') . '"' . $GLOBALS['LANG']->csConvObj->utf8_encode($acronymRow['term'], $charset) . '":"' . $GLOBALS['LANG']->csConvObj->utf8_encode($acronymRow['acronym'], $charset) . '"' . $linebreak;
$JSAbbreviationLanguageArray .= (($this->abbreviationIndex-1)?',':'') . '"' . $GLOBALS['LANG']->csConvObj->utf8_encode($acronymRow['term'], $charset) . '":"' . $GLOBALS['LANG']->csConvObj->utf8_encode(strtolower($acronymRow['lg_iso_2']), $charset) . '"' . $linebreak;
}
}
$JSAcronymArray .= '};' . $linebreak;
$JSAcronymLanguageArray .= '};' . $linebreak;
$JSAbbreviationArray .= '};' . $linebreak;
$JSAbbreviationLanguageArray .= '};' . $linebreak;
return $JSAcronymArray . $JSAcronymLanguageArray . $JSAbbreviationArray . $JSAbbreviationLanguageArray;
$this->acronymIndex = count($acronymArray);
$this->abbreviationIndex = count($abbrArray);
return 'var acronyms = ' . json_encode($acronymArray) . ';' . 'var abbreviations = ' . json_encode($abbrArray) . ';';
}
}
typo3/sysext/rtehtmlarea/extensions/BlockElements/class.tx_rtehtmlarea_blockelements.php (copie de travail)
/***************************************************************
* Copyright notice
*
* (c) 2007-2208 Stanislas Rolland <typo3(arobas)sjbr.ca>
* (c) 2007-2010 Stanislas Rolland <typo3(arobas)sjbr.ca>
* All rights reserved
*
* This script is part of the Typo3 project. The Typo3 project is
......
protected $toolbar; // Reference to RTE toolbar array
protected $LOCAL_LANG; // Frontend language array
protected $pluginButtons = 'formatblock, indent, outdent, blockquote, insertparagraphbefore, insertparagraphafter, left, center, right, justifyfull, orderedlist, unorderedlist';
protected $pluginButtons = 'formatblock, indent, outdent, blockquote, insertparagraphbefore, insertparagraphafter, left, center, right, justifyfull, orderedlist, unorderedlist, line';
protected $convertToolbarForHtmlAreaArray = array (
'formatblock' => 'FormatBlock',
'indent' => 'Indent',
......
'justifyfull' => 'JustifyFull',
'orderedlist' => 'InsertOrderedList',
'unorderedlist' => 'InsertUnorderedList',
'line' => 'InsertHorizontalRule',
);
protected $defaultBlockElements = array(
......
}
}
// Generating the javascript options
$JSBlockElements = '{
"'. $first.'" : "none"';
$JSBlockElements = array();
$JSBlockElements[] = array($first, 'none');
foreach ($blockElementsOptions as $item => $label) {
$JSBlockElements .= ',
"' . $label . '" : "' . $item . '"';
$JSBlockElements[] = array($label, $item);
}
$JSBlockElements .= '};';
$registerRTEinJavascriptString .= '
RTEarea['.$RTEcounter.'].buttons.formatblock.dropDownOptions = '. $JSBlockElements;
RTEarea['.$RTEcounter.'].buttons.formatblock.data = ' . json_encode($JSBlockElements) . ';';
}
return $registerRTEinJavascriptString;
}
typo3/sysext/rtehtmlarea/extensions/BlockElements/skin/htmlarea.css (copie de travail)
.htmlarea .toolbar .JustifyFull, .htmlarea-context-menu .JustifyFull {background-image:url("images/justifyFull.gif");}
.htmlarea .toolbar .InsertOrderedList, .htmlarea-context-menu .InsertOrderedList {background-image:url("images/insertOrderedList.gif");}
.htmlarea .toolbar .InsertUnorderedList, .htmlarea-context-menu .InsertUnorderedList {background-image:url("images/insertUnorderedList.gif");}
.htmlarea .toolbar .InsertHorinzontalRule, .htmlarea-context-menu .InsertHorinzontalRule {background-image:url("images/insertHorizontalRule.gif");}
typo3/sysext/rtehtmlarea/extensions/ContextMenu/class.tx_rtehtmlarea_contextmenu.php (copie de travail)
/***************************************************************
* Copyright notice
*
* (c) 2008-2009 Stanislas Rolland <typo3(arobas)sjbr.ca>
* (c) 2008-2010 Stanislas Rolland <typo3(arobas)sjbr.ca>
* All rights reserved
*
* This script is part of the Typo3 project. The Typo3 project is
......
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* About Editor plugin for htmlArea RTE
* Context Menu plugin for htmlArea RTE
*
* @author Stanislas Rolland <typo3(arobas)sjbr.ca>
*
......
public function main($parentObject) {
return parent::main($parentObject) && !($this->htmlAreaRTE->client['BROWSER'] == 'opera' || $this->thisConfig['disableContextMenu'] || $this->thisConfig['disableRightClick']);
}
/**
* Return JS configuration of the htmlArea plugins registered by the extension
*
......
*
* The returned string will be a set of JS instructions defining the configuration that will be provided to the plugin(s)
* Each of the instructions should be of the form:
* RTEarea['.$RTEcounter.']["buttons"]["button-id"]["property"] = "value";
* RTEarea['.$editorId.']["buttons"]["button-id"]["property"] = "value";
*/
public function buildJavascriptConfiguration($RTEcounter) {
public function buildJavascriptConfiguration($editorId) {
$registerRTEinJavascriptString = '';
if (is_array( $this->thisConfig['contextMenu.'])) {
$registerRTEinJavascriptString .= '
RTEarea['.$editorId.'].contextMenu = new Object();';
if ($this->thisConfig['contextMenu.']['showButtons']) {
$registerRTEinJavascriptString .= '
RTEarea['.$editorId.'].contextMenu.showButtons = ' . json_encode(t3lib_div::trimExplode(',', $this->htmlAreaRTE->cleanList(t3lib_div::strtolower($this->thisConfig['contextMenu.']['showButtons'])), 1)) . ';';
}
if ($this->thisConfig['contextMenu.']['hideButtons']) {
$registerRTEinJavascriptString .= '
RTEarea['.$editorId.'].contextMenu.hideButtons = ' . json_encode(t3lib_div::trimExplode(',', $this->htmlAreaRTE->cleanList(t3lib_div::strtolower($this->thisConfig['contextMenu.']['hideButtons'])), 1)) . ';';
}
}
return $registerRTEinJavascriptString;
}
} // end of class
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rtehtmlarea/extensions/ContextMenu/class.tx_rtehtmlarea_contextmenu.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rtehtmlarea/extensions/ContextMenu/class.tx_rtehtmlarea_contextmenu.php']);
}
?>
typo3/sysext/rtehtmlarea/extensions/InlineElements/class.tx_rtehtmlarea_inlineelements.php (copie de travail)
/***************************************************************
* Copyright notice
*
* (c) 2007-2009 Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
* (c) 2007-2010 Stanislas Rolland <typo3(arobas)sjbr.ca>
* All rights reserved
*
* This script is part of the Typo3 project. The Typo3 project is
......
/**
* InlineElements plugin for htmlArea RTE
*
* @author Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
* @author Stanislas Rolland <typo3(arobas)sjbr.ca>
*
* TYPO3 SVN ID: $Id$
*
......
}
}
// Generating the javascript options
$JSInlineElements = '{
"'. $first.'" : "none"';
$JSInlineElements = array();
$JSInlineElements[] = array($first, 'none');
foreach ($inlineElementsOptions as $item => $label) {
$JSInlineElements .= ',
"' . $label . '" : "' . $item . '"';
$JSInlineElements[] = array($label, $item);
}
$JSInlineElements .= '};';
$registerRTEinJavascriptString .= '
RTEarea['.$RTEcounter.'].buttons.formattext.dropDownOptions = '. $JSInlineElements;
RTEarea['.$RTEcounter.'].buttons.formattext.data = ' . json_encode($JSInlineElements) . ';';
}
return $registerRTEinJavascriptString;
}
typo3/sysext/rtehtmlarea/extensions/Language/class.tx_rtehtmlarea_language.php (copie de travail)
/***************************************************************
* Copyright notice
*
* (c) 2008-2009 Stanislas Rolland <typo3(arobas)sjbr.ca>
* (c) 2008-2010 Stanislas Rolland <typo3(arobas)sjbr.ca>
* All rights reserved
*
* This script is part of the Typo3 project. The Typo3 project is
......
$first = $GLOBALS['LANG']->getLL('No language mark');
}
$languages = array('none' => $first);
$languages = array_merge($languages, $this->getLanguages());
$languagesJSArray = 'HTMLArea.languageOptions = ' . json_encode(array_flip($languages));
$languages = array_flip(array_merge($languages, $this->getLanguages()));
$languagesJSArray = array();
foreach ($languages as $key => $value) {
$languagesJSArray[] = array($key, $value);
}
$languagesJSArray = 'var options = ' . json_encode($languagesJSArray) . ';';
$registerRTEinJavascriptString .= '
RTEarea['.$RTEcounter.'].buttons.'. $button .'.languagesUrl = "' . $this->htmlAreaRTE->writeTemporaryFile('', 'languages_'.$this->htmlAreaRTE->contentLanguageUid, 'js', $languagesJSArray) . '";';
RTEarea['.$RTEcounter.'].buttons.'. $button .'.dataUrl = "' . $this->htmlAreaRTE->writeTemporaryFile('', $button . '_' . $this->htmlAreaRTE->contentLanguageUid, 'js', $languagesJSArray) . '";';
}
return $registerRTEinJavascriptString;
}
typo3/sysext/rtehtmlarea/extensions/SelectFont/class.tx_rtehtmlarea_selectfont.php (copie de travail)
/***************************************************************
* Copyright notice
*
* (c) 2008-2009 Stanislas Rolland <typo3(arobas)sjbr.ca>
* (c) 2008-2010 Stanislas Rolland <typo3(arobas)sjbr.ca>
* All rights reserved
*
* This script is part of the Typo3 project. The Typo3 project is
......
// Initializing the items array
$items = array();
if ($this->htmlAreaRTE->is_FE()) {
$items['none'] = '
"' . $GLOBALS['TSFE']->getLLL((($buttonId == 'fontstyle') ? 'Default font' : 'Default size'), $this->LOCAL_LANG) . '" : ""';
$items['none'] = array($GLOBALS['TSFE']->getLLL((($buttonId == 'fontstyle') ? 'Default font' : 'Default size'), $this->LOCAL_LANG), 'none');
} else {
$items['none'] = '
"' . ($this->htmlAreaRTE->TCEform->inline->isAjaxCall
$items['none'] = array(($this->htmlAreaRTE->TCEform->inline->isAjaxCall
? $GLOBALS['LANG']->csConvObj->utf8_encode($GLOBALS['LANG']->getLL(($buttonId == 'fontstyle') ? 'Default font' : 'Default size'), $GLOBALS['LANG']->charSet)
: $GLOBALS['LANG']->getLL(($buttonId == 'fontstyle') ? 'Default font' : 'Default size')) . '" : ""';
: $GLOBALS['LANG']->getLL(($buttonId == 'fontstyle') ? 'Default font' : 'Default size')), 'none');
}
// Inserting and localizing default items
if ($hideItems != '*') {
......
}
$label = $this->htmlAreaRTE->TCEform->inline->isAjaxCall ? $GLOBALS['LANG']->csConvObj->utf8_encode($label, $GLOBALS['LANG']->charSet) : $label;
}
$items[$name] = '
"' . $label . '" : "' . $this->htmlAreaRTE->cleanList($value) . '"';
$items[$name] = array($label, $this->htmlAreaRTE->cleanList($value));
}
$index++;
}
......
if (in_array($name, $addItems)) {
$label = $this->htmlAreaRTE->getPageConfigLabel($conf['name'],0);
$label = (!$this->htmlAreaRTE->is_FE() && $this->htmlAreaRTE->TCEform->inline->isAjaxCall) ? $GLOBALS['LANG']->csConvObj->utf8_encode($label, $GLOBALS['LANG']->charSet) : $label;
$items[$name] = '
"' . $label . '" : "' . $this->htmlAreaRTE->cleanList($conf['value']) . '"';
$items[$name] = array($label, $this->htmlAreaRTE->cleanList($conf['value']));
}
}
}
// Seting default item
if ($this->thisConfig['buttons.'][$buttonId . '.']['defaultItem'] && $items[$this->thisConfig['buttons.'][$buttonId . '.']['defaultItem']]) {
$items['none'] = $items[$this->thisConfig['buttons.'][$buttonId . '.']['defaultItem']];
$items['none'] = array($items[$this->thisConfig['buttons.'][$buttonId . '.']['defaultItem']][0], 'none');
unset($items[$this->thisConfig['buttons.'][$buttonId . '.']['defaultItem']]);
}
// Setting the JS list of options
$JSOptions = '';
$index = 0;
$itemsJSArray = array();
foreach ($items as $option) {
$JSOptions .= ($index ? ',' : '') . $option;
$index++;
$itemsJSArray[] = $option;
}
$JSOptions = '{'
. $JSOptions . '
};';
$itemsJSArray = 'var options = ' . json_encode($itemsJSArray) . ';';
// Adding to button JS configuration
if (!is_array( $this->thisConfig['buttons.']) || !is_array($this->thisConfig['buttons.'][$buttonId . '.'])) {
$configureRTEInJavascriptString .= '
RTEarea['.$RTEcounter.'].buttons.'. $buttonId .' = new Object();';
}
$configureRTEInJavascriptString .= '
RTEarea['.$RTEcounter.'].buttons.'. $buttonId .'.options = '. $JSOptions;
RTEarea['.$RTEcounter.'].buttons.'. $buttonId . '.dataUrl = \'' . $this->htmlAreaRTE->writeTemporaryFile('', $buttonId . '_'. $this->htmlAreaRTE->contentLanguageUid, 'js', $itemsJSArray) . '\';';
return $configureRTEInJavascriptString;
}
} // end of class
typo3/sysext/rtehtmlarea/extensions/TableOperations/class.tx_rtehtmlarea_tableoperations.php (copie de travail)
$disabledFieldsets = strtolower(implode(',', $disabledFieldsets));
// Dialogue fieldsets removal configuration
$dialogues = array('table', 'tableproperties', 'rowproperties', 'columnproperties', 'cellproperties');
foreach ($dialogues as $dialogue) {
if (!is_array( $this->thisConfig['buttons.']) || !is_array( $this->thisConfig['buttons.'][$dialogue.'.'])) {
$registerRTEinJavascriptString .= '
RTEarea['.$RTEcounter.'].buttons.'.$dialogue.' = new Object();
RTEarea['.$RTEcounter.'].buttons.'.$dialogue.'.removeFieldsets = "' . $disabledFieldsets . '";';
} else if ($this->thisConfig['buttons.'][$dialogue.'.']['removeFieldsets']) {
$registerRTEinJavascriptString .= '
RTEarea['.$RTEcounter.'].buttons.'.$dialogue.'.removeFieldsets += ",' . $disabledFieldsets . '";';
} else {
$registerRTEinJavascriptString .= '
RTEarea['.$RTEcounter.'].buttons.'.$dialogue.'.removeFieldsets = ",' . $disabledFieldsets . '";';
if ($disabledFieldsets) {
$dialogues = array('table', 'tableproperties', 'rowproperties', 'columnproperties', 'cellproperties');
foreach ($dialogues as $dialogue) {
if (!is_array( $this->thisConfig['buttons.']) || !is_array( $this->thisConfig['buttons.'][$dialogue.'.'])) {
$registerRTEinJavascriptString .= '
RTEarea['.$RTEcounter.'].buttons.'.$dialogue.' = new Object();
RTEarea['.$RTEcounter.'].buttons.'.$dialogue.'.removeFieldsets = "' . $disabledFieldsets . '";';
} else if ($this->thisConfig['buttons.'][$dialogue.'.']['removeFieldsets']) {
$registerRTEinJavascriptString .= '
RTEarea['.$RTEcounter.'].buttons.'.$dialogue.'.removeFieldsets += ",' . $disabledFieldsets . '";';
} else {
$registerRTEinJavascriptString .= '
RTEarea['.$RTEcounter.'].buttons.'.$dialogue.'.removeFieldsets = ",' . $disabledFieldsets . '";';
}
}
}
typo3/sysext/rtehtmlarea/extensions/TextIndicator/class.tx_rtehtmlarea_textindicator.php (r?vision 0)
<?php
/***************************************************************
* Copyright notice
*
* (c) 2010 Stanislas Rolland <typo3(arobas)sjbr.ca>
* All rights reserved
*
* This script is part of the Typo3 project. The Typo3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Text Indicator plugin for htmlArea RTE
*
* @author Stanislas Rolland <typo3(arobas)sjbr.ca>
*
* TYPO3 SVN ID: $Id: class.tx_rtehtmlarea_textindicator.php 5489 2009-05-23 15:26:20Z ohader $
*
*/
require_once(t3lib_extMgm::extPath('rtehtmlarea').'class.tx_rtehtmlareaapi.php');
class tx_rtehtmlarea_textindicator extends tx_rtehtmlareaapi {
protected $extensionKey = 'rtehtmlarea'; // The key of the extension that is extending htmlArea RTE
protected $pluginName = 'TextIndicator'; // The name of the plugin registered by the extension
protected $relativePathToLocallangFile = ''; // Path to this main locallang file of the extension relative to the extension dir.
protected $relativePathToSkin = 'extensions/TextIndicator/skin/htmlarea.css'; // Path to the skin (css) file relative to the extension dir.
protected $htmlAreaRTE; // Reference to the invoking object
protected $thisConfig; // Reference to RTE PageTSConfig
protected $toolbar; // Reference to RTE toolbar array
protected $LOCAL_LANG; // Frontend language array
protected $pluginButtons = 'textindicator';
protected $convertToolbarForHtmlAreaArray = array (
'textindicator' => 'TextIndicator',
);
/**
* Return JS configuration of the htmlArea plugins registered by the extension
*
* @param integer Relative id of the RTE editing area in the form
*
* @return string JS configuration for registered plugins
*
* The returned string will be a set of JS instructions defining the configuration that will be provided to the plugin(s)
* Each of the instructions should be of the form:
* RTEarea['.$RTEcounter.']["buttons"]["button-id"]["property"] = "value";
*/
public function buildJavascriptConfiguration($RTEcounter) {
$registerRTEinJavascriptString = '';
return $registerRTEinJavascriptString;
}
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rtehtmlarea/extensions/TextIndicator/class.tx_rtehtmlarea_textindicator.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rtehtmlarea/extensions/TextIndicator/class.tx_rtehtmlarea_textindicator.php']);
}
?>
typo3/sysext/rtehtmlarea/extensions/TextIndicator/skin/htmlarea.css (r?vision 0)
/* Selectors for the TextIndicator plugin of htmlArea RTE */
/* TYPO3 SVN ID: $Id $ */
.htmlarea .toolbar .indicator {
background-color:white;cursor:default;
width:20px;overflow:hidden;
text-align:center;
border:1px solid ButtonShadow;margin:4px 1px 0px 1px;padding:0px 3px;
float:left;
}
typo3/sysext/rtehtmlarea/extensions/TYPO3Color/class.tx_rtehtmlarea_typo3color.php (copie de travail)
/***************************************************************
* Copyright notice
*
* (c) 2008-2009 Stanislas Rolland <typo3(arobas)sjbr.ca>
* (c) 2008-2010 Stanislas Rolland <typo3(arobas)sjbr.ca>
* All rights reserved
*
* This script is part of the Typo3 project. The Typo3 project is
......
);
public function main($parentObject) {
return parent::main($parentObject) && $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['rtehtmlarea']['allowStyleAttribute'] && !$this->thisConfig['disableSelectColor'];
return parent::main($parentObject) && $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['rtehtmlarea']['allowStyleAttribute'];
}
/**
......
* @return string Javascript configuration of colors
*/
function buildJSColorsConfig($RTEcounter) {
if ($this->htmlAreaRTE->is_FE()) {
$RTEProperties = $this->htmlAreaRTE->RTEsetup;
} else {
$RTEProperties = $this->htmlAreaRTE->RTEsetup['properties'];
}
$configureRTEInJavascriptString = '';
$configureRTEInJavascriptString .= '
RTEarea['.$RTEcounter.'].disableColorPicker = ' . (trim($this->thisConfig['disableColorPicker']) ? 'true' : 'false') . ';';
// Building JS array of configured colors
// Building the array of configured colors
if (is_array($RTEProperties['colors.']) ) {
$HTMLAreaColorname = array();
foreach ($RTEProperties['colors.'] as $colorName => $conf) {
$colorName=substr($colorName,0,-1);
$colorLabel = $this->htmlAreaRTE->getPageConfigLabel($conf['name']);
$HTMLAreaColorname[$colorName] = '
[' . $colorLabel . ' , "' . $conf['value'] . '"]';
$colorName = substr($colorName, 0, -1);
$colorLabel = $this->htmlAreaRTE->getPageConfigLabel($conf['name'], 0);
$colorLabel = (!$this->htmlAreaRTE->is_FE() && $this->htmlAreaRTE->TCEform->inline->isAjaxCall) ? $GLOBALS['LANG']->csConvObj->utf8_encode($colorLabel, $GLOBALS['LANG']->charSet) : $colorLabel;
$HTMLAreaColorname[$colorName] = array($colorLabel, strtoupper(substr($conf['value'], 1, 6)));
}
}
// Setting the list of colors if specified in the RTE config
if ($this->thisConfig['colors'] ) {
$HTMLAreaJSColors = '[';
if ($this->thisConfig['colors']) {
$HTMLAreaColors = t3lib_div::trimExplode(',' , $this->htmlAreaRTE->cleanList($this->thisConfig['colors']));
$HTMLAreaColorsIndex = 0;
$HTMLAreaJSColors = array();
foreach ($HTMLAreaColors as $colorName) {
if($HTMLAreaColorsIndex && $HTMLAreaColorname[$colorName]) {
$HTMLAreaJSColors .= ',';
if ($HTMLAreaColorname[$colorName]) {
$HTMLAreaJSColors[] = $HTMLAreaColorname[$colorName];
}
$HTMLAreaJSColors .= $HTMLAreaColorname[$colorName];
$HTMLAreaColorsIndex++;
}
$HTMLAreaJSColors .= '];';
$configureRTEInJavascriptString .= '
RTEarea['.$RTEcounter.'].colors = '. $HTMLAreaJSColors;
RTEarea['.$RTEcounter.'].colors = ' . json_encode($HTMLAreaJSColors) . ';';
}
return $configureRTEInJavascriptString;
}
} // end of class
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rtehtmlarea/extensions/TYPO3Color/class.tx_rtehtmlarea_typo3color.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rtehtmlarea/extensions/TYPO3Color/class.tx_rtehtmlarea_typo3color.php']);
}
?>
typo3/sysext/rtehtmlarea/extensions/TYPO3Link/class.tx_rtehtmlarea_typo3link.php (copie de travail)
$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;
}
typo3/sysext/rtehtmlarea/htmlarea/htmlarea-gecko.js (copie de travail)
*
* (c) 2002-2004 interactivetools.com, inc.
* (c) 2003-2004 dynarch.com
* (c) 2004-2009 Stanislas Rolland <typo3(arobas)sjbr.ca>
* (c) 2004-2010 Stanislas Rolland <typo3(arobas)sjbr.ca>
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
......
/***************************************************
* GECKO-SPECIFIC FUNCTIONS
***************************************************/
HTMLArea.prototype.isEditable = function() {
HTMLArea.Editor.prototype.isEditable = function() {
return (this._doc.designMode === "on");
};
/***************************************************
* MOZILLA/FIREFOX EDIT MODE INITILIZATION
***************************************************/
HTMLArea.prototype._initEditMode = function () {
// We can't set designMode when we are in a hidden TYPO3 tab
// Then we will set it when the tab comes in the front.
var isNested = false;
var allDisplayed = true;
if (this.nested.sorted && this.nested.sorted.length) {
isNested = true;
allDisplayed = HTMLArea.allElementsAreDisplayed(this.nested.sorted);
}
if (!isNested || allDisplayed) {
try {
this._iframe.style.display = "block";
this._doc.designMode = "on";
if (this._doc.queryCommandEnabled("insertbronreturn")) this._doc.execCommand("insertbronreturn", false, this.config.disableEnterParagraphs);
if (this._doc.queryCommandEnabled("enableObjectResizing")) this._doc.execCommand("enableObjectResizing", false, !this.config.disableObjectResizing);
if (this._doc.queryCommandEnabled("enableInlineTableEditing")) this._doc.execCommand("enableInlineTableEditing", false, (this.config.buttons.table && this.config.buttons.table.enableHandles) ? true : false);
if (this._doc.queryCommandEnabled("styleWithCSS")) this._doc.execCommand("styleWithCSS", false, this.config.useCSS);
else if (this._doc.queryCommandEnabled("useCSS")) this._doc.execCommand("useCSS", false, !this.config.useCSS);
} catch(e) {
if (HTMLArea.is_wamcom) {
this._doc.open();
this._doc.close();
this._initIframeTimer = window.setTimeout("HTMLArea.initIframe(\'" + this._editorNumber + "\');", 500);
return false;
}
}
}
// When the TYPO3 TCA feature div2tab is used, the editor iframe may become hidden with style.display = "none"
// This breaks the editor in Mozilla/Firefox browsers: the designMode attribute needs to be resetted after the style.display of the containing div is resetted to "block"
// Here we rely on TYPO3 naming conventions for the div id and class name
if (this.nested.sorted && this.nested.sorted.length) {
var nestedObj, listenerFunction;
for (var i=0, length=this.nested.sorted.length; i < length; i++) {
nestedObj = document.getElementById(this.nested.sorted[i]);
listenerFunction = HTMLArea.NestedListener(this, nestedObj, false);
HTMLArea._addEvent(nestedObj, 'DOMAttrModified', listenerFunction);
}
}
return true;
};
/***************************************************
* SELECTIONS AND RANGES
***************************************************/
/*
* Get the current selection object
*/
HTMLArea.prototype._getSelection = function() {
HTMLArea.Editor.prototype._getSelection = function() {
return this._iframe.contentWindow.getSelection();
};
/*
* Empty the selection object
*/
HTMLArea.prototype.emptySelection = function(selection) {
HTMLArea.Editor.prototype.emptySelection = function(selection) {
if (HTMLArea.is_safari) {
selection.empty();
} else {
......
/*
* Add a range to the selection
*/
HTMLArea.prototype.addRangeToSelection = function(selection, range) {
HTMLArea.Editor.prototype.addRangeToSelection = function(selection, range) {
if (HTMLArea.is_safari) {
selection.setBaseAndExtent(range.startContainer, range.startOffset, range.endContainer, range.endOffset);
} else {
......
/*
* Create a range for the current selection
*/
HTMLArea.prototype._createRange = function(sel) {
HTMLArea.Editor.prototype._createRange = function(sel) {
if (HTMLArea.is_safari) {
var range = this._doc.createRange();
if (typeof(sel) == "undefined") {
......
return range;
}
}
if (typeof(sel) == "undefined") return this._doc.createRange();
if (Ext.isEmpty(sel)) {
return this._doc.createRange();
}
try {
return sel.getRangeAt(0);
} catch(e) {
......
/*
* Select a node AND the contents inside the node
*/
HTMLArea.prototype.selectNode = function(node, endPoint) {
HTMLArea.Editor.prototype.selectNode = function(node, endPoint) {
this.focusEditor();
var selection = this._getSelection();
var range = this._doc.createRange();
......
/*
* Select ONLY the contents inside the given node
*/
HTMLArea.prototype.selectNodeContents = function(node, endPoint) {
HTMLArea.Editor.prototype.selectNodeContents = function(node, endPoint) {
this.focusEditor();
var selection = this._getSelection();
var range = this._doc.createRange();
......
this.addRangeToSelection(selection, range);
};
HTMLArea.prototype.rangeIntersectsNode = function(range, node) {
HTMLArea.Editor.prototype.rangeIntersectsNode = function(range, node) {
var nodeRange = this._doc.createRange();
try {
nodeRange.selectNode(node);
......
/*
* Get the selection type
*/
HTMLArea.prototype.getSelectionType = function(selection) {
HTMLArea.Editor.prototype.getSelectionType = function(selection) {
// By default set the type to "Text".
var type = "Text";
if (!selection) {
......
/*
* Retrieves the selected element (if any), just in the case that a single element (object like and image or a table) is selected.
*/
HTMLArea.prototype.getSelectedElement = function(selection) {
HTMLArea.Editor.prototype.getSelectedElement = function(selection) {
var selectedElement = null;
if (!selection) {
var selection = this._getSelection();
......
/*
* Retrieve the HTML contents of selected block
*/
HTMLArea.prototype.getSelectedHTML = function() {
HTMLArea.Editor.prototype.getSelectedHTML = function() {
var range = this._createRange(this._getSelection());
if (range.collapsed) return "";
var cloneContents = range.cloneContents();
......
/*
* Retrieve simply HTML contents of the selected block, IE ignoring control ranges
*/
HTMLArea.prototype.getSelectedHTMLContents = function() {
HTMLArea.Editor.prototype.getSelectedHTMLContents = function() {
return this.getSelectedHTML();
};
/*
* Get the deepest node that contains both endpoints of the current selection.
*/
HTMLArea.prototype.getParentElement = function(selection, range) {
HTMLArea.Editor.prototype.getParentElement = function(selection, range) {
if (!selection) {
var selection = this._getSelection();
}
......
* @returns null | element
* Borrowed from Xinha (is not htmlArea) - http://xinha.gogo.co.nz/
*/
HTMLArea.prototype._activeElement = function(selection) {
HTMLArea.Editor.prototype._activeElement = function(selection) {
if (this._selectionEmpty(selection)) {
return null;
}
......
/*
* Determine if the current selection is empty or not.
*/
HTMLArea.prototype._selectionEmpty = function(sel) {
HTMLArea.Editor.prototype._selectionEmpty = function(sel) {
if (!sel) return true;
return sel.isCollapsed;
};
......
* in the range boundaries. The advantage of it is that it is possible to
* handle DOM mutations when moving back to the bookmark.
*/
HTMLArea.prototype.getBookmark = function (range) {
HTMLArea.Editor.prototype.getBookmark = function (range) {
// Create the bookmark info (random IDs).
var bookmark = {
startId : (new Date()).valueOf() + Math.floor(Math.random()*1000) + 'S',
......
* Get the end point of the bookmark
* Adapted from FCKeditor
*/
HTMLArea.prototype.getBookmarkNode = function(bookmark, endPoint) {
HTMLArea.Editor.prototype.getBookmarkNode = function(bookmark, endPoint) {
if (endPoint) {
return this._doc.getElementById(bookmark.startId);
} else {
......
* Move the range to the bookmark
* Adapted from FCKeditor
*/
HTMLArea.prototype.moveToBookmark = function (bookmark) {
HTMLArea.Editor.prototype.moveToBookmark = function (bookmark) {
var startSpan = this.getBookmarkNode(bookmark, true);
var endSpan = this.getBookmarkNode(bookmark, false);
......
/*
* Select range
*/
HTMLArea.prototype.selectRange = function (range) {
HTMLArea.Editor.prototype.selectRange = function (range) {
var selection = this._getSelection();
this.emptySelection(selection);
this.addRangeToSelection(selection, range);
......
* Delete the current selection, if any.
* Split the text node, if needed.
*/
HTMLArea.prototype.insertNodeAtSelection = function(toBeInserted) {
HTMLArea.Editor.prototype.insertNodeAtSelection = function(toBeInserted) {
this.focusEditor();
var range = this._createRange(this._getSelection());
range.deleteContents();
......
* Insert HTML source code at the current position.
* Delete the current selection, if any.
*/
HTMLArea.prototype.insertHTML = function(html) {
HTMLArea.Editor.prototype.insertHTML = function(html) {
this.focusEditor();
var fragment = this._doc.createDocumentFragment();
var div = this._doc.createElement("div");
......
*
* @return void
*/
HTMLArea.prototype.wrapWithInlineElement = function(element, selection, range) {
HTMLArea.Editor.prototype.wrapWithInlineElement = function(element, selection, range) {
// Sometimes Opera raises a bad boundary points error
if (HTMLArea.is_opera) {
try {
......
*
* @return void
*/
HTMLArea.prototype.cleanAppleStyleSpans = function(node) {
HTMLArea.Editor.prototype.cleanAppleStyleSpans = function(node) {
if (HTMLArea.is_safari) {
if (node.getElementsByClassName) {
var spans = node.getElementsByClassName("Apple-style-span");
......
/***************************************************
* EVENTS HANDLERS
***************************************************/
/*
* TYPO3 hidden tab and inline event listener (gets event calls)
*/
HTMLArea.NestedListener = function (editor,nestedObj,noOpenCloseAction) {
return (function(ev) {
if(!ev) var ev = window.event;
HTMLArea.NestedHandler(ev,editor,nestedObj,noOpenCloseAction);
});
};
/*
* TYPO3 hidden tab and inline event handler (performs actions on event calls)
*/
HTMLArea.NestedHandler = function(ev,editor,nestedObj,noOpenCloseAction) {
window.setTimeout(function() {
var target = (ev.target) ? ev.target : ev.srcElement, styleEvent = true;
// In older versions of Mozilla ev.attrName is not yet set and refering to it causes a non-catchable crash
// We are assuming that this was fixed in Firefox 2.0.0.11
if (navigator.productSub > 20071127) {
styleEvent = (ev.attrName == "style");
}
if (target == nestedObj && editor.getMode() == "wysiwyg" && styleEvent && (target.style.display == "" || target.style.display == "block")) {
// Check if all affected nested elements are displayed (style.display!='none'):
if (HTMLArea.allElementsAreDisplayed(editor.nested.sorted)) {
window.setTimeout(function() {
try {
editor._doc.designMode = "on";
if (editor.config.sizeIncludesToolbar && editor._initialToolbarOffsetHeight != editor._toolbar.offsetHeight) {
editor.sizeIframe(2);
}
if (editor._doc.queryCommandEnabled("insertbronreturn")) editor._doc.execCommand("insertbronreturn", false, editor.config.disableEnterParagraphs);
if (editor._doc.queryCommandEnabled("enableObjectResizing")) editor._doc.execCommand("enableObjectResizing", false, !editor.config.disableObjectResizing);
if (editor._doc.queryCommandEnabled("enableInlineTableEditing")) editor._doc.execCommand("enableInlineTableEditing", false, (editor.config.buttons.table && editor.config.buttons.table.enableHandles) ? true : false);
if (editor._doc.queryCommandEnabled("styleWithCSS")) editor._doc.execCommand("styleWithCSS", false, editor.config.useCSS);
else if (editor._doc.queryCommandEnabled("useCSS")) editor._doc.execCommand("useCSS", false, !editor.config.useCSS);
} catch(e) {
// If an event of a parent tab ("nested tabs") is triggered, the following lines should not be
// processed, because this causes some trouble on all event handlers...
if (!noOpenCloseAction) {
editor._doc.open();
editor._doc.close();
}
editor.initIframe();
}
}, 50);
}
HTMLArea._stopEvent(ev);
}
}, 50);
};
/*
* Backspace event handler
*/
HTMLArea.prototype._checkBackspace = function() {
HTMLArea.Editor.prototype._checkBackspace = function() {
if (!HTMLArea.is_safari && !HTMLArea.is_opera) {
var self = this;
window.setTimeout(function() {
......
/*
* Enter event handler
*/
HTMLArea.prototype._checkInsertP = function() {
HTMLArea.Editor.prototype._checkInsertP = function() {
var editor = this;
this.focusEditor();
var i, left, right, rangeClone,
......
* Detect emails and urls as they are typed in Mozilla
* Borrowed from Xinha (is not htmlArea) - http://xinha.gogo.co.nz/
*/
HTMLArea.prototype._detectURL = function(ev) {
HTMLArea.Editor.prototype._detectURL = function(event) {
var ev = event.browserEvent;
var editor = this;
var s = this._getSelection();
if (this.getParentElement(s).nodeName.toLowerCase() != 'a') {
......
a.appendChild(textNode);
rightText.data += " ";
s.collapse(rightText, rightText.data.length);
HTMLArea._stopEvent(ev);
event.stopEvent();
editor._unLink = function() {
var t = a.firstChild;
......
if(ev.keyCode == 27 || (editor._unlinkOnUndo && ev.ctrlKey && ev.which == 122) ) {
if(this._unLink) {
this._unLink();
HTMLArea._stopEvent(ev);
event.stopEvent();
}
break;
} else if(ev.which || ev.keyCode == 8 || ev.keyCode == 46) {
typo3/sysext/rtehtmlarea/htmlarea/htmlarea-ie.js (copie de travail)
*
* (c) 2002-2004 interactivetools.com, inc.
* (c) 2003-2004 dynarch.com
* (c) 2004-2009 Stanislas Rolland <typo3(arobas)sjbr.ca>
* (c) 2004-2010 Stanislas Rolland <typo3(arobas)sjbr.ca>
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
......
/***************************************************
* IE-SPECIFIC FUNCTIONS
***************************************************/
HTMLArea.prototype.isEditable = function() {
HTMLArea.Editor.prototype.isEditable = function() {
return this._doc.body.contentEditable;
};
......
/*
* Get the current selection object
*/
HTMLArea.prototype._getSelection = function() {
HTMLArea.Editor.prototype._getSelection = function() {
return this._doc.selection;
};
/*
* Create a range for the current selection
*/
HTMLArea.prototype._createRange = function(sel) {
HTMLArea.Editor.prototype._createRange = function(sel) {
if (typeof(sel) == "undefined") {
var sel = this._getSelection();
}
......
/*
* Select a node AND the contents inside the node
*/
HTMLArea.prototype.selectNode = function(node) {
HTMLArea.Editor.prototype.selectNode = function(node) {
this.focusEditor();
this.forceRedraw();
var range = this._doc.body.createTextRange();
......
/*
* Select ONLY the contents inside the given node
*/
HTMLArea.prototype.selectNodeContents = function(node, endPoint) {
HTMLArea.Editor.prototype.selectNodeContents = function(node, endPoint) {
this.focusEditor();
this.forceRedraw();
var range = this._doc.body.createTextRange();
......
/*
* Determine whether the node intersects the range
*/
HTMLArea.prototype.rangeIntersectsNode = function(range, node) {
HTMLArea.Editor.prototype.rangeIntersectsNode = function(range, node) {
this.focusEditor();
var nodeRange = this._doc.body.createTextRange();
nodeRange.moveToElementText(node);
......
/*
* Retrieve the HTML contents of selected block
*/
HTMLArea.prototype.getSelectedHTML = function() {
HTMLArea.Editor.prototype.getSelectedHTML = function() {
var sel = this._getSelection();
var range = this._createRange(sel);
if (sel.type.toLowerCase() == "control") {
......
/*
* Retrieve simply HTML contents of the selected block, IE ignoring control ranges
*/
HTMLArea.prototype.getSelectedHTMLContents = function() {
HTMLArea.Editor.prototype.getSelectedHTMLContents = function() {
var sel = this._getSelection();
var range = this._createRange(sel);
return range.htmlText;
......
/*
* Get the deepest node that contains both endpoints of the current selection.
*/
HTMLArea.prototype.getParentElement = function(selection, range) {
HTMLArea.Editor.prototype.getParentElement = function(selection, range) {
if (!selection) {
var selection = this._getSelection();
}
......
* @returns null | element
* Borrowed from Xinha (is not htmlArea) - http://xinha.gogo.co.nz/
*/
HTMLArea.prototype._activeElement = function(sel) {
HTMLArea.Editor.prototype._activeElement = function(sel) {
if (sel == null) {
return null;
}
......
/*
* Determine if the current selection is empty or not.
*/
HTMLArea.prototype._selectionEmpty = function(selection) {
HTMLArea.Editor.prototype._selectionEmpty = function(selection) {
if (!selection || selection.type.toLowerCase() === "none") return true;
if (selection.type.toLowerCase() === "text") {
return !this._createRange(selection).text;
......
/*
* Get a bookmark
*/
HTMLArea.prototype.getBookmark = function (range) {
HTMLArea.Editor.prototype.getBookmark = function (range) {
return range.getBookmark();
};
/*
* Move the range to the bookmark
*/
HTMLArea.prototype.moveToBookmark = function (bookmark) {
HTMLArea.Editor.prototype.moveToBookmark = function (bookmark) {
var range = this._createRange();
range.moveToBookmark(bookmark);
return range;
......
/*
* Select range
*/
HTMLArea.prototype.selectRange = function (range) {
... This diff was truncated because it exceeds the maximum size that can be displayed.
(1-1/6)