CHANGELOG | ●●●●● patch | view | raw | blame | history | |
index.php | ●●●●● patch | view | raw | blame | history | |
program/include/rcmail.php | ●●●●● patch | view | raw | blame | history | |
program/include/rcube_imap.php | ●●●●● patch | view | raw | blame | history | |
program/include/rcube_json_output.php | ●●●●● patch | view | raw | blame | history | |
program/include/rcube_template.php | ●●●●● patch | view | raw | blame | history | |
program/steps/mail/compose.inc | ●●●●● patch | view | raw | blame | history | |
program/steps/mail/sendmail.inc | ●●●●● patch | view | raw | blame | history |
CHANGELOG
@@ -1,6 +1,10 @@ CHANGELOG RoundCube Webmail --------------------------- 2008/06/20 (thomasb) ---------- - Store compose parameters in session and redirect to a unique URL 2008/06/18 (thomasb) ---------- - Fixed CRAM-MD5 authentication (#1484819) index.php
@@ -2,7 +2,7 @@ /* +-------------------------------------------------------------------------+ | RoundCube Webmail IMAP Client | | Version 0.2-20080619 | | Version 0.2-20080620 | | | | Copyright (C) 2005-2008, RoundCube Dev. - Switzerland | | | @@ -92,8 +92,7 @@ $_SERVER['REMOTE_ADDR'])); // send redirect header("Location: {$RCMAIL->comm_path}"); exit; $OUTPUT->redirect(); } else { $OUTPUT->show_message($IMAP->error_code == -1 ? 'imaperror' : 'loginfailed', 'warning'); @@ -138,7 +137,7 @@ if (empty($RCMAIL->user->ID)) { if ($OUTPUT->ajax_call) $OUTPUT->remote_response("setTimeout(\"location.href='\"+this.env.comm_path+\"'\", 2000);"); $OUTPUT->redirect(array(), 2000); // check if installer is still active if ($RCMAIL->config->get('enable_installer') && is_readable('./installer/index.php')) { program/include/rcmail.php
@@ -139,7 +139,7 @@ $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 @@ 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; } } program/include/rcube_imap.php
@@ -1487,6 +1487,7 @@ { $this->_expunge($mailbox, FALSE); $this->_clear_messagecount($mailbox); unset($this->uid_id_map[$mailbox]); } // remove message ids from search set program/include/rcube_json_output.php
@@ -58,7 +58,9 @@ } /** * @ignore * Issue command to set page title * * @param string New page title */ public function set_pagetitle($title) { @@ -161,6 +163,19 @@ $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. program/include/rcube_template.php
@@ -218,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(); @@ -229,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 * program/steps/mail/compose.inc
@@ -63,7 +63,10 @@ if (!is_array($_SESSION['compose']) || $_SESSION['compose']['id'] != get_input_value('_id', RCUBE_INPUT_GET)) { rcmail_compose_cleanup(); $_SESSION['compose'] = array('id' => uniqid(rand())); $_SESSION['compose'] = array('id' => uniqid(rand()), 'param' => array_map('strip_tags', $_GET)); // redirect to a unique URL with all parameters stored in session $OUTPUT->redirect(array('_action' => 'compose', '_id' => $_SESSION['compose']['id'])); } // add some labels to client @@ -74,11 +77,11 @@ // get reference message and set compose mode if ($msg_uid = get_input_value('_reply_uid', RCUBE_INPUT_GET)) if ($msg_uid = $_SESSION['compose']['param']['_reply_uid']) $compose_mode = RCUBE_COMPOSE_REPLY; else if ($msg_uid = get_input_value('_forward_uid', RCUBE_INPUT_GET)) else if ($msg_uid = $_SESSION['compose']['param']['_forward_uid']) $compose_mode = RCUBE_COMPOSE_FORWARD; else if ($msg_uid = get_input_value('_draft_uid', RCUBE_INPUT_GET)) else if ($msg_uid = $_SESSION['compose']['param']['_draft_uid']) $compose_mode = RCUBE_COMPOSE_DRAFT; if (!empty($msg_uid)) @@ -95,7 +98,7 @@ $_SESSION['compose']['reply_msgid'] = $MESSAGE->headers->messageID; $_SESSION['compose']['references'] = trim($MESSAGE->headers->references . " " . $MESSAGE->headers->messageID); if (!empty($_GET['_all'])) if (!empty($_SESSION['compose']['param']['_all'])) $MESSAGE->reply_all = 1; } else if ($compose_mode == RCUBE_COMPOSE_FORWARD) @@ -131,10 +134,10 @@ $header = 'to'; // we have a set of recipients stored is session if (($mailto_id = get_input_value('_mailto', RCUBE_INPUT_GET)) && $_SESSION['mailto'][$mailto_id]) if (($mailto_id = $_SESSION['compose']['param']['_mailto']) && $_SESSION['mailto'][$mailto_id]) $fvalue = $_SESSION['mailto'][$mailto_id]; else if (!empty($_GET['_to'])) $fvalue = get_input_value('_to', RCUBE_INPUT_GET); else if (!empty($_SESSION['compose']['param']['_to'])) $fvalue = $_SESSION['compose']['param']['_to']; case 'cc': if (!$fname) program/steps/mail/sendmail.inc
@@ -399,11 +399,17 @@ if ($savedraft) { $msgid = strtr($message_id, array('>' => '', '<' => '')); // remember new draft-uid $draftids = $IMAP->search($CONFIG['drafts_mbox'], 'HEADER Message-ID', $msgid); $_SESSION['compose']['param']['_draft_uid'] = $IMAP->get_uid($draftids[0], $CONFIG['drafts_mbox']); // display success $OUTPUT->show_message('messagesaved', 'confirmation'); // update "_draft_saveid" and the "cmp_hash" to prevent "Unsaved changes" warning $OUTPUT->command('set_draft_id', str_replace(array('<','>'), "", $message_id)); $OUTPUT->command('set_draft_id', $msgid); $OUTPUT->command('compose_field_hash', true); // start the auto-save timer again