mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-23 07:09:20 +01:00
* ckeditor/aspell: added check for language availability check on extended dict (Lang_Countrycode) first, then fall back to lang -> e.g.: check on en_GB, if not available try using en
This commit is contained in:
parent
f6fe40f2d9
commit
9fad5b84ab
@ -1,6 +1,5 @@
|
|||||||
--------------- step 1 --------------------------------------
|
--------------- step 1 --------------------------------------
|
||||||
removed _samples directory
|
removed _samples directory
|
||||||
removed _source folder
|
|
||||||
|
|
||||||
--------------- step 2 --------------------------------------
|
--------------- step 2 --------------------------------------
|
||||||
-added aspell as plugin, as it is not available by default anymore.
|
-added aspell as plugin, as it is not available by default anymore.
|
||||||
@ -9,4 +8,95 @@ removed _source folder
|
|||||||
to allow only configured aspell, tmp dirs and language settings
|
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/
|
-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 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
|
||||||
|
@ -24,17 +24,16 @@ $GLOBALS['egw_info'] = array(
|
|||||||
// will not continue, unless the header get's included and there is a valid eGW session
|
// will not continue, unless the header get's included and there is a valid eGW session
|
||||||
require('../../../../../../../header.inc.php');
|
require('../../../../../../../header.inc.php');
|
||||||
|
|
||||||
if (!empty($GLOBALS['egw_info']['user']['preferences']['common']['spellchecker_lang']))
|
$lang = ($GLOBALS['egw_info']['user']['preferences']['common']['spellchecker_lang'] ?
|
||||||
{
|
$GLOBALS['egw_info']['user']['preferences']['common']['spellchecker_lang']:
|
||||||
$lang = $GLOBALS['egw_info']['user']['preferences']['common']['spellchecker_lang'];
|
$GLOBALS['egw_info']['user']['preferences']['common']['lang']);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$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 = "./";
|
$tempfiledir = "./";
|
||||||
|
|
||||||
$spellercss = '../spellerStyle.css'; // by FredCK
|
$spellercss = '../spellerStyle.css'; // by FredCK
|
||||||
@ -43,6 +42,42 @@ $word_win_src = '../wordWindow.js'; // by FredCK
|
|||||||
$textinputs = $_POST['textinputs']; # array
|
$textinputs = $_POST['textinputs']; # array
|
||||||
$input_separator = "A";
|
$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.
|
# set the JavaScript variable to the submitted text.
|
||||||
# textinputs is an array, each element corresponding to the (url-encoded)
|
# textinputs is an array, each element corresponding to the (url-encoded)
|
||||||
# value of the text control submitted for spell-checking
|
# value of the text control submitted for spell-checking
|
||||||
@ -101,15 +136,7 @@ function print_checker_results() {
|
|||||||
global $textinputs;
|
global $textinputs;
|
||||||
global $input_separator;
|
global $input_separator;
|
||||||
$aspell_err = "";
|
$aspell_err = "";
|
||||||
if (!empty($GLOBALS['egw_info']['server']['aspell_path']) &&
|
$aspell_prog = getAspellPath();
|
||||||
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';
|
|
||||||
}
|
|
||||||
|
|
||||||
# create temp file
|
# create temp file
|
||||||
// use EGroupware's temp_dir
|
// use EGroupware's temp_dir
|
||||||
|
Loading…
Reference in New Issue
Block a user