Bug #19594 » rtehtmlarea_bugfix_9771_2.patch
typo3/sysext/rtehtmlarea/ext_localconf.php (copie de travail) | ||
---|---|---|
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['plugins']['Language']['disableInFE'] = 0;
|
||
// Spell checking configuration
|
||
$TYPO3_CONF_VARS['FE']['eID_include']['rtehtmlarea_spellchecker'] = 'EXT:'.$_EXTKEY.'/pi1/class.tx_rtehtmlarea_pi1.php';
|
||
$TYPO3_CONF_VARS['BE']['AJAX']['rtehtmlarea::spellchecker'] = 'EXT:'.$_EXTKEY.'/pi1/class.tx_rtehtmlarea_pi1.php:tx_rtehtmlarea_pi1->main';
|
||
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['dictionaryList'] = $_EXTCONF['dictionaryList'] ? $_EXTCONF['dictionaryList'] : 'en';
|
||
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['defaultDictionary'] = $_EXTCONF['defaultDictionary'] ? $_EXTCONF['defaultDictionary'] : 'en';
|
||
$TYPO3_CONF_VARS['EXTCONF'][$_EXTKEY]['AspellDirectory'] = $_EXTCONF['AspellDirectory'] ? $_EXTCONF['AspellDirectory'] : '/usr/bin/aspell';
|
typo3/sysext/rtehtmlarea/extensions/SpellChecker/class.tx_rtehtmlarea_spellchecker.php (copie de travail) | ||
---|---|---|
RTEarea['.$RTEcounter.'].buttons.'. $button .'.contentCharset = "' . $this->htmlAreaRTE->contentCharset .'";
|
||
RTEarea['.$RTEcounter.'].buttons.'. $button .'.spellCheckerMode = "' . $spellCheckerMode .'";
|
||
RTEarea['.$RTEcounter.'].buttons.'. $button .'.enablePersonalDicts = ' . ($enablePersonalDicts ? 'true' : 'false') .';';
|
||
$registerRTEinJavascriptString .= '
|
||
RTEarea['.$RTEcounter.'].buttons.'. $button .'.path = "' . ($this->htmlAreaRTE->is_FE() ? t3lib_div::getIndpEnv('TYPO3_SITE_URL') . '/index.php?eID=rtehtmlarea_spellchecker' : '/' . TYPO3_mainDir . 'ajax.php?ajaxID=rtehtmlarea::spellchecker') . '";';
|
||
}
|
||
return $registerRTEinJavascriptString;
|
||
}
|
typo3/sysext/rtehtmlarea/htmlarea/plugins/SpellChecker/popups/spell-check-ui-iso-8859-1.html (copie de travail) | ||
---|---|---|
</head>
|
||
<body class="popupwin htmlarea-spell-check" onload="initDocument();">
|
||
<div id="content">
|
||
<form style="display: none;" action="../spell-check-logic.php" method="post" target="framecontent" accept-charset="ISO-8859-1">
|
||
<form id="spellcheck_form" style="display: none;" action="" method="post" target="framecontent" accept-charset="ISO-8859-1">
|
||
<input type="hidden" name="content" id="f_content" />
|
||
<input type="hidden" name="dictionary" id="f_dictionary" />
|
||
<input type="hidden" name="pspell_charset" id="f_charset" />
|
typo3/sysext/rtehtmlarea/htmlarea/plugins/SpellChecker/popups/spell-check-ui.html (copie de travail) | ||
---|---|---|
</head>
|
||
<body class="popupwin htmlarea-spell-check" onload="initDocument();">
|
||
<div id="content" class="spellcheck">
|
||
<form style="display: none;" action="../spell-check-logic.php" method="post" target="framecontent" accept-charset="UTF-8">
|
||
<form id="spellcheck_form" style="display: none;" action="" method="post" target="framecontent" accept-charset="UTF-8">
|
||
<input type="hidden" name="content" id="f_content" />
|
||
<input type="hidden" name="dictionary" id="f_dictionary" />
|
||
<input type="hidden" name="pspell_charset" id="f_charset" />
|
typo3/sysext/rtehtmlarea/htmlarea/plugins/SpellChecker/spell-check-logic.php (copie de travail) | ||
---|---|---|
<?php
|
||
/***************************************************************
|
||
* Copyright notice
|
||
*
|
||
* (c) 2003-2008 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!
|
||
***************************************************************/
|
||
/**
|
||
* This is the script to invoke the spell checker for TYPO3 htmlArea RTE (rtehtmlarea)
|
||
*
|
||
* @author Stanislas Rolland <typo3(arobas)sjbr.ca>
|
||
*
|
||
* TYPO3 SVN ID: $Id$
|
||
*
|
||
*/
|
||
error_reporting (E_ALL ^ E_NOTICE);
|
||
define('TYPO3_OS', (stristr(PHP_OS,'win') && !stristr(PHP_OS,'darwin')) ? 'WIN' : '');
|
||
if (!defined('PATH_thisScript')) define('PATH_thisScript',str_replace('//','/', str_replace('\\','/', (php_sapi_name()=='cgi'||php_sapi_name()=='xcgi'||php_sapi_name()=='isapi' ||php_sapi_name()=='cgi-fcgi')&&((!empty($_SERVER['ORIG_PATH_TRANSLATED'])&&isset($_SERVER['ORIG_PATH_TRANSLATED']))?$_SERVER['ORIG_PATH_TRANSLATED']:$_SERVER['PATH_TRANSLATED'])? ((!empty($_SERVER['ORIG_PATH_TRANSLATED'])&&isset($_SERVER['ORIG_PATH_TRANSLATED']))?$_SERVER['ORIG_PATH_TRANSLATED']:$_SERVER['PATH_TRANSLATED']):((!empty($_SERVER['ORIG_SCRIPT_FILENAME'])&&isset($_SERVER['ORIG_SCRIPT_FILENAME']))?$_SERVER['ORIG_SCRIPT_FILENAME']:$_SERVER['SCRIPT_FILENAME']))));
|
||
if (!defined('PATH_site')) define('PATH_site', dirname(dirname(dirname(dirname(dirname(dirname(dirname(PATH_thisScript))))))).'/');
|
||
if (!defined('PATH_t3lib')) define('PATH_t3lib', PATH_site.'t3lib/');
|
||
define('PATH_typo3conf', PATH_site.'typo3conf/');
|
||
define('TYPO3_mainDir', 'typo3/');
|
||
if (!defined('PATH_typo3')) define('PATH_typo3', PATH_site.TYPO3_mainDir);
|
||
if (!defined('PATH_tslib')) {
|
||
if (@is_dir(PATH_site.'typo3/sysext/cms/tslib/')) {
|
||
define('PATH_tslib', PATH_site.'typo3/sysext/cms/tslib/');
|
||
} elseif (@is_dir(PATH_site.'tslib/')) {
|
||
define('PATH_tslib', PATH_site.'tslib/');
|
||
}
|
||
}
|
||
define('TYPO3_MODE','FE');
|
||
require_once(PATH_t3lib.'class.t3lib_div.php');
|
||
require_once(PATH_t3lib.'class.t3lib_extmgm.php');
|
||
require_once(PATH_t3lib.'config_default.php');
|
||
require_once(PATH_typo3conf.'localconf.php');
|
||
require_once(PATH_tslib.'class.tslib_fe.php');
|
||
require_once(PATH_t3lib.'class.t3lib_tstemplate.php');
|
||
require_once(PATH_t3lib.'class.t3lib_page.php');
|
||
require_once(PATH_tslib.'class.tslib_content.php');
|
||
require_once(t3lib_extMgm::extPath('rtehtmlarea').'pi1/class.tx_rtehtmlarea_pi1.php');
|
||
require_once(PATH_t3lib.'class.t3lib_userauth.php');
|
||
require_once(PATH_tslib.'class.tslib_feuserauth.php');
|
||
$typoVersion = t3lib_div::int_from_ver($GLOBALS['TYPO_VERSION']);
|
||
require_once(PATH_t3lib.'class.t3lib_cs.php');
|
||
if (!defined ('TYPO3_db')) die ('The configuration file was not included.');
|
||
if (isset($HTTP_POST_VARS['GLOBALS']) || isset($HTTP_GET_VARS['GLOBALS'])) die('You cannot set the GLOBALS-array from outside this script.');
|
||
require_once(PATH_t3lib.'class.t3lib_db.php');
|
||
$TYPO3_DB = t3lib_div::makeInstance('t3lib_DB');
|
||
require_once(PATH_t3lib.'class.t3lib_timetrack.php');
|
||
$GLOBALS['TT'] = new t3lib_timeTrack;
|
||
// ***********************************
|
||
// Initializing the Caching System
|
||
// ***********************************
|
||
$GLOBALS['TT']->push('Initializing the Caching System','');
|
||
require_once(PATH_t3lib . 'class.t3lib_cache.php');
|
||
require_once(PATH_t3lib . 'cache/class.t3lib_cache_abstractbackend.php');
|
||
require_once(PATH_t3lib . 'cache/class.t3lib_cache_abstractcache.php');
|
||
require_once(PATH_t3lib . 'cache/class.t3lib_cache_exception.php');
|
||
require_once(PATH_t3lib . 'cache/class.t3lib_cache_factory.php');
|
||
require_once(PATH_t3lib . 'cache/class.t3lib_cache_manager.php');
|
||
require_once(PATH_t3lib . 'cache/class.t3lib_cache_variablecache.php');
|
||
require_once(PATH_t3lib . 'cache/exception/class.t3lib_cache_exception_classalreadyloaded.php');
|
||
require_once(PATH_t3lib . 'cache/exception/class.t3lib_cache_exception_duplicateidentifier.php');
|
||
require_once(PATH_t3lib . 'cache/exception/class.t3lib_cache_exception_invalidbackend.php');
|
||
require_once(PATH_t3lib . 'cache/exception/class.t3lib_cache_exception_invalidcache.php');
|
||
require_once(PATH_t3lib . 'cache/exception/class.t3lib_cache_exception_invaliddata.php');
|
||
require_once(PATH_t3lib . 'cache/exception/class.t3lib_cache_exception_nosuchcache.php');
|
||
$typo3CacheManager = t3lib_div::makeInstance('t3lib_cache_Manager');
|
||
$cacheFactoryClass = t3lib_div::makeInstanceClassName('t3lib_cache_Factory');
|
||
$typo3CacheFactory = new $cacheFactoryClass($typo3CacheManager);
|
||
unset($cacheFactoryClass);
|
||
$GLOBALS['TT']->pull();
|
||
// ***********************************
|
||
// Creating a fake $TSFE object
|
||
// ***********************************
|
||
$TSFEclassName = t3lib_div::makeInstanceClassName('tslib_fe');
|
||
$id = isset($HTTP_GET_VARS['id'])?$HTTP_GET_VARS['id']:0;
|
||
$GLOBALS['TSFE'] = new $TSFEclassName($TYPO3_CONF_VARS, $id, '0', 1, '', '','','');
|
||
$GLOBALS['TSFE']->initCaches();
|
||
$GLOBALS['TSFE']->set_no_cache();
|
||
$GLOBALS['TSFE']->connectToMySQL();
|
||
$GLOBALS['TSFE']->initFEuser();
|
||
$GLOBALS['TSFE']->fetch_the_id();
|
||
$GLOBALS['TSFE']->getPageAndRootline();
|
||
$GLOBALS['TSFE']->initTemplate();
|
||
$GLOBALS['TSFE']->tmpl->getFileName_backPath = PATH_site;
|
||
$GLOBALS['TSFE']->forceTemplateParsing = 1;
|
||
$GLOBALS['TSFE']->getConfigArray();
|
||
// *********
|
||
// initialize a BE_USER if applicable
|
||
// *********
|
||
$BE_USER='';
|
||
if ($_COOKIE['be_typo_user']) { // If the backend cookie is set, we proceed and checks if a backend user is logged in.
|
||
$TYPO3_MISC['microtime_BE_USER_start'] = microtime();
|
||
$TT->push('Back End user initialized','');
|
||
require_once (PATH_t3lib.'class.t3lib_befunc.php');
|
||
require_once (PATH_t3lib.'class.t3lib_userauthgroup.php');
|
||
require_once (PATH_t3lib.'class.t3lib_beuserauth.php');
|
||
require_once (PATH_t3lib.'class.t3lib_tsfebeuserauth.php');
|
||
// the value this->formfield_status is set to empty in order to disable login-attempts to the backend account through this script
|
||
$BE_USER = t3lib_div::makeInstance('t3lib_tsfeBeUserAuth'); // New backend user object
|
||
$BE_USER->OS = TYPO3_OS;
|
||
$BE_USER->lockIP = $TYPO3_CONF_VARS['BE']['lockIP'];
|
||
$BE_USER->start(); // Object is initialized
|
||
$BE_USER->unpack_uc('');
|
||
if ($BE_USER->user['uid']) {
|
||
$BE_USER->fetchGroupData();
|
||
$TSFE->beUserLogin = 1;
|
||
}
|
||
// Now we need to do some additional checks for IP/SSL
|
||
if (!$BE_USER->checkLockToIP() || !$BE_USER->checkBackendAccessSettingsFromInitPhp()) {
|
||
// Unset the user initialization.
|
||
$BE_USER='';
|
||
$TSFE->beUserLogin=0;
|
||
}
|
||
}
|
||
$spellChecker = t3lib_div::makeInstance('tx_rtehtmlarea_pi1');
|
||
$spellChecker->cObj = t3lib_div::makeInstance('tslib_cObj');
|
||
$conf = $GLOBALS['TSFE']->tmpl->setup['plugin.'][$spellChecker->prefixId.'.'];
|
||
$spellChecker->main($conf);
|
||
?>
|
typo3/sysext/rtehtmlarea/htmlarea/plugins/SpellChecker/spell-check-ui.js (copie de travail) | ||
---|---|---|
data['dictionary'] = dialog.plugin.contentISOLanguage;
|
||
data['pspell_charset'] = dialog.plugin.contentCharset;
|
||
data['pspell_mode'] = dialog.plugin.spellCheckerMode;
|
||
window.opener.HTMLArea._postback('plugins/SpellChecker/spell-check-logic.php', data);
|
||
window.opener.HTMLArea._postback(dialog.plugin.pageTSconfiguration.path, data);
|
||
}
|
||
window.close();
|
||
return false;
|
||
... | ... | |
modified = false;
|
||
document.title = dialog.plugin.localize("Spell Checker");
|
||
document.getElementById("spellcheck_form").action = plugin.pageTSconfiguration.path;
|
||
frame = document.getElementById("i_framecontent");
|
||
var field = document.getElementById("f_content");
|
||
field.value = HTMLArea.getHTML(editor._doc.body, false, editor);
|
typo3/sysext/rtehtmlarea/pi1/class.tx_rtehtmlarea_pi1.php (copie de travail) | ||
---|---|---|
* TYPO3 SVN ID: $Id$
|
||
*
|
||
*/
|
||
require_once(PATH_tslib.'class.tslib_pibase.php');
|
||
class tx_rtehtmlarea_pi1 extends tslib_pibase {
|
||
class tx_rtehtmlarea_pi1 {
|
||
/**
|
||
* back reference to the mother cObj object set at call time
|
||
*
|
||
* @var tslib_cObj
|
||
*/
|
||
var $cObj;
|
||
var $prefixId = 'tx_rtehtmlarea_pi1'; // Same as class name
|
||
var $scriptRelPath = 'pi1/class.tx_rtehtmlarea_pi1.php'; // Path to this script relative to the extension dir.
|
||
protected $csConvObj;
|
||
var $extKey = 'rtehtmlarea'; // The extension key.
|
||
var $conf = array();
|
||
var $siteUrl;
|
||
var $charset = 'utf-8';
|
||
var $parserCharset = 'utf-8';
|
||
... | ... | |
/**
|
||
* Main class of Spell Checker plugin for Typo3 CMS
|
||
*
|
||
* @param string $content: content to be displayed
|
||
* @param array $conf: TS setup for the plugin
|
||
* @return string content produced by the plugin
|
||
*/
|
||
function main($conf) {
|
||
global $TYPO3_CONF_VARS, $TYPO3_DB;
|
||
function main() {
|
||
$this->conf = $conf;
|
||
$this->tslib_pibase();
|
||
$this->pi_setPiVarDefaults();
|
||
$this->pi_loadLL();
|
||
$this->pi_USER_INT_obj = 1; // Disable caching
|
||
require_once(PATH_t3lib.'class.t3lib_cs.php');
|
||
$this->csConvObj = t3lib_div::makeInstance('t3lib_cs');
|
||
// Setting start time
|
||
$time_start = microtime(true);
|
||
$this->pspell_is_available = in_array('pspell', get_loaded_extensions());
|
||
$this->AspellDirectory = trim($TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['AspellDirectory'])? trim($TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['AspellDirectory']) : '/usr/bin/aspell';
|
||
$this->forceCommandMode = (trim($TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['forceCommandMode']))? trim($TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['forceCommandMode']) : 0;
|
||
$this->AspellDirectory = trim($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey]['AspellDirectory'])? trim($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey]['AspellDirectory']) : '/usr/bin/aspell';
|
||
$this->forceCommandMode = (trim($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey]['forceCommandMode']))? trim($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey]['forceCommandMode']) : 0;
|
||
$safe_mode_is_enabled = ini_get('safe_mode');
|
||
if($safe_mode_is_enabled && !$this->pspell_is_available ) echo('Configuration problem: Spell checking cannot be performed');
|
||
if($safe_mode_is_enabled && $this->forceCommandMode) echo('Configuration problem: Spell checking cannot be performed in command mode');
|
||
... | ... | |
$dictionaryList = implode(',', t3lib_div::trimExplode(chr(10), $dictionaryList, 1));
|
||
}
|
||
if( empty($dictionaryList) ) {
|
||
$dictionaryList = trim($TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['dictionaryList']);
|
||
$dictionaryList = trim($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey]['dictionaryList']);
|
||
}
|
||
if( empty($dictionaryList) ) {
|
||
$dictionaryList = 'en';
|
||
}
|
||
$dictionaryArray = t3lib_div::trimExplode(',', $dictionaryList, 1);
|
||
$defaultDictionary = trim($TYPO3_CONF_VARS['EXTCONF'][$this->extKey]['defaultDictionary']);
|
||
$defaultDictionary = trim($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey]['defaultDictionary']);
|
||
if(!$defaultDictionary || !in_array($defaultDictionary, $dictionaryArray)) {
|
||
$defaultDictionary = 'en';
|
||
}
|
||
... | ... | |
$table = $tableA . ' LEFT JOIN ' . $tableB . ' ON ' . $tableA . '.static_lang_isocode=' . $tableB . '.uid';
|
||
$whereClause = '1=1 ';
|
||
$whereClause .= ' AND ' . $tableA . '.hidden != 1';
|
||
$res = $TYPO3_DB->exec_SELECTquery($selectFields, $table, $whereClause);
|
||
while($row = $TYPO3_DB->sql_fetch_assoc($res)) {
|
||
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($selectFields, $table, $whereClause);
|
||
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
|
||
$languageArray[] = strtolower($row['lg_iso_2']).($row['lg_country_iso_2']?'_'.$row['lg_country_iso_2']:'');
|
||
}
|
||
if(!in_array($defaultDictionary, $languageArray)) {
|
||
... | ... | |
}
|
||
// Setting the path to user personal dicts, if any
|
||
if (t3lib_div::_POST('enablePersonalDicts') == 'true' && $GLOBALS['TSFE']->beUserLogin) {
|
||
if (t3lib_div::_POST('enablePersonalDicts') == 'true' && TYPO3_MODE == 'BE' && is_object($GLOBALS['BE_USER'])) {
|
||
$this->userUid = 'BE_' . $GLOBALS['BE_USER']->user['uid'];
|
||
if ($this->userUid) {
|
||
$this->personalDictPath = t3lib_div::getFileAbsFileName($this->uploadFolder . $this->userUid);
|
||
... | ... | |
$cmd = t3lib_div::_POST('cmd');
|
||
if ($cmd == 'learn' && !$safe_mode_is_enabled) {
|
||
// Only availble for BE_USERS, die silently if someone has gotten here by accident
|
||
if(!$GLOBALS['TSFE']->beUserLogin) die('');
|
||
if (TYPO3_MODE !='BE' || !is_object($GLOBALS['BE_USER'])) die('');
|
||
// Updating the personal word list
|
||
$to_p_dict = t3lib_div::_POST('to_p_dict');
|
||
$to_p_dict = $to_p_dict ? $to_p_dict : array();
|
||
... | ... | |
$to_r_list = $to_r_list ? $to_r_list : array();
|
||
header('Content-Type: text/plain; charset=' . strtoupper($this->parserCharset));
|
||
header('Pragma: no-cache');
|
||
//print_r($to_r_list);
|
||
if($to_p_dict || $to_r_list) {
|
||
$tmpFileName = t3lib_div::tempnam($this->filePrefix);
|
||
if($filehandle = fopen($tmpFileName,'wb')) {
|
||
... | ... | |
} // end of function main
|
||
function startHandler($xml_parser, $tag, $attributes) {
|
||
global $TSFE;
|
||
|
||
if (strlen($this->xmlCharacterData)) {
|
||
$this->spellCheckHandler($xml_parser, $this->xmlCharacterData);
|
||
... | ... | |
case 'HR':
|
||
case 'area':
|
||
case 'AREA':
|
||
$this->text .= '<'. $TSFE->csConvObj->conv_case($this->parserCharset, $tag, 'toLower') . ' ';
|
||
$this->text .= '<'. $this->csConvObj->conv_case($this->parserCharset, $tag, 'toLower') . ' ';
|
||
foreach( $attributes as $key => $val) {
|
||
$this->text .= $key . '="' . $val . '" ';
|
||
}
|
||
$this->text .= ' />';
|
||
break;
|
||
default:
|
||
$this->text .= '<'. $TSFE->csConvObj->conv_case($this->parserCharset, $tag, 'toLower') . ' ';
|
||
$this->text .= '<'. $this->csConvObj->conv_case($this->parserCharset, $tag, 'toLower') . ' ';
|
||
foreach( $attributes as $key => $val) {
|
||
$this->text .= $key . '="' . $val . '" ';
|
||
}
|
||
... | ... | |
return;
|
||
}
|
||
} // end of class
|
||
}
|
||
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rtehtmlarea/pi1/class.tx_rtehtmlarea_pi1.php']) {
|
||
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/rtehtmlarea/pi1/class.tx_rtehtmlarea_pi1.php']);
|
||
if (TYPO3_MODE=='FE') {
|
||
require_once(PATH_tslib.'class.tslib_eidtools.php');
|
||
tslib_eidtools::connectDB();
|
||
$spellChecker = t3lib_div::makeInstance('tx_rtehtmlarea_pi1');
|
||
$spellChecker->main();
|
||
}
|
||
?>
|
- « Previous
- 1
- 2
- Next »