Fix regressions in popups handling (#1489932)

pull/198/head
Aleksander Machniak 10 years ago
parent 9a6e6e3abf
commit fc6dab3c67

@ -106,7 +106,6 @@ function rcube_mail_ui()
searchmenu: {id:'searchmenu', editable:1}, searchmenu: {id:'searchmenu', editable:1},
messagemenu: {id:'messagemenu'}, messagemenu: {id:'messagemenu'},
attachmentmenu: {id:'attachmentmenu'}, attachmentmenu: {id:'attachmentmenu'},
listmenu: {id:'listmenu', editable:1},
dragmenu: {id:'dragmenu', sticky:1}, dragmenu: {id:'dragmenu', sticky:1},
groupmenu: {id:'groupoptionsmenu', above:1}, groupmenu: {id:'groupoptionsmenu', above:1},
mailboxmenu: {id:'mailboxoptionsmenu', above:1}, mailboxmenu: {id:'mailboxoptionsmenu', above:1},
@ -293,61 +292,62 @@ set_searchmod: function(elem)
rcmail.set_searchmods(m); rcmail.set_searchmods(m);
}, },
listmenu: function(show) show_listmenu: function(p)
{ {
var obj = this.popups.listmenu.obj, var self = this, buttons = {}, $dialog = $('#listmenu');
ref = rcube_find_object('listmenulink');
if (typeof show == 'undefined') // close the dialog
show = obj.is(':visible') ? false : true; if ($dialog.is(':visible')) {
$dialog.dialog('close', p.originalEvent);
if (show && ref) { return;
var pos = $(ref).offset(),
menuwidth = obj.width(),
pagewidth = $(document).width();
if (pagewidth - pos.left < menuwidth && pos.left > menuwidth)
pos.left = pos.left - menuwidth;
obj.css({ left:pos.left, top:(pos.top + ref.offsetHeight + 2)});
// set form values
$('input[name="sort_col"][value="'+rcmail.env.sort_col+'"]').prop('checked', true);
$('input[name="sort_ord"][value="DESC"]').prop('checked', rcmail.env.sort_order == 'DESC');
$('input[name="sort_ord"][value="ASC"]').prop('checked', rcmail.env.sort_order != 'DESC');
$('input[name="view"][value="thread"]').prop('checked', rcmail.env.threading ? true : false);
$('input[name="view"][value="list"]').prop('checked', rcmail.env.threading ? false : true);
// set checkboxes
$('input[name="list_col[]"]').each(function() {
$(this).prop('checked', jQuery.inArray(this.value, rcmail.env.coltypes) != -1);
});
} }
obj[show?'show':'hide'](); // set form values
$('input[name="sort_col"][value="'+rcmail.env.sort_col+'"]').prop('checked', true);
$('input[name="sort_ord"][value="DESC"]').prop('checked', rcmail.env.sort_order == 'DESC');
$('input[name="sort_ord"][value="ASC"]').prop('checked', rcmail.env.sort_order != 'DESC');
$('input[name="view"][value="thread"]').prop('checked', rcmail.env.threading ? true : false);
$('input[name="view"][value="list"]').prop('checked', rcmail.env.threading ? false : true);
if (show) { // set checkboxes
var maxheight=0; $('input[name="list_col[]"]').each(function() {
$('#listmenu fieldset').each(function() { $(this).prop('checked', $.inArray(this.value, rcmail.env.listcols) != -1);
var height = $(this).height(); });
if (height > maxheight) {
maxheight = height; buttons[rcmail.gettext('save')] = function(e) {
} $dialog.dialog('close', e);
}); self.save_listmenu();
$('#listmenu fieldset').css("min-height", maxheight+"px")
.height(maxheight);
}; };
},
open_listmenu: function() $dialog.dialog({
{ modal: true,
this.listmenu(); resizable: false,
closeOnEscape: true,
title: null,
open: function(e) {
var maxheight = 0;
$('#listmenu fieldset').each(function() {
var height = $(this).height();
if (height > maxheight) {
maxheight = height;
}
}).css("min-height", maxheight+"px").height(maxheight);
setTimeout(function() { $dialog.find('a, input:not(:disabled)').not('[aria-disabled=true]').first().focus(); }, 100);
},
close: function(e) {
$dialog.dialog('destroy').hide();
if (e.originalEvent && rcube_event.is_keyboard(e.originalEvent))
$('#listmenulink').focus();
},
buttons: buttons,
minWidth: 500,
width: $dialog.width()+20
}).show();
}, },
save_listmenu: function() save_listmenu: function()
{ {
this.listmenu();
var sort = $('input[name="sort_col"]:checked').val(), var sort = $('input[name="sort_col"]:checked').val(),
ord = $('input[name="sort_ord"]:checked').val(), ord = $('input[name="sort_ord"]:checked').val(),
thread = $('input[name="view"]:checked').val(), thread = $('input[name="view"]:checked').val(),
@ -394,7 +394,7 @@ spellmenu: function(show)
this.show_popupmenu('spellmenu', show); this.show_popupmenu('spellmenu', show);
}, },
show_attachmentmenu: function(elem) show_attachmentmenu: function(elem, event)
{ {
var id = elem.parentNode.id.replace(/^attach/, ''); var id = elem.parentNode.id.replace(/^attach/, '');
@ -407,20 +407,13 @@ show_attachmentmenu: function(elem)
}); });
this.popups.attachmentmenu.link = elem; this.popups.attachmentmenu.link = elem;
rcmail.command('menu-open', {menu: 'attachmentmenu', id: id}); rcmail.command('menu-open', {menu: 'attachmentmenu', id: id}, elem, event);
}, },
menu_open: function(p) menu_open: function(p)
{ {
if (p && p.props && p.props.menu == 'attachmentmenu') if (p && p.name == 'messagelistmenu')
this.show_popup('attachmentmenu'); this.show_listmenu();
else
this.open_listmenu();
},
menu_save: function(prop)
{
this.save_listmenu();
}, },
body_mouseup: function(e) body_mouseup: function(e)
@ -973,20 +966,19 @@ function rcube_init_mail_ui()
.contents().mouseup(function(e) { rcmail_ui.body_mouseup(e); }); .contents().mouseup(function(e) { rcmail_ui.body_mouseup(e); });
if (rcmail.env.task == 'mail') { if (rcmail.env.task == 'mail') {
rcmail.addEventListener('enable-command', 'enable_command', rcmail_ui); rcmail.addEventListener('enable-command', 'enable_command', rcmail_ui)
rcmail.addEventListener('menu-open', 'menu_open', rcmail_ui); .addEventListener('menu-open', 'menu_open', rcmail_ui)
rcmail.addEventListener('menu-save', 'menu_save', rcmail_ui); .addEventListener('aftersend-attachment', 'uploadmenu', rcmail_ui)
rcmail.addEventListener('aftersend-attachment', 'uploadmenu', rcmail_ui); .addEventListener('aftertoggle-editor', 'resize_compose_body_ev', rcmail_ui)
rcmail.addEventListener('aftertoggle-editor', 'resize_compose_body_ev', rcmail_ui); .gui_object('dragmenu', 'dragmenu');
rcmail.gui_object('dragmenu', 'dragmenu');
if (rcmail.gui_objects.mailboxlist) { if (rcmail.gui_objects.mailboxlist) {
rcmail.treelist.addEventListener('expand', rcube_render_mailboxlist); rcmail.treelist.addEventListener('expand', rcube_render_mailboxlist);
rcmail.addEventListener('responseaftermark', rcube_render_mailboxlist); rcmail.addEventListener('responseaftermark', rcube_render_mailboxlist)
rcmail.addEventListener('responseaftergetunread', rcube_render_mailboxlist); .addEventListener('responseaftergetunread', rcube_render_mailboxlist)
rcmail.addEventListener('responseaftercheck-recent', rcube_render_mailboxlist); .addEventListener('responseaftercheck-recent', rcube_render_mailboxlist)
rcmail.addEventListener('responseafterrefresh', rcube_render_mailboxlist); .addEventListener('responseafterrefresh', rcube_render_mailboxlist)
rcmail.addEventListener('afterimport-messages', function(){ rcmail_ui.show_popup('uploadform', false); }); .addEventListener('afterimport-messages', function(){ rcmail_ui.show_popup('uploadform', false); });
} }
if (rcmail.env.action == 'compose') if (rcmail.env.action == 'compose')
@ -994,13 +986,17 @@ function rcube_init_mail_ui()
else if (rcmail.env.action == 'show' || rcmail.env.action == 'preview') else if (rcmail.env.action == 'show' || rcmail.env.action == 'preview')
// add menu link for each attachment // add menu link for each attachment
$('#attachment-list > li[id^="attach"]').each(function() { $('#attachment-list > li[id^="attach"]').each(function() {
$(this).append($('<a class="drop"></a>').click(function() { rcmail_ui.show_attachmentmenu(this); })); $(this).append($('<a class="drop"></a>').bind('click keypress', function(e) {
if (e.type != 'keypress' || e.which == 13) {
rcmail_ui.show_attachmentmenu(this, e);
return false;
}
}));
}); });
} }
else if (rcmail.env.task == 'addressbook') { else if (rcmail.env.task == 'addressbook') {
rcmail.addEventListener('afterupload-photo', function(){ rcmail_ui.show_popup('uploadform', false); }); rcmail.addEventListener('afterupload-photo', function(){ rcmail_ui.show_popup('uploadform', false); })
.gui_object('dragmenu', 'dragmenu');
rcmail.gui_object('dragmenu', 'dragmenu');
} }
else if (rcmail.env.task == 'settings') { else if (rcmail.env.task == 'settings') {
if (rcmail.gui_objects.subscriptionlist) if (rcmail.gui_objects.subscriptionlist)

@ -966,6 +966,7 @@ table.messagelist.fixedcopy
cursor: pointer; cursor: pointer;
overflow: hidden; overflow: hidden;
text-indent: -5000px; text-indent: -5000px;
display: block;
} }
.messagelist tbody tr td.subject .messagelist tbody tr td.subject

@ -148,7 +148,7 @@
</ul> </ul>
</div> </div>
<div id="listmenu" class="popupmenu"> <div id="listmenu" style="display: none">
<roundcube:if condition="env:threads" /> <roundcube:if condition="env:threads" />
<fieldset class="thinbordered"><legend><roundcube:label name="listmode" /></legend> <fieldset class="thinbordered"><legend><roundcube:label name="listmode" /></legend>
<ul class="toolbarmenu"> <ul class="toolbarmenu">
@ -200,10 +200,6 @@
</ul> </ul>
</fieldset> </fieldset>
<roundcube:endif /> <roundcube:endif />
<div>
<roundcube:button command="menu-open" id="listmenucancel" type="input" class="button" label="cancel" />
<roundcube:button command="menu-save" id="listmenusave" type="input" class="button mainaction" label="save" />
</div>
</div> </div>
<roundcube:object name="messageimportform" id="upload-form" attachmentFieldSize="40" class="popupmenu" /> <roundcube:object name="messageimportform" id="upload-form" attachmentFieldSize="40" class="popupmenu" />

Loading…
Cancel
Save