Make addEventListener() chainable for better performance and compact code

Replace deperecated row_init usage with addEventListener('initrow')
pull/158/merge
Aleksander Machniak 11 years ago
parent 7b39845b3a
commit 772bec6789

@ -198,22 +198,23 @@ function rcube_webmail()
multiselect:true, multiexpand:true, draggable:true, keyboard:true, multiselect:true, multiexpand:true, draggable:true, keyboard:true,
column_movable:this.env.col_movable, dblclick_time:this.dblclick_time column_movable:this.env.col_movable, dblclick_time:this.dblclick_time
}); });
this.message_list.row_init = function(o){ p.init_message_row(o); }; this.message_list
this.message_list.addEventListener('dblclick', function(o){ p.msglist_dbl_click(o); }); .addEventListener('initrow', function(o) { p.init_message_row(o); })
this.message_list.addEventListener('click', function(o){ p.msglist_click(o); }); .addEventListener('dblclick', function(o) { p.msglist_dbl_click(o); })
this.message_list.addEventListener('keypress', function(o){ p.msglist_keypress(o); }); .addEventListener('click', function(o) { p.msglist_click(o); })
this.message_list.addEventListener('select', function(o){ p.msglist_select(o); }); .addEventListener('keypress', function(o) { p.msglist_keypress(o); })
this.message_list.addEventListener('dragstart', function(o){ p.drag_start(o); }); .addEventListener('select', function(o) { p.msglist_select(o); })
this.message_list.addEventListener('dragmove', function(e){ p.drag_move(e); }); .addEventListener('dragstart', function(o) { p.drag_start(o); })
this.message_list.addEventListener('dragend', function(e){ p.drag_end(e); }); .addEventListener('dragmove', function(e) { p.drag_move(e); })
this.message_list.addEventListener('expandcollapse', function(e){ p.msglist_expand(e); }); .addEventListener('dragend', function(e) { p.drag_end(e); })
this.message_list.addEventListener('column_replace', function(e){ p.msglist_set_coltypes(e); }); .addEventListener('expandcollapse', function(o) { p.msglist_expand(o); })
this.message_list.addEventListener('listupdate', function(e){ p.triggerEvent('listupdate', e); }); .addEventListener('column_replace', function(o) { p.msglist_set_coltypes(o); })
.addEventListener('listupdate', function(o) { p.triggerEvent('listupdate', o); })
.init();
document.onmouseup = function(e){ return p.doc_mouse_up(e); }; document.onmouseup = function(e){ return p.doc_mouse_up(e); };
this.gui_objects.messagelist.parentNode.onmousedown = function(e){ return p.click_on_list(e); }; this.gui_objects.messagelist.parentNode.onmousedown = function(e){ return p.click_on_list(e); };
this.message_list.init();
this.enable_command('toggle_status', 'toggle_flag', 'sort', true); this.enable_command('toggle_status', 'toggle_flag', 'sort', true);
// load messages // load messages
@ -313,10 +314,11 @@ function rcube_webmail()
if (this.gui_objects.contactslist) { if (this.gui_objects.contactslist) {
this.contact_list = new rcube_list_widget(this.gui_objects.contactslist, this.contact_list = new rcube_list_widget(this.gui_objects.contactslist,
{ multiselect:true, draggable:false, keyboard:false }); { multiselect:true, draggable:false, keyboard:false });
this.contact_list.row_init = function(row){ p.triggerEvent('insertrow', { cid:row.uid, row:row }); }; this.contact_list
this.contact_list.addEventListener('select', function(o){ ref.compose_recipient_select(o); }); .addEventListener('initrow', function(o) { p.triggerEvent('insertrow', { cid:o.uid, row:o }); })
this.contact_list.addEventListener('dblclick', function(o){ ref.compose_add_recipient('to'); }); .addEventListener('select', function(o) { ref.compose_recipient_select(o); })
this.contact_list.init(); .addEventListener('dblclick', function(o) { ref.compose_add_recipient('to'); })
.init();
} }
if (this.gui_objects.addressbookslist) { if (this.gui_objects.addressbookslist) {
@ -353,13 +355,14 @@ function rcube_webmail()
if (this.gui_objects.contactslist) { if (this.gui_objects.contactslist) {
this.contact_list = new rcube_list_widget(this.gui_objects.contactslist, this.contact_list = new rcube_list_widget(this.gui_objects.contactslist,
{multiselect:true, draggable:this.gui_objects.folderlist?true:false, keyboard:true}); {multiselect:true, draggable:this.gui_objects.folderlist?true:false, keyboard:true});
this.contact_list.row_init = function(row){ p.triggerEvent('insertrow', { cid:row.uid, row:row }); }; this.contact_list
this.contact_list.addEventListener('keypress', function(o){ p.contactlist_keypress(o); }); .addEventListener('initrow', function(o) { p.triggerEvent('insertrow', { cid:o.uid, row:o }); })
this.contact_list.addEventListener('select', function(o){ p.contactlist_select(o); }); .addEventListener('keypress', function(o) { p.contactlist_keypress(o); })
this.contact_list.addEventListener('dragstart', function(o){ p.drag_start(o); }); .addEventListener('select', function(o) { p.contactlist_select(o); })
this.contact_list.addEventListener('dragmove', function(e){ p.drag_move(e); }); .addEventListener('dragstart', function(o) { p.drag_start(o); })
this.contact_list.addEventListener('dragend', function(e){ p.drag_end(e); }); .addEventListener('dragmove', function(e) { p.drag_move(e); })
this.contact_list.init(); .addEventListener('dragend', function(e) { p.drag_end(e); })
.init();
if (this.env.cid) if (this.env.cid)
this.contact_list.highlight_row(this.env.cid); this.contact_list.highlight_row(this.env.cid);
@ -416,35 +419,39 @@ function rcube_webmail()
} }
if (this.gui_objects.identitieslist) { if (this.gui_objects.identitieslist) {
this.identity_list = new rcube_list_widget(this.gui_objects.identitieslist, {multiselect:false, draggable:false, keyboard:false}); this.identity_list = new rcube_list_widget(this.gui_objects.identitieslist,
this.identity_list.addEventListener('select', function(o){ p.identity_select(o); }); {multiselect:false, draggable:false, keyboard:false});
this.identity_list.init(); this.identity_list
this.identity_list.focus(); .addEventListener('select', function(o) { p.identity_select(o); })
.init()
.focus();
if (this.env.iid) if (this.env.iid)
this.identity_list.highlight_row(this.env.iid); this.identity_list.highlight_row(this.env.iid);
} }
else if (this.gui_objects.sectionslist) { else if (this.gui_objects.sectionslist) {
this.sections_list = new rcube_list_widget(this.gui_objects.sectionslist, {multiselect:false, draggable:false, keyboard:false}); this.sections_list = new rcube_list_widget(this.gui_objects.sectionslist, {multiselect:false, draggable:false, keyboard:false});
this.sections_list.addEventListener('select', function(o){ p.section_select(o); }); this.sections_list
this.sections_list.init(); .addEventListener('select', function(o) { p.section_select(o); })
this.sections_list.focus(); .init()
.focus();
} }
else if (this.gui_objects.subscriptionlist) { else if (this.gui_objects.subscriptionlist) {
this.init_subscription_list(); this.init_subscription_list();
} }
else if (this.gui_objects.responseslist) { else if (this.gui_objects.responseslist) {
this.responses_list = new rcube_list_widget(this.gui_objects.responseslist, {multiselect:false, draggable:false, keyboard:false}); this.responses_list = new rcube_list_widget(this.gui_objects.responseslist, {multiselect:false, draggable:false, keyboard:false});
this.responses_list.addEventListener('select', function(list) { this.responses_list
var win, id = list.get_single_selection(); .addEventListener('select', function(list) {
p.enable_command('delete', !!id && $.inArray(id, p.env.readonly_responses) < 0); var win, id = list.get_single_selection();
if (id && (win = p.get_frame_window(p.env.contentframe))) { p.enable_command('delete', !!id && $.inArray(id, p.env.readonly_responses) < 0);
p.set_busy(true); if (id && (win = p.get_frame_window(p.env.contentframe))) {
p.location_href({ _action:'edit-response', _key:id, _framed:1 }, win); p.set_busy(true);
} p.location_href({ _action:'edit-response', _key:id, _framed:1 }, win);
}); }
this.responses_list.init(); })
this.responses_list.focus(); .init()
.focus();
} }
break; break;
@ -510,11 +517,12 @@ function rcube_webmail()
id_prefix: 'rcmli', id_prefix: 'rcmli',
id_encode: this.html_identifier_encode, id_encode: this.html_identifier_encode,
id_decode: this.html_identifier_decode, id_decode: this.html_identifier_decode,
check_droptarget: function(node){ return !node.virtual && ref.check_droptarget(node.id) } check_droptarget: function(node) { return !node.virtual && ref.check_droptarget(node.id) }
}); });
this.treelist.addEventListener('collapse', function(node){ ref.folder_collapsed(node) }); this.treelist
this.treelist.addEventListener('expand', function(node){ ref.folder_collapsed(node) }); .addEventListener('collapse', function(node) { ref.folder_collapsed(node) })
this.treelist.addEventListener('select', function(node){ ref.triggerEvent('selectfolder', { folder:node.id, prefix:'rcmli' }) }); .addEventListener('expand', function(node) { ref.folder_collapsed(node) })
.addEventListener('select', function(node) { ref.triggerEvent('selectfolder', { folder:node.id, prefix:'rcmli' }) });
} }
} }
@ -5615,14 +5623,15 @@ function rcube_webmail()
this.subscription_list = new rcube_list_widget(this.gui_objects.subscriptionlist, this.subscription_list = new rcube_list_widget(this.gui_objects.subscriptionlist,
{multiselect:false, draggable:true, keyboard:false, toggleselect:true}); {multiselect:false, draggable:true, keyboard:false, toggleselect:true});
this.subscription_list.addEventListener('select', function(o){ p.subscription_select(o); }); this.subscription_list
this.subscription_list.addEventListener('dragstart', function(o){ p.drag_active = true; }); .addEventListener('select', function(o){ p.subscription_select(o); })
this.subscription_list.addEventListener('dragend', function(o){ p.subscription_move_folder(o); }); .addEventListener('dragstart', function(o){ p.drag_active = true; })
this.subscription_list.row_init = function (row) { .addEventListener('dragend', function(o){ p.subscription_move_folder(o); })
row.obj.onmouseover = function() { p.focus_subscription(row.id); }; .addEventListener('initrow', function (row) {
row.obj.onmouseout = function() { p.unfocus_subscription(row.id); }; row.obj.onmouseover = function() { p.focus_subscription(row.id); };
}; row.obj.onmouseout = function() { p.unfocus_subscription(row.id); };
this.subscription_list.init(); })
.init();
$('#mailboxroot') $('#mailboxroot')
.mouseover(function(){ p.focus_subscription(this.id); }) .mouseover(function(){ p.focus_subscription(this.id); })

@ -285,7 +285,6 @@ rcube_event_engine.prototype = {
* *
* @param {String} Event name * @param {String} Event name
* @param {Function} Handler function * @param {Function} Handler function
* @return Listener ID (used to remove this handler later on)
*/ */
addEventListener: function(evt, func, obj) addEventListener: function(evt, func, obj)
{ {
@ -295,6 +294,8 @@ addEventListener: function(evt, func, obj)
this._events[evt] = []; this._events[evt] = [];
this._events[evt].push({func:func, obj:obj ? obj : window}); this._events[evt].push({func:func, obj:obj ? obj : window});
return this; // chainable
}, },
/** /**

@ -97,6 +97,8 @@ init: function()
if (this.keyboard) if (this.keyboard)
rcube_event.add_listener({event:'keydown', object:this, method:'key_press'}); rcube_event.add_listener({event:'keydown', object:this, method:'key_press'});
} }
return this;
}, },

@ -136,9 +136,9 @@ function rcube_mail_ui()
/*** mail task ***/ /*** mail task ***/
if (rcmail.env.task == 'mail') { if (rcmail.env.task == 'mail') {
rcmail.addEventListener('menu-open', menu_open); rcmail.addEventListener('menu-open', menu_open)
rcmail.addEventListener('menu-save', menu_save); .addEventListener('menu-save', menu_save)
rcmail.addEventListener('responseafterlist', function(e){ switch_view_mode(rcmail.env.threading ? 'thread' : 'list') }); .addEventListener('responseafterlist', function(e){ switch_view_mode(rcmail.env.threading ? 'thread' : 'list') });
var dragmenu = $('#dragmessagemenu'); var dragmenu = $('#dragmessagemenu');
if (dragmenu.length) { if (dragmenu.length) {
@ -147,9 +147,9 @@ function rcube_mail_ui()
} }
if (rcmail.env.action == 'show' || rcmail.env.action == 'preview') { if (rcmail.env.action == 'show' || rcmail.env.action == 'preview') {
rcmail.addEventListener('enable-command', enable_command); rcmail.addEventListener('enable-command', enable_command)
rcmail.addEventListener('aftershow-headers', function() { layout_messageview(); }); .addEventListener('aftershow-headers', function() { layout_messageview(); })
rcmail.addEventListener('afterhide-headers', function() { layout_messageview(); }); .addEventListener('afterhide-headers', function() { layout_messageview(); });
$('#previewheaderstoggle').click(function(e){ toggle_preview_headers(); return false }); $('#previewheaderstoggle').click(function(e){ toggle_preview_headers(); return false });
// add menu link for each attachment // add menu link for each attachment
@ -162,13 +162,13 @@ function rcube_mail_ui()
} }
} }
else if (rcmail.env.action == 'compose') { else if (rcmail.env.action == 'compose') {
rcmail.addEventListener('aftertoggle-editor', function(e){ rcmail.addEventListener('aftersend-attachment', show_uploadform)
window.setTimeout(function(){ layout_composeview() }, 200); .addEventListener('add-recipient', function(p){ show_header_row(p.field, true); })
if (e && e.mode) .addEventListener('aftertoggle-editor', function(e){
$("select[name='editorSelector']").val(e.mode); window.setTimeout(function(){ layout_composeview() }, 200);
}); if (e && e.mode)
rcmail.addEventListener('aftersend-attachment', show_uploadform); $("select[name='editorSelector']").val(e.mode);
rcmail.addEventListener('add-recipient', function(p){ show_header_row(p.field, true); }); });
// Show input elements with non-empty value // Show input elements with non-empty value
var f, v, field, fields = ['cc', 'bcc', 'replyto', 'followupto']; var f, v, field, fields = ['cc', 'bcc', 'replyto', 'followupto'];
@ -218,9 +218,9 @@ function rcube_mail_ui()
new rcube_scroller('#folderlist-content', '#folderlist-header', '#folderlist-footer'); new rcube_scroller('#folderlist-content', '#folderlist-header', '#folderlist-footer');
rcmail.addEventListener('setquota', update_quota); rcmail.addEventListener('setquota', update_quota)
rcmail.addEventListener('enable-command', enable_command); .addEventListener('enable-command', enable_command)
rcmail.addEventListener('afterimport-messages', show_uploadform); .addEventListener('afterimport-messages', show_uploadform);
} }
else if (rcmail.env.action == 'get') { else if (rcmail.env.action == 'get') {
new rcube_splitter({ id:'mailpartsplitterv', p1:'#messagepartheader', p2:'#messagepartcontainer', new rcube_splitter({ id:'mailpartsplitterv', p1:'#messagepartheader', p2:'#messagepartcontainer',
@ -275,9 +275,9 @@ function rcube_mail_ui()
} }
/*** addressbook task ***/ /*** addressbook task ***/
else if (rcmail.env.task == 'addressbook') { else if (rcmail.env.task == 'addressbook') {
rcmail.addEventListener('afterupload-photo', show_uploadform); rcmail.addEventListener('afterupload-photo', show_uploadform)
rcmail.addEventListener('beforepushgroup', push_contactgroup); .addEventListener('beforepushgroup', push_contactgroup)
rcmail.addEventListener('beforepopgroup', pop_contactgroup); .addEventListener('beforepopgroup', pop_contactgroup);
if (rcmail.env.action == '') { if (rcmail.env.action == '') {
new rcube_splitter({ id:'addressviewsplitterd', p1:'#addressview-left', p2:'#addressview-right', new rcube_splitter({ id:'addressviewsplitterd', p1:'#addressview-left', p2:'#addressview-right',

Loading…
Cancel
Save