From 197601ef5fa2e6aaabfb6e0baaf56179f7cc1ee3 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Wed, 30 Apr 2008 04:21:42 -0400 Subject: [PATCH] Next step: introduce the application class 'rcmail' and get rid of some global vars --- program/include/rcube_template.php | 83 +++++++++++++++++++++++------------------ 1 files changed, 47 insertions(+), 36 deletions(-) diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php index 20b55ca..df6c3cc 100755 --- a/program/include/rcube_template.php +++ b/program/include/rcube_template.php @@ -30,6 +30,7 @@ */ class rcube_template extends rcube_html_page { + var $app; var $config; var $task = ''; var $framed = false; @@ -45,13 +46,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->app = rcmail::get_instance(); + $this->config = $this->app->config->all(); + + //$this->framed = $framed; $this->task = $task; - $this->config = $config; // add common javascripts $javascript = 'var '.JS_OBJECT_NAME.' = new rcube_webmail();'; @@ -348,7 +353,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); } @@ -599,7 +604,6 @@ return $out; } - /** * Create and register a button * @@ -610,19 +614,18 @@ */ private function button($attrib) { - global $CONFIG, $OUTPUT, $MAIN_TASKS; static $sa_buttons = array(); static $s_button_count = 100; // these commands can be called directly via url $a_static_commands = array('compose', 'list'); - $browser = new rcube_browser(); - $skin_path = $this->config['skin_path']; - if (!($attrib['command'] || $attrib['name'])) { return ''; } + + $browser = new rcube_browser(); + // try to find out the button type if ($attrib['type']) { $attrib['type'] = strtolower($attrib['type']); @@ -687,13 +690,13 @@ $command, $attrib['id'], $attrib['type'], - $attrib['imageact'] ? $skin_path.$attrib['imageact'] : $attrib['classact'], - $attrib['imagesel'] ? $skin_path.$attrib['imagesel'] : $attrib['classsel'], - $attrib['imageover'] ? $skin_path.$attrib['imageover'] : '' + $attrib['imageact'] ? $this->abs_url($attrib['imageact']) : $attrib['classact'], + $attrib['imagesel'] ? $this->abs_url($attrib['imagesel']) : $attrib['classsel'], + $attrib['imageover'] ? $this->abs_url($attrib['imageover']) : '' )); // 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)) { @@ -755,8 +758,7 @@ 'vspace', 'align', 'alt', ) ); - $img_tag = sprintf('<img src="%%s"%s />', $attrib_str); - $btn_content = sprintf($img_tag, $skin_path.$attrib['image']); + $btn_content = sprintf('<img src="%s"%s />', $this->abs_url($attrib['image']), $attrib_str); if ($attrib['label']) { $btn_content .= ' '.$attrib['label']; } @@ -797,13 +799,35 @@ /** + * 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; @@ -837,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; @@ -882,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; @@ -926,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; -- Gitblit v1.9.1