From a25d3969a00e60bcbfdf6907f7ce77d4651c1179 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Tue, 26 May 2009 09:21:57 -0400
Subject: [PATCH] Re-enable the permalink command (allows one to choose right-click and open-in-new-tab)

---
 program/steps/mail/show.inc        |    1 +
 program/include/rcube_template.php |    3 +++
 program/js/app.js                  |   22 ++++++++++++++++------
 3 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php
index d8c2176..51108f1 100755
--- a/program/include/rcube_template.php
+++ b/program/include/rcube_template.php
@@ -797,6 +797,9 @@
             else if (in_array($attrib['command'], $a_static_commands)) {
                 $attrib['href'] = rcmail_url($attrib['command']);
             }
+            else if ($attrib['command'] == 'permaurl' && !empty($this->env['permaurl'])) {
+                $attrib['href'] = $this->env['permaurl'];
+            }
         }
 
         // overwrite attributes
diff --git a/program/js/app.js b/program/js/app.js
index b29a357..b9fce8b 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -150,6 +150,9 @@
     // enable general commands
     this.enable_command('logout', 'mail', 'addressbook', 'settings', true);
     
+    if (this.env.permaurl)
+      this.enable_command('permaurl', true);
+    
     switch (this.task)
       {
       case 'mail':
@@ -559,14 +562,21 @@
         this.switch_task(command);
         break;
 
+      case 'permaurl':
+        if (obj && obj.href && obj.target)
+          return true;
+        else if (this.env.permaurl)
+          parent.location.href = this.env.permaurl;
+        break;
+
       case 'open':
-	var uid;
+        var uid;
         if (uid = this.get_single_uid())
-	  {
-	  obj.href = '?_task='+this.env.task+'&_action=show&_mbox='+urlencode(this.env.mailbox)+'&_uid='+uid;
-	  return true;
-          }
-	break;
+        {
+          obj.href = '?_task='+this.env.task+'&_action=show&_mbox='+urlencode(this.env.mailbox)+'&_uid='+uid;
+          return true;
+        }
+        break;
 
       // misc list commands
       case 'list':
diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc
index 06c9f53..9beb425 100644
--- a/program/steps/mail/show.inc
+++ b/program/steps/mail/show.inc
@@ -65,6 +65,7 @@
   // set environement
   $OUTPUT->set_env('safemode', $MESSAGE->is_safe);
   $OUTPUT->set_env('sender', $MESSAGE->sender['string']);
+  $OUTPUT->set_env('permaurl', rcmail_url('show', array('_uid' => $MESSAGE->uid, '_mbox' => $mbox_name)));
   $OUTPUT->set_env('mailbox', $mbox_name);
   if ($CONFIG['trash_mbox'])
     $OUTPUT->set_env('trash_mailbox', $CONFIG['trash_mbox']);

--
Gitblit v1.9.1