thomascube
2010-10-06 2fe8d6bdebbaa160ee062b18e78fe7e77b430e00
program/include/rcube_template.php
@@ -4,8 +4,8 @@
 +-----------------------------------------------------------------------+
 | program/include/rcube_template.php                                    |
 |                                                                       |
 | This file is part of the RoundCube Webmail client                     |
 | Copyright (C) 2006-2009, RoundCube Dev. - Switzerland                 |
 | This file is part of the Roundcube Webmail client                     |
 | Copyright (C) 2006-2010, Roundcube Dev. - Switzerland                 |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 | PURPOSE:                                                              |
@@ -40,6 +40,7 @@
    var $js_commands = array();
    var $object_handlers = array();
    public $browser;
    public $type = 'html';
    public $ajax_call = false;
@@ -138,13 +139,21 @@
     */
    public function set_skin($skin)
    {
        if (!empty($skin) && is_dir('skins/'.$skin) && is_readable('skins/'.$skin))
        $valid = false;
        if (!empty($skin) && is_dir('skins/'.$skin) && is_readable('skins/'.$skin)) {
            $skin_path = 'skins/'.$skin;
        else
            $valid = true;
        }
        else {
            $skin_path = $this->config['skin_path'] ? $this->config['skin_path'] : 'skins/default';
            $valid = !$skin;
        }
        $this->app->config->set('skin_path', $skin_path);
        $this->config['skin_path'] = $skin_path;
        return $valid;
    }
    /**
@@ -444,7 +453,10 @@
     */
    public function abs_url($str)
    {
        return preg_replace('/^\//', $this->config['skin_path'].'/', $str);
        if ($str[0] == '/')
            return $this->config['skin_path'] . $str;
        else
            return $str;
    }
@@ -536,7 +548,7 @@
    
    
    /**
     *
     * Inserts hidden field with CSRF-prevention-token into POST forms
     */
    private function alter_form_tag($matches)
    {
@@ -675,7 +687,7 @@
                    $content = call_user_func($handler, $attrib);
                }
                else if ($object == 'productname') {
                    $name = !empty($this->config['product_name']) ? $this->config['product_name'] : 'RoundCube Webmail';
                    $name = !empty($this->config['product_name']) ? $this->config['product_name'] : 'Roundcube Webmail';
                    $content = Q($name);
                }
                else if ($object == 'version') {
@@ -770,7 +782,6 @@
     */
    public function button($attrib)
    {
        static $sa_buttons = array();
        static $s_button_count = 100;
        // these commands can be called directly via url
@@ -787,25 +798,14 @@
        else {
            $attrib['type'] = ($attrib['image'] || $attrib['imagepas'] || $attrib['imageact']) ? 'image' : 'link';
        }
        $command = $attrib['command'];
        // take the button from the stack
        if ($attrib['name'] && $sa_buttons[$attrib['name']]) {
            $attrib = $sa_buttons[$attrib['name']];
        }
        else if($attrib['image'] || $attrib['imageact'] || $attrib['imagepas'] || $attrib['class']) {
            // add button to button stack
            if (!$attrib['name']) {
                $attrib['name'] = $command;
            }
            if (!$attrib['image']) {
                $attrib['image'] = $attrib['imagepas'] ? $attrib['imagepas'] : $attrib['imageact'];
            }
            $sa_buttons[$attrib['name']] = $attrib;
        }
        else if ($command && $sa_buttons[$command]) {
            // get saved button for this command/name
            $attrib = $sa_buttons[$command];
        if ($attrib['task'])
          $command = $attrib['task'] . '.' . $command;
        if (!$attrib['image']) {
            $attrib['image'] = $attrib['imagepas'] ? $attrib['imagepas'] : $attrib['imageact'];
        }
        if (!$attrib['id']) {
@@ -849,6 +849,9 @@
            if (in_array($attrib['command'], rcmail::$main_tasks)) {
                $attrib['href'] = rcmail_url(null, null, $attrib['command']);
            }
            else if ($attrib['task'] && in_array($attrib['task'], rcmail::$main_tasks)) {
                $attrib['href'] = rcmail_url($attrib['command'], null, $attrib['task']);
            }
            else if (in_array($attrib['command'], $a_static_commands)) {
                $attrib['href'] = rcmail_url($attrib['command']);
            }
@@ -861,7 +864,11 @@
        if (!$attrib['href']) {
            $attrib['href'] = '#';
        }
        if ($command && !$attrib['onclick']) {
        if ($attrib['task']) {
            if ($attrib['classact'])
                $attrib['class'] = $attrib['classact'];
        }
        else if ($command && !$attrib['onclick']) {
            $attrib['onclick'] = sprintf(
                "return %s.command('%s','%s',this)",
                JS_OBJECT_NAME,
@@ -1124,7 +1131,7 @@
            $attrib['id'] = 'rcmqsearchbox';
        }
        if ($attrib['type'] == 'search' && !$this->browser->khtml) {
          unset($attrib['type'], $attrib['results']);
            unset($attrib['type'], $attrib['results']);
        }
        
        $input_q = new html_inputfield($attrib);
@@ -1138,7 +1145,7 @@
                'name' => "rcmqsearchform",
                'onsubmit' => JS_OBJECT_NAME . ".command('search');return false;",
                'style' => "display:inline"),
              $out);
                $out);
        }
        return $out;
@@ -1215,15 +1222,15 @@
        );
        if (!empty($_POST['_charset']))
       $set = $_POST['_charset'];
   else if (!empty($attrib['selected']))
       $set = $attrib['selected'];
   else
       $set = $this->get_charset();
           $set = $_POST['_charset'];
       else if (!empty($attrib['selected']))
           $set = $attrib['selected'];
       else
           $set = $this->get_charset();
   $set = strtoupper($set);
   if (!isset($charsets[$set]))
       $charsets[$set] = $set;
       $set = strtoupper($set);
       if (!isset($charsets[$set]))
           $charsets[$set] = $set;
        $select = new html_select($field_attrib);
        $select->add(array_values($charsets), array_keys($charsets));