egroupware/phpgwapi/js/ckeditor/egw_integration.txt
2013-03-14 16:16:49 +00:00

106 lines
4.3 KiB
Plaintext

--------------- step 1 --------------------------------------
removed _samples directory
--------------- step 2 --------------------------------------
-added aspell as plugin, as it is not available by default anymore.
phpgwapi/js/ckeditor/plugins/aspell
-as aspell integration was done for CKEditor3; integration into CKEditor 4 needs
- most lang stuff had to be loaded from other sources
- own icon, modified plugin.js, removed aspell.css, modified dialogs/aspell.js
-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