From 2355045dedc96274ca6b1c29612006e736b6f540 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 20 May 2013 04:32:52 -0400
Subject: [PATCH] Change Reply-All button label/title when mailing list is detected (#1488938)

---
 CHANGELOG                   |    1 +
 program/js/common.js        |    3 +--
 skins/classic/functions.js  |   11 ++++++++++-
 program/steps/mail/func.inc |    2 +-
 program/steps/mail/show.inc |    2 +-
 program/js/app.js           |    1 +
 skins/larry/ui.js           |   14 ++++++++++++++
 7 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 83b8b3d..f671629 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Change Reply-All button label/title when mailing list is detected (#1488938)
 - Fix SMTP connection using IPv6 address in smtp_server option (#1489024)
 - Added attachment_reminder plugin
 - Make PHP code eval() free, use create_function()
diff --git a/program/js/app.js b/program/js/app.js
index b982724..1f0b954 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -1179,6 +1179,7 @@
       if (typeof cmd === 'string') {
         this.commands[cmd] = enable;
         this.set_button(cmd, (enable ? 'act' : 'pas'));
+        this.triggerEvent('enable-command', {command: cmd, status: enable});
       }
       // push array elements into commands array
       else {
diff --git a/program/js/common.js b/program/js/common.js
index f7c0a75..53dce8c 100644
--- a/program/js/common.js
+++ b/program/js/common.js
@@ -298,8 +298,7 @@
   if (!this._events[evt])
     this._events[evt] = [];
 
-  var e = {func:func, obj:obj ? obj : window};
-  this._events[evt][this._events[evt].length] = e;
+  this._events[evt].push({func:func, obj:obj ? obj : window});
 },
 
 /**
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index fc22366..661d3fb 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -120,7 +120,7 @@
   if (!$OUTPUT->ajax_call)
     $OUTPUT->add_label('checkingmail', 'deletemessage', 'movemessagetotrash',
       'movingmessage', 'copyingmessage', 'deletingmessage', 'markingmessage',
-      'copy', 'move', 'quota');
+      'copy', 'move', 'quota', 'replyall', 'replylist');
 
   $pagetitle = $RCMAIL->localize_foldername($RCMAIL->storage->mod_folder($mbox_name), true);
   $pagetitle = str_replace($delimiter, " \xC2\xBB ", $pagetitle);
diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc
index 2ad1ba9..d8d4372 100644
--- a/program/steps/mail/show.inc
+++ b/program/steps/mail/show.inc
@@ -116,7 +116,7 @@
 
   if (!$OUTPUT->ajax_call)
     $OUTPUT->add_label('checkingmail', 'deletemessage', 'movemessagetotrash',
-      'movingmessage', 'deletingmessage', 'markingmessage');
+      'movingmessage', 'deletingmessage', 'markingmessage', 'replyall', 'replylist');
 
   $prefer_html = $RCMAIL->config->get('prefer_html');
   if ($MESSAGE->has_html_part()) {
diff --git a/skins/classic/functions.js b/skins/classic/functions.js
index 0d2f223..d980627 100644
--- a/skins/classic/functions.js
+++ b/skins/classic/functions.js
@@ -617,6 +617,14 @@
   while (ps && ps.nodeType == 3)
     ps = ps.previousSibling;
   return ps;
+},
+
+enable_command: function(p)
+{
+  if (p.command == 'reply-list') {
+    var label = rcmail.gettext(p.status ? 'replylist' : 'replyall');
+    $('a.button.replyAll').attr('title', label);
+  }
 }
 
 };
@@ -792,7 +800,7 @@
   var bar2 = $('<div>');
   bar2.css({position: 'absolute', top: pos.top + 1, left: pos.left + 1,
       width: width + 'px', height: height + 'px', zIndex: 98})
-	.addClass('quota_bg');
+    .addClass('quota_bg');
 
   if (quota >= limit_high) {
     main.addClass(' quota_text_high');
@@ -835,6 +843,7 @@
     .contents().mouseup(function(e){rcmail_ui.body_mouseup(e)});
 
   if (rcmail.env.task == 'mail') {
+    rcmail.addEventListener('enable-command', 'enable_command', rcmail_ui);
     rcmail.addEventListener('menu-open', 'menu_open', rcmail_ui);
     rcmail.addEventListener('menu-save', 'menu_save', rcmail_ui);
     rcmail.addEventListener('aftersend-attachment', 'uploadmenu', rcmail_ui);
diff --git a/skins/larry/ui.js b/skins/larry/ui.js
index a461b64..6934480 100644
--- a/skins/larry/ui.js
+++ b/skins/larry/ui.js
@@ -94,6 +94,7 @@
       }
 
       if (rcmail.env.action == 'show' || rcmail.env.action == 'preview') {
+        rcmail.addEventListener('enable-command', enable_command);
         rcmail.addEventListener('aftershow-headers', function() { layout_messageview(); });
         rcmail.addEventListener('afterhide-headers', function() { layout_messageview(); });
         $('#previewheaderstoggle').click(function(e){ toggle_preview_headers(); return false });
@@ -145,6 +146,7 @@
         new rcube_scroller('#folderlist-content', '#folderlist-header', '#folderlist-footer');
 
         rcmail.addEventListener('setquota', update_quota);
+        rcmail.addEventListener('enable-command', enable_command);
       }
 
       if ($('#mailview-left').length) {
@@ -435,6 +437,18 @@
   }
 
 
+  function enable_command(p)
+  {
+    if (p.command == 'reply-list') {
+      var label = rcmail.gettext(p.status ? 'replylist' : 'replyall');
+      if (rcmail.env.action == 'preview')
+        $('a.button.replyall').attr('title', label);
+      else
+        $('a.button.reply-all').text(label).attr('title', label);
+    }
+  }
+
+
   /**
    * Register a popup menu
    */

--
Gitblit v1.9.1