From 3f97120cb1f546f9c7973f11949e37ac1fb23412 Mon Sep 17 00:00:00 2001
From: vbenincasa <vbenincasa@gmail.com>
Date: Sun, 04 Oct 2009 04:16:20 -0400
Subject: [PATCH] - Added an alert message when uploading still in progress and the user tries to send the message - Added the functionality to abort the upload process - Changed the loading icon background to transparent, so it can be used in other templates easily

---
 program/localization/pt_BR/messages.inc       |    2 ++
 program/steps/mail/compose.inc                |    8 +++++---
 program/localization/en_US/messages.inc       |    1 +
 skins/default/images/display/loading_blue.gif |    0 
 skins/default/templates/compose.html          |    2 +-
 program/js/app.js                             |   19 +++++++++++++++++--
 6 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index 016162f..879c9aa 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -1631,7 +1631,7 @@
       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 @@
       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 @@
       
       // 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 @@
     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 3bc5132..6fc7be8 100644
--- a/program/localization/en_US/messages.inc
+++ b/program/localization/en_US/messages.inc
@@ -69,6 +69,7 @@
 $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 752a198..14585a1 100644
--- a/program/localization/pt_BR/messages.inc
+++ b/program/localization/pt_BR/messages.inc
@@ -32,6 +32,7 @@
 $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['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 e3c7fda..c894da7 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -92,9 +92,9 @@
 
 
 // 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 @@
 
   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 52c9ee4..2ea6b19 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 6441332..a5d7dcc 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>
 

--
Gitblit v1.9.1