From c719f3c1e06c00fa4723f2f1298b3c94a1bec7e7 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Fri, 20 Jun 2008 06:40:01 -0400
Subject: [PATCH] Store compose parameters in session and redirect to a unique URL

---
 program/include/rcube_template.php |   36 ++++++++++++++++++++++++++----------
 1 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php
index 9bc918e..75a9a60 100755
--- a/program/include/rcube_template.php
+++ b/program/include/rcube_template.php
@@ -57,11 +57,8 @@
         //$this->framed = $framed;
         $this->set_env('task', $task);
 
-	// load the correct skin (in case user-defined)
-	if (empty($this->config['skin']) || !is_readable('skins/'.$this->config['skin']))
-	    $this->config['skin'] = $this->config['default_skin'];
-
-	$this->config['skin_path'] = 'skins/'.$this->config['skin'];
+        // 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();';
@@ -113,8 +110,13 @@
      */
     public function set_skin($skin)
     {
-	if (!empty($skin) && is_dir('skins/'.$skin) && is_readable('skins/'.$skin))
-	    $this->config['skin_path'] = 'skins/'.$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;
     }
 
     /**
@@ -125,9 +127,9 @@
      */
     public function template_exists($name)
     {
-	$filename = $this->config['skin_path'] . '/templates/' . $name . '.html';
+        $filename = $this->config['skin_path'] . '/templates/' . $name . '.html';
 
-	return (is_file($filename) && is_readable($filename));
+        return (is_file($filename) && is_readable($filename));
     }
 
     /**
@@ -216,7 +218,7 @@
      * @uses   self::$js_commands
      * @uses   self::$object_handlers
      */
-    public public function reset()
+    public function reset()
     {
         $this->env = array();
         $this->js_env = array();
@@ -227,6 +229,20 @@
 
 
     /**
+     * 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;
+    }
+
+
+    /**
      * Send the request output to the client.
      * This will either parse a skin tempalte or send an AJAX response
      *

--
Gitblit v1.9.1