--------------- step 1 -------------------------------------- removed _samples directory --------------- step 2 -------------------------------------- -added aspell as plugin, as it is not available by default anymore. phpgwapi/js/ckeditor3/plugins/aspell -changed phpgwapi/js/ckeditor3/plugins/aspell/spellerpages/server-scripts/spellchecker.php to allow only configured aspell, tmp dirs and language settings -removed other than php spellchecker pages from phpgwapi/js/ckeditor3/plugins/aspell/spellerpages/server-scripts/ -added toolbar options to reflect the use/change of calls of SpellCheck(er) via toolbar button -added an availability check on dicts (see below) Index: phpgwapi/js/ckeditor3/plugins/aspell/spellerpages/server-scripts/spellchecker.php =================================================================== --- phpgwapi/js/ckeditor3/plugins/aspell/spellerpages/server-scripts/spellchecker.php (Revision 37235) +++ phpgwapi/js/ckeditor3/plugins/aspell/spellerpages/server-scripts/spellchecker.php (Arbeitskopie) @@ -24,17 +24,16 @@ // will not continue, unless the header get's included and there is a valid eGW session require('../../../../../../../header.inc.php'); -if (!empty($GLOBALS['egw_info']['user']['preferences']['common']['spellchecker_lang'])) -{ - $lang = $GLOBALS['egw_info']['user']['preferences']['common']['spellchecker_lang']; -} -else -{ - $lang = $GLOBALS['egw_info']['user']['preferences']['common']['lang']; -} +$lang = ($GLOBALS['egw_info']['user']['preferences']['common']['spellchecker_lang'] ? + $GLOBALS['egw_info']['user']['preferences']['common']['spellchecker_lang']: + $GLOBALS['egw_info']['user']['preferences']['common']['lang']); -$aspell_opts = '-a '.escapeshellarg('--lang='.$lang).' --encoding=utf-8 -H --rem-sgml-check=alt'; // by FredCK +$country = $GLOBALS['egw_info']['user']['preferences']['common']['country']; +$lang_ext = $lang.'_'.$country; +$langs = getDictLangs(); + +$aspell_opts = '-a '.escapeshellarg('--lang='.(in_array($lang_ext,$langs)?$lang_ext:$lang)).' --encoding=utf-8 -H --rem-sgml-check=alt'; // by FredCK $tempfiledir = "./"; $spellercss = '../spellerStyle.css'; // by FredCK @@ -43,6 +42,42 @@ $textinputs = $_POST['textinputs']; # array $input_separator = "A"; +function getDictLangs() +{ + static $langs; + if (is_null($langs)) $langs = egw_cache::getCache(egw_cache::TREE,'spellckecher','aspellDictLangs',$callback=null,$callback_params=array(),$expiration=60*60*1); + if (isset($langs) && !empty($langs)) return $langs; + $langs = array(); + $aspell_prog = getAspellPath(); + $cmd = "$aspell_prog dump dicts"; + if( $aspellret = shell_exec( $cmd )) { + $linesout = explode( "\n", $aspellret ); + $index = 0; + $text_input_index = -1; + # parse each line of aspell return + foreach( $linesout as $key=>$val ) { + //error_log('spellerpages'.__LINE__.' : '.trim($val)); + $langs[] = trim($val); + } + } + egw_cache::setCache(egw_cache::TREE,'spellchecker','aspellDictLangs',$langs,$expiration=60*60*1); + return $langs; +} + +function getAspellPath() +{ + if (!empty($GLOBALS['egw_info']['server']['aspell_path']) && + is_executable($GLOBALS['egw_info']['server']['aspell_path'])) + { + $aspell_prog = $GLOBALS['egw_info']['server']['aspell_path']; + } + else // little fallback that might save linux users + { + $aspell_prog = 'aspell'; + } + return $aspell_prog; +} + # set the JavaScript variable to the submitted text. # textinputs is an array, each element corresponding to the (url-encoded) # value of the text control submitted for spell-checking @@ -101,15 +136,7 @@ global $textinputs; global $input_separator; $aspell_err = ""; - if (!empty($GLOBALS['egw_info']['server']['aspell_path']) && - is_executable($GLOBALS['egw_info']['server']['aspell_path'])) - { - $aspell_prog = $GLOBALS['egw_info']['server']['aspell_path']; - } - else // little fallback that might save linux users - { - $aspell_prog = 'aspell'; - } + $aspell_prog = getAspellPath(); # create temp file // use EGroupware's temp_dir