From 216b31dd99b54e7be3df8feebeafae72e423bb1c Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Wed, 25 Feb 2015 05:24:05 -0500
Subject: [PATCH] Fix so "over quota" errors are displayed also in message compose page

---
 program/steps/settings/func.inc |   72 +++++++++++++++++++++++++-----------
 1 files changed, 50 insertions(+), 22 deletions(-)

diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index bccd9ca..087b236 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -44,6 +44,8 @@
     'add-response'  => 'edit_response.inc',
     'save-response' => 'edit_response.inc',
     'delete-response' => 'responses.inc',
+    'delete-identity' => 'identities.inc',
+    'upload-display'  => 'upload.inc',
 ));
 
 
@@ -92,9 +94,9 @@
     }
 
     // get identities list and define 'mail' column
-    $list = $RCMAIL->user->list_identities();
+    $list = $RCMAIL->user->list_emails();
     foreach ($list as $idx => $row) {
-        $list[$idx]['mail'] = trim($row['name'] . ' <' . rcube_utils::idn_to_utf8($row['email']) .'>');
+        $list[$idx]['mail'] = trim($row['name'] . ' <' . rcube_utils::idn_to_utf8($row['email']) . '>');
     }
 
     // get all identites from DB and define list of cols to be displayed
@@ -218,7 +220,7 @@
                 foreach (DateTimeZone::listIdentifiers() as $i => $tzs) {
                     try {
                         $tz      = new DateTimeZone($tzs);
-                        $date    = new DateTime('2012-12-21', $tz);
+                        $date    = new DateTime(date('Y') . '-12-21', $tz);
                         $offset  = $date->format('Z') + 45000;
                         $sortkey = sprintf('%06d.%s', $offset, $tzs);
                         $zones[$sortkey] = array($tzs, $date->format('P'));
@@ -332,24 +334,30 @@
                     $input    = new html_radiobutton(array('name'=>'_skin'));
 
                     foreach ($skins as $skin) {
-                        $thumbnail = "./skins/$skin/thumbnail.png";
-                        if (!is_file($thumbnail))
-                            $thumbnail = './program/resources/blank.gif';
-
+                        $thumbnail   = "skins/$skin/thumbnail.png";
                         $skinname    = ucfirst($skin);
                         $author_link = $license_link = '';
-                        $meta        = @json_decode(@file_get_contents("./skins/$skin/meta.json"), true);
+                        $meta        = @json_decode(@file_get_contents(INSTALL_PATH . "skins/$skin/meta.json"), true);
 
                         if (is_array($meta) && $meta['name']) {
                             $skinname     = $meta['name'];
                             $author_link  = $meta['url'] ? html::a(array('href' => $meta['url'], 'target' => '_blank'), rcube::Q($meta['author'])) : rcube::Q($meta['author']);
-                            $license_link = $meta['license-url'] ? html::a(array('href' => $meta['license-url'], 'target' => '_blank'), rcube::Q($meta['license'])) : rcube::Q($meta['license']);
+                            $license_link = $meta['license-url'] ? html::a(array('href' => $meta['license-url'], 'target' => '_blank', 'tabindex' => '-1'), rcube::Q($meta['license'])) : rcube::Q($meta['license']);
                         }
+
+                        $img = html::img(array(
+                                'src'     => $thumbnail,
+                                'class'   => 'skinthumbnail',
+                                'alt'     => $skin,
+                                'width'   => 64,
+                                'height'  => 64,
+                                'onerror' => "this.src = rcmail.assets_path('program/resources/blank.gif')",
+                        ));
 
                         $skinnames[] = mb_strtolower($skinname);
                         $blocks['skin']['options'][$skin]['content'] = html::label(array('class' => 'skinselection'),
                             html::span('skinitem', $input->show($config['skin'], array('value' => $skin, 'id' => $field_id.$skin))) .
-                            html::span('skinitem', html::img(array('src' => $thumbnail, 'class' => 'skinthumbnail', 'alt' => $skin, 'width' => 64, 'height' => 64))) .
+                            html::span('skinitem', $img) .
                             html::span('skinitem', html::span('skinname', rcube::Q($skinname)) . html::br() .
                                 html::span('skinauthor', $author_link ? 'by ' . $author_link : '') . html::br() .
                                 html::span('skinlicense', $license_link ? $RCMAIL->gettext('license').':&nbsp;' . $license_link : ''))
@@ -454,7 +462,7 @@
                 $select->add($RCMAIL->gettext('autosend'), 1);
                 $select->add($RCMAIL->gettext('autosendknown'), 3);
                 $select->add($RCMAIL->gettext('autosendknownignore'), 4);
-                $select->add($RCMAIL->gettext('ignore'), 2);
+                $select->add($RCMAIL->gettext('ignorerequest'), 2);
 
                 $blocks['main']['options']['mdn_requests'] = array(
                     'title'   => html::label($field_id, rcube::Q($RCMAIL->gettext('mdnrequests'))),
@@ -888,7 +896,7 @@
                 $select_default_font->add('', '');
 
                 $fonts = rcmail::font_defs();
-                foreach ($fonts as $fname => $font) {
+                foreach (array_keys($fonts) as $fname) {
                     $select_default_font->add($fname, $fname);
                 }
 
@@ -913,6 +921,20 @@
                 $blocks['main']['options']['reply_all_mode'] = array(
                     'title'   => html::label($field_id, rcube::Q($RCMAIL->gettext('replyallmode'))),
                     'content' => $select->show(intval($config['reply_all_mode'])),
+                );
+            }
+
+            if (!isset($no_override['compose_save_localstorage'])) {
+                if (!$current) {
+                    continue 2;
+                }
+
+                $field_id = 'rcmfd_compose_save_localstorage';
+                $input    = new html_checkbox(array('name' => '_compose_save_localstorage', 'id' => $field_id, 'value' => 1));
+
+                $blocks['advanced']['options']['compose_save_localstorage'] = array(
+                    'title'    => html::label($field_id, rcube::Q($RCMAIL->gettext('savelocalstorage'))),
+                    'content'  => $input->show($config['compose_save_localstorage']?1:0),
                 );
             }
 
@@ -1241,6 +1263,13 @@
             $sections[$idx]['blocks'] = $data['blocks'];
     }
 
+    $data = $RCMAIL->plugins->exec_hook('preferences_section_header',
+        array('section' => $sect['id'], 'header' => '', 'current' => $current));
+
+    if(!empty($data['header'])) {
+        $sections[$idx]['header'] = $data['header'];
+    }
+
     return array($sections, $plugin['cols']);
 }
 
@@ -1293,21 +1322,20 @@
     $protect_folders = $RCMAIL->config->get('protect_default_folders');
     $storage         = $RCMAIL->get_storage();
     $delimiter       = $storage->get_hierarchy_delimiter();
-    $name_utf8       = rcube_charset::convert($name, 'UTF7-IMAP');
-    $protected       = $protect_folders && $storage->is_special_folder($name);
 
+    $name_utf8    = rcube_charset::convert($name, 'UTF7-IMAP');
+    $protected    = $protect_folders && $storage->is_special_folder($name);
     $foldersplit  = explode($delimiter, $storage->mod_folder($name));
     $level        = count($foldersplit) - 1;
-    $display_name = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $level)
-        . rcube::Q($protected ? $RCMAIL->localize_foldername($name) : rcube_charset::convert($foldersplit[$level], 'UTF7-IMAP'));
+    $display_name = $protected ? $RCMAIL->localize_foldername($name) : rcube_charset::convert($foldersplit[$level], 'UTF7-IMAP');
+    $class_name   = trim($class_name . ' mailbox');
 
     if ($oldname === null) {
-        $OUTPUT->command('add_folder_row', $name_utf8, $display_name, $protected, $subscribe,
-            false, $class_name);
+        $OUTPUT->command('add_folder_row', $name, $name_utf8, $display_name, $protected, $subscribe,
+            $class_name);
     }
     else {
-        $OUTPUT->command('replace_folder_row', rcube_charset::convert($oldname, 'UTF7-IMAP'),
-            $name_utf8, $display_name, $protected, $class_name);
+        $OUTPUT->command('replace_folder_row', $oldname, $name, $name_utf8, $display_name, $protected, $class_name);
     }
 }
 
@@ -1325,7 +1353,7 @@
         array('command' => 'preferences', 'type' => 'link', 'label' => 'preferences', 'title' => 'editpreferences'),
         array('command' => 'folders',     'type' => 'link', 'label' => 'folders',     'title' => 'managefolders'),
         array('command' => 'identities',  'type' => 'link', 'label' => 'identities',  'title' => 'manageidentities'),
-        array('command' => 'responses',   'type' => 'link', 'label' => 'responses',   'title' => 'editresponses'),
+        array('command' => 'responses',   'type' => 'link', 'label' => 'responses',   'title' => 'manageresponses'),
     );
 
     // get all identites from DB and define list of cols to be displayed
@@ -1338,7 +1366,7 @@
     $tagname = $attrib['tagname'];
     $tabs    = array();
 
-    foreach ($plugin['actions'] as $k => $action) {
+    foreach ($plugin['actions'] as $action) {
         if (!$action['command'] && !$action['href'] && $action['action']) {
             $action['href'] = $RCMAIL->url(array('_action' => $action['action']));
         }

--
Gitblit v1.9.1