summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--program/js/app.js19
-rw-r--r--program/localization/en_US/messages.inc1
-rw-r--r--program/localization/pt_BR/messages.inc2
-rw-r--r--program/steps/mail/compose.inc8
-rw-r--r--skins/default/images/display/loading_blue.gifbin754 -> 847 bytes
-rw-r--r--skins/default/templates/compose.html2
6 files changed, 26 insertions, 6 deletions
diff --git a/program/js/app.js b/program/js/app.js
index 016162fdf..879c9aa15 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -1631,7 +1631,7 @@ function rcube_webmail()
add_url += '&_search='+this.env.search_request;
// set page=1 if changeing to another mailbox
- if (!page && this.env.mailbox != mbox)
+ if (!page && this.env.mailbox != mbox)
{
page = 1;
this.env.current_page = page;
@@ -2176,7 +2176,10 @@ function rcube_webmail()
var list = this.gui_objects.attachmentlist.getElementsByTagName("li");
for (i=0;i<list.length;i++)
if (!String(list[i].id).match(/^rcmfile/))
+ {
+ alert(this.get_label('notuploadedwarning'));
return false;
+ }
}
// display localized warning for missing subject
@@ -2484,10 +2487,12 @@ function rcube_webmail()
// hide upload form
this.show_attachment_form(false);
- // display upload indicator
+ // display upload indicator and cancel button
var content = this.get_label('uploading');
if (this.env.loadingicon)
content = '<img src="'+this.env.loadingicon+'" alt="" />'+content;
+ if (this.env.cancelicon)
+ content = '<a title="'+this.get_label('cancel')+'" onclick="return rcmail.cancel_attachment_upload(\''+ts+'\', \''+frame_name+'\');" href="#cancelupload"><img src="'+this.env.cancelicon+'" alt="" /></a>'+content;
this.add2attachment_list(ts, content);
}
@@ -2535,6 +2540,16 @@ function rcube_webmail()
return true;
};
+ this.cancel_attachment_upload = function(name, frame_name)
+ {
+ if (!name || !frame_name)
+ return false;
+
+ this.remove_from_attachment_list(name);
+ $("iframe[name='"+frame_name+"']").remove();
+ return false;
+ };
+
// send remote request to add a new contact
this.add_contact = function(value)
{
diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc
index 3bc513213..6fc7be862 100644
--- a/program/localization/en_US/messages.inc
+++ b/program/localization/en_US/messages.inc
@@ -69,6 +69,7 @@ $messages['notsentwarning'] = 'Message has not been sent. Do you want to discard
$messages['noldapserver'] = 'Please select an ldap server to search';
$messages['nocontactsreturned'] = 'No contacts were found';
$messages['nosearchname'] = 'Please enter a contact name or email address';
+$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = '$nr messages found';
$messages['searchnomatch'] = 'Search returned no matches';
$messages['searching'] = 'Searching...';
diff --git a/program/localization/pt_BR/messages.inc b/program/localization/pt_BR/messages.inc
index 752a19820..14585a1df 100644
--- a/program/localization/pt_BR/messages.inc
+++ b/program/localization/pt_BR/messages.inc
@@ -32,6 +32,7 @@ $messages['nomessagesfound'] = 'Nenhuma mensagem foi encontrada';
$messages['loggedout'] = 'Sua sessão foi finalizada com sucesso. Até breve!';
$messages['mailboxempty'] = 'A caixa de mensagens está vazia';
$messages['loading'] = 'Carregando...';
+$messages['uploading'] = 'Enviando anexo...';
$messages['loadingdata'] = 'Carregando informações...';
$messages['checkingmail'] = 'Verificando se há novas mensagens...';
$messages['sendingmessage'] = 'Enviando mensagem...';
@@ -72,6 +73,7 @@ $messages['notsentwarning'] = 'A mensagem não foi enviada, deseja excluí-la?';
$messages['noldapserver'] = 'Por favor, selecione um servidor LDAP para a pesquisa';
$messages['nocontactsreturned'] = 'Nenhum contato foi encontrado';
$messages['nosearchname'] = 'Por favor, informe o nome do contado ou seu endereço de e-mail';
+$messages['notuploadedwarning'] = 'Há anexos ainda não enviados. Aguarde ou cancele o envio.';
$messages['searchsuccessful'] = '$nr mensagens encontradas';
$messages['searchnomatch'] = 'A pesquisa não encontrou resultados';
$messages['searching'] = 'Pesquisando...';
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index e3c7fda16..c894da776 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -92,9 +92,9 @@ if (!is_array($_SESSION['compose']) || $_SESSION['compose']['id'] != get_input_v
// add some labels to client
-$OUTPUT->add_label('nosubject', 'nosenderwarning', 'norecipientwarning', 'nosubjectwarning',
- 'nobodywarning', 'notsentwarning', 'savingmessage', 'sendingmessage', 'messagesaved',
- 'converting', 'editorwarning', 'searching', 'uploading', 'fileuploaderror');
+$OUTPUT->add_label('nosubject', 'nosenderwarning', 'norecipientwarning', 'nosubjectwarning', 'cancel',
+ 'nobodywarning', 'notsentwarning', 'notuploadedwarning', 'savingmessage', 'sendingmessage',
+ 'messagesaved', 'converting', 'editorwarning', 'searching', 'uploading', 'fileuploaderror');
// add config parameters to client script
if (!empty($CONFIG['drafts_mbox'])) {
@@ -809,6 +809,8 @@ function rcmail_compose_attachment_list($attrib)
if ($attrib['deleteicon'])
$_SESSION['compose']['deleteicon'] = $CONFIG['skin_path'] . $attrib['deleteicon'];
+ if ($attrib['cancelicon'])
+ $OUTPUT->set_env('cancelicon', $CONFIG['skin_path'] . $attrib['cancelicon']);
if ($attrib['loadingicon'])
$OUTPUT->set_env('loadingicon', $CONFIG['skin_path'] . $attrib['loadingicon']);
diff --git a/skins/default/images/display/loading_blue.gif b/skins/default/images/display/loading_blue.gif
index 52c9ee49f..2ea6b19ae 100644
--- a/skins/default/images/display/loading_blue.gif
+++ b/skins/default/images/display/loading_blue.gif
Binary files differ
diff --git a/skins/default/templates/compose.html b/skins/default/templates/compose.html
index 6441332ae..a5d7dcc71 100644
--- a/skins/default/templates/compose.html
+++ b/skins/default/templates/compose.html
@@ -93,7 +93,7 @@
<div id="compose-attachments">
<div id="attachment-title"><roundcube:label name="attachments" /></div>
-<roundcube:object name="composeAttachmentList" deleteIcon="/images/icons/delete.png" loadingIcon="/images/display/loading_blue.gif" />
+<roundcube:object name="composeAttachmentList" deleteIcon="/images/icons/delete.png" cancelIcon="/images/icons/delete.png" loadingIcon="/images/display/loading_blue.gif" />
<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" /></p>
</div>