- Fix handling dont_override with message_sort_col and message_sort_order settings (#1488760)

pull/39/head
Aleksander Machniak 12 years ago
parent 1e7aa75d18
commit f0affa6cc2

@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail CHANGELOG Roundcube Webmail
=========================== ===========================
- Fix handling dont_override with message_sort_col and message_sort_order settings (#1488760)
- Fix HTML part detection in messages with attachments (#1488769) - Fix HTML part detection in messages with attachments (#1488769)
- Fix bug where wrong words were highlighted on spell-before-send check - Fix bug where wrong words were highlighted on spell-before-send check
- Fix handling of URLs with asterisk characters (#1488759) - Fix handling of URLs with asterisk characters (#1488759)

@ -594,12 +594,11 @@ function rcube_webmail()
break; break;
case 'sort': case 'sort':
var sort_order, sort_col = props; var sort_order = this.env.sort_order,
sort_col = !this.env.disabled_sort_col ? props : this.env.sort_col;
if (this.env.sort_col==sort_col) if (!this.env.disabled_sort_order)
sort_order = this.env.sort_order=='ASC' ? 'DESC' : 'ASC'; sort_order = this.env.sort_col == sort_col && sort_order == 'ASC' ? 'DESC' : 'ASC';
else
sort_order = 'ASC';
// set table header and update env // set table header and update env
this.set_list_sorting(sort_col, sort_order); this.set_list_sorting(sort_col, sort_order);
@ -5733,13 +5732,11 @@ function rcube_webmail()
col = this.env.coltypes[n]; col = this.env.coltypes[n];
if ((cell = thead.rows[0].cells[n]) && (col == 'from' || col == 'to' || col == 'fromto')) { if ((cell = thead.rows[0].cells[n]) && (col == 'from' || col == 'to' || col == 'fromto')) {
cell.id = 'rcm'+col; cell.id = 'rcm'+col;
$('span,a', cell).text(this.get_label(col == 'fromto' ? smart_col : col));
// if we have links for sorting, it's a bit more complicated... // if we have links for sorting, it's a bit more complicated...
if (cell.firstChild && cell.firstChild.tagName.toLowerCase()=='a') { $('a', cell).click(function(){
cell = cell.firstChild; return rcmail.command('sort', this.id.replace(/^rcm/, ''), this);
cell.onclick = function(){ return rcmail.command('sort', this.__col, this); }; });
cell.__col = col;
}
cell.innerHTML = this.get_label(col == 'fromto' ? smart_col : col);
} }
} }
} }

@ -381,6 +381,8 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE, $a_show_cols=null
*/ */
function rcmail_message_list_head($attrib, $a_show_cols) function rcmail_message_list_head($attrib, $a_show_cols)
{ {
global $RCMAIL;
$skin_path = $_SESSION['skin_path']; $skin_path = $_SESSION['skin_path'];
$image_tag = html::img(array('src' => "%s%s", 'alt' => "%s")); $image_tag = html::img(array('src' => "%s%s", 'alt' => "%s"));
@ -388,8 +390,18 @@ function rcmail_message_list_head($attrib, $a_show_cols)
$sort_col = $_SESSION['sort_col']; $sort_col = $_SESSION['sort_col'];
$sort_order = $_SESSION['sort_order']; $sort_order = $_SESSION['sort_order'];
$dont_override = (array)$RCMAIL->config->get('dont_override');
$disabled_sort = in_array('message_sort_col', $dont_override);
$disabled_order = in_array('message_sort_order', $dont_override);
$RCMAIL->output->set_env('disabled_sort_col', $disabled_sort);
$RCMAIL->output->set_env('disabled_sort_order', $disabled_order);
// define sortable columns // define sortable columns
$a_sort_cols = array('subject', 'date', 'from', 'to', 'fromto', 'size', 'cc'); if ($disabled_sort)
$a_sort_cols = $sort_col && !$disabled_order ? array($sort_col) : array();
else
$a_sort_cols = array('subject', 'date', 'from', 'to', 'fromto', 'size', 'cc');
if (!empty($attrib['optionsmenuicon'])) { if (!empty($attrib['optionsmenuicon'])) {
$onclick = 'return ' . JS_OBJECT_NAME . ".command('menu-open', 'messagelistmenu')"; $onclick = 'return ' . JS_OBJECT_NAME . ".command('menu-open', 'messagelistmenu')";
@ -439,7 +451,7 @@ function rcmail_message_list_head($attrib, $a_show_cols)
else if ($col_name[0] != '<') else if ($col_name[0] != '<')
$col_name = '<span class="' . $col .'">' . $col_name . '</span>'; $col_name = '<span class="' . $col .'">' . $col_name . '</span>';
$sort_class = $col == $sort_col ? " sorted$sort_order" : ''; $sort_class = $col == $sort_col && !$disabled_order ? " sorted$sort_order" : '';
$class_name = $col.$sort_class; $class_name = $col.$sort_class;
// put it all together // put it all together

@ -23,27 +23,33 @@ if (!$OUTPUT->ajax_call) {
return; return;
} }
$save_arr = array();
$dont_override = (array) $RCMAIL->config->get('dont_override');
// is there a sort type for this request? // is there a sort type for this request?
if ($sort = get_input_value('_sort', RCUBE_INPUT_GET)) if ($sort = get_input_value('_sort', RCUBE_INPUT_GET)) {
{
// yes, so set the sort vars // yes, so set the sort vars
list($sort_col, $sort_order) = explode('_', $sort); list($sort_col, $sort_order) = explode('_', $sort);
// set session vars for sort (so next page and task switch know how to sort) // set session vars for sort (so next page and task switch know how to sort)
$save_arr = array(); if (!in_array('message_sort_col', $dont_override)) {
$_SESSION['sort_col'] = $save_arr['message_sort_col'] = $sort_col; $_SESSION['sort_col'] = $save_arr['message_sort_col'] = $sort_col;
$_SESSION['sort_order'] = $save_arr['message_sort_order'] = $sort_order; }
if (!in_array('message_sort_order', $dont_override)) {
$_SESSION['sort_order'] = $save_arr['message_sort_order'] = $sort_order;
}
} }
// is there a set of columns for this request? // is there a set of columns for this request?
if ($cols = get_input_value('_cols', RCUBE_INPUT_GET)) if ($cols = get_input_value('_cols', RCUBE_INPUT_GET)) {
{ if (!in_array('list_cols', $dont_override)) {
$save_arr = array(); $save_arr['list_cols'] = explode(',', $cols);
$save_arr['list_cols'] = explode(',', $cols); }
} }
if ($save_arr) if (!empty($save_arr)) {
$RCMAIL->user->save_prefs($save_arr); $RCMAIL->user->save_prefs($save_arr);
}
$mbox_name = $RCMAIL->storage->get_folder(); $mbox_name = $RCMAIL->storage->get_folder();
$threading = (bool) $RCMAIL->storage->get_threading(); $threading = (bool) $RCMAIL->storage->get_threading();
@ -52,8 +58,7 @@ $threading = (bool) $RCMAIL->storage->get_threading();
$RCMAIL->storage->folder_sync($mbox_name); $RCMAIL->storage->folder_sync($mbox_name);
// initialize searching result if search_filter is used // initialize searching result if search_filter is used
if ($_SESSION['search_filter'] && $_SESSION['search_filter'] != 'ALL') if ($_SESSION['search_filter'] && $_SESSION['search_filter'] != 'ALL') {
{
$search_request = md5($mbox_name.$_SESSION['search_filter']); $search_request = md5($mbox_name.$_SESSION['search_filter']);
$RCMAIL->storage->search($mbox_name, $_SESSION['search_filter'], RCMAIL_CHARSET, rcmail_sort_column()); $RCMAIL->storage->search($mbox_name, $_SESSION['search_filter'], RCMAIL_CHARSET, rcmail_sort_column());
$_SESSION['search'] = $RCMAIL->storage->get_search_set(); $_SESSION['search'] = $RCMAIL->storage->get_search_set();
@ -76,7 +81,6 @@ else if (empty($_REQUEST['_search']) && isset($_SESSION['search'])) {
$RCMAIL->session->remove('search'); $RCMAIL->session->remove('search');
} }
// empty result? we'll skip UNSEEN counting in rcmail_send_unread_count() // empty result? we'll skip UNSEEN counting in rcmail_send_unread_count()
if (empty($search_request) && empty($a_headers)) { if (empty($search_request) && empty($a_headers)) {
$unseen = 0; $unseen = 0;
@ -96,10 +100,10 @@ $OUTPUT->command('set_mailboxname', rcmail_get_mailbox_name_text());
// add message rows // add message rows
rcmail_js_message_list($a_headers, FALSE, $cols); rcmail_js_message_list($a_headers, FALSE, $cols);
if (isset($a_headers) && count($a_headers)) if (isset($a_headers) && count($a_headers)) {
{ if ($search_request) {
if ($search_request)
$OUTPUT->show_message('searchsuccessful', 'confirmation', array('nr' => $count)); $OUTPUT->show_message('searchsuccessful', 'confirmation', array('nr' => $count));
}
} }
else { else {
// handle IMAP errors (e.g. #1486905) // handle IMAP errors (e.g. #1486905)

Loading…
Cancel
Save