From 141c9e732df32afb0ff6892b165bd72f1aac2287 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Thu, 27 Aug 2009 02:18:54 -0400
Subject: [PATCH] Reload settings page if language was changed

---
 program/js/app.js                     |   16 +++++++++++++---
 program/steps/settings/save_prefs.inc |    9 +++++----
 2 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index 4ad62b4..88e1339 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -697,9 +697,9 @@
         else if (this.task=='settings' && props)
           this.load_identity(props, 'edit-identity');
         else if (this.task=='mail' && (cid = this.get_single_uid())) {
-	  var url = (this.env.mailbox == this.env.drafts_mailbox) ? '_draft_uid=' : '_uid=';
+          var url = (this.env.mailbox == this.env.drafts_mailbox) ? '_draft_uid=' : '_uid=';
           this.goto_url('compose', url+cid+'&_mbox='+urlencode(this.env.mailbox), true);
-	}
+        }
         break;
 
       case 'save-identity':
@@ -837,7 +837,7 @@
       case 'select-all':
         if (props == 'invert')
           this.message_list.invert_selection();
-	else
+        else
           this.message_list.select_all(props);
         break;
 
@@ -1214,6 +1214,16 @@
     this.set_busy(false);
     this.display_message('Request timed out!', 'error');
     };
+  
+  this.reload = function(delay)
+  {
+    if (this.env.framed && parent.rcmail)
+      parent.rcmail.reload(delay);
+    else if (delay)
+      window.setTimeout(function(){ rcmail.reload(); }, delay);
+    else if (window.location)
+      location.href = this.env.comm_path;
+  };
 
 
   /*********************************************************/
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index d0bfdf0..48f6ef7 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -102,8 +102,9 @@
   case 'general':
 
     // switch UI language
-    if (isset($_POST['_language'])) {
+    if (isset($_POST['_language']) && $a_user_prefs['language'] != $_SESSION['language']) {
       $RCMAIL->load_language($a_user_prefs['language']);
+      $OUTPUT->command('reload', 500);
     }
 
     // switch skin
@@ -132,13 +133,13 @@
     // special handling for 'default_imap_folders'
     if (in_array('default_imap_folders', (array)$CONFIG['dont_override'])) {
       foreach (array('drafts_mbox','sent_mbox','junk_mbox','trash_mbox') as $p)
-	$a_user_prefs[$p] = $CONFIG[$p];
+        $a_user_prefs[$p] = $CONFIG[$p];
     } else {
       $a_user_prefs['default_imap_folders'] = array('INBOX');
       foreach (array('drafts_mbox','sent_mbox','junk_mbox','trash_mbox') as $p) {
-	if ($a_user_prefs[$p])
+        if ($a_user_prefs[$p])
           $a_user_prefs['default_imap_folders'][] = $a_user_prefs[$p];
-	}
+      }
     }
   
   break;

--
Gitblit v1.9.1