summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2015-02-25 05:24:05 -0500
committerAleksander Machniak <alec@alec.pl>2015-02-25 05:24:05 -0500
commit216b31dd99b54e7be3df8feebeafae72e423bb1c (patch)
tree360de49a19ce73e2aeb22e49cbb54d705e7388b9 /program
parentdb6663b936310cfc51f9ddd39ab7c338f5527256 (diff)
Fix so "over quota" errors are displayed also in message compose page
This also fixes over quota responses on cyrus imap which uses "Over quota" string and no error identifier.
Diffstat (limited to 'program')
-rw-r--r--program/include/rcmail.php17
-rw-r--r--program/steps/mail/sendmail.inc5
2 files changed, 16 insertions, 6 deletions
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 6e74560cb..2a154d9de 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -1793,8 +1793,9 @@ class rcmail extends rcube
* @param string $fallback Fallback message label
* @param array $fallback_args Fallback message label arguments
* @param string $suffix Message label suffix
+ * @param array $params Additional parameters (type, prefix)
*/
- public function display_server_error($fallback = null, $fallback_args = null, $suffix = '')
+ public function display_server_error($fallback = null, $fallback_args = null, $suffix = '', $params = array())
{
$err_code = $this->storage->get_error_code();
$res_code = $this->storage->get_response_code();
@@ -1815,8 +1816,8 @@ class rcmail extends rcube
$error = 'errornoperm';
}
// try to detect full mailbox problem and display appropriate message
- // there can be e.g. "Quota exceeded" or "quotum would exceed"
- else if (stripos($err_str, 'quot') !== false && stripos($err_str, 'exceed') !== false) {
+ // there can be e.g. "Quota exceeded" / "quotum would exceed" / "Over quota"
+ else if (stripos($err_str, 'quot') !== false && preg_match('/exceed|over/i', $err_str)) {
$error = 'erroroverquota';
}
else {
@@ -1830,13 +1831,21 @@ class rcmail extends rcube
else if ($fallback) {
$error = $fallback;
$args = $fallback_args;
+ $params['prefix'] = false;
}
if ($error) {
if ($suffix && $this->text_exists($error . $suffix)) {
$error .= $suffix;
}
- $this->output->show_message($error, 'error', $args);
+
+ $msg = $this->gettext(array('name' => $error, 'vars' => $args));
+
+ if ($params['prefix'] && $fallback) {
+ $msg = $this->gettext(array('name' => $fallback, 'vars' => $fallback_args)) . ' ' . $msg;
+ }
+
+ $this->output->show_message($msg, $params['type'] ?: 'error');
}
}
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index 5843de43f..4f672ac8b 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -635,7 +635,8 @@ if ($store_target) {
'message' => "Could not save message in $store_target"), true, false);
if ($savedraft) {
- $OUTPUT->show_message('errorsaving', 'error');
+ $RCMAIL->display_server_error('errorsaving');
+
// start the auto-save timer again
$OUTPUT->command('auto_save_start');
$OUTPUT->send('iframe');
@@ -699,7 +700,7 @@ else {
$OUTPUT->command('remove_compose_data', $COMPOSE_ID);
if ($store_folder && !$saved) {
- $OUTPUT->command('sent_successfully', 'error', $RCMAIL->gettext('errorsavingsent'), $folders);
+ $RCMAIL->display_server_error('errorsavingsent', null, null, array('prefix' => true));
}
else if ($store_folder) {
$folders[] = $store_target;