From 52f2a698555dd50f176b58f09396a0a0d9227a04 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 16 May 2013 06:59:03 -0400
Subject: [PATCH] Added rcube_plugin::add_label() method

---
 program/lib/Roundcube/rcube_plugin.php |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)

diff --git a/program/lib/Roundcube/rcube_plugin.php b/program/lib/Roundcube/rcube_plugin.php
index d24a269..3153a84 100644
--- a/program/lib/Roundcube/rcube_plugin.php
+++ b/program/lib/Roundcube/rcube_plugin.php
@@ -227,7 +227,7 @@
             $rcube->load_language($lang, $add);
 
             // add labels to client
-            if ($add2client) {
+            if ($add2client && method_exists($rcube->output, 'add_label')) {
                 if (is_array($add2client)) {
                     $js_labels = array_map(array($this, 'label_map_callback'), $add2client);
                 }
@@ -236,6 +236,24 @@
                 }
                 $rcube->output->add_label($js_labels);
             }
+        }
+    }
+
+    /**
+     * Wrapper for add_label() adding the plugin ID as domain
+     */
+    public function add_label()
+    {
+        $rcube = rcube::get_instance();
+
+        if (method_exists($rcube->output, 'add_label')) {
+            $args = func_get_args();
+            if (count($args) == 1 && is_array($args[0])) {
+                $args = $args[0];
+            }
+
+            $args = array_map(array($this, 'label_map_callback'), $args);
+            $rcube->output->add_label($args);
         }
     }
 
@@ -390,6 +408,10 @@
      */
     private function label_map_callback($key)
     {
+        if (strpos($key, $this->ID.'.') === 0) {
+            return $key;
+        }
+
         return $this->ID.'.'.$key;
     }
 }

--
Gitblit v1.9.1