From be9aacaa5296dfca63fb3a01c2dc52538d1546aa Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Sat, 17 Nov 2012 12:31:31 -0500
Subject: [PATCH] Bring back lost localization for the about page

---
 program/include/rcube_output_html.php |   30 +++++++++++++++++-------------
 1 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/program/include/rcube_output_html.php b/program/include/rcube_output_html.php
index e67a491..6dd58fd 100644
--- a/program/include/rcube_output_html.php
+++ b/program/include/rcube_output_html.php
@@ -23,7 +23,8 @@
 /**
  * Class to create HTML page output using a skin template
  *
- * @package View
+ * @package    Framework
+ * @subpackage View
  */
 class rcube_output_html extends rcube_output
 {
@@ -447,17 +448,20 @@
             // fallback to deprecated template names
             if (!is_readable($path) && $this->deprecated_templates[$realname]) {
                 $path = "$skin_path/templates/" . $this->deprecated_templates[$realname] . ".html";
-                rcube::raise_error(array(
-                    'code' => 502, 'type' => 'php',
-                    'file' => __FILE__, 'line' => __LINE__,
-                    'message' => "Using deprecated template '" . $this->deprecated_templates[$realname]
-                        . "' in $skin_path/templates. Please rename to '$realname'"),
-                    true, false);
+
+                if (is_readable($path)) {
+                    rcube::raise_error(array(
+                        'code' => 502, 'type' => 'php',
+                        'file' => __FILE__, 'line' => __LINE__,
+                        'message' => "Using deprecated template '" . $this->deprecated_templates[$realname]
+                            . "' in $skin_path/templates. Please rename to '$realname'"),
+                        true, false);
+                }
             }
 
             if (is_readable($path)) {
                 $this->config->set('skin_path', $skin_path);
-                $this->base_path = $skin_path;
+                $this->base_path = preg_replace('!plugins/\w+/!', '', $skin_path);  // set base_path to core skin directory (not plugin's skin)
                 break;
             }
             else {
@@ -493,8 +497,6 @@
         // save some memory
         $output = $hook['content'];
         unset($hook['content']);
-
-        $output = $this->parse_with_globals($this->fix_paths($output));
 
         // make sure all <form> tags have a valid request token
         $output = preg_replace_callback('/<form\s+([^>]+)>/Ui', array($this, 'alter_form_tag'), $output);
@@ -855,8 +857,8 @@
             // include a file
             case 'include':
                 $old_base_path = $this->base_path;
-                if ($path = $this->get_skin_file($attrib['file'], $skin_path, $attrib['skin_path'])) {
-                    $this->base_path = $skin_path;
+                if ($path = $this->get_skin_file($attrib['file'], $skin_path, $attrib['skinpath'])) {
+                    $this->base_path = preg_replace('!plugins/\w+/!', '', $skin_path);  // set base_path to core skin directory (not plugin's skin)
                     $path = realpath($path);
                 }
 
@@ -1089,7 +1091,7 @@
             // make valid href to specific buttons
             if (in_array($attrib['command'], rcmail::$main_tasks)) {
                 $attrib['href']    = $this->app->url(array('task' => $attrib['command']));
-                $attrib['onclick'] = sprintf("%s.command('switch-task','%s',null,event); return false", rcmail::JS_OBJECT_NAME, $attrib['command']);
+                $attrib['onclick'] = sprintf("return %s.command('switch-task','%s',this,event)", rcmail::JS_OBJECT_NAME, $attrib['command']);
             }
             else if ($attrib['task'] && in_array($attrib['task'], rcmail::$main_tasks)) {
                 $attrib['href'] = $this->app->url(array('action' => $attrib['command'], 'task' => $attrib['task']));
@@ -1357,6 +1359,8 @@
             $output = substr_replace($output, $css, $pos, 0);
         }
 
+        $output = $this->parse_with_globals($this->fix_paths($output));
+
         // trigger hook with final HTML content to be sent
         $hook = $this->app->plugins->exec_hook("send_page", array('content' => $output));
         if (!$hook['abort']) {

--
Gitblit v1.9.1