From 5de338e45ebca0d055e0bb2a8df4db20fa61c6de Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sat, 17 Oct 2015 07:38:36 -0400
Subject: [PATCH] Update changelog
---
program/steps/settings/func.inc | 181 +++++++++++++++++++++++++++++----------------
1 files changed, 116 insertions(+), 65 deletions(-)
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index c504e6c..68ee84c 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -5,7 +5,7 @@
| program/steps/settings/func.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2012, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -22,6 +22,32 @@
if (!$OUTPUT->ajax_call) {
$OUTPUT->set_pagetitle($RCMAIL->gettext('preferences'));
}
+
+// register UI objects
+$OUTPUT->add_handlers(array(
+ 'settingstabs' => 'rcmail_settings_tabs',
+ 'prefsframe' => 'rcmail_preferences_frame',
+ 'sectionslist' => 'rcmail_sections_list',
+ 'identitieslist' => 'rcmail_identities_list',
+));
+
+// register action aliases
+$RCMAIL->register_action_map(array(
+ 'folders' => 'folders.inc',
+ 'rename-folder' => 'folders.inc',
+ 'delete-folder' => 'folders.inc',
+ 'subscribe' => 'folders.inc',
+ 'unsubscribe' => 'folders.inc',
+ 'purge' => 'folders.inc',
+ 'folder-size' => 'folders.inc',
+ 'add-identity' => 'edit_identity.inc',
+ 'add-response' => 'edit_response.inc',
+ 'save-response' => 'edit_response.inc',
+ 'delete-response' => 'responses.inc',
+ 'delete-identity' => 'identities.inc',
+ 'upload-display' => 'upload.inc',
+));
+
// similar function as /steps/settings/identities.inc::rcmail_identity_frame()
function rcmail_preferences_frame($attrib)
@@ -68,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
@@ -194,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'));
@@ -308,28 +334,36 @@
$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').': ' . $license_link : ''))
);
}
+ array_multisort($blocks['skin']['options'], SORT_ASC, SORT_STRING, $skinnames);
}
}
@@ -352,13 +386,16 @@
if ($current) {
$product_name = $RCMAIL->config->get('product_name', 'Roundcube Webmail');
$RCMAIL->output->add_script(sprintf("%s.check_protocol_handler('%s', '#mailtoprotohandler');",
- rcmail_output::JS_OBJECT_NAME, rcube::JQ($product_name)), 'foot');
+ rcmail_output::JS_OBJECT_NAME, rcube::JQ($product_name)), 'docready');
}
$blocks['browser']['options']['mailtoprotohandler'] = array(
'content' => html::a(array(
- 'href' => '#',
- 'id' => 'mailtoprotohandler'), rcube::Q($RCMAIL->gettext('mailtoprotohandler'))),
+ 'href' => '#',
+ 'id' => 'mailtoprotohandler'
+ ),
+ rcube::Q($RCMAIL->gettext('mailtoprotohandler'))) .
+ html::span('mailtoprotohandler-status', ''),
);
break;
@@ -425,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'))),
@@ -808,6 +845,20 @@
);
}
+ if (!isset($no_override['sig_below'])) {
+ if (!$current) {
+ continue 2;
+ }
+
+ $field_id = 'rcmfd_sig_below';
+ $input = new html_checkbox(array('name' => '_sig_below', 'id' => $field_id, 'value' => 1));
+
+ $blocks['sig']['options']['sig_below'] = array(
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('sigbelow'))),
+ 'content' => $input->show($RCMAIL->config->get('sig_below') ? 1 : 0),
+ );
+ }
+
if (!isset($no_override['strip_existing_sig'])) {
if (!$current) {
continue 2;
@@ -859,7 +910,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);
}
@@ -884,6 +935,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),
);
}
@@ -1008,7 +1073,8 @@
}
// Configure special folders
- if (!isset($no_override['default_folders']) && $current) {
+ $set = array('drafts_mbox', 'sent_mbox', 'junk_mbox', 'trash_mbox');
+ if ($current && count(array_intersect($no_override, $set)) < 4) {
$select = $RCMAIL->folder_selector(array(
'noselection' => '---',
'realnames' => true,
@@ -1016,10 +1082,10 @@
'folder_filter' => 'mail',
'folder_rights' => 'w',
));
- }
- // #1486114, #1488279, #1489219
- $onchange = "if ($(this).val() == 'INBOX') $(this).val('')";
+ // #1486114, #1488279, #1489219
+ $onchange = "if ($(this).val() == 'INBOX') $(this).val('')";
+ }
if (!isset($no_override['drafts_mbox'])) {
if (!$current) {
@@ -1180,7 +1246,7 @@
$data = $RCMAIL->plugins->exec_hook('preferences_list',
array('section' => $sect['id'], 'blocks' => $blocks, 'current' => $current));
- $advanced_prefs = $config['advanced_prefs'];
+ $advanced_prefs = (array) $RCMAIL->config->get('advanced_prefs');
// create output
foreach ($data['blocks'] as $key => $block) {
@@ -1209,6 +1275,13 @@
unset($sections[$idx]);
else
$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']);
@@ -1260,25 +1333,24 @@
{
global $RCMAIL, $OUTPUT;
- $default_folders = (array) $RCMAIL->config->get('default_folders');
$protect_folders = $RCMAIL->config->get('protect_default_folders');
+ $storage = $RCMAIL->get_storage();
+ $delimiter = $storage->get_hierarchy_delimiter();
- $storage = $RCMAIL->get_storage();
- $delimiter = $storage->get_hierarchy_delimiter();
$name_utf8 = rcube_charset::convert($name, 'UTF7-IMAP');
- $protected = $protect_folders && in_array($name, $default_folders);
-
+ $protected = $protect_folders && $storage->is_special_folder($name);
$foldersplit = explode($delimiter, $storage->mod_folder($name));
$level = count($foldersplit) - 1;
- $display_name = str_repeat(' ', $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);
- else
- $OUTPUT->command('replace_folder_row', rcube_charset::convert($oldname, 'UTF7-IMAP'),
- $name_utf8, $display_name, $protected, $class_name);
+ if ($oldname === null) {
+ $OUTPUT->command('add_folder_row', $name, $name_utf8, $display_name, $protected, $subscribe,
+ $class_name);
+ }
+ else {
+ $OUTPUT->command('replace_folder_row', $oldname, $name, $name_utf8, $display_name, $protected, $class_name);
+ }
}
/**
@@ -1295,32 +1367,34 @@
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
$plugin = $RCMAIL->plugins->exec_hook('settings_actions', array(
'actions' => $default_actions,
- 'attrib' => $attrib,
+ 'attrib' => $attrib,
));
- $attrib = $plugin['attrib'];
+ $attrib = $plugin['attrib'];
$tagname = $attrib['tagname'];
- $tabs = array();
+ $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']));
}
$button = $OUTPUT->button($action);
- $attr = $attrib;
+ $attr = $attrib;
$cmd = $action['action'] ? $action['action'] : $action['command'];
- $id = $action['id'] ? $action['id'] : $cmd;
+ $id = $action['id'] ? $action['id'] : $cmd;
+
if (!empty($id)) {
$attr['id'] = preg_replace('/[^a-z0-9]/i', '', $attrib['idprefix'] . $id);
}
+
$classnames = array($attrib['class']);
if (!empty($action['class'])) {
$classnames[] = $action['class'];
@@ -1331,33 +1405,10 @@
if ($RCMAIL->action == $cmd) {
$classnames[] = $attrib['selclass'];
}
+
$attr['class'] = join(' ', $classnames);
$tabs[] = html::tag($tagname, $attr, $button, html::$common_attrib);
}
return join('', $tabs);
}
-
-
-// register UI objects
-$OUTPUT->add_handlers(array(
- 'settingstabs' => 'rcmail_settings_tabs',
- 'prefsframe' => 'rcmail_preferences_frame',
- 'sectionslist' => 'rcmail_sections_list',
- 'identitieslist' => 'rcmail_identities_list',
-));
-
-// register action aliases
-$RCMAIL->register_action_map(array(
- 'folders' => 'folders.inc',
- 'rename-folder' => 'folders.inc',
- 'delete-folder' => 'folders.inc',
- 'subscribe' => 'folders.inc',
- 'unsubscribe' => 'folders.inc',
- 'purge' => 'folders.inc',
- 'folder-size' => 'folders.inc',
- 'add-identity' => 'edit_identity.inc',
- 'add-response' => 'edit_response.inc',
- 'save-response' => 'edit_response.inc',
- 'delete-response' => 'responses.inc',
-));
--
Gitblit v1.9.1