thomascube
2006-05-25 ed5d29f4b3c57235594931d33dde7cccaf7cd58b
Finalized GoogieSpell integration

13 files modified
105 ■■■■ changed files
config/main.inc.php.dist 4 ●●●● patch | view | raw | blame | history
program/js/app.js 11 ●●●●● patch | view | raw | blame | history
program/js/googiespell.js 12 ●●●●● patch | view | raw | blame | history
program/localization/de_CH/labels.inc 4 ●●●● patch | view | raw | blame | history
program/localization/de_CH/messages.inc 10 ●●●●● patch | view | raw | blame | history
program/localization/de_DE/labels.inc 4 ●●●● patch | view | raw | blame | history
program/localization/de_DE/messages.inc 9 ●●●●● patch | view | raw | blame | history
program/localization/en_US/labels.inc 4 ●●●● patch | view | raw | blame | history
program/localization/en_US/messages.inc 5 ●●●●● patch | view | raw | blame | history
program/steps/mail/compose.inc 30 ●●●● patch | view | raw | blame | history
skins/default/googiespell.css 7 ●●●●● patch | view | raw | blame | history
skins/default/mail.css 4 ●●●● patch | view | raw | blame | history
skins/default/templates/compose.html 1 ●●●● patch | view | raw | blame | history
config/main.inc.php.dist
@@ -141,6 +141,10 @@
// false causes deleted messages to be permanantly removed if there is no Trash folder
$rcmail_config['flag_for_deletion'] = TRUE;
// Make use of the built-in spell checker. It is based on GoogieSpell
// which means that the message content will be sent to Google in order to check spelling
$rcmail_config['enable_spellcheck'] = TRUE;
// path to a text file which will be added to each sent message
// paths are relative to the RoundCube root folder
$rcmail_config['generic_message_footer'] = '';
program/js/app.js
@@ -142,7 +142,11 @@
          }  
        if (this.env.action=='compose')
          {
          this.enable_command('add-attachment', 'send-attachment', 'send', true);
          if (this.env.spellcheck)
            this.enable_command('spellcheck', true);
          }
          
        if (this.env.messagecount)
          this.enable_command('select-all', 'select-none', 'sort', 'expunge', true);
@@ -875,7 +879,12 @@
          parent.location.href = url;
        else
          location.href = url;
        break;
        break;
      case 'spellcheck':
        if (this.env.spellcheck && this.env.spellcheck.spellCheck)
          this.env.spellcheck.spellCheck(this.env.spellcheck.check_link);
        break;
      case 'send':
        if (!this.gui_objects.messageform)
program/js/googiespell.js
@@ -1035,16 +1035,24 @@
}
GoogieSpell.prototype.removeIndicator = function(elm) {
  AJS.removeElement(this.indicator);
  // modified by roundcube
  if (window.rcube_webmail_client)
    rcube_webmail_client.set_busy(false);
  //AJS.removeElement(this.indicator);
}
GoogieSpell.prototype.appendIndicator = function(elm) {
  // modified by roundcube
  if (window.rcube_webmail_client)
    rcube_webmail_client.set_busy(true, 'checking');
/*
  var img = AJS.IMG({'src': this.img_dir + 'indicator.gif', 'style': 'margin-right: 5px;'});
  img.style.width = "16px";
  img.style.height = "16px";
  this.indicator = img;
  img.style.textDecoration = "none";
  AJS.insertBefore(img, elm);
  */
}
/****
@@ -1239,6 +1247,8 @@
    me.spellCheck(span_chck);
  }
  AJS.appendChildNodes(this.spell_container, span_chck, " ", this.switch_lan_pic);
  // modified by roundcube
  this.check_link = span_chck;
}
GoogieSpell.prototype.setLanguages = function(lang_dict) {
program/localization/de_CH/labels.inc
@@ -125,6 +125,10 @@
$labels['charset']  = 'Zeichensatz';
$labels['returnreceipt'] = 'Empfangsbestätigung';
$labels['checkspelling'] = 'Rechtschreibung prüfen';
$labels['resumeediting'] = 'Bearbeitung fortzetzen';
$labels['revertto'] = 'Zurück zu';
$labels['attachments'] = 'Anhänge';
$labels['upload'] = 'Hochladen';
$labels['close']  = 'Schliessen';
program/localization/de_CH/messages.inc
@@ -86,5 +86,15 @@
$messages['nosearchname'] = 'Bitte geben Sie einen Namen oder eine E-Mail-Adresse ein';
$messages['searchsuccessful'] = '$nr Nachrichten gefunden';
$messages['searchnomatch'] = 'Keine Treffer';
$messages['searching'] = 'Suche...';
$messages['checking'] = 'Prüfe...';
$messages['nospellerrors'] = 'Keine Rechtschreibfehler gefunden';
?>
program/localization/de_DE/labels.inc
@@ -126,6 +126,10 @@
$labels['charset']  = 'Zeichensatz';
$labels['returnreceipt'] = 'Empfangsbestätigung';
$labels['checkspelling'] = 'Rechtschreibung prüfen';
$labels['resumeediting'] = 'Bearbeitung fortzetzen';
$labels['revertto'] = 'Zurück zu';
$labels['attachments'] = 'Anhänge';
$labels['upload'] = 'Hochladen';
$labels['close']  = 'Schließen';
program/localization/de_DE/messages.inc
@@ -88,5 +88,14 @@
$messages['nosearchname'] = 'Bitte geben Sie einen Namen oder eine E-Mail-Adresse ein';
$messages['searchsuccessful'] = '$nr Nachrichten gefunden';
$messages['searchnomatch'] = 'Keine Treffer';
$messages['searching'] = 'Suche...';
$messages['checking'] = 'Prüfe...';
$messages['nospellerrors'] = 'Keine Rechtschreibfehler gefunden';
?>
program/localization/en_US/labels.inc
@@ -125,6 +125,10 @@
$labels['charset']  = 'Charset';
$labels['returnreceipt'] = 'Return receipt';
$labels['checkspelling'] = 'Check spelling';
$labels['resumeediting'] = 'Resume editing';
$labels['revertto'] = 'Revert to';
$labels['attachments'] = 'Attachments';
$labels['upload'] = 'Upload';
$labels['close']  = 'Close';
program/localization/en_US/messages.inc
@@ -94,4 +94,9 @@
$messages['searching'] = 'Searching...';
$messages['checking'] = 'Checking...';
$messages['nospellerrors'] = 'No spelling errors found';
?>
program/steps/mail/compose.inc
@@ -297,7 +297,7 @@
function rcmail_compose_body($attrib)
  {
  global $CONFIG, $OUTPUT, $REPLY_MESSAGE, $FORWARD_MESSAGE;
  global $CONFIG, $OUTPUT, $REPLY_MESSAGE, $FORWARD_MESSAGE, $JS_OBJECT_NAME;
  
  list($form_start, $form_end) = get_form_tags($attrib);
  unset($attrib['form']);
@@ -335,12 +335,28 @@
  $out .= $form_end ? "\n$form_end" : '';
  
  // include GoogieSpell
  $OUTPUT->include_script('googiespell.js');
  $OUTPUT->add_script(sprintf("var googie1 = new GoogieSpell('\$__skin_path/images/googiespell/','%s&_action=spell&lang=');\n".
                              "googie1.decorateTextarea('%s');",
                              $GLOBALS['COMM_PATH'],
                              $attrib['id']), 'foot');
  if (!empty($CONFIG['enable_spellcheck']))
    {
    $OUTPUT->include_script('googiespell.js');
    $OUTPUT->add_script(sprintf("var googie = new GoogieSpell('\$__skin_path/images/googiespell/','%s&_action=spell&lang=');\n".
                                "googie.lang_chck_spell = \"%s\";\n".
                                "googie.lang_rsm_edt = \"%s\";\n".
                                "googie.lang_close = \"%s\";\n".
                                "googie.lang_revert = \"%s\";\n".
                                "googie.lang_no_error_found = \"%s\";\n".
                                "googie.decorateTextarea('%s');\n".
                                "%s.set_env('spellcheck', googie);",
                                $GLOBALS['COMM_PATH'],
                                rep_specialchars_output(rcube_label('checkspelling')),
                                rep_specialchars_output(rcube_label('resumeediting')),
                                rep_specialchars_output(rcube_label('close')),
                                rep_specialchars_output(rcube_label('revertto')),
                                rep_specialchars_output(rcube_label('nospellerrors')),
                                $attrib['id'],
                                $JS_OBJECT_NAME), 'foot');
    rcube_add_label('checking');
    }
  
  return $out;
  }
skins/default/googiespell.css
@@ -43,10 +43,16 @@
}
.googie_list_close {
  font-size: 11px;
  color: #b91414;
}
.googie_list_onhover .googie_list_close {
  color: #FFFFFF;
}
.googie_list_revert {
  font-size: 11px;
  color: #b91479;
}
@@ -73,6 +79,7 @@
.googie_check_spelling_ok {
  color: green;
  font-size: 11px;
  text-decoration: underline;
  cursor: pointer;
}
skins/default/mail.css
@@ -674,14 +674,14 @@
#priority-selector
{
  position: absolute;
  left: 180px;
  left: 220px;
  top: 10px;
}
#receipt-selector
{
  position: absolute;
  left: 350px;
  left: 390px;
  top: 10px;
}
skins/default/templates/compose.html
@@ -34,6 +34,7 @@
<roundcube:button command="list" image="/images/buttons/back_act.png" width="32" height="32" title="backtolist" />
<roundcube:button command="send" imageAct="/images/buttons/send_act.png" imagePas="/images/buttons/send_pas.png" width="32" height="32" title="sendmessage" />
<!--<roundcube:button command="contacts" imageAct="/images/buttons/contacts_act.png" imagePas="/images/buttons/contacts_pas.png" width="32" height="32" title="addressbook" />-->
<roundcube:button command="spellcheck" imageAct="/images/buttons/spellcheck_act.png" imagePas="/images/buttons/spellcheck_pas.png" width="32" height="32" title="checkspelling" />
<roundcube:button command="add-attachment" imageAct="/images/buttons/attach_act.png" imagePas="/images/buttons/attach_pas.png" width="32" height="32" title="addattachment" />
<div id="priority-selector">