alecpl
2011-05-30 644e3ad91250c0cb7b291b48e3b5cef401bffd90
- Fix setting language for spellchecker on spellcheck_before_send


4 files modified
53 ■■■■ changed files
program/include/rcube_spellchecker.php 25 ●●●●● patch | view | raw | blame | history
program/js/app.js 16 ●●●●● patch | view | raw | blame | history
program/js/googiespell.js 10 ●●●● patch | view | raw | blame | history
program/steps/mail/sendmail.inc 2 ●●● patch | view | raw | blame | history
program/include/rcube_spellchecker.php
@@ -52,7 +52,7 @@
    {
        $this->rc = rcmail::get_instance();
        $this->engine = $this->rc->config->get('spellcheck_engine', 'googie');
        $this->lang = $lang;
        $this->lang = $lang ? $lang : 'en';
        if ($this->engine == 'pspell' && !extension_loaded('pspell')) {
            raise_error(array(
@@ -161,6 +161,29 @@
    /**
     * Returns checking result (mispelled words with suggestions)
     *
     * @return array Spellchecking result. An array indexed by word.
     */
    function get()
    {
        $result = array();
        foreach ($this->matches as $item) {
            if ($this->engine == 'pspell') {
                $word = $item[0];
            }
            else {
                $word = mb_substr($this->content, $item[1], $item[2], RCMAIL_CHARSET);
            }
            $result[$word] = is_array($item[4]) ? implode("\t", $item[4]) : $item[4];
        }
        return $out;
    }
    /**
     * Returns error message
     *
     * @return string Error message
program/js/app.js
@@ -890,12 +890,14 @@
        self.clearTimeout(this.save_timer);
        // all checks passed, send message
        var form = this.gui_objects.messageform,
        var lang = this.spellcheck_lang(),
          form = this.gui_objects.messageform,
          msgid = this.set_busy(true, 'sendingmessage');
        form.target = 'savetarget';
        form._draft.value = '';
        form.action = this.add_url(form.action, '_unlock', msgid);
        form.action = this.add_url(form.action, '_lang', lang);
        form.submit();
        // clear timeout (sending could take longer)
@@ -3004,6 +3006,18 @@
    this.enable_command('spellcheck', this.spellcheck_ready);
  };
  // get selected language
  this.spellcheck_lang = function()
  {
    var ed;
    if (window.tinyMCE && (ed = tinyMCE.get(this.env.composebody)) && ed.plugins.spellchecker) {
      return ed.plugins.spellchecker.selectedLang;
    }
    else if (this.env.spellcheck) {
      return GOOGIE_CUR_LANG;
    }
  };
  this.set_draft_id = function(id)
  {
    $("input[name='_draft_saveid']").val(id);
program/js/googiespell.js
@@ -10,8 +10,8 @@
        Aleksander Machniak - alec [at] alec.pl
*/
var SPELL_CUR_LANG = null;
var GOOGIE_DEFAULT_LANG = 'en';
var GOOGIE_CUR_LANG,
    GOOGIE_DEFAULT_LANG = 'en';
function GoogieSpell(img_dir, server_url) {
    var ref = this,
@@ -260,9 +260,9 @@
                ref.resumeEditingState();
            } else {
                if (!ref.custom_no_spelling_error)
                ref.flashNoSpellingErrorState();
            else
                ref.custom_no_spelling_error(ref);
                    ref.flashNoSpellingErrorState();
                else
                    ref.custom_no_spelling_error(ref);
            }
            ref.removeIndicator();
        }
program/steps/mail/sendmail.inc
@@ -413,7 +413,7 @@
  if ($CONFIG['spellcheck_before_send'] && $CONFIG['enable_spellcheck']
    && empty($_SESSION['compose']['spell_checked'])
  ) {
    $spellchecker = new rcube_spellchecker();
    $spellchecker = new rcube_spellchecker(get_input_value('_lang', RCUBE_INPUT_GPC));
    $spell_result = $spellchecker->check($message_body, $isHtml);
    $_SESSION['compose']['spell_checked'] = true;