From 7c2d30b2e106a23fe2ab295f7dc2e628e4d828bb Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 13 Aug 2008 07:39:10 -0400
Subject: [PATCH] #1485170: fixed splitter under Firefox3
---
program/include/rcube_template.php | 77 ++++++++++++++++++++++++++++----------
1 files changed, 57 insertions(+), 20 deletions(-)
diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php
index 5834e42..fb65411 100755
--- a/program/include/rcube_template.php
+++ b/program/include/rcube_template.php
@@ -57,6 +57,9 @@
//$this->framed = $framed;
$this->set_env('task', $task);
+ // load the correct skin (in case user-defined)
+ $this->set_skin($this->config['skin']);
+
// add common javascripts
$javascript = 'var '.JS_OBJECT_NAME.' = new rcube_webmail();';
@@ -102,6 +105,32 @@
$this->pagetitle = $title;
}
+ /**
+ * Set skin
+ */
+ public function set_skin($skin)
+ {
+ if (!empty($skin) && is_dir('skins/'.$skin) && is_readable('skins/'.$skin))
+ $skin_path = 'skins/'.$skin;
+ else
+ $skin_path = $this->config['skin_path'] ? $this->config['skin_path'] : 'skins/default';
+
+ $this->app->config->set('skin_path', $skin_path);
+ $this->config['skin_path'] = $skin_path;
+ }
+
+ /**
+ * Check if a specific template exists
+ *
+ * @param string Template name
+ * @return boolean True if template exists
+ */
+ public function template_exists($name)
+ {
+ $filename = $this->config['skin_path'] . '/templates/' . $name . '.html';
+
+ return (is_file($filename) && is_readable($filename));
+ }
/**
* Register a template object handler
@@ -189,13 +218,27 @@
* @uses self::$js_commands
* @uses self::$object_handlers
*/
- public public function reset()
+ public function reset()
{
$this->env = array();
$this->js_env = array();
$this->js_commands = array();
$this->object_handlers = array();
parent::reset();
+ }
+
+
+ /**
+ * Redirect to a certain url
+ *
+ * @param mixed Either a string with the action or url parameters as key-value pairs
+ * @see rcmail::url()
+ */
+ public function redirect($p = array())
+ {
+ $location = $this->app->url($p);
+ header('Location: ' . $location);
+ exit;
}
@@ -256,16 +299,13 @@
private function parse($name = 'main', $exit = true)
{
$skin_path = $this->config['skin_path'];
-
- // read template file
- $templ = '';
$path = "$skin_path/templates/$name.html";
- if (($fp = fopen($path, 'r')) === false) {
- $message = '';
+ // read template file
+ if (($templ = file_get_contents($path)) === false) {
ob_start();
- fopen($path, 'r');
- $message.= ob_get_contents();
+ file_get_contents($path);
+ $message = ob_get_contents();
ob_end_clean();
raise_error(array(
'code' => 501,
@@ -276,8 +316,6 @@
), true, true);
return false;
}
- $templ = fread($fp, filesize($path));
- fclose($fp);
// parse for specialtags
$output = $this->parse_conditions($templ);
@@ -486,14 +524,13 @@
// include a file
case 'include':
$path = realpath($this->config['skin_path'].$attrib['file']);
- if ($fsize = filesize($path)) {
+ if (is_readable($path)) {
if ($this->config['skin_include_php']) {
$incl = $this->include_php($path);
}
- else if ($fp = fopen($path, 'r')) {
- $incl = fread($fp, $fsize);
- fclose($fp);
- }
+ else {
+ $incl = file_get_contents($path);
+ }
return $this->parse_xml($incl);
}
break;
@@ -865,8 +902,8 @@
$_SESSION['temp'] = true;
- $input_user = new html_inputfield(array('name' => '_user', 'id' => 'rcmloginuser', 'size' => 30, 'autocomplete' => 'off'));
- $input_pass = new html_passwordfield(array('name' => '_pass', 'id' => 'rcmloginpwd', 'size' => 30));
+ $input_user = new html_inputfield(array('name' => '_user', 'id' => 'rcmloginuser', 'size' => 30) + $attrib);
+ $input_pass = new html_passwordfield(array('name' => '_pass', 'id' => 'rcmloginpwd', 'size' => 30) + $attrib);
$input_action = new html_hiddenfield(array('name' => '_action', 'value' => 'login'));
$input_host = null;
@@ -883,7 +920,7 @@
}
}
}
- else if (!strlen($default_host)) {
+ else if (empty($default_host)) {
$input_host = new html_inputfield(array('name' => '_host', 'id' => 'rcmloginhost', 'size' => 30));
}
@@ -894,7 +931,7 @@
$table = new html_table(array('cols' => 2));
$table->add('title', html::label('rcmloginuser', Q(rcube_label('username'))));
- $table->add(null, $input_user->show(get_input_value('_user', RCUVE_INPUT_POST)));
+ $table->add(null, $input_user->show(get_input_value('_user', RCUBE_INPUT_POST)));
$table->add('title', html::label('rcmloginpwd', Q(rcube_label('password'))));
$table->add(null, $input_pass->show());
@@ -902,7 +939,7 @@
// add host selection row
if (is_object($input_host)) {
$table->add('title', html::label('rcmloginhost', Q(rcube_label('server'))));
- $table->add(null, $input_host->show(get_input_value('_host', RCUVE_INPUT_POST)));
+ $table->add(null, $input_host->show(get_input_value('_host', RCUBE_INPUT_POST)));
}
$out = $input_action->show();
--
Gitblit v1.9.1