summaryrefslogtreecommitdiff
path: root/program/include
diff options
context:
space:
mode:
Diffstat (limited to 'program/include')
-rw-r--r--program/include/rcmail.php22
-rw-r--r--program/include/rcube_imap.php1
-rw-r--r--program/include/rcube_json_output.php21
-rwxr-xr-xprogram/include/rcube_template.php16
4 files changed, 55 insertions, 5 deletions
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 009ad0448..7c12ef779 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -139,7 +139,7 @@ class rcmail
$task = 'mail';
$this->task = $task;
- $this->comm_path = './?_task=' . $task;
+ $this->comm_path = $this->url(array('task' => $task));
if ($this->output)
$this->output->set_env('task', $task);
@@ -820,6 +820,26 @@ class rcmail
return preg_replace('/\x00/', '', $pass);
}
+
+ /**
+ * Build a valid URL to this instance of RoundCube
+ *
+ * @param mixed Either a string with the action or url parameters as key-value pairs
+ * @return string Valid application URL
+ */
+ public function url($p)
+ {
+ if (!is_array($p))
+ $p = array('action' => @func_get_arg(0));
+
+ $url = $p['task'] ? './?_task=' . $p['task'] : $this->comm_path;
+ unset($p['task']);
+
+ foreach ($p as $par => $val)
+ $url .= sprintf('&%s=%s', urlencode($par), urlencode($val));
+
+ return $url;
+ }
}
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index fb3870b29..858a1e2c6 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -1487,6 +1487,7 @@ class rcube_imap
{
$this->_expunge($mailbox, FALSE);
$this->_clear_messagecount($mailbox);
+ unset($this->uid_id_map[$mailbox]);
}
// remove message ids from search set
diff --git a/program/include/rcube_json_output.php b/program/include/rcube_json_output.php
index 678b1948a..2f65c19e9 100644
--- a/program/include/rcube_json_output.php
+++ b/program/include/rcube_json_output.php
@@ -58,12 +58,14 @@ class rcube_json_output
}
/**
- * @ignore
+ * Issue command to set page title
+ *
+ * @param string New page title
*/
public function set_pagetitle($title)
{
- $name = $this->config->get('product_name');
- $this->command('set_pagetitle', JQ(empty($name) ? $title : $name.' :: '.$title));
+ $name = $this->config->get('product_name');
+ $this->command('set_pagetitle', JQ(empty($name) ? $title : $name.' :: '.$title));
}
/**
@@ -161,6 +163,19 @@ class rcube_json_output
$this->commands = array();
}
+ /**
+ * 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(), $delay = 0)
+ {
+ $location = rcmail::get_instance()->url($p);
+ $this->remote_response("window.setTimeout(\"location.href='{$location}'\", $delay);");
+ exit;
+ }
+
/**
* Send an AJAX response to the client.
diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php
index 53808bd2b..75a9a601d 100755
--- a/program/include/rcube_template.php
+++ b/program/include/rcube_template.php
@@ -218,7 +218,7 @@ class rcube_template extends rcube_html_page
* @uses self::$js_commands
* @uses self::$object_handlers
*/
- public public function reset()
+ public function reset()
{
$this->env = array();
$this->js_env = array();
@@ -229,6 +229,20 @@ class rcube_template extends rcube_html_page
/**
+ * 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
*