alecpl
2010-04-22 566b142aaa7f03a8e2bbc96da9e60d7436bc76f5
program/include/rcube_template.php
@@ -80,6 +80,7 @@
        // register common UI objects
        $this->add_handlers(array(
            'loginform'       => array($this, 'login_form'),
            'preloader'       => array($this, 'preloader'),
            'username'        => array($this, 'current_username'),
            'message'         => array($this, 'message_container'),
            'charsetselector' => array($this, 'charset_selector'),
@@ -860,7 +861,7 @@
        if (!$attrib['href']) {
            $attrib['href'] = '#';
        }
        if ($command) {
        if ($command && !$attrib['onclick']) {
            $attrib['onclick'] = sprintf(
                "return %s.command('%s','%s',this)",
                JS_OBJECT_NAME,
@@ -1023,7 +1024,7 @@
        $input_url    = new html_hiddenfield(array('name' => '_url', 'id' => 'rcmloginurl', 'value' => $url));
        $input_host   = null;
        if (is_array($default_host)) {
        if (is_array($default_host) && count($default_host) > 1) {
            $input_host = new html_select(array('name' => '_host', 'id' => 'rcmloginhost'));
            foreach ($default_host as $key => $value) {
@@ -1035,6 +1036,11 @@
                    break;
                }
            }
        }
        else if (is_array($default_host) && ($host = array_pop($default_host))) {
            $hide_host = true;
            $input_host = new html_hiddenfield(array(
                'name' => '_host', 'id' => 'rcmloginhost', 'value' => $host) + $attrib);
        }
        else if (empty($default_host)) {
            $input_host = new html_inputfield(array('name' => '_host', 'id' => 'rcmloginhost') + $attrib);
@@ -1053,7 +1059,7 @@
        $table->add(null, $input_pass->show());
        // add host selection row
        if (is_object($input_host)) {
        if (is_object($input_host) && !$hide_host) {
            $table->add('title', html::label('rcmloginhost', Q(rcube_label('server'))));
            $table->add(null, $input_host->show(get_input_value('_host', RCUBE_INPUT_POST)));
        }
@@ -1062,10 +1068,14 @@
        $out .= $input_tzone->show();
        $out .= $input_url->show();
        $out .= $table->show();
        if ($hide_host) {
            $out .= $input_host->show();
        }
        // surround html output with a form tag
        if (empty($attrib['form'])) {
            $out = $this->form_tag(array('name' => $form_name, 'method' => "post"), $out);
            $out = $this->form_tag(array('name' => $form_name, 'method' => 'post'), $out);
        }
        return $out;
@@ -1073,6 +1083,30 @@
    /**
     * GUI object 'preloader'
     * Loads javascript code for images preloading
     *
     * @param array Named parameters
     * @return void
     */
    private function preloader($attrib)
    {
        $images = preg_split('/[\s\t\n,]+/', $attrib['images'], -1, PREG_SPLIT_NO_EMPTY);
        $images = array_map(array($this, 'abs_url'), $images);
        if (empty($images) || $this->app->task == 'logout')
            return;
        $this->add_script('$(document).ready(function(){
            var images = ' . json_serialize($images) .';
            for (var i=0; i<images.length; i++) {
                img = new Image();
                img.src = images[i];
            }});', 'foot');
    }
    /**
     * GUI object 'searchform'
     * Returns code for search function
     *