diff options
61 files changed, 327 insertions, 78 deletions
@@ -1,6 +1,19 @@ CHANGELOG RoundCube Webmail --------------------------- +2006/06/26 (richs) +---------- +- Added button to immediately check for new messages +- New message checking now displays status "Checking for new messages..." +- New message checking now looks for unread messages in all mailboxes (Feature #1326401) +- Task buttons now respond to clicks by darkening (as in other applications) +- Fixed "Sender" column changing to "Recipient" for "Sent" and "Drafts" message lists +- Added ability to sort messages by "Size" +- Added ability to rename folders (Feature #1326396) +- Added 'protect_default_folders' option to main.inc.php to prevent renames/deletes/unsubscribes of default folders +- Corrected 5 typos of "INSTLL" to "INSTALL" in program/include/main.inc + + 2006/06/25 ---------- - Changed behavior to include host-specific configuration (Bug #1483849) diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist index dda852c48..806ec1a07 100644 --- a/config/main.inc.php.dist +++ b/config/main.inc.php.dist @@ -132,6 +132,9 @@ $rcmail_config['trash_mbox'] = 'Trash'; // display these folders separately in the mailbox list $rcmail_config['default_imap_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash'); +// protect the default folders from renames, deletes, and subscription changes +$rcmail_config['protect_default_folders'] = TRUE; + // Set TRUE if deleted messages should not be displayed // This will make the application run slower $rcmail_config['skip_deleted'] = FALSE; @@ -340,7 +340,7 @@ if ($_task=='settings') if ($_action=='save-prefs') include('program/steps/settings/save_prefs.inc'); - if ($_action=='folders' || $_action=='subscribe' || $_action=='unsubscribe' || $_action=='create-folder' || $_action=='delete-folder') + if ($_action=='folders' || $_action=='subscribe' || $_action=='unsubscribe' || $_action=='create-folder' || $_action=='rename-folder' || $_action=='delete-folder') include('program/steps/settings/manage_folders.inc'); } 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 +?> diff --git a/skins/default/common.css b/skins/default/common.css index d133bec21..6cec3cf9e 100755 --- a/skins/default/common.css +++ b/skins/default/common.css @@ -39,6 +39,7 @@ h3 a, a:active, a:visited { color: #000000; + outline: none; } a.button, a.button:visited, a.tab, a.tab:visited, a.axislist diff --git a/skins/default/images/buttons/add_contact_sel.png b/skins/default/images/buttons/add_contact_sel.png Binary files differnew file mode 100644 index 000000000..effa91ae5 --- /dev/null +++ b/skins/default/images/buttons/add_contact_sel.png diff --git a/skins/default/images/buttons/add_sel.png b/skins/default/images/buttons/add_sel.png Binary files differnew file mode 100644 index 000000000..a6d8197d8 --- /dev/null +++ b/skins/default/images/buttons/add_sel.png diff --git a/skins/default/images/buttons/attach_sel.png b/skins/default/images/buttons/attach_sel.png Binary files differnew file mode 100644 index 000000000..81a4700d0 --- /dev/null +++ b/skins/default/images/buttons/attach_sel.png diff --git a/skins/default/images/buttons/back_sel.png b/skins/default/images/buttons/back_sel.png Binary files differnew file mode 100644 index 000000000..b25acbf2d --- /dev/null +++ b/skins/default/images/buttons/back_sel.png diff --git a/skins/default/images/buttons/compose_sel.png b/skins/default/images/buttons/compose_sel.png Binary files differnew file mode 100644 index 000000000..2efd8cb90 --- /dev/null +++ b/skins/default/images/buttons/compose_sel.png diff --git a/skins/default/images/buttons/contacts_sel.png b/skins/default/images/buttons/contacts_sel.png Binary files differnew file mode 100644 index 000000000..20df77cad --- /dev/null +++ b/skins/default/images/buttons/contacts_sel.png diff --git a/skins/default/images/buttons/delete_sel.png b/skins/default/images/buttons/delete_sel.png Binary files differnew file mode 100644 index 000000000..b4c32c151 --- /dev/null +++ b/skins/default/images/buttons/delete_sel.png diff --git a/skins/default/images/buttons/download_sel.png b/skins/default/images/buttons/download_sel.png Binary files differnew file mode 100644 index 000000000..cfc44b302 --- /dev/null +++ b/skins/default/images/buttons/download_sel.png diff --git a/skins/default/images/buttons/drafts_sel.png b/skins/default/images/buttons/drafts_sel.png Binary files differnew file mode 100644 index 000000000..34419b833 --- /dev/null +++ b/skins/default/images/buttons/drafts_sel.png diff --git a/skins/default/images/buttons/edit_contact_sel.png b/skins/default/images/buttons/edit_contact_sel.png Binary files differnew file mode 100644 index 000000000..616d5838e --- /dev/null +++ b/skins/default/images/buttons/edit_contact_sel.png diff --git a/skins/default/images/buttons/forward_sel.png b/skins/default/images/buttons/forward_sel.png Binary files differnew file mode 100644 index 000000000..90f67bb57 --- /dev/null +++ b/skins/default/images/buttons/forward_sel.png diff --git a/skins/default/images/buttons/inbox_sel.png b/skins/default/images/buttons/inbox_sel.png Binary files differnew file mode 100644 index 000000000..89d661e77 --- /dev/null +++ b/skins/default/images/buttons/inbox_sel.png diff --git a/skins/default/images/buttons/next_sel.png b/skins/default/images/buttons/next_sel.png Binary files differnew file mode 100644 index 000000000..77cb1b106 --- /dev/null +++ b/skins/default/images/buttons/next_sel.png diff --git a/skins/default/images/buttons/previous_sel.png b/skins/default/images/buttons/previous_sel.png Binary files differnew file mode 100644 index 000000000..d102a5345 --- /dev/null +++ b/skins/default/images/buttons/previous_sel.png diff --git a/skins/default/images/buttons/print_sel.png b/skins/default/images/buttons/print_sel.png Binary files differnew file mode 100644 index 000000000..0ddaa3162 --- /dev/null +++ b/skins/default/images/buttons/print_sel.png diff --git a/skins/default/images/buttons/reply_sel.png b/skins/default/images/buttons/reply_sel.png Binary files differnew file mode 100644 index 000000000..76f5eac9e --- /dev/null +++ b/skins/default/images/buttons/reply_sel.png diff --git a/skins/default/images/buttons/replyall_sel.png b/skins/default/images/buttons/replyall_sel.png Binary files differnew file mode 100644 index 000000000..483436cd0 --- /dev/null +++ b/skins/default/images/buttons/replyall_sel.png diff --git a/skins/default/images/buttons/send_sel.png b/skins/default/images/buttons/send_sel.png Binary files differnew file mode 100644 index 000000000..fc3d1337d --- /dev/null +++ b/skins/default/images/buttons/send_sel.png diff --git a/skins/default/images/buttons/source_sel.png b/skins/default/images/buttons/source_sel.png Binary files differnew file mode 100644 index 000000000..4749317ff --- /dev/null +++ b/skins/default/images/buttons/source_sel.png diff --git a/skins/default/images/buttons/spellcheck_sel.png b/skins/default/images/buttons/spellcheck_sel.png Binary files differnew file mode 100644 index 000000000..8c24d6fae --- /dev/null +++ b/skins/default/images/buttons/spellcheck_sel.png diff --git a/skins/default/templates/addressbook.html b/skins/default/templates/addressbook.html index 96b5fbcbe..dcf965604 100644 --- a/skins/default/templates/addressbook.html +++ b/skins/default/templates/addressbook.html @@ -11,18 +11,18 @@ <roundcube:include file="/includes/header.html" /> <div id="abooktoolbar"> -<roundcube:button command="add" imageAct="/images/buttons/add_contact_act.png" imagePas="/images/buttons/add_contact_pas.png" width="32" height="32" title="newcontact" /> -<roundcube:button command="delete" imageAct="/images/buttons/delete_act.png" imagePas="/images/buttons/delete_pas.png" width="32" height="32" title="deletecontact" /> -<roundcube:button command="compose" imageAct="/images/buttons/compose_act.png" imagePas="/images/buttons/compose_pas.png" width="32" height="32" title="composeto" /> -<roundcube:button command="print" imageAct="/images/buttons/print_act.png" imagePas="/images/buttons/print_pas.png" width="32" height="32" title="print" /> -<roundcube:button command="export" imageAct="/images/buttons/download_act.png" imagePas="/images/buttons/download_pas.png" width="32" height="32" title="export" /> -<roundcube:button command="ldappublicsearch" imageAct="/images/buttons/contacts_act.png" imagePas="/images/buttons/contacts_pas.png" width="32" height="32" title="ldapsearch" /> +<roundcube:button command="add" imageSel="/images/buttons/add_contact_sel.png" imageAct="/images/buttons/add_contact_act.png" imagePas="/images/buttons/add_contact_pas.png" width="32" height="32" title="newcontact" /> +<roundcube:button command="delete" imageSel="/images/buttons/delete_sel.png" imageAct="/images/buttons/delete_act.png" imagePas="/images/buttons/delete_pas.png" width="32" height="32" title="deletecontact" /> +<roundcube:button command="compose" imageSel="/images/buttons/compose_sel.png" imageAct="/images/buttons/compose_act.png" imagePas="/images/buttons/compose_pas.png" width="32" height="32" title="composeto" /> +<roundcube:button command="print" imageSel="/images/buttons/print_sel.png" imageAct="/images/buttons/print_act.png" imagePas="/images/buttons/print_pas.png" width="32" height="32" title="print" /> +<roundcube:button command="export" imageSel="/images/buttons/download_sel.png" imageAct="/images/buttons/download_act.png" imagePas="/images/buttons/download_pas.png" width="32" height="32" title="export" /> +<roundcube:button command="ldappublicsearch" imageSel="/images/buttons/contacts_sel.png" imageAct="/images/buttons/contacts_act.png" imagePas="/images/buttons/contacts_pas.png" width="32" height="32" title="ldapsearch" /> </div> <div id="abookcountbar"> -<roundcube:button command="previouspage" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previouspage" /> +<roundcube:button command="previouspage" imageSel="/images/buttons/previous_sel.png" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previouspage" /> <roundcube:object name="recordsCountDisplay" /> -<roundcube:button command="nextpage" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextpage" /> +<roundcube:button command="nextpage" imageSel="/images/buttons/next_sel.png" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextpage" /> </div> <div id="addresslist"> diff --git a/skins/default/templates/compose.html b/skins/default/templates/compose.html index 0544d7ab6..ab8b0ced0 100644 --- a/skins/default/templates/compose.html +++ b/skins/default/templates/compose.html @@ -38,12 +38,12 @@ self.setTimeout('rcmail_auto_save()',300000); <form name="form" action="./" method="post"> <div id="messagetoolbar"> -<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" /> -<roundcube:button command="savedraft" imageAct="/images/buttons/drafts_act.png" imagePas="/images/buttons/drafts_pas.png" width="32" height="32" title="savemessage" /> +<roundcube:button command="list" image="/images/buttons/back_act.png" imageSel="/images/buttons/back_sel.png" imageAct="/images/buttons/back_act.png" width="32" height="32" title="backtolist" /> +<roundcube:button command="send" imageSel="/images/buttons/send_sel.png" imageAct="/images/buttons/send_act.png" imagePas="/images/buttons/send_pas.png" width="32" height="32" title="sendmessage" /> +<!--<roundcube:button command="contacts" imageSel="/images/buttons/contacts_sel.png" imageAct="/images/buttons/contacts_act.png" imagePas="/images/buttons/contacts_pas.png" width="32" height="32" title="addressbook" />--> +<roundcube:button command="spellcheck" imageSel="/images/buttons/spellcheck_sel.png" imageAct="/images/buttons/spellcheck_act.png" imagePas="/images/buttons/spellcheck_pas.png" width="32" height="32" title="checkspelling" /> +<roundcube:button command="add-attachment" imageSel="/images/buttons/attach_sel.png" imageAct="/images/buttons/attach_act.png" imagePas="/images/buttons/attach_pas.png" width="32" height="32" title="addattachment" /> +<roundcube:button command="savedraft" imageSel="/images/buttons/drafts_sel.png" imageAct="/images/buttons/drafts_act.png" imagePas="/images/buttons/drafts_pas.png" width="32" height="32" title="savemessage" /> <div id="priority-selector"> <roundcube:label name="priority" />: <roundcube:object name="prioritySelector" form="form" /> @@ -113,7 +113,7 @@ self.setTimeout('rcmail_auto_save()',300000); <div id="compose-attachments"> <div><roundcube:label name="attachments" /></div> <roundcube:object name="composeAttachmentList" /> -<p><roundcube:button command="add-attachment" imagePas="/images/buttons/add_pas.png" imageAct="/images/buttons/add_act.png" width="23" height="18" title="addattachment" /> +<p><roundcube:button command="add-attachment" imagePas="/images/buttons/add_pas.png" imageSel="/images/buttons/add_sel.png" imageAct="/images/buttons/add_act.png" width="23" height="18" title="addattachment" /> </div> </form> diff --git a/skins/default/templates/mail.html b/skins/default/templates/mail.html index 2e8f38b4d..c2e5316eb 100644 --- a/skins/default/templates/mail.html +++ b/skins/default/templates/mail.html @@ -11,12 +11,13 @@ <roundcube:include file="/includes/header.html" /> <div id="messagetoolbar"> -<roundcube:button command="compose" imageAct="/images/buttons/compose_act.png" imagePas="/images/buttons/compose_pas.png" width="32" height="32" title="writenewmessage" /> -<roundcube:button command="reply" imageAct="/images/buttons/reply_act.png" imagePas="/images/buttons/reply_pas.png" width="32" height="32" title="replytomessage" /> -<roundcube:button command="reply-all" imageAct="/images/buttons/replyall_act.png" imagePas="/images/buttons/replyall_pas.png" width="32" height="32" title="replytoallmessage" /> -<roundcube:button command="forward" imageAct="/images/buttons/forward_act.png" imagePas="/images/buttons/forward_pas.png" width="32" height="32" title="forwardmessage" /> -<roundcube:button command="delete" imageAct="/images/buttons/delete_act.png" imagePas="/images/buttons/delete_pas.png" width="32" height="32" title="deletemessage" /> -<roundcube:button command="print" imageAct="/images/buttons/print_act.png" imagePas="/images/buttons/print_pas.png" width="32" height="32" title="printmessage" /> +<roundcube:button command="checkmail" imageSel="/images/buttons/inbox_sel.png" imageAct="/images/buttons/inbox_act.png" imagePas="/images/buttons/inbox_pas.png" width="32" height="32" title="checkmail" /> +<roundcube:button command="compose" imageSel="/images/buttons/compose_sel.png" imageAct="/images/buttons/compose_act.png" imagePas="/images/buttons/compose_pas.png" width="32" height="32" title="writenewmessage" /> +<roundcube:button command="reply" imageSel="/images/buttons/reply_sel.png" imageAct="/images/buttons/reply_act.png" imagePas="/images/buttons/reply_pas.png" width="32" height="32" title="replytomessage" /> +<roundcube:button command="reply-all" imageSel="/images/buttons/replyall_sel.png" imageAct="/images/buttons/replyall_act.png" imagePas="/images/buttons/replyall_pas.png" width="32" height="32" title="replytoallmessage" /> +<roundcube:button command="forward" imageSel="/images/buttons/forward_sel.png" imageAct="/images/buttons/forward_act.png" imagePas="/images/buttons/forward_pas.png" width="32" height="32" title="forwardmessage" /> +<roundcube:button command="delete" imageSel="/images/buttons/delete_sel.png" imageAct="/images/buttons/delete_act.png" imagePas="/images/buttons/delete_pas.png" width="32" height="32" title="deletemessage" /> +<roundcube:button command="print" imageSel="/images/buttons/print_sel.png" imageAct="/images/buttons/print_act.png" imagePas="/images/buttons/print_pas.png" width="32" height="32" title="printmessage" /> </div> <div id="quicksearchbar"> @@ -24,9 +25,9 @@ </div> <div id="messagecountbar"> -<roundcube:button command="previouspage" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previousmessages" /> +<roundcube:button command="previouspage" imageSel="/images/buttons/previous_sel.png" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previousmessages" /> <roundcube:object name="messageCountDisplay" /> -<roundcube:button command="nextpage" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextmessages" /> +<roundcube:button command="nextpage" imageSel="/images/buttons/next_sel.png" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextmessages" /> </div> <div id="mailboxlist-header"><roundcube:label name="mailboxlist" /></div> diff --git a/skins/default/templates/managefolders.html b/skins/default/templates/managefolders.html index e3d6be0e1..a94d73848 100644 --- a/skins/default/templates/managefolders.html +++ b/skins/default/templates/managefolders.html @@ -28,6 +28,17 @@ <roundcube:button command="create-folder" type="input" class="button" label="create" /> </div> </div> + +<div class="settingsbox"> +<div class="boxtitle"><roundcube:label name="renamefolder" /></div> + +<div class="settingspart"> +<roundcube:label name="foldername" />: +<roundcube:object name="renamefolder" form="subscriptionform" /> +<roundcube:button command="rename-folder" type="input" class="button" label="rename" /> +</div> +</div> + </div> </form> diff --git a/skins/default/templates/message.html b/skins/default/templates/message.html index d0540e7df..f802b5a54 100644 --- a/skins/default/templates/message.html +++ b/skins/default/templates/message.html @@ -11,20 +11,20 @@ <roundcube:include file="/includes/header.html" /> <div id="messagecountbar"> -<roundcube:button command="previousmessage" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previousmessages" /> +<roundcube:button command="previousmessage" imageSel="/images/buttons/previous_sel.png" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previousmessages" /> <roundcube:object name="messageCountDisplay" /> -<roundcube:button command="nextmessage" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextmessages" /> +<roundcube:button command="nextmessage" imageSel="/images/buttons/next_sel.png" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextmessages" /> </div> <div id="messagetoolbar"> -<roundcube:button command="list" image="/images/buttons/back_act.png" width="32" height="32" title="backtolist" /> -<roundcube:button command="compose" imageAct="/images/buttons/compose_act.png" imagePas="/images/buttons/compose_pas.png" width="32" height="32" title="writenewmessage" /> -<roundcube:button command="reply" imageAct="/images/buttons/reply_act.png" imagePas="/images/buttons/reply_pas.png" width="32" height="32" title="replytomessage" /> -<roundcube:button command="reply-all" imageAct="/images/buttons/replyall_act.png" imagePas="/images/buttons/replyall_pas.png" width="32" height="32" title="replytoallmessage" /> -<roundcube:button command="forward" imageAct="/images/buttons/forward_act.png" imagePas="/images/buttons/forward_pas.png" width="32" height="32" title="forwardmessage" /> -<roundcube:button command="delete" imageAct="/images/buttons/delete_act.png" imagePas="/images/buttons/delete_pas.png" width="32" height="32" title="deletemessage" /> -<roundcube:button command="print" imageAct="/images/buttons/print_act.png" imagePas="/images/buttons/print_pas.png" width="32" height="32" title="printmessage" /> -<roundcube:button command="viewsource" imageAct="/images/buttons/source_act.png" imagePas="/images/buttons/source_pas.png" width="32" height="32" title="viewsource" /> +<roundcube:button command="list" image="/images/buttons/back_act.png" imageSel="/images/buttons/back_sel.png" imageAct="/images/buttons/back_act.png" width="32" height="32" title="backtolist" /> +<roundcube:button command="compose" imageSel="/images/buttons/compose_sel.png" imageAct="/images/buttons/compose_act.png" imagePas="/images/buttons/compose_pas.png" width="32" height="32" title="writenewmessage" /> +<roundcube:button command="reply" imageSel="/images/buttons/reply_sel.png" imageAct="/images/buttons/reply_act.png" imagePas="/images/buttons/reply_pas.png" width="32" height="32" title="replytomessage" /> +<roundcube:button command="reply-all" imageSel="/images/buttons/replyall_sel.png" imageAct="/images/buttons/replyall_act.png" imagePas="/images/buttons/replyall_pas.png" width="32" height="32" title="replytoallmessage" /> +<roundcube:button command="forward" imageSel="/images/buttons/forward_sel.png" imageAct="/images/buttons/forward_act.png" imagePas="/images/buttons/forward_pas.png" width="32" height="32" title="forwardmessage" /> +<roundcube:button command="delete" imageSel="/images/buttons/delete_sel.png" imageAct="/images/buttons/delete_act.png" imagePas="/images/buttons/delete_pas.png" width="32" height="32" title="deletemessage" /> +<roundcube:button command="print" imageSel="/images/buttons/print_sel.png" imageAct="/images/buttons/print_act.png" imagePas="/images/buttons/print_pas.png" width="32" height="32" title="printmessage" /> +<roundcube:button command="viewsource" imageSel="/images/buttons/source_sel.png" imageAct="/images/buttons/source_act.png" imagePas="/images/buttons/source_pas.png" width="32" height="32" title="viewsource" /> <roundcube:object name="mailboxlist" type="select" noSelection="moveto" maxlength="25" onchange="rcmail.command('moveto', this.options[this.selectedIndex].value)" class="mboxlist" /> </div> |