Several bugfixes and improvements. See CHANGELOG for details

release-0.6
thomascube 19 years ago
parent f0f98fb108
commit 24053e0d30

@ -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)

@ -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<this.selection.length; n++) {
for (var n=0; n<this.selection.length; n++)
{
id = this.selection[n];
if (this.list_rows[id].obj) {
if (this.list_rows[id] && this.list_rows[id].obj)
{
this.set_classname(this.list_rows[id].obj, 'selected', false);
this.set_classname(this.list_rows[id].obj, 'unfocused', true);
}
}
};
}
}
};
this.click_on_list = function(e)
{
@ -619,9 +627,10 @@ 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();
// Reset message list header, unless returning from compose/read/etc
// don't know what this is good for (thomasb, 2006/07/25)
//if (this.env.mailbox != props && this.message_rows)
// this.clear_message_list_header();
this.list_mailbox(props);
}
@ -645,7 +654,7 @@ function rcube_webmail()
else
sort_order = this.env.sort_order;
}
if (this.env.sort_col==sort_col && this.env.sort_order==sort_order)
break;
@ -1406,7 +1415,9 @@ function rcube_webmail()
}
}
}
if (this.last_selected != 0) { this.set_classname(this.list_rows[this.last_selected].obj, 'focused', false);}
if (this.last_selected != 0 && this.list_rows[this.last_selected])
this.set_classname(this.list_rows[this.last_selected].obj, 'focused', false);
this.last_selected = id;
this.set_classname(this.list_rows[id].obj, 'focused', true);
};
@ -1596,19 +1607,25 @@ 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 table;
if (table = this.gui_objects.messagelist)
{
if (table.colgroup)
table.removeChild(table.colgroup);
if (table.tHead)
table.removeChild(table.tHead);
var thead = document.createElement('THEAD');
table.removeChild(table.thead);
table.insertBefore(thead, table.tBodies[0]);
var colgroup = document.createElement('COLGROUP');
var thead = document.createElement('THEAD');
table.insertBefore(colgroup, table.tBodies[0]);
table.insertBefore(thead, table.tBodies[0]);
}
};
this.expunge_mailbox = function(mbox)
{
var lock = false;
@ -2640,8 +2657,12 @@ function rcube_webmail()
};
// tell server to create and subscribe a new mailbox
this.create_folder = function(name)
{
if (this.edit_folder)
this.reset_folder_rename();
var form;
if ((form = this.gui_objects.editform) && form.elements['_folder_name'])
name = form.elements['_folder_name'].value;
@ -2652,37 +2673,192 @@ function rcube_webmail()
form.elements['_folder_name'].focus();
};
// entry point for folder renaming
this.rename_folder = function(props)
{
var form;
if ((form = this.gui_objects.editform) && form.elements['_folder_oldname'] && form.elements['_folder_newname'])
{
var form, oldname, newname;
// rename a specific mailbox
if (props)
this.edit_foldername(props);
// use a dropdown and input field (old behavior)
else 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));
};
// start editing the mailbox name.
// this will replace the name string with an input field
this.edit_foldername = function(folder)
{
var temp, row, form;
var id = this.get_folder_row_id(folder);
// reset current renaming
if (temp = this.edit_folder)
{
this.reset_folder_rename();
if (temp == id)
return;
}
if (id && (row = document.getElementById(id)))
{
this.name_input = document.createElement('INPUT');
this.name_input.value = this.env.subscriptionrows[id];
this.name_input.style.width = '100%';
this.name_input.onkeypress = function(e){ rcmail.name_input_keypress(e); };
row.cells[0].replaceChild(this.name_input, row.cells[0].firstChild);
this.edit_folder = id;
this.name_input.select();
if (form = this.gui_objects.editform)
form.onsubmit = function(){ return false; };
}
};
// remove the input field and write the current mailbox name to the table cell
this.reset_folder_rename = function()
{
var cell = this.name_input ? this.name_input.parentNode : null;
if (cell && this.edit_folder)
cell.innerHTML = this.env.subscriptionrows[this.edit_folder];
this.edit_folder = null;
};
// handler for keyboard events on the input field
this.name_input_keypress = function(e)
{
var key = document.all ? event.keyCode : document.getElementById ? e.keyCode : 0;
// enter
if (key==13)
{
var newname = this.name_input ? this.name_input.value : null;
if (this.edit_folder && newname)
this.http_request('rename-folder', '_folder_oldname='+escape(this.env.subscriptionrows[this.edit_folder])+'&_folder_newname='+escape(newname));
}
// escape
else if (key==27)
this.reset_folder_rename();
};
// delete a specific mailbox with all its messages
this.delete_folder = function(folder)
{
if (this.edit_folder)
this.reset_folder_rename();
if (folder)
{
this.http_request('delete-folder', '_mboxes='+escape(folder));
}
};
this.remove_folder_row = function(folder)
// add a new folder to the subscription list by cloning a folder row
this.add_folder_row = function(name, replace)
{
for (var id in this.env.subscriptionrows)
if (this.env.subscriptionrows[id]==folder)
name = name.replace('\\',"");
if (!this.gui_objects.subscriptionlist)
return false;
for (var refid in this.env.subscriptionrows)
if (this.env.subscriptionrows[refid]!=null)
break;
var refrow, form;
var tbody = this.gui_objects.subscriptionlist.tBodies[0];
var id = replace && replace.id ? replace.id : tbody.childNodes.length+1;
if (!id || !(refrow = document.getElementById(refid)))
{
// Refresh page if we don't have a table row to clone
location.href = this.env.comm_path+'&_action=folders';
}
else
{
// clone a table row if there are existing rows
var row = this.clone_table_row(refrow);
row.id = 'rcmrow'+id;
if (replace)
tbody.replaceChild(row, replace);
else
tbody.appendChild(row);
}
// add to folder/row-ID map
this.env.subscriptionrows[row.id] = name;
// set folder name
row.cells[0].innerHTML = name;
if (row.cells[1] && row.cells[1].firstChild.tagName=='INPUT')
{
row.cells[1].firstChild.value = name;
row.cells[1].firstChild.checked = true;
}
if (row.cells[2] && row.cells[2].firstChild.tagName=='A')
row.cells[2].firstChild.onclick = new Function(this.ref+".command('rename-folder','"+name.replace('\'','\\\'')+"')");
if (row.cells[3] && row.cells[3].firstChild.tagName=='A')
row.cells[3].firstChild.onclick = new Function(this.ref+".command('delete-folder','"+name.replace('\'','\\\'')+"')");
// add new folder to rename-folder list and clear input field
if (!replace && (form = this.gui_objects.editform) && form.elements['_folder_name'])
{
form.elements['_folder_oldname'].options[form.elements['_folder_oldname'].options.length] = new Option(name,name);
form.elements['_folder_name'].value = '';
}
};
// replace an existing table row with a new folder line
this.replace_folder_row = function(newfolder, oldfolder)
{
var id = this.get_folder_row_id(oldfolder);
var row = document.getElementById(id);
// replace an existing table row (if found)
this.add_folder_row(newfolder, row);
this.env.subscriptionrows[id] = null;
// rename folder in rename-folder dropdown
var form, elm;
if ((form = this.gui_objects.editform) && (elm = form.elements['_folder_oldname']))
{
for (var i=0;i<elm.options.length;i++)
{
if (elm.options[i].value == oldfolder)
{
elm.options[i].text = newfolder;
elm.options[i].value = newfolder;
break;
}
}
form.elements['_folder_newname'].value = '';
}
};
// remove the table row of a specific mailbox from the table
// (the row will not be removed, just hidden)
this.remove_folder_row = function(folder)
{
var row;
var id = this.get_folder_row_id(folder);
if (id && (row = document.getElementById(id)))
row.style.display = 'none';
@ -2693,13 +2869,14 @@ function rcube_webmail()
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;
break;
}
}
}
form.elements['_folder_newname'].value='';
form.elements['_folder_newname'].value = '';
};
@ -2759,52 +2936,15 @@ function rcube_webmail()
};
// add a new folder to the subscription list by cloning a folder row
this.add_folder_row = function(name)
{
name = name.replace('\\',"");
if (!this.gui_objects.subscriptionlist)
return false;
var tbody = this.gui_objects.subscriptionlist.tBodies[0];
var id = tbody.childNodes.length+1;
if (!tbody.rows[0])
{
// Refresh to create the first table row
location.href = this.env.comm_path+'&_action=folders';
}
else
{
// clone a table row if there are existing rows
var row = this.clone_table_row(tbody.rows[0]);
row.id = 'rcmrow'+id;
tbody.appendChild(row);
}
// add to folder/row-ID map
this.env.subscriptionrows[row.id] = name;
// set folder name
row.cells[0].innerHTML = name;
if (row.cells[1].firstChild.tagName=='INPUT')
{
row.cells[1].firstChild.value = name;
row.cells[1].firstChild.checked = true;
}
if (row.cells[2].firstChild.tagName=='A')
row.cells[2].firstChild.onclick = new Function(this.ref+".command('delete-folder','"+name.replace('\'','\\\'')+"')");
var form;
if ((form = this.gui_objects.editform) && form.elements['_folder_name'])
form.elements['_folder_name'].value = '';
// add new folder to rename-folder list
form.elements['_folder_oldname'].options[form.elements['_folder_oldname'].options.length] = new Option(name,name);
};
// helper method to find a specific mailbox row ID
this.get_folder_row_id = function(folder)
{
for (var id in this.env.subscriptionrows)
if (this.env.subscriptionrows[id]==folder)
break;
return id;
};
// duplicate a specific table row
this.clone_table_row = function(row)
@ -3033,11 +3173,35 @@ function rcube_webmail()
this.env.mailbox = mbox;
};
// for reordering column array, Konqueror workaround
this.set_message_coltypes = function(coltypes)
{
this.coltypes = coltypes;
}
this.coltypes = coltypes;
// set correct list titles
var cell, col;
var thead = this.gui_objects.messagelist ? this.gui_objects.messagelist.tHead : null;
for (var n=0; thead && n<this.coltypes.length; n++)
{
col = this.coltypes[n];
if ((cell = thead.rows[0].cells[n+1]) && (col=='from' || col=='to'))
{
// if we have links for sorting, it's a bit more complicated...
if (cell.firstChild && cell.firstChild.tagName=='A')
{
cell.firstChild.innerHTML = this.get_label(this.coltypes[n]);
cell.firstChild.onclick = function(){ return rcmail.command('sort', this.__col, this); };
cell.firstChild.__col = col;
}
else
cell.innerHTML = this.get_label(this.coltypes[n]);
cell.id = 'rcmHead'+col;
}
}
};
// create a table row in the message list
this.add_message_row = function(uid, cols, flags, attachment, attop)

@ -45,6 +45,7 @@
- Added function iil_C_ID2UID()
- Casting date parts in iil_StrToTime() to avoid mktime() warnings
- Also acceppt LIST responses in iil_C_ListSubscribed()
- Sanity check of $message_set in iil_C_FetchHeaders(), iil_C_FetchHeaderIndex(), iil_C_FetchThreadHeaders()
- Removed some debuggers (echo ...)
********************************************************/
@ -676,7 +677,9 @@ function iil_C_FetchHeaderIndex(&$conn, $mailbox, $message_set, $index_field, $n
if (empty($index_field)) $index_field="DATE";
$index_field = strtoupper($index_field);
if ((empty($message_set)) || ($message_set == "1:0")) 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;
//$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";

@ -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';

@ -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...';

@ -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';

@ -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...';

@ -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';

@ -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';
?>
?>

@ -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';
?>

@ -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);

@ -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 .= "<thead><tr>\n";
$out .= sprintf('<td>%s</td><td>%s</td><td></td>', rcube_label('foldername'), rcube_label('subscribed'));
$out .= sprintf('<td class="name">%s</td><td class="subscribed">%s</td>'.
'<td class="rename">&nbsp;</td><td class="delete">&nbsp;</td>',
rcube_label('foldername'), rcube_label('subscribed'));
$out .= "\n</tr></thead>\n<tbody>\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('<img src="%s%s" alt="%s" border="0" />', $CONFIG['skin_path'], $attrib['deleteicon'], rcube_label('delete'));
if (!empty($attrib['deleteicon']))
$del_button = sprintf('<img src="%s%s" alt="%s" border="0" />', $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('<img src="%s%s" alt="%s" border="0" />', $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('<tr id="rcmrow%d" class="%s"><td>%s</td><td>%s</td><td><a href="#delete" onclick="%s.command(\'delete-folder\',\'%s\')" title="%s">%s</a></td>',
$out .= sprintf('<tr id="rcmrow%d" class="%s"><td>%s</td><td>%s</td>',
$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('<td><a href="#rename" onclick="%s.command(\'rename-folder\',\'%s\')" title="%s">%s</a>'.
'<td><a href="#delete" onclick="%s.command(\'delete-folder\',\'%s\')" title="%s">%s</a></td>',
$JS_OBJECT_NAME,
$folder_js,
rcube_label('renamefolder'),
$edit_button,
$JS_OBJECT_NAME,
$folder_js,
rcube_label('deletefolder'),
$del_button);
else
$out .= '<td></td><td></td>';
$out .= "</tr>\n";
}

@ -19,7 +19,7 @@
position: absolute;
top: 60px;
left: 490px;
width: 200px;
width: 240px;
height: 20px;
text-align: left;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 B

@ -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;
}

@ -16,9 +16,11 @@
<div id="folder-manager">
<roundcube:object name="foldersubscription" form="subscriptionform" id="subscription-table"
cellpadding="1" cellspacing="0" summary="Folder subscription table"
deleteIcon="/images/icons/folder-trash.png" />
deleteIcon="/images/icons/folder-trash.png"
renameIcon="/images/icons/edit.png" />
</div>
<div id="bottomboxes">
<div class="settingsbox">
<div class="boxtitle"><roundcube:label name="createfolder" /></div>
@ -29,16 +31,6 @@
</div>
</div>
<div class="settingsbox">
<div class="boxtitle"><roundcube:label name="renamefolder" /></div>
<div class="settingspart">
<roundcube:label name="foldername" />:&nbsp;
<roundcube:object name="renamefolder" form="subscriptionform" />
<roundcube:button command="rename-folder" type="input" class="button" label="rename" />
</div>
</div>
</div>
</form>

Loading…
Cancel
Save