Thomas Bruederli
2012-11-17 be9aacaa5296dfca63fb3a01c2dc52538d1546aa
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);
@@ -856,7 +858,7 @@
            case 'include':
                $old_base_path = $this->base_path;
                if ($path = $this->get_skin_file($attrib['file'], $skin_path, $attrib['skinpath'])) {
                    $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)
                    $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']) {