From 23796ec2909bf9cb3ae846f9d124a1098672c5ff Mon Sep 17 00:00:00 2001
From: svncommit <devs@roundcube.net>
Date: Mon, 18 Dec 2006 04:11:57 -0500
Subject: [PATCH] Fix display of quota image/text after a remote command.

---
 program/steps/mail/quotadisplay.inc |   29 ++++++++++++++
 index.php                           |    3 +
 program/steps/mail/func.inc         |   25 ++++++++----
 program/js/app.js                   |   10 +++-
 4 files changed, 55 insertions(+), 12 deletions(-)

diff --git a/index.php b/index.php
index e675185..52d6ddc 100644
--- a/index.php
+++ b/index.php
@@ -314,6 +314,9 @@
   if ($_action=='quotaimg')
     include('program/steps/mail/quotaimg.inc');
 
+  if ($_action=='quotadisplay')
+    include('program/steps/mail/quotadisplay.inc');
+
 
   // make sure the message count is refreshed
   $IMAP->messagecount($_SESSION['mbox'], 'ALL', TRUE);
diff --git a/program/js/app.js b/program/js/app.js
index 4bb261c..55e38bf 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -3040,10 +3040,14 @@
     };
 
   // replace content of quota display
-   this.set_quota = function(text)
+   this.set_quota = function()
      {
-     if (this.gui_objects.quotadisplay)
-       this.gui_objects.quotadisplay.innerHTML = text;
+     if (this.gui_objects.quotadisplay &&
+         this.gui_objects.quotadisplay.attributes.getNamedItem('display') &&
+         this.gui_objects.quotadisplay.attributes.getNamedItem('id'))
+       this.http_request('quotadisplay', '_display='+
+         this.gui_objects.quotadisplay.attributes.getNamedItem('display').nodeValue+
+         '&_id='+this.gui_objects.quotadisplay.attributes.getNamedItem('id').nodeValue, false);
      };
 
 
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 5e91d16..0f06215 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -634,7 +634,7 @@
 
 function rcmail_quota_display($attrib)
   {
-  global $IMAP, $OUTPUT, $JS_OBJECT_NAME, $COMM_PATH;
+  global $OUTPUT, $JS_OBJECT_NAME, $COMM_PATH;
 
   if (!$attrib['id'])
     $attrib['id'] = 'rcmquotadisplay';
@@ -642,7 +642,18 @@
   $OUTPUT->add_script(sprintf("%s.gui_object('quotadisplay', '%s');", $JS_OBJECT_NAME, $attrib['id']));
 
   // allow the following attributes to be added to the <span> tag
-  $attrib_str = create_attrib_string($attrib, array('style', 'class', 'id'));
+  $attrib_str = create_attrib_string($attrib, array('style', 'class', 'id', 'display'));
+
+  $out = '<span' . $attrib_str . '>';
+  $out .= rcmail_quota_content($attrib['display']);
+  $out .= '</span>';
+  return $out;
+  }
+
+
+function rcmail_quota_content($display)
+  {
+  global $IMAP, $COMM_PATH;
 
   if (!$IMAP->get_capability('QUOTA'))
     $quota_text = rcube_label('unknown');
@@ -654,9 +665,9 @@
                           $quota["percent"]);
 
     // show quota as image (by Brett Patterson)
-    if ($attrib['display'] == 'image' && function_exists('imagegif'))
+    if ($display == 'image' && function_exists('imagegif'))
       {
-      $attrib += array('width' => 100, 'height' => 14);
+      $attrib = array('width' => 100, 'height' => 14);
       $quota_text = sprintf('<img src="%s&amp;_action=quotaimg&amp;u=%s&amp;q=%d&amp;w=%d&amp;h=%d" width="%d" height="%d" alt="%s" title="%s / %s" />',
                             $COMM_PATH,
                             $quota['used'], $quota['total'],
@@ -669,12 +680,8 @@
     }
   else
     $quota_text = rcube_label('unlimited');
-    
 
-  $out = '<span' . $attrib_str . '>';
-  $out .= $quota_text;
-  $out .= '</span>';
-  return $out;
+  return $quota_text;
   }
 
 
diff --git a/program/steps/mail/quotadisplay.inc b/program/steps/mail/quotadisplay.inc
new file mode 100644
index 0000000..c96a7a7
--- /dev/null
+++ b/program/steps/mail/quotadisplay.inc
@@ -0,0 +1,29 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/steps/mail/quotadisplay.inc                                   |
+ |                                                                       |
+ | This file is part of the RoundCube Webmail client                     |
+ | Copyright (C) 2005, RoundCube Dev. - Switzerland                      |
+ | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | PURPOSE:                                                              |
+ |   Remote call to return the quota image or text                       |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Robin Elfrink <robin@15augustus.nl>                           |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+$display = isset($_GET['_display']) ? $_GET['_display'] : 'text';
+$id = isset($_GET['_id']) ? $_GET['_id'] : 'rcmquotadisplay';
+$quota = rcmail_quota_content($display);
+$command = sprintf("this.gui_objects.%s.innerHTML = '%s';\n", $id, $quota);
+rcube_remote_response($command);
+
+exit;
+?>

--
Gitblit v1.9.1