From 4ca10b8d511d85a4d575af355b0a6739d5a05958 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Fri, 15 Aug 2008 17:47:31 -0400
Subject: [PATCH] Enable spellchecker for HTML editor

---
 program/steps/mail/compose.inc |   43 ++++++++++++++++++++++++++++---------------
 1 files changed, 28 insertions(+), 15 deletions(-)

diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 607cf9b..06e9d03 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -105,10 +105,6 @@
   {
     $_SESSION['compose']['forward_uid'] = $msg_uid;
   }
-  else if ($compose_mode == RCUBE_COMPOSE_DRAFT)
-  {
-    $_SESSION['compose']['draft_uid'] = $msg_uid;
-  }
 }
 
 /****** compose mode functions ********/
@@ -135,7 +131,7 @@
       
       // we have a set of recipients stored is session
       if (($mailto_id = $_SESSION['compose']['param']['_mailto']) && $_SESSION['mailto'][$mailto_id])
-        $fvalue = $_SESSION['mailto'][$mailto_id];
+        $fvalue = urldecode($_SESSION['mailto'][$mailto_id]);
       else if (!empty($_SESSION['compose']['param']['_to']))
         $fvalue = $_SESSION['compose']['param']['_to'];
         
@@ -386,7 +382,7 @@
 
   $OUTPUT->include_script('tiny_mce/tiny_mce.js');
   $OUTPUT->include_script("editor.js");
-  $OUTPUT->add_script('rcmail_editor_init("$__skin_path", "'.$tinylang.'");');
+  $OUTPUT->add_script('rcmail_editor_init("$__skin_path", "'.JQ($tinylang).'", '.intval($CONFIG['enable_spellcheck']).');');
 
   $out = $form_start ? "$form_start\n" : '';
 
@@ -406,11 +402,13 @@
   $out .= $form_end ? "\n$form_end" : '';
 
   // include GoogieSpell
-  if (!empty($CONFIG['enable_spellcheck']) && !$isHtml)
-    {
-    $lang_set = '';
-    if (!empty($CONFIG['spellcheck_languages']) && is_array($CONFIG['spellcheck_languages']))
-      $lang_set = "googie.setLanguages(".array2js($CONFIG['spellcheck_languages']).");\n";
+  if (!empty($CONFIG['enable_spellcheck'])) {
+    $googie_lang_set = $editor_lang_set = '';
+    if (!empty($CONFIG['spellcheck_languages']) && is_array($CONFIG['spellcheck_languages'])) {
+      $googie_lang_set = "googie.setLanguages(".json_serialize($CONFIG['spellcheck_languages']).");\n";
+      foreach ($CONFIG['spellcheck_languages'] as $key => $name)
+        $editor_lang_set .= ($editor_lang_set ? ',' : '') . ($key == $tinylang ? '+' : '') . JQ($name).'='.JQ($key);
+    }
     
     $OUTPUT->include_script('googiespell.js');
     $OUTPUT->add_script(sprintf(
@@ -429,13 +427,14 @@
       JQ(Q(rcube_label('close'))),
       JQ(Q(rcube_label('revertto'))),
       JQ(Q(rcube_label('nospellerrors'))),
-      $lang_set,
+      $googie_lang_set,
       substr($_SESSION['language'], 0, 2),
       $attrib['id'],
       JS_OBJECT_NAME), 'foot');
 
     rcube_add_label('checking');
-    }
+    $OUTPUT->set_env('spellcheck_langs', $editor_lang_set);
+  }
  
   $out .= "\n".'<iframe name="savetarget" src="program/blank.gif" style="width:0;height:0;border:none;visibility:hidden;"></iframe>';
 
@@ -649,12 +648,17 @@
       $button = Q(rcube_label('delete'));
 
     foreach ($_SESSION['compose']['attachments'] as $id => $a_prop)
+    {
+      if (empty($a_prop))
+        continue;
+      
       $out .= html::tag('li', array('id' => "rcmfile".$id),
         html::a(array(
             'href' => "#delete",
             'title' => rcube_label('delete'),
-              'onclick' => sprintf("return %s.command(\'remove-attachment\',\'rcmfile%d\', this)", JS_OBJECT_NAME, $id)),
+            'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%d', this)", JS_OBJECT_NAME, $id)),
           $button) . Q($a_prop['name']));
+    }
   }
 
   $OUTPUT->add_gui_object('attachmentlist', $attrib['id']);
@@ -775,6 +779,14 @@
 }
 
 
+function rcmail_store_target_selection($attrib)
+{
+  $attrib['name'] = '_store_target';
+  $select = rcmail_mailbox_select(array('noselection' => '- '.rcube_label('dontsave').' -'));
+  return $select->show(rcmail::get_instance()->config->get('sent_mbox'), $attrib);
+}
+
+
 function get_form_tags($attrib)
 {
   global $RCMAIL, $MESSAGE_FORM;
@@ -812,6 +824,7 @@
   'priorityselector' => 'rcmail_priority_selector',
   'editorselector' => 'rcmail_editor_selector',
   'receiptcheckbox' => 'rcmail_receipt_checkbox',
+  'storetarget' => 'rcmail_store_target_selection',
 ));
 
 /****** get contacts for this user and add them to client scripts ********/
@@ -827,7 +840,7 @@
     if ($sql_arr['email'])
       $a_contacts[] = format_email_recipient($sql_arr['email'], $sql_arr['name']);
   }
-if (isset($CONFIG['ldap_public']))
+if (!empty($CONFIG['ldap_public']) && is_array($CONFIG['ldap_public']))
   {
   /* LDAP autocompletion */ 
   foreach ($CONFIG['ldap_public'] as $ldapserv_config) 

--
Gitblit v1.9.1