| | |
| | | | program/include/rcube_template.php | |
| | | | | |
| | | | This file is part of the RoundCube Webmail client | |
| | | | Copyright (C) 2006-2009, RoundCube Dev. - Switzerland | |
| | | | Copyright (C) 2006-2010, RoundCube Dev. - Switzerland | |
| | | | Licensed under the GNU GPL | |
| | | | | |
| | | | PURPOSE: | |
| | |
| | | // 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'), |
| | |
| | | |
| | | |
| | | /** |
| | | * |
| | | * Inserts hidden field with CSRF-prevention-token into POST forms |
| | | */ |
| | | private function alter_form_tag($matches) |
| | | { |
| | |
| | | */ |
| | | public function button($attrib) |
| | | { |
| | | static $sa_buttons = array(); |
| | | static $s_button_count = 100; |
| | | |
| | | // these commands can be called directly via url |
| | |
| | | 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']) { |
| | |
| | | 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']); |
| | | } |
| | |
| | | if (!$attrib['href']) { |
| | | $attrib['href'] = '#'; |
| | | } |
| | | if ($command) { |
| | | 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, |
| | |
| | | $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) { |
| | |
| | | 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); |
| | |
| | | $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))); |
| | | } |
| | |
| | | $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; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 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'); |
| | | } |
| | | |
| | | |
| | |
| | | $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); |
| | |
| | | 'name' => "rcmqsearchform", |
| | | 'onsubmit' => JS_OBJECT_NAME . ".command('search');return false;", |
| | | 'style' => "display:inline"), |
| | | $out); |
| | | $out); |
| | | } |
| | | |
| | | return $out; |
| | |
| | | ); |
| | | |
| | | 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)); |