From 24053e0d308d6c80149b812cda8774ed3d6ed71d Mon Sep 17 00:00:00 2001 From: thomascube Date: Tue, 25 Jul 2006 22:11:50 +0000 Subject: Several bugfixes and improvements. See CHANGELOG for details --- CHANGELOG | 13 ++ program/js/app.js | 322 ++++++++++++++++++++++------- program/lib/imap.inc | 19 +- program/localization/de_CH/labels.inc | 2 + program/localization/de_CH/messages.inc | 2 +- program/localization/de_DE/labels.inc | 2 + program/localization/de_DE/messages.inc | 2 +- program/localization/en_US/labels.inc | 2 +- program/localization/es/labels.inc | 66 +++--- program/localization/es/messages.inc | 24 ++- program/steps/mail/func.inc | 3 + program/steps/settings/manage_folders.inc | 54 +++-- skins/default/addresses.css | 2 +- skins/default/images/icons/edit.png | Bin 0 -> 717 bytes skins/default/settings.css | 32 ++- skins/default/templates/managefolders.html | 16 +- 16 files changed, 403 insertions(+), 158 deletions(-) create mode 100644 skins/default/images/icons/edit.png diff --git a/CHANGELOG b/CHANGELOG index 28a098686..4d3bfa533 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,19 @@ CHANGELOG RoundCube Webmail --------------------------- +2006/07/25 (thomasb) +---------- +- Made folder renaming a bit more ajax-style +- Changed rename-labels and German translation +- Fixed addressbox countbar width (Bug #1483845) +- Fixed refresh interval problems in Safari (Bug #1483902) +- Fixed clear_message_list_header() errors (Bug #1483898) +- Sanity check of $message_set in imap.inc (Bug #1443200) +- Added correct changing of message list headers for Sent folder +- Updated Spanish localization (Ticket #1483887) +- Applied patch #1483846 + + 2006/07/24 (richs) ---------- - Draft window no longer reloads. It saves to an iframe in the background instead (fixes bug #1483869) diff --git a/program/js/app.js b/program/js/app.js index a5ae90d05..47545e240 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -13,6 +13,7 @@ $Id$ */ + // Constants var CONTROL_KEY = 1; var SHIFT_KEY = 2; @@ -247,6 +248,9 @@ function rcube_webmail() document.onmousedown = function(){ return rcube_webmail_client.reset_click(); }; document.onkeydown = function(e){ return rcube_webmail_client.key_pressed(e, msg_list_frame); }; + // set default keep alive interval + if (!this.keep_alive_interval) + this.keep_alive_interval = this._interval; // flag object as complete this.loaded = true; @@ -256,23 +260,27 @@ function rcube_webmail() this.display_message(this.pending_message[0], this.pending_message[1]); // start interval for keep-alive/recent_check signal - if (this._interval && this.task=='mail' && this.gui_objects.messagelist) + if (this.keep_alive_interval && this.task=='mail' && this.gui_objects.messagelist) this._int = setInterval(this.ref+'.check_for_recent()', this.keep_alive_interval); else if (this.task!='login') this._int = setInterval(this.ref+'.send_keep_alive()', this.keep_alive_interval); }; // reset last clicked if user clicks on anything other than the message table - this.reset_click = function() { + this.reset_click = function() + { + var id; this.in_message_list = false; - for (var n=0; n (int)$to_idx)) + return false; //$fields_a["DATE"] = ($IMAP_USE_INTERNAL_DATE?6:1); $fields_a['DATE'] = 1; @@ -932,7 +935,9 @@ function iil_C_FetchThreadHeaders(&$conn, $mailbox, $message_set){ global $clock; global $index_a; - if (empty($message_set)) return false; + list($from_idx, $to_idx) = explode(':', $message_set); + if (empty($message_set) || (isset($to_idx) && (int)$from_idx > (int)$to_idx)) + return false; $result = array(); $uids = iil_C_FetchUIDs($conn, $mailbox); @@ -1013,7 +1018,9 @@ function iil_C_FetchThreadHeaders(&$conn, $mailbox, $message_set){ function iil_C_BuildThreads2(&$conn, $mailbox, $message_set, &$clock){ global $index_a; - if (empty($message_set)) return false; + list($from_idx, $to_idx) = explode(':', $message_set); + if (empty($message_set) || (isset($to_idx) && (int)$from_idx > (int)$to_idx)) + return false; $result=array(); $roots=array(); @@ -1195,8 +1202,10 @@ function iil_C_FetchHeaders(&$conn, $mailbox, $message_set){ $result=array(); $fp = $conn->fp; - if (empty($message_set)) return array(); - + list($from_idx, $to_idx) = explode(':', $message_set); + if (empty($message_set) || (isset($to_idx) && (int)$from_idx > (int)$to_idx)) + return false; + /* Do "SELECT" command */ if (!iil_C_Select($conn, $mailbox)){ $conn->error = "Couldn't select $mailbox"; diff --git a/program/localization/de_CH/labels.inc b/program/localization/de_CH/labels.inc index 2b73ed0b5..d4a467d99 100644 --- a/program/localization/de_CH/labels.inc +++ b/program/localization/de_CH/labels.inc @@ -206,6 +206,8 @@ $labels['foldername'] = 'Ordnername'; $labels['subscribed'] = 'Abonniert'; $labels['create'] = 'Erstellen'; $labels['createfolder'] = 'Neuen Ordner erstellen'; +$labels['rename'] = 'Umbenennen'; +$labels['renamefolder'] = 'Ordner umbenennen'; $labels['deletefolder'] = 'Ordner löschen'; $labels['managefolders'] = 'Ordner verwalten'; diff --git a/program/localization/de_CH/messages.inc b/program/localization/de_CH/messages.inc index 0484b5ded..d3314a9d6 100644 --- a/program/localization/de_CH/messages.inc +++ b/program/localization/de_CH/messages.inc @@ -34,7 +34,7 @@ $messages['mailboxempty'] = 'Ordner ist leer'; $messages['loading'] = $messages['loadingdata'] = 'Daten werden geladen...'; -$messages['checkingmail'] = 'Überprüfung auf neue Anzeigen...'; +$messages['checkingmail'] = 'Überprüfung auf neue Nachrichten...'; $messages['sendingmessage'] = 'Nachricht wird gesendet...'; diff --git a/program/localization/de_DE/labels.inc b/program/localization/de_DE/labels.inc index 1aab071e4..f1cef48d5 100644 --- a/program/localization/de_DE/labels.inc +++ b/program/localization/de_DE/labels.inc @@ -207,6 +207,8 @@ $labels['foldername'] = 'Ordnername'; $labels['subscribed'] = 'Abonniert'; $labels['create'] = 'Erstellen'; $labels['createfolder'] = 'Neuen Ordner erstellen'; +$labels['rename'] = 'Umbenennen'; +$labels['renamefolder'] = 'Ordner umbenennen'; $labels['deletefolder'] = 'Ordner löschen'; $labels['managefolders'] = 'Ordner verwalten'; diff --git a/program/localization/de_DE/messages.inc b/program/localization/de_DE/messages.inc index f084b167b..c6ca701a0 100644 --- a/program/localization/de_DE/messages.inc +++ b/program/localization/de_DE/messages.inc @@ -36,7 +36,7 @@ $messages['mailboxempty'] = 'Ordner ist leer'; $messages['loading'] = $messages['loadingdata'] = 'Daten werden geladen...'; -$messages['checkingmail'] = 'Überprüfung auf neue Anzeigen...'; +$messages['checkingmail'] = 'Überprüfung auf neue Nachrichten...'; $messages['sendingmessage'] = 'Nachricht wird gesendet...'; diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc index 436dacfd0..2170131c2 100644 --- a/program/localization/en_US/labels.inc +++ b/program/localization/en_US/labels.inc @@ -210,7 +210,7 @@ $labels['subscribed'] = 'Subscribed'; $labels['create'] = 'Create'; $labels['createfolder'] = 'Create new folder'; $labels['rename'] = 'Rename'; -$labels['renamefolder'] = 'Rename existing folder'; +$labels['renamefolder'] = 'Rename folder'; $labels['deletefolder'] = 'Delete folder'; $labels['managefolders'] = 'Manage folders'; diff --git a/program/localization/es/labels.inc b/program/localization/es/labels.inc index 3b28244b0..b54302278 100644 --- a/program/localization/es/labels.inc +++ b/program/localization/es/labels.inc @@ -16,7 +16,7 @@ | - 6/2/2006 Translations of new features and improvements) | | - 17/9/2005 First release | +-----------------------------------------------------------------------+ - + $Id$ */ @@ -24,6 +24,7 @@ $labels = array(); // login page +$labels['welcome'] = 'Bienvenido a $product'; $labels['username'] = 'Nombre de usuario'; $labels['password'] = 'Contraseña'; $labels['server'] = 'Servidor'; @@ -37,18 +38,17 @@ $labels['addressbook'] = 'Contactos'; // mailbox names $labels['inbox'] = 'Entrada'; -$labels['drafts'] = 'Bosquejos'; +$labels['drafts'] = 'Borradores'; $labels['sent'] = 'Enviados'; $labels['trash'] = 'Papelera'; -$labels['drafts'] = 'Borradores'; $labels['junk'] = 'Basura'; // message listing $labels['subject'] = 'Asunto'; $labels['from'] = 'Remitente'; $labels['to'] = 'Destinatario'; -$labels['cc'] = 'CC'; -$labels['bcc'] = 'BCC'; +$labels['cc'] = 'Copia'; +$labels['bcc'] = 'Bcc'; $labels['replyto'] = 'Responder'; $labels['date'] = 'Fecha'; $labels['size'] = 'Tamaño'; @@ -70,17 +70,18 @@ $labels['filesize'] = 'Tamaño del fichero'; $labels['preferhtml'] = 'Prefiero HTML'; $labels['htmlmessage'] = 'Mensaje HTML'; +$labels['prettydate'] = 'Fecha detallada'; $labels['addtoaddressbook'] = 'Añadir a contactos'; // weekdays short -$labels['sun'] = 'D'; -$labels['mon'] = 'L'; -$labels['tue'] = 'M'; -$labels['wed'] = 'X'; -$labels['thu'] = 'J'; -$labels['fri'] = 'V'; -$labels['sat'] = 'S'; +$labels['sun'] = 'Dom'; +$labels['mon'] = 'Lun'; +$labels['tue'] = 'Mar'; +$labels['wed'] = 'Mie'; +$labels['thu'] = 'Jue'; +$labels['fri'] = 'Vie'; +$labels['sat'] = 'Sáb'; // weekdays long $labels['sunday'] = 'Domingo'; @@ -94,11 +95,12 @@ $labels['saturday'] = 'Sábado'; $labels['today'] = 'Hoy'; // toolbar buttons -$labels['checkmail'] = 'Comprobación para saber si hay nuevos mensajes'; +$labels['checkmail'] = 'Revisar si hay nuevos mensajes'; $labels['writenewmessage'] = 'Crear nuevo mensaje'; $labels['replytomessage'] = 'Responder al mensaje'; +$labels['replytoallmessage'] = 'Responder al emisor y a todos los destinatarios'; $labels['forwardmessage'] = 'Reenviar mensaje'; -$labels['deletemessage'] = 'Move message to trash'; +$labels['deletemessage'] = 'Mover mensaje a la papelera'; $labels['printmessage'] = 'Imprimir este mensaje'; $labels['previousmessages'] = 'Mostrar mensajes anteriores'; $labels['nextmessages'] = 'Mostrar mensajes siguientes'; @@ -116,27 +118,35 @@ $labels['empty'] = 'Vaciar'; $labels['purge'] = 'Eliminar'; $labels['quota'] = 'Uso de disco'; +$labels['unknown'] = 'desconocido'; +$labels['unlimited'] = 'sin límite'; + +$labels['quicksearch'] = 'Búsqueda rápida'; +$labels['resetsearch'] = 'Reajustar la búsqueda'; // message compose $labels['compose'] = 'Escribir un mensaje'; -$labels['savemessage'] = 'Excepto este bosquejo'; +$labels['savemessage'] = 'Almacenar como borrador'; $labels['sendmessage'] = 'Enviar ahora el mensaje'; $labels['addattachment'] = 'Añadir un fichero'; $labels['charset'] = 'Codigo'; +$labels['returnreceipt'] = 'Recibo de entrega'; + +$labels['checkspelling'] = 'Revisar la ortografía'; +$labels['resumeediting'] = 'Continuar el editaje'; +$labels['revertto'] = 'Revertir a'; $labels['attachments'] = 'Adjuntos'; $labels['upload'] = 'Subir'; $labels['close'] = 'Cerrar'; - $labels['low'] = 'Bajo'; $labels['lowest'] = 'Bajísimo'; $labels['normal'] = 'Normal'; $labels['high'] = 'Alto'; $labels['highest'] = 'Altísimo'; -$labels['showimages'] = 'Mostrar imágenes'; $labels['nosubject'] = '(sin asunto)'; $labels['showimages'] = 'Mostrar imágenes'; @@ -148,25 +158,27 @@ $labels['firstname'] = 'Nombre'; $labels['surname'] = 'Apellido'; $labels['email'] = 'E-Mail'; -$labels['addcontact'] = 'Añadir nuevo contacto'; -$labels['editcontact'] = 'Editar contacto'; - $labels['edit'] = 'Editar'; $labels['cancel'] = 'Cancelar'; -$labels['save'] = 'Salvar'; +$labels['save'] = 'Almacenar'; $labels['delete'] = 'Eliminar'; $labels['newcontact'] = 'Crear nuevo contacto'; +$labels['addcontact'] = 'Añadir nuevo contacto'; +$labels['editcontact'] = 'Editar contacto'; $labels['deletecontact'] = 'Eliminar contactos seleccionados'; $labels['composeto'] = 'Redactar correo a'; $labels['contactsfromto'] = 'Contactos $from a $to de $count'; $labels['print'] = 'Imprimir'; $labels['export'] = 'Exportar'; +$labels['previouspage'] = 'Mostrar grupo anterior'; +$labels['nextpage'] = 'Mostrar grupo siguiente'; + // LDAP search $labels['ldapsearch'] = 'Búsqueda en el directorio LDAP'; -$labels['ldappublicsearchname'] = 'Nombre'; +$labels['ldappublicsearchname'] = 'Nombre'; $labels['ldappublicsearchtype'] = '¿Búsqueda exacta?'; $labels['ldappublicserverselect'] = 'Elegir servidores'; $labels['ldappublicsearchfield'] = 'Buscando'; @@ -192,16 +204,17 @@ $labels['setdefault'] = 'Seleccionar opción por defecto'; $labels['language'] = 'Idioma'; $labels['timezone'] = 'Zona horaria'; $labels['pagesize'] = 'Filas por página'; - $labels['signature'] = 'Firma'; +$labels['dstactive'] = 'Cambio de horario'; $labels['folder'] = 'Carpeta'; - $labels['folders'] = 'Carpetas'; $labels['foldername'] = 'Nombre de carpeta'; $labels['subscribed'] = 'Suscribirse'; $labels['create'] = 'Crear'; $labels['createfolder'] = 'Crear nueva carpeta'; +$labels['rename'] = 'Renombrar'; +$labels['renamefolder'] = 'Renombrar carpeta'; $labels['deletefolder'] = 'Eliminar carpeta'; $labels['managefolders'] = 'Gestionar carpetas'; @@ -209,7 +222,4 @@ $labels['sortby'] = 'Ordenar por'; $labels['sortasc'] = 'Orden ascendente'; $labels['sortdesc'] = 'Orden descendente'; -$labels['prettydate'] = 'Formato de fecha'; -$labels['replytoallmessage'] = 'Responder al emisor y a todos los destinatarios'; - -?> +?> \ No newline at end of file diff --git a/program/localization/es/messages.inc b/program/localization/es/messages.inc index 675bc8498..865807d56 100644 --- a/program/localization/es/messages.inc +++ b/program/localization/es/messages.inc @@ -17,7 +17,7 @@ | - 17/9/2005 First release | +-----------------------------------------------------------------------+ - + $Id$ */ @@ -43,17 +43,17 @@ $messages['loading'] = 'Cargando...'; $messages['loadingdata'] = 'Cargando datos...'; -$messages['checkingmail'] = 'Comprobación para saber si hay nuevos mensajes...'; +$messages['checkingmail'] = 'Verificar si hay nuevos mensajes...'; $messages['sendingmessage'] = 'Enviando mensaje...'; $messages['messagesent'] = 'Mensaje enviado correctamente'; -$messages['savingmessage'] = 'Mensaje del ahorro...'; +$messages['savingmessage'] = 'Guardar mensaje...'; -$messages['messagesaved'] = 'Mensaje ahorrado a los bosquejos'; +$messages['messagesaved'] = 'Mensaje guardado en los bosquejos'; -$messages['successfullysaved'] = 'guardado correctamente'; +$messages['successfullysaved'] = 'Guardado correctamente'; $messages['addedsuccessfully'] = 'Contacto añadido correctamente a la libreta de direcciones'; @@ -89,7 +89,7 @@ $messages['nopagesizewarning'] = 'Por favor, introduzca un tamaño de página'; $messages['norecipientwarning'] = 'Por favor, introduzca al menos un destinatario'; -$messages['nosubjectwarning'] = 'El campo "asunto" esta vacio. ¿Desea introducir el campo "asunto" al mensaje?'; +$messages['nosubjectwarning'] = 'El campo "Asunto" esta vacio. ¿Desea redactarlo en este momento?'; $messages['nobodywarning'] = '¿Quiere enviar este mensaje sin texto?'; @@ -101,4 +101,14 @@ $messages['nocontactsreturned'] = 'No se han encontrado contactos'; $messages['nosearchname'] = 'Por favor, introduzca un nombre o la dirección email'; -?> +$messages['searchsuccessful'] = 'Se encontró $nr mensajes'; + +$messages['searchnomatch'] = 'La busqueda no obtuvo resultados'; + +$messages['searching'] = 'Buscando...'; + +$messages['checking'] = 'Revisando...'; + +$messages['nospellerrors'] = 'No se encontró errores ortográficos'; + +?> \ No newline at end of file diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 376c0bf93..b1d3d8b6b 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -289,6 +289,9 @@ function rcmail_message_list($attrib) // check to see if we have some settings for sorting $sort_col = $_SESSION['sort_col']; $sort_order = $_SESSION['sort_order']; + + // add some labels to client + rcube_add_label('from', 'to'); // get message headers $a_headers = $IMAP->list_headers('', '', $sort_col, $sort_order); diff --git a/program/steps/settings/manage_folders.inc b/program/steps/settings/manage_folders.inc index 7274bdc50..770bac2fd 100644 --- a/program/steps/settings/manage_folders.inc +++ b/program/steps/settings/manage_folders.inc @@ -71,13 +71,15 @@ else if ($_action=='rename-folder') if ($rename && $REMOTE_REQUEST) { - $commands = sprintf("this.add_folder_row('%s');\n", addslashes(rep_specialchars_output($rename, 'js'))); - $commands .= sprintf("this.remove_folder_row('%s');", rep_specialchars_output($_GET['_folder_oldname'], 'js')); + $commands = sprintf("this.replace_folder_row('%s','%s');", + addslashes(rep_specialchars_output($rename, 'js')), + rep_specialchars_output($_GET['_folder_oldname'], 'js')); rcube_remote_response($commands); } else if (!$rename && $REMOTE_REQUEST) { - $commands = show_message('errorsaving', 'error'); + $commands = "this.reset_folder_rename();\n"; + $commands .= show_message('errorsaving', 'error'); rcube_remote_response($commands); } else if (!$rename) @@ -121,7 +123,10 @@ function rcube_subscription_form($attrib) // add table header $out .= "\n"; - $out .= sprintf('%s%s', rcube_label('foldername'), rcube_label('subscribed')); + $out .= sprintf('%s%s'. + '  ', + rcube_label('foldername'), rcube_label('subscribed')); + $out .= "\n\n\n"; @@ -132,31 +137,46 @@ function rcube_subscription_form($attrib) $checkbox_subscribe = new checkbox(array('name' => '_subscribed[]', 'onclick' => "$JS_OBJECT_NAME.command(this.checked?'subscribe':'unsubscribe',this.value)")); - if ($attrib['deleteicon']) - $button = sprintf('%s', $CONFIG['skin_path'], $attrib['deleteicon'], rcube_label('delete')); + if (!empty($attrib['deleteicon'])) + $del_button = sprintf('%s', $CONFIG['skin_path'], $attrib['deleteicon'], rcube_label('delete')); else - $button = rcube_label('delete'); + $del_button = rcube_label('delete'); + if (!empty($attrib['renameicon'])) + $edit_button = sprintf('%s', $CONFIG['skin_path'], $attrib['renameicon'], rcube_label('rename')); + else + $del_button = rcube_label('rename'); // 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; - + $protected = ($CONFIG['protect_default_folders'] == TRUE && in_array($folder,$CONFIG['default_imap_folders'])); $zebra_class = $i%2 ? 'even' : 'odd'; $folder_js = rep_specialchars_output($folder, 'js'); - $a_js_folders['rcmrow'.($i+1)] = $folder_js; + + if (!$protected) + $a_js_folders['rcmrow'.($i+1)] = $folder_js; - $out .= sprintf('%s%s%s', + $out .= sprintf('%s%s', $i+1, $zebra_class, rep_specialchars_output(rcube_charset_convert($folder, 'UTF-7', 'UTF-8'), 'html', 'all'), - $checkbox_subscribe->show(in_array($folder, $a_subscribed)?$folder:'', array('value' => $folder)), - $JS_OBJECT_NAME, - $folder_js, - rcube_label('deletefolder'), - $button); + $checkbox_subscribe->show(in_array($folder, $a_subscribed)?$folder:'', array('value' => $folder, 'disabled' => $protected))); + + // add rename and delete buttons + if (!$protected) + $out .= sprintf('%s'. + '%s', + $JS_OBJECT_NAME, + $folder_js, + rcube_label('renamefolder'), + $edit_button, + $JS_OBJECT_NAME, + $folder_js, + rcube_label('deletefolder'), + $del_button); + else + $out .= ''; $out .= "\n"; } diff --git a/skins/default/addresses.css b/skins/default/addresses.css index a0fb15c8a..5bb6c61d7 100644 --- a/skins/default/addresses.css +++ b/skins/default/addresses.css @@ -19,7 +19,7 @@ position: absolute; top: 60px; left: 490px; - width: 200px; + width: 240px; height: 20px; text-align: left; } diff --git a/skins/default/images/icons/edit.png b/skins/default/images/icons/edit.png new file mode 100644 index 000000000..9b40b5c7b Binary files /dev/null and b/skins/default/images/icons/edit.png differ diff --git a/skins/default/settings.css b/skins/default/settings.css index fe6a5898b..c172576fd 100644 --- a/skins/default/settings.css +++ b/skins/default/settings.css @@ -67,6 +67,15 @@ span.tablink-selected a left: 20px; } +#folder-manager +{ + width: 500px; + bottom: 120px; + overflow: auto; + border: 1px solid #999999; + height: expression((parseInt(document.documentElement.clientHeight)-215)+'px'); +} + #identities-table { width: 500px; @@ -101,6 +110,15 @@ span.tablink-selected a padding-right: 10px; } +#bottomboxes +{ + position: absolute; + width: 500px; + height: 100px; + left: 20px; + bottom: 20px; +} + #userprefs-title, #identity-title, div.boxtitle, @@ -132,8 +150,8 @@ div.settingspart #subscription-table { - width: 500px; - border: 1px solid #999999; + width: 100%; + table-layout: fixed; } #subscription-table tbody td @@ -145,10 +163,12 @@ div.settingspart background-color: #F9F9F9; } -/* -#subscription-table tbody td select +#subscription-table td.name { - width: 150px; + width: 280px; } -*/ +#subscription-table td.subscribed +{ + width: 80px; +} diff --git a/skins/default/templates/managefolders.html b/skins/default/templates/managefolders.html index a94d73848..d37861916 100644 --- a/skins/default/templates/managefolders.html +++ b/skins/default/templates/managefolders.html @@ -16,9 +16,11 @@
- + deleteIcon="/images/icons/folder-trash.png" + renameIcon="/images/icons/edit.png" /> +
+
@@ -29,16 +31,6 @@
-
-
- -
-:  - - -
-
- -- cgit v1.2.3