diff options
author | svncommit <devs@roundcube.net> | 2006-06-27 21:56:44 +0000 |
---|---|---|
committer | svncommit <devs@roundcube.net> | 2006-06-27 21:56:44 +0000 |
commit | c8c1e0ef3b229a82e74c70aeacc29f2ba021afbe (patch) | |
tree | 8ee6b05456b33c8d80e8cf7bf86fb14ae7c3b338 /program | |
parent | b068a07db2c519cde6bf1715e725cb70f2bbbc35 (diff) |
Renameable folders, mail-checking changes, other fixes (richs)
Diffstat (limited to 'program')
32 files changed, 264 insertions, 44 deletions
diff --git a/program/include/main.inc b/program/include/main.inc index 0a158dcb6..cc019af67 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -289,11 +289,11 @@ function get_sequence_name($sequence) // check the given string and returns language properties function rcube_language_prop($lang, $prop='lang') { - global $INSTLL_PATH; + global $INSTALL_PATH; static $rcube_languages, $rcube_language_aliases, $rcube_charsets; if (empty($rcube_languages)) - @include($INSTLL_PATH.'program/localization/index.inc'); + @include($INSTALL_PATH.'program/localization/index.inc'); // check if we have an alias for that language if (!isset($rcube_languages[$lang]) && isset($rcube_language_aliases[$lang])) @@ -357,7 +357,7 @@ function load_gui() $OUTPUT->set_charset($CONFIG['charset']); // add some basic label to client - rcube_add_label('loading'); + rcube_add_label('loading','checkingmail'); } @@ -764,13 +764,13 @@ function rcube_list_languages() if (!sizeof($sa_languages)) { - @include($INSTLL_PATH.'program/localization/index.inc'); + @include($INSTALL_PATH.'program/localization/index.inc'); - if ($dh = @opendir($INSTLL_PATH.'program/localization')) + if ($dh = @opendir($INSTALL_PATH.'program/localization')) { while (($name = readdir($dh)) !== false) { - if ($name{0}=='.' || !is_dir($INSTLL_PATH.'program/localization/'.$name)) + if ($name{0}=='.' || !is_dir($INSTALL_PATH.'program/localization/'.$name)) continue; if ($label = $rcube_languages[$name]) @@ -1192,6 +1192,7 @@ function rcube_xml_command($command, $str_attrib, $a_attrib=NULL) 'identityform' => 'rcube_identity_form', 'foldersubscription' => 'rcube_subscription_form', 'createfolder' => 'rcube_create_folder_form', + 'renamefolder' => 'rcube_rename_folder_form', 'composebody' => 'rcmail_compose_body' ); @@ -1317,7 +1318,7 @@ function rcube_button($attrib) $attrib['id'], $attrib['type'], $attrib['imageact'] ? $skin_path.$attrib['imageact'] : $attrib['classact'], - $attirb['imagesel'] ? $skin_path.$attirb['imagesel'] : $attrib['classsel'], + $attrib['imagesel'] ? $skin_path.$attrib['imagesel'] : $attrib['classsel'], $attrib['imageover'] ? $skin_path.$attrib['imageover'] : '')); // make valid href to task buttons @@ -1338,6 +1339,11 @@ function rcube_button($attrib) $attrib['onmouseout'] = sprintf("return %s.button_out('%s','%s')", $JS_OBJECT_NAME, $command, $attrib['id']); } + if ($command && $attrib['imagesel']) + { + $attrib['onmousedown'] = sprintf("return %s.button_sel('%s','%s')", $JS_OBJECT_NAME, $command, $attrib['id']); + $attrib['onmouseup'] = sprintf("return %s.button_out('%s','%s')", $JS_OBJECT_NAME, $command, $attrib['id']); + } $out = ''; @@ -1350,7 +1356,7 @@ function rcube_button($attrib) if ($attrib['label']) $btn_content .= ' '.$attrib['label']; - $link_attrib = array('href', 'onclick', 'onmouseover', 'onmouseout', 'title'); + $link_attrib = array('href', 'onclick', 'onmouseover', 'onmouseout', 'onmousedown', 'onmouseup', 'title'); } else if ($attrib['type']=='link') { diff --git a/program/include/rcube_imap.inc b/program/include/rcube_imap.inc index dccd64fc9..7ad4ad082 100644 --- a/program/include/rcube_imap.inc +++ b/program/include/rcube_imap.inc @@ -1262,9 +1262,30 @@ class rcube_imap // set a new name to an existing mailbox - function rename_mailbox($mbox_name, $new_name) + function rename_mailbox($mbox_name, $new_name, $subscribe=TRUE) { - // not implemented yet + $result = FALSE; + + // replace backslashes + $name = preg_replace('/[\\\]+/', '-', $new_name); + + $name_enc = UTF7EncodeString($new_name); + + // reduce mailbox name to 100 chars + $name_enc = substr($name_enc, 0, 100); + + $abs_name = $this->_mod_mailbox($name_enc); + $a_mailbox_cache = $this->get_cache('mailboxes'); + + if (strlen($abs_name) && (!is_array($a_mailbox_cache) || !in_array($abs_name, $a_mailbox_cache))) + $result = iil_C_RenameFolder($this->conn, $mbox_name, $abs_name); + + // update mailboxlist cache + if ($result && $subscribe) + $this->unsubscribe($mbox_name); + $this->subscribe($name_enc); + + return $result ? $name : FALSE; } diff --git a/program/js/app.js b/program/js/app.js index c0dac3fed..c61c20a63 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -123,7 +123,7 @@ function rcube_webmail() } // enable mail commands - this.enable_command('list', 'compose', 'add-contact', 'search', 'reset-search', true); + this.enable_command('list', 'checkmail', 'compose', 'add-contact', 'search', 'reset-search', true); if (this.env.action=='show') { @@ -211,7 +211,7 @@ function rcube_webmail() this.enable_command('save', true); if (this.env.action=='folders') - this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'delete-folder', true); + this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'rename-folder', 'delete-folder', true); var identities_list = this.gui_objects.identitieslist; if (identities_list) @@ -613,12 +613,18 @@ function rcube_webmail() { if (this.env.search_request<0 || (this.env.search_request && props != this.env.mailbox)) this.reset_qsearch(); + + // Reset message list header, unless returning from compose/read/etc + if (this.env.mailbox != props && this.message_rows) + this.clear_message_list_header(); + this.list_mailbox(props); } else if (this.task=='addressbook') this.list_contacts(); break; + case 'sort': // get the type of sorting var a_sort = props.split('_'); @@ -842,6 +848,9 @@ function rcube_webmail() //location.href = this.env.comm_path+'&_action=show&_uid='+this.env.prev_uid+'&_mbox='+this.env.mailbox; break; + case 'checkmail': + this.check_for_recent(); + break; case 'compose': var url = this.env.comm_path+'&_action=compose'; @@ -1034,6 +1043,10 @@ function rcube_webmail() this.create_folder(props); break; + case 'rename-folder': + this.rename_folder(props); + break; + case 'delete-folder': if (confirm(this.get_label('deletefolderconfirm'))) this.delete_folder(props); @@ -1554,6 +1567,7 @@ function rcube_webmail() this.clear_message_list = function() { var table = this.gui_objects.messagelist; + var tbody = document.createElement('TBODY'); table.insertBefore(tbody, table.tBodies[0]); table.removeChild(table.tBodies[1]); @@ -1563,6 +1577,18 @@ function rcube_webmail() }; + this.clear_message_list_header = function() + { + var table = this.gui_objects.messagelist; + + var colgroup = document.createElement('COLGROUP'); + table.removeChild(table.colgroup); + table.insertBefore(colgroup, table.thead); + + var thead = document.createElement('THEAD'); + table.removeChild(table.thead); + table.insertBefore(thead, table.tBodies[0]); + }; this.expunge_mailbox = function(mbox) { @@ -2584,6 +2610,21 @@ function rcube_webmail() form.elements['_folder_name'].focus(); }; + this.rename_folder = function(props) + { + var form; + if ((form = this.gui_objects.editform) && form.elements['_folder_oldname'] && form.elements['_folder_newname']) + { + oldname = form.elements['_folder_oldname'].value; + newname = form.elements['_folder_newname'].value; + } + + if (oldname && newname) + this.http_request('rename-folder', '_folder_oldname='+escape(oldname)+'&_folder_newname='+escape(newname)); + else if (form.elements['_folder_newname']) + form.elements['_folder_newname'].focus(); + }; + this.delete_folder = function(folder) { @@ -2603,6 +2644,20 @@ function rcube_webmail() var row; if (id && (row = document.getElementById(id))) row.style.display = 'none'; + + // remove folder from rename-folder list + var form; + if ((form = this.gui_objects.editform) && form.elements['_folder_oldname']) + { + for (var i=0;i<form.elements['_folder_oldname'].options.length;i++) + { + if (form.elements['_folder_oldname'].options[i].value == folder) + { + form.elements['_folder_oldname'].options[i] = null; + break; + } + } + } }; @@ -2671,7 +2726,7 @@ function rcube_webmail() var tbody = this.gui_objects.subscriptionlist.tBodies[0]; var id = tbody.childNodes.length+1; - + // clone a table row var row = this.clone_table_row(tbody.rows[0]); row.id = 'rcmrow'+id; @@ -2690,9 +2745,14 @@ function rcube_webmail() if (row.cells[2].firstChild.tagName=='A') row.cells[2].firstChild.onclick = new Function(this.ref+".command('delete-folder','"+name+"')"); - var form; - if ((form = this.gui_objects.editform) && form.elements['_folder_name']) - form.elements['_folder_name'].value = ''; + var form; + if ((form = this.gui_objects.editform) && form.elements['_folder_name']) + form.elements['_folder_name'].value = ''; + + // add new folder to rename-folder list + if (form.elements['_folder_oldname']) + form.elements['_folder_oldname'].options[form.elements['_folder_oldname'].options.length] = new Option(name,name); + }; @@ -2795,6 +2855,26 @@ function rcube_webmail() } }; + // mouse down on button + this.button_sel = function(command, id) + { + var a_buttons = this.buttons[command]; + var button, img; + + if(!a_buttons || !a_buttons.length) + return; + + for(var n=0; n<a_buttons.length; n++) + { + button = a_buttons[n]; + if(button.id==id && button.status=='act') + { + img = document.getElementById(button.id); + if (img && button.sel) + img.src = button.sel; + } + } + }; // mouse out of button this.button_out = function(command, id) @@ -3181,8 +3261,7 @@ function rcube_webmail() ctype = ctype_array[0]; } - if (request_obj.__lock) - this.set_busy(false); + this.set_busy(false); console(request_obj.get_text()); @@ -3236,6 +3315,7 @@ function rcube_webmail() // send periodic request to check for recent messages this.check_for_recent = function() { + this.set_busy(true, 'checkingmail'); var d = new Date(); this.http_request('check-recent', '_t='+d.getTime()); }; diff --git a/program/localization/cn/labels.inc b/program/localization/cn/labels.inc index bf7773457..62208fe63 100644 --- a/program/localization/cn/labels.inc +++ b/program/localization/cn/labels.inc @@ -91,6 +91,7 @@ $labels['saturday'] = '星期六'; $labels['today'] = '今天'; // toolbar buttons +$labels['checkmail'] = '检查新消息'; $labels['writenewmessage'] = '写新邮件'; $labels['replytomessage'] = '回复邮件'; $labels['forwardmessage'] = '转发邮件'; diff --git a/program/localization/cn/messages.inc b/program/localization/cn/messages.inc index edbe707f9..8ce103bff 100644 --- a/program/localization/cn/messages.inc +++ b/program/localization/cn/messages.inc @@ -37,6 +37,8 @@ $messages['loading'] = '读取...'; $messages['loadingdata'] = '读取数据...'; +$messages['checkingmail'] = '检查新消息...'; + $messages['sendingmessage'] = '正在发送邮件...'; $messages['messagesent'] = '邮件发送成功'; diff --git a/program/localization/de_CH/labels.inc b/program/localization/de_CH/labels.inc index 9141564c0..2b73ed0b5 100644 --- a/program/localization/de_CH/labels.inc +++ b/program/localization/de_CH/labels.inc @@ -91,6 +91,7 @@ $labels['saturday'] = 'Samstag'; $labels['today'] = 'Heute'; // toolbar buttons // Symbolleisten-Tipps +$labels['checkmail'] = 'Überprüfung auf neue Anzeigen'; $labels['writenewmessage'] = 'Neue Nachricht schreiben'; $labels['replytomessage'] = 'Antwort verfassen'; $labels['replytoallmessage'] = 'Antwort an Absender und alle Empfänger'; diff --git a/program/localization/de_CH/messages.inc b/program/localization/de_CH/messages.inc index 57c1513a2..0484b5ded 100644 --- a/program/localization/de_CH/messages.inc +++ b/program/localization/de_CH/messages.inc @@ -34,6 +34,8 @@ $messages['mailboxempty'] = 'Ordner ist leer'; $messages['loading'] = $messages['loadingdata'] = 'Daten werden geladen...'; +$messages['checkingmail'] = 'Überprüfung auf neue Anzeigen...'; + $messages['sendingmessage'] = 'Nachricht wird gesendet...'; $messages['messagesent'] = 'Nachricht erfolgreich gesendet'; diff --git a/program/localization/de_DE/labels.inc b/program/localization/de_DE/labels.inc index ac74b304a..1aab071e4 100644 --- a/program/localization/de_DE/labels.inc +++ b/program/localization/de_DE/labels.inc @@ -92,6 +92,7 @@ $labels['saturday'] = 'Samstag'; $labels['today'] = 'Heute'; // toolbar buttons // Symbolleisten-Tipps +$labels['checkmail'] = 'Überprüfung auf neue Anzeigen'; $labels['writenewmessage'] = 'Neue Nachricht schreiben'; $labels['replytomessage'] = 'Antwort verfassen'; $labels['replytoallmessage'] = 'Antwort an Absender und alle Empfänger'; diff --git a/program/localization/de_DE/messages.inc b/program/localization/de_DE/messages.inc index 622cd0d7d..f084b167b 100644 --- a/program/localization/de_DE/messages.inc +++ b/program/localization/de_DE/messages.inc @@ -36,6 +36,8 @@ $messages['mailboxempty'] = 'Ordner ist leer'; $messages['loading'] = $messages['loadingdata'] = 'Daten werden geladen...'; +$messages['checkingmail'] = 'Überprüfung auf neue Anzeigen...'; + $messages['sendingmessage'] = 'Nachricht wird gesendet...'; $messages['messagesent'] = 'Nachricht erfolgreich gesendet'; diff --git a/program/localization/el/labels.inc b/program/localization/el/labels.inc index 37b42c1ef..ff99364b3 100755 --- a/program/localization/el/labels.inc +++ b/program/localization/el/labels.inc @@ -97,6 +97,7 @@ $labels['saturday'] = 'Σάββατο'; $labels['today'] = 'Σήμερα'; // toolbar buttons +$labels['checkmail'] = 'Έλεγχος για τα νέα μηνύματα'; $labels['writenewmessage'] = 'Δημιουργία νέου μηνύματος'; $labels['replytomessage'] = 'Απάντηση μηνύματος'; $labels['forwardmessage'] = 'Προώθηση μηνύματος'; diff --git a/program/localization/el/messages.inc b/program/localization/el/messages.inc index 0d01054b0..c3612be46 100755 --- a/program/localization/el/messages.inc +++ b/program/localization/el/messages.inc @@ -38,6 +38,8 @@ $messages['loading'] = 'Φόρτωση...'; $messages['loadingdata'] = 'Φόρτωση δεδομένων...'; +$messages['checkingmail'] = 'Έλεγχος για τα νέα μηνύματα...'; + $messages['sendingmessage'] = 'Αποστολή μηνύματος...'; $messages['messagesent'] = 'Το μήνυμα στάλθηκε επιτυχώς'; diff --git a/program/localization/en_GB/labels.inc b/program/localization/en_GB/labels.inc index 3365f926c..fc7a93f28 100644 --- a/program/localization/en_GB/labels.inc +++ b/program/localization/en_GB/labels.inc @@ -91,6 +91,7 @@ $labels['saturday'] = 'Saturday'; $labels['today'] = 'Today'; // toolbar buttons +$labels['checkmail'] = 'Check for new messages'; $labels['writenewmessage'] = 'Create a new message'; $labels['replytomessage'] = 'Reply to the message'; $labels['replytoallmessage'] = 'Reply to sender and all recipients'; diff --git a/program/localization/en_GB/messages.inc b/program/localization/en_GB/messages.inc index de4e90114..262e30007 100644 --- a/program/localization/en_GB/messages.inc +++ b/program/localization/en_GB/messages.inc @@ -36,6 +36,8 @@ $messages['loading'] = 'Loading...'; $messages['loadingdata'] = 'Loading data...'; +$messages['checkingmail'] = 'Checking for new messages...'; + $messages['messagesent'] = 'Message sent successfully'; $messages['savingmessage'] = 'Saving message...'; diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc index c5cbaa453..436dacfd0 100644 --- a/program/localization/en_US/labels.inc +++ b/program/localization/en_US/labels.inc @@ -90,6 +90,7 @@ $labels['saturday'] = 'Saturday'; $labels['today'] = 'Today'; // toolbar buttons +$labels['checkmail'] = 'Check for new messages'; $labels['writenewmessage'] = 'Create a new message'; $labels['replytomessage'] = 'Reply to the message'; $labels['replytoallmessage'] = 'Reply to sender and all recipients'; @@ -208,6 +209,8 @@ $labels['foldername'] = 'Folder name'; $labels['subscribed'] = 'Subscribed'; $labels['create'] = 'Create'; $labels['createfolder'] = 'Create new folder'; +$labels['rename'] = 'Rename'; +$labels['renamefolder'] = 'Rename existing folder'; $labels['deletefolder'] = 'Delete folder'; $labels['managefolders'] = 'Manage folders'; diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc index d4f3643ae..a5ffc091c 100644 --- a/program/localization/en_US/messages.inc +++ b/program/localization/en_US/messages.inc @@ -36,6 +36,8 @@ $messages['loading'] = 'Loading...'; $messages['loadingdata'] = 'Loading data...'; +$messages['checkingmail'] = 'Checking for new messages...'; + $messages['sendingmessage'] = 'Sending message...'; $messages['messagesent'] = 'Message sent successfully'; diff --git a/program/localization/es/labels.inc b/program/localization/es/labels.inc index 1b648d5c1..3b28244b0 100644 --- a/program/localization/es/labels.inc +++ b/program/localization/es/labels.inc @@ -94,6 +94,7 @@ $labels['saturday'] = 'Sábado'; $labels['today'] = 'Hoy'; // toolbar buttons +$labels['checkmail'] = 'Comprobación para saber si hay nuevos mensajes'; $labels['writenewmessage'] = 'Crear nuevo mensaje'; $labels['replytomessage'] = 'Responder al mensaje'; $labels['forwardmessage'] = 'Reenviar mensaje'; diff --git a/program/localization/es/messages.inc b/program/localization/es/messages.inc index 551ee75dd..675bc8498 100644 --- a/program/localization/es/messages.inc +++ b/program/localization/es/messages.inc @@ -43,6 +43,8 @@ $messages['loading'] = 'Cargando...'; $messages['loadingdata'] = 'Cargando datos...'; +$messages['checkingmail'] = 'Comprobación para saber si hay nuevos mensajes...'; + $messages['sendingmessage'] = 'Enviando mensaje...'; $messages['messagesent'] = 'Mensaje enviado correctamente'; diff --git a/program/localization/fr/labels.inc b/program/localization/fr/labels.inc index 27a4f50dc..2fb2d6e83 100644 --- a/program/localization/fr/labels.inc +++ b/program/localization/fr/labels.inc @@ -91,6 +91,7 @@ $labels['saturday'] = 'Samedi'; $labels['today'] = 'Aujourd\'hui'; // toolbar buttons +$labels['checkmail'] = 'Vérification les nouveaux messages'; $labels['writenewmessage'] = 'Créer un nouveau message'; $labels['replytomessage'] = 'Répondre au message'; $labels['replytoallmessage'] = 'Répondre à tous'; diff --git a/program/localization/fr/messages.inc b/program/localization/fr/messages.inc index b8c2475ce..b0847107e 100644 --- a/program/localization/fr/messages.inc +++ b/program/localization/fr/messages.inc @@ -36,6 +36,8 @@ $messages['loading'] = 'Chargement en cours...'; $messages['loadingdata'] = 'Chargement des données en cours...'; +$messages['checkingmail'] = 'Vérification les nouveaux messages...'; + $messages['sendingmessage'] = 'Message en cours d\'envoi...'; $messages['messagesent'] = 'Message envoyé'; diff --git a/program/localization/it/labels.inc b/program/localization/it/labels.inc index b2d272685..0a080eafb 100644 --- a/program/localization/it/labels.inc +++ b/program/localization/it/labels.inc @@ -91,6 +91,7 @@ $labels['saturday'] = 'Sabato'; $labels['today'] = 'Oggi'; // toolbar buttons +$labels['checkmail'] = 'Controllando per vedere se c'è nuovi messaggi'; $labels['writenewmessage'] = 'Scrivi un nuovo messaggio'; $labels['replytomessage'] = 'Rispondi al messaggio'; $labels['replytoallmessage'] = 'Rispondi a tutti'; diff --git a/program/localization/it/messages.inc b/program/localization/it/messages.inc index 7afec1ca9..ae3c81819 100644 --- a/program/localization/it/messages.inc +++ b/program/localization/it/messages.inc @@ -36,6 +36,8 @@ $messages['loading'] = 'Caricamento...'; $messages['loadingdata'] = 'Caricamento dati...'; +$messages['checkingmail'] = 'Controllando per vedere se c'è nuovi messaggi...'; + $messages['sendingmessage'] = 'Invio messaggio in corso...'; $messages['messagesent'] = 'Messaggio inviato correttamente'; diff --git a/program/localization/ja/labels.inc b/program/localization/ja/labels.inc index 11a50aeed..3732185a1 100644 --- a/program/localization/ja/labels.inc +++ b/program/localization/ja/labels.inc @@ -91,6 +91,7 @@ $labels['saturday'] = '土曜日'; $labels['today'] = '今日'; // toolbar buttons +$labels['checkmail'] = '新しいメッセージがあるように確認'; $labels['writenewmessage'] = '新規メッセージを作成する'; $labels['replytomessage'] = 'メッセージを返信する'; $labels['replytoallmessage'] = '送信者とすべての受信者に返信する'; diff --git a/program/localization/ja/messages.inc b/program/localization/ja/messages.inc index 3dcca721a..4847bd41d 100644 --- a/program/localization/ja/messages.inc +++ b/program/localization/ja/messages.inc @@ -36,6 +36,8 @@ $messages['loading'] = '読み込み中...'; $messages['loadingdata'] = 'データを読み込み中です...'; +$messages['checkingmail'] = '新しいメッセージがあるように確認...'; + $messages['sendingmessage'] = 'メッセージの送信中です...'; $messages['messagesent'] = 'メッセージの送信に成功しました。'; diff --git a/program/localization/pt_BR/labels.inc b/program/localization/pt_BR/labels.inc index a396b6492..1b9e641e6 100644 --- a/program/localization/pt_BR/labels.inc +++ b/program/localization/pt_BR/labels.inc @@ -90,6 +90,7 @@ $labels['saturday'] = 'Sábado'; $labels['today'] = 'Hoje'; // toolbar buttons +$labels['checkmail'] = 'Verificar para ver se há mensagens novas'; $labels['writenewmessage'] = 'Criar nova mensagem'; $labels['replytomessage'] = 'Responder'; $labels['replytoallmessage'] = 'Responder para todos'; diff --git a/program/localization/pt_BR/messages.inc b/program/localization/pt_BR/messages.inc index ae3b70270..fb33bcf47 100644 --- a/program/localization/pt_BR/messages.inc +++ b/program/localization/pt_BR/messages.inc @@ -34,6 +34,8 @@ $messages['mailboxempty'] = 'A caixa postal está vazia'; $messages['loadingdata'] = 'Carregando informações...'; +$messages['checkingmail'] = 'Verificar para ver se há mensagens novas...'; + $messages['messagesent'] = 'Mensagem enviada'; $messages['savingmessage'] = 'Mensagem do Saving...'; diff --git a/program/localization/pt_PT/labels.inc b/program/localization/pt_PT/labels.inc index e69221001..2a26c544f 100644 --- a/program/localization/pt_PT/labels.inc +++ b/program/localization/pt_PT/labels.inc @@ -89,6 +89,7 @@ $labels['saturday'] = 'Sábado'; $labels['today'] = 'Hoje'; // toolbar buttons +$labels['checkmail'] = 'Verificar para ver se há mensagens novas'; $labels['writenewmessage'] = 'Criar nova mensagem'; $labels['replytomessage'] = 'Responder'; $labels['replytoallmessage'] = 'Responder para todos'; diff --git a/program/localization/pt_PT/messages.inc b/program/localization/pt_PT/messages.inc index 377f9659f..b204ea448 100644 --- a/program/localization/pt_PT/messages.inc +++ b/program/localization/pt_PT/messages.inc @@ -35,6 +35,8 @@ $messages['loading'] = 'Carregando...'; $messages['loadingdata'] = 'Carregando Informações...'; +$messages['checkingmail'] = 'Verificar para ver se há mensagens novas...'; + $messages['sendingmessage'] = 'A enviar mensagem...'; $messages['messagesent'] = 'Mensagem enviada'; diff --git a/program/localization/ru/labels.inc b/program/localization/ru/labels.inc index a434b0550..699403708 100755 --- a/program/localization/ru/labels.inc +++ b/program/localization/ru/labels.inc @@ -91,6 +91,7 @@ $labels['saturday'] = 'Суббота'; $labels['today'] = 'Сегодня'; // toolbar buttons +$labels['checkmail'] = 'Проверять для новых сообщений'; $labels['writenewmessage'] = 'Новое сообщение'; $labels['replytomessage'] = 'Ответить'; $labels['replytoallmessage'] = 'Ответить всем'; diff --git a/program/localization/ru/messages.inc b/program/localization/ru/messages.inc index 393d24627..0d1f69f8c 100755 --- a/program/localization/ru/messages.inc +++ b/program/localization/ru/messages.inc @@ -36,6 +36,8 @@ $messages['loading'] = 'Загрузка...'; $messages['loadingdata'] = 'Загрузка данных...'; +$messages['checkingmail'] = 'Проверять для новых сообщений...'; + $messages['sendingmessage'] = 'Отправка сообщения...'; $messages['messagesent'] = 'Сообщение отправлено'; diff --git a/program/steps/mail/check_recent.inc b/program/steps/mail/check_recent.inc index 8a563c4c4..e51cbf867 100644 --- a/program/steps/mail/check_recent.inc +++ b/program/steps/mail/check_recent.inc @@ -9,40 +9,48 @@ | Licensed under the GNU GPL | | | | PURPOSE: | - | Check for recent messages | + | Check for recent messages, in all mailboxes | | | +-----------------------------------------------------------------------+ | Author: Thomas Bruederli <roundcube@gmail.com> | +-----------------------------------------------------------------------+ - $Id$ + $Id: check_recent.inc 233 2006-06-26 17:31:20Z richs $ */ $REMOTE_REQUEST = TRUE; -$mbox_name = $IMAP->get_mailbox_name(); -if ($recent_count = $IMAP->messagecount(NULL, 'RECENT', TRUE)) +$a_mailboxes = $IMAP->list_mailboxes(); + +foreach ($a_mailboxes as $mbox_name) { - $count = $IMAP->messagecount(); - $unread_count = $IMAP->messagecount(NULL, 'UNSEEN', TRUE); - - $commands = sprintf("this.set_unread_count('%s', %d, true);\n", addslashes($mbox_name), $unread_count); - $commands .= sprintf("this.set_env('messagecount', %d);\n", $count); - $commands .= sprintf("this.set_rowcount('%s');\n", rcmail_get_messagecount_text()); - $commands .= sprintf("this.set_quota('%s');\n", $IMAP->get_quota()); - - // add new message headers to list - $a_headers = array(); - for ($i=$recent_count, $id=$count-$recent_count+1; $i>0; $i--, $id++) - $a_headers[] = $IMAP->get_headers($id, NULL, FALSE); - - $commands .= rcmail_js_message_list($a_headers, TRUE); + if ($mbox_name == $IMAP->get_mailbox_name()) + { + if ($recent_count = $IMAP->messagecount(NULL, 'RECENT', TRUE)) + { + $count = $IMAP->messagecount(); + $unread_count = $IMAP->messagecount(NULL, 'UNSEEN', TRUE); + + $commands .= sprintf("this.set_unread_count('%s', %d, true);\n", addslashes($mbox_name), $unread_count); + $commands .= sprintf("this.set_env('messagecount', %d);\n", $count); + $commands .= sprintf("this.set_rowcount('%s');\n", rcmail_get_messagecount_text()); + $commands .= sprintf("this.set_quota('%s');\n", $IMAP->get_quota()); + + // add new message headers to list + $a_headers = array(); + for ($i=$recent_count, $id=$count-$recent_count+1; $i>0; $i--, $id++) + $a_headers[] = $IMAP->get_headers($id, NULL, FALSE); + + $commands .= rcmail_js_message_list($a_headers, TRUE); + } + } + else + { + if ($IMAP->messagecount($mbox_name, 'RECENT')) + $commands .= sprintf("this.set_unread_count('%s', %d);\n", addslashes($mbox_name), $IMAP->messagecount($mbox_name, 'UNSEEN')); + } } -if (strtoupper($mbox_name)!='INBOX' && $IMAP->messagecount('INBOX', 'RECENT')) - $commands = sprintf("this.set_unread_count('INBOX', %d);\n", $IMAP->messagecount('INBOX', 'UNSEEN')); - - rcube_remote_response($commands); ?> diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 8eff11c06..eac4e3747 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -304,10 +304,10 @@ function rcmail_message_list($attrib) // define list of cols to be displayed $a_show_cols = is_array($CONFIG['list_cols']) ? $CONFIG['list_cols'] : array('subject'); - $a_sort_cols = array('subject', 'date', 'from', 'to'); + $a_sort_cols = array('subject', 'date', 'from', 'to', 'size'); // show 'to' instead of from in sent messages - if (strtolower($IMAP->get_mailbox_name())=='sent' && ($f = array_search('from', $a_show_cols)) + if (($IMAP->get_mailbox_name()==$CONFIG['sent_mbox'] || $IMAP->get_mailbox_name()==$CONFIG['drafts_mbox']) && ($f = array_search('from', $a_show_cols)) && !array_search('to', $a_show_cols)) $a_show_cols[$f] = 'to'; diff --git a/program/steps/settings/manage_folders.inc b/program/steps/settings/manage_folders.inc index 86b9bb7fe..dd321f0d8 100644 --- a/program/steps/settings/manage_folders.inc +++ b/program/steps/settings/manage_folders.inc @@ -19,7 +19,7 @@ */ -// init IAMP connection +// init IMAP connection rcmail_imap_init(TRUE); @@ -63,6 +63,27 @@ else if ($_action=='create-folder') show_message('errorsaving', 'error'); } +// rename a mailbox +else if ($_action=='rename-folder') + { + if (!empty($_GET['_folder_oldname']) && !empty($_GET['_folder_newname'])) + $rename = $IMAP->rename_mailbox(get_input_value('_folder_oldname', RCUBE_INPUT_GET), trim(get_input_value('_folder_newname', RCUBE_INPUT_GET)), TRUE); + + if ($rename && $REMOTE_REQUEST) + { + $commands = sprintf("this.add_folder_row('%s');", rep_specialchars_output($rename, 'js')); + $commands .= sprintf("this.remove_folder_row('%s')", rep_specialchars_output($_GET['_folder_oldname'], 'js')); + rcube_remote_response($commands); + } + else if (!$rename && $REMOTE_REQUEST) + { + $commands = show_message('errorsaving', 'error'); + rcube_remote_response($commands); + } + else if (!$rename) + show_message('errorsaving', 'error'); + } + // delete an existing IMAP mailbox else if ($_action=='delete-folder') { @@ -120,6 +141,9 @@ function rcube_subscription_form($attrib) // create list of available folders foreach ($a_unsubscribed as $i => $folder) { + if ($CONFIG['protect_default_folders'] == TRUE && in_array($folder,$CONFIG['default_imap_folders'])) + continue; + $zebra_class = $i%2 ? 'even' : 'odd'; $folder_js = rep_specialchars_output($folder, 'js'); $a_js_folders['rcmrow'.($i+1)] = $folder_js; @@ -176,10 +200,50 @@ function rcube_create_folder_form($attrib) return $out; } +function rcube_rename_folder_form($attrib) + { + global $CONFIG, $IMAP, $JS_OBJECT_NAME; + + list($form_start, $form_end) = get_form_tags($attrib, 'rename-folder'); + unset($attrib['form']); + + // return the complete edit form as table + $out = "$form_start\n"; + + $a_unsubscribed = $IMAP->list_unsubscribed(); + $select_folder = new select(array('name' => '_folder_oldname', 'id' => 'rcmfd_oldfolder')); + + foreach ($a_unsubscribed as $i => $folder) + { + if ($CONFIG['protect_default_folders'] == TRUE && in_array($folder,$CONFIG['default_imap_folders'])) + continue; + + $select_folder->add($folder); + } + + $out .= $select_folder->show(); + + $out .= " to "; + $inputtwo = new textfield(array('name' => '_folder_newname')); + $out .= $inputtwo->show(); + + if (get_boolean($attrib['button'])) + { + $button = new input_field(array('type' => 'button', + 'value' => rcube_label('rename'), + 'onclick' => "$JS_OBJECT_NAME.command('rename-folder',this.form)")); + $out .= $button->show(); + } + + $out .= "\n$form_end"; + + return $out; + } + // add some labels to client rcube_add_label('deletefolderconfirm'); parse_template('managefolders'); -?>
\ No newline at end of file +?> |