Mercurial > hg > rc1
diff plugins/rc_foldersort/rc_foldersort.js @ 33:d41c01c5c933
two fixes to distro
author | Charlie Root |
---|---|
date | Sun, 27 May 2018 16:53:20 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/rc_foldersort/rc_foldersort.js Sun May 27 16:53:20 2018 -0400 @@ -0,0 +1,115 @@ +if (window.rcmail) { + /* + * EventListener to add the sort order to the request + */ + rcmail.addEventListener('requestlist', function(props) { + if (rcmail.task == 'mail') { + var folder_sort = ''; + var folder = props._mbox; + var col = rcmail.env.sort_col; + var order = rcmail.env.sort_order; + + if (props._sort) { + folder_sort = props._sort; + } else { + if (rcmail.env.per_folder_sort) { + if (rcmail.env.per_folder_sort[folder]) { + folder_sort = rcmail.env.per_folder_sort[folder]; + } else if (rcmail.env.per_folder_sort['default']) { + folder_sort = rcmail.env.per_folder_sort['default']; + } + } + } + + if (folder_sort == '') { + folder_sort = col + '_' + order; + } + + var y = folder_sort.split("_", 2); + col = y[0]; + order = y[1]; + + rcmail.env.sort_col = col; + rcmail.env.sort_order = order; + + http_lock = rcmail.set_busy(true, 'rc_foldersort.savingsession'); + var data = { + cmd: 'change_session', + folder: folder, + col: col, + order: order + }; + rcmail.http_post('plugin.rc_foldersort_json', data, http_lock); + props._sort = folder_sort; + } + + return props; + }); + + /* + * EventListener to change the sorting order before we list the messages + */ + rcmail.addEventListener('beforelist', function(props) { + var folder = rcmail.env.mailbox; + if (props) { + if (rcmail.task == 'mail') { + if (typeof(props) == 'object' && props.ref == 'rcmail') { + folder = props.env.mailbox; + } else if (typeof(props) == 'string') { + folder = props; + } + + var folder_sort; + orig_col = rcmail.env.sort_col; + orig_order = rcmail.env.sort_order; + + if (rcmail.env.per_folder_sort) { + if (rcmail.env.per_folder_sort[folder]) { + folder_sort = rcmail.env.per_folder_sort[folder]; + } else if (rcmail.env.per_folder_sort['default']) { + folder_sort = rcmail.env.per_folder_sort['default']; + } else { + folder_sort = orig_col + '_' + orig_order; + } + + var y = folder_sort.split("_", 2); + col = y[0]; + order = y[1]; + if (orig_col != col || orig_order != order) { + $('#rcm' + orig_col).removeClass('sorted' + (orig_order.toUpperCase())); + $('#rcm' + col).addClass('sorted' + order); + rcmail.env.sort_col = col; + rcmail.env.sort_order = order; + + http_lock = rcmail.set_busy(true, 'rc_foldersort.savingsession'); + var data = { + cmd: 'change_session', + folder: folder, + col: col, + order: order + }; + rcmail.http_post('plugin.rc_foldersort_json', data, http_lock); + } + } + } + } + }); + + /* + * EventListener to handle the header sort clicks + */ + rcmail.addEventListener('aftersort', function(prop) { + if (rcmail.task == 'mail') { + mbox = rcmail.env.mailbox; + + http_lock = rcmail.set_busy(true, 'rc_foldersort.savingdata'); + var data = { + cmd: 'save_order', + folder: mbox, + col: rcmail.env.sort_col, + order: rcmail.env.sort_order + }; + rcmail.http_post('plugin.rc_foldersort_json', data, http_lock); + } + }); +}