thomascube
2008-06-14 83a7636872d58f044d1fac444268dd2e7c7ebaee
program/include/rcube_template.php
@@ -30,8 +30,8 @@
 */
class rcube_template extends rcube_html_page
{
    var $app;
    var $config;
    var $task = '';
    var $framed = false;
    var $pagetitle = '';
    var $env = array();
@@ -45,13 +45,17 @@
     * Constructor
     *
     * @todo   Use jQuery's $(document).ready() here.
     * @todo   Replace $this->config with the real rcube_config object
     */
    public function __construct(&$config, $task)
    public function __construct($task, $framed = false)
    {
        parent::__construct();
        $this->task = $task;
        $this->config = $config;
        $this->app = rcmail::get_instance();
        $this->config = $this->app->config->all();
        //$this->framed = $framed;
        $this->set_env('task', $task);
        // add common javascripts
        $javascript = 'var '.JS_OBJECT_NAME.' = new rcube_webmail();';
@@ -348,7 +352,7 @@
     */
    private function parse_with_globals($input)
    {
        $GLOBALS['__comm_path'] = Q($GLOBALS['COMM_PATH']);
        $GLOBALS['__comm_path'] = Q($this->app->comm_path);
        return preg_replace('/\$(__[a-z0-9_\-]+)/e', '$GLOBALS["\\1"]', $input);
    }
@@ -529,10 +533,15 @@
                    return Q($name);
                }
                if ($object=='version') {
                    return (string)RCMAIL_VERSION;
                    $ver = (string)RCMAIL_VERSION;
                    if (is_file(INSTALL_PATH . '.svn/entries')) {
                        if (preg_match('/Revision:\s(\d+)/', @shell_exec('svn info'), $regs))
                          $ver .= ' [SVN r'.$regs[1].']';
                    }
                    return $ver;
                }
                if ($object=='pagetitle') {
                    $task  = $this->task;
                    $task  = $this->env['task'];
                    $title = !empty($this->config['product_name']) ? $this->config['product_name'].' :: ' : '';
                    if (!empty($this->pagetitle)) {
@@ -609,7 +618,6 @@
     */
    private function button($attrib)
    {
        global $CONFIG, $OUTPUT, $MAIN_TASKS;
        static $sa_buttons = array();
        static $s_button_count = 100;
@@ -692,7 +700,7 @@
            ));
            // make valid href to specific buttons
            if (in_array($attrib['command'], $MAIN_TASKS)) {
            if (in_array($attrib['command'], rcmail::$main_tasks)) {
                $attrib['href'] = Q(rcmail_url(null, null, $attrib['command']));
            }
            else if (in_array($attrib['command'], $a_static_commands)) {
@@ -751,7 +759,7 @@
                array(
                    'style', 'class', 'id', 'width',
                    'height', 'border', 'hspace',
                    'vspace', 'align', 'alt',
                    'vspace', 'align', 'alt', 'tabindex'
                )
            );
            $btn_content = sprintf('<img src="%s"%s />', $this->abs_url($attrib['image']), $attrib_str);
@@ -762,7 +770,7 @@
        }
        else if ($attrib['type']=='link') {
            $btn_content = $attrib['label'] ? $attrib['label'] : $attrib['command'];
            $link_attrib = array('href', 'onclick', 'title', 'id', 'class', 'style');
            $link_attrib = array('href', 'onclick', 'title', 'id', 'class', 'style', 'tabindex');
        }
        else if ($attrib['type']=='input') {
            $attrib['type'] = 'button';
@@ -775,7 +783,7 @@
                $attrib,
                array(
                    'type', 'value', 'onclick',
                    'id', 'class', 'style'
                    'id', 'class', 'style', 'tabindex'
                )
            );
            $out = sprintf('<input%s disabled="disabled" />', $attrib_str);
@@ -795,15 +803,36 @@
    /**
     * Create a form tag with the necessary hidden fields
     *
     * @param array Named tag parameters
     * @return string HTML code for the form
     */
    public function form_tag($attrib, $content = null)
    {
      if ($this->framed) {
        $hiddenfield = new html_hiddenfield(array('name' => '_framed', 'value' => '1'));
        $hidden = $hiddenfield->show();
      }
      if (!$content)
        $attrib['noclose'] = true;
      return html::tag('form',
        $attrib + array('action' => "./", 'method' => "get"),
        $hidden . $content);
    }
    /**
     * GUI object 'username'
     * Showing IMAP username of the current session
     *
     * @param array Named tag parameters (currently not used)
     * @return string HTML code for the gui object
     */
    static function current_username($attrib)
    public function current_username($attrib)
    {
        global $USER;
        static $username;
        // alread fetched
@@ -812,14 +841,11 @@
        }
        // get e-mail address form default identity
        if ($sql_arr = $USER->get_identity()) {
          $s_username = $sql_arr['email'];
        }
        else if (strstr($_SESSION['username'], '@')) {
            $username = $_SESSION['username'];
        if ($sql_arr = $this->app->user->get_identity()) {
            $username = $sql_arr['email'];
        }
        else {
            $username = $_SESSION['username'].'@'.$_SESSION['imap_host'];
            $username = $this->app->user->get_username();
        }
        return $username;
@@ -835,8 +861,7 @@
     */
    private function login_form($attrib)
    {
        global $CONFIG, $SESS_HIDDEN_FIELD;
        $default_host = $CONFIG['default_host'];
        $default_host = $this->config['default_host'];
        $_SESSION['temp'] = true;
@@ -880,20 +905,12 @@
            $table->add(null, $input_host->show(get_input_value('_host', RCUVE_INPUT_POST)));
        }
        $out = $SESS_HIDDEN_FIELD;
        $out .= $input_action->show();
        $out = $input_action->show();
        $out .= $table->show();
        // surround html output with a form tag
        if (empty($attrib['form'])) {
            $out = html::tag(
                'form',
                array(
                    'name' => $form_name,
                    'action' => "./",
                    'method' => "post"
                ),
            $out);
            $out = $this->form_tag(array('name' => $form_name, 'method' => "post"), $out);
        }
        return $out;
@@ -924,15 +941,11 @@
        // add form tag around text field
        if (empty($attrib['form'])) {
            $out = html::tag(
                'form',
                array(
                    'name' => "rcmqsearchform",
                    'action' => "./",
                    'onsubmit' => JS_OBJECT_NAME . ".command('search');return false;",
                    'style' => "display:inline",
                ),
            $out);
            $out = $this->form_tag(array(
                'name' => "rcmqsearchform",
                'onsubmit' => JS_OBJECT_NAME . ".command('search');return false;",
                'style' => "display:inline"),
              $out);
        }
        return $out;