Feature #22140 » rtehtmlarea_feature_13580.patch
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) {
|