diff --git a/ChangeLog b/ChangeLog index facd2f85d..2fc56fa93 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,23 @@ 2010-08-19 Wolfgang Sourdeau + * SoObjects/Mailer/SOGoMailFolder.m (-deleteUIDs:inContext:): make + the use of the "result" variable clearer by declaring it with a + proper class name and avoiding type confusion within the code. + + * UI/WebServerResources/MailerUI.js: (initDnd): removed useless + method. + (onMessageListPrepareVisibility): fixed a bug where the current + mailbox name would be attemptedly taken from the menu target, + while it really should have been deduced from + "Mailer.currentMailbox". + (configureDraggables): we now take all label nodes under + "#mailboxTree" into account and accept them as droppable when they + are not an account node. Also, we associate an account tag with + all of them. + (startDragging): we set the drag classname of the drag handle to + the correct account tag, to avoid visual feedback when hovering + mailboxes from another account. + * UI/WebServerResources/UIxReminderEditor.js (initialiseFormValues): added code to configure the "actionList" if present (email alarms enabled). diff --git a/SoObjects/Mailer/SOGoMailFolder.m b/SoObjects/Mailer/SOGoMailFolder.m index e0b321eeb..e5e14f11d 100644 --- a/SoObjects/Mailer/SOGoMailFolder.m +++ b/SoObjects/Mailer/SOGoMailFolder.m @@ -271,7 +271,7 @@ static NSString *defaultUserID = @"anyone"; NGImap4Client *client; NSString *folderName; NSException *error; - id result; + NSString *result; BOOL b; trashFolder = [[self mailAccountFolder] trashFolderInContext: localContext]; @@ -296,19 +296,21 @@ static NSString *defaultUserID = @"anyone"; objectForKey: @"result"]; if (![result boolValue]) - result = [[self imap4Connection] createMailbox: folderName atURL: [[self mailAccountFolder] imap4URL]]; + [[self imap4Connection] createMailbox: folderName + atURL: [[self mailAccountFolder] imap4URL]]; + + result = [[client copyUids: uids toFolder: folderName] + objectForKey: @"result"]; - if (!result || [result boolValue]) - result = [client copyUids: uids toFolder: folderName]; - - b = [[result valueForKey: @"result"] boolValue]; + b = [result boolValue]; } if (b) { - result = [client storeFlags: [NSArray arrayWithObject: @"Deleted"] - forUIDs: uids addOrRemove: YES]; - if ([[result valueForKey: @"result"] boolValue]) + result = [[client storeFlags: [NSArray arrayWithObject: @"Deleted"] + forUIDs: uids addOrRemove: YES] + objectForKey: @"result"]; + if ([result boolValue]) { [self markForExpunge]; [trashFolder flushMailCaches]; diff --git a/UI/WebServerResources/MailerUI.js b/UI/WebServerResources/MailerUI.js index f810a1664..2590e87a1 100644 --- a/UI/WebServerResources/MailerUI.js +++ b/UI/WebServerResources/MailerUI.js @@ -1635,32 +1635,6 @@ function onWindowResize(event) { handle.adjust(); } -/* dnd */ -function initDnd() { - // log("MailerUI initDnd"); - - var tree = $("mailboxTree"); - if (tree) { - var images = tree.getElementsByTagName("img"); - for (var i = 0; i < images.length; i++) { - if (images[i].id[0] == 'j') { - images[i].dndAcceptType = mailboxSpanAcceptType; - images[i].dndEnter = plusSignEnter; - images[i].dndExit = plusSignExit; - document.DNDManager.registerDestination(images[i]); - } - } - var nodes = document.getElementsByClassName("nodeName", tree); - for (var i = 0; i < nodes.length; i++) { - nodes[i].dndAcceptType = mailboxSpanAcceptType; - nodes[i].dndEnter = mailboxSpanEnter; - nodes[i].dndExit = mailboxSpanExit; - nodes[i].dndDrop = mailboxSpanDrop; - document.DNDManager.registerDestination(nodes[i]); - } - } -} - /* stub */ function refreshContacts() { @@ -1688,8 +1662,6 @@ function initMailer(event) { } if (!$(document.body).hasClassName("popup")) { - //initDnd(); - Mailer.dataTable = $("mailboxList"); Mailer.dataTable.addInterface(SOGoDataTableInterface); Mailer.dataTable.setRowRenderCallback(messageListCallback); @@ -2280,7 +2252,7 @@ function onMessageListMenuPrepareVisibility() { "messagesListMenu": 2, "messageContentMenu": 4 }; if (document.menuTarget) { - var mbx = document.menuTarget.getAttribute("dataname"); + var mbx = Mailer.currentMailbox; if (mbx) { var lis = this.getElementsByTagName("li"); var idx = indexes[this.id]; @@ -2533,33 +2505,47 @@ function configureDraggables () { new Draggable ("dragDropVisual", { handle: "messageListBody", - onStart: startDragging, - onEnd: stopDragging, - onDrag: whileDragging, - scroll: "folderTreeContent" }); + onStart: startDragging, + onEnd: stopDragging, + onDrag: whileDragging, + scroll: "folderTreeContent" }); } -function configureDroppables () { - var drops = $$("div#dmailboxTree1 div.dTreeNode a.node span.nodeName"); +function configureDroppables() { + var drops = $$("div#mailboxTree div.dTreeNode a.node span.nodeName"); Droppables.empty (); drops.each(function (drop) { - drop.identify(); - Droppables.add(drop.id, - { hoverclass: "genericHoverClass", - onDrop: dropAction }); + var dataname = drop.parentNode.parentNode.getAttribute("dataname"); + var acceptClass = "account"; + if (dataname.length > 0) { + var parts = dataname.split("/"); + acceptClass += parts[1]; + } + var parent = drop.parentNode.parentNode; + if (parent.getAttribute("datatype") != "account") { + drop.identify(); + Droppables.add(drop.id, + { hoverclass: "genericHoverClass", + accept: [ acceptClass ], + onDrop: dropAction }); + } }); } function startDragging (itm, e) { var target = Event.element(e); if (target.up('TBODY') == undefined) - return false; + return; var handle = $("dragDropVisual"); var count = $("messageListBody").getSelectedRowsId().length; handle.update (count); + if (Mailer.currentMailbox) { + var parts = Mailer.currentMailbox.split("/"); + handle.addClassName("account" + parts[1]); + } if (e.shiftKey) { handle.addClassName("copy"); } @@ -2581,6 +2567,9 @@ function stopDragging () { handle.hide(); if (handle.hasClassName("copy")) handle.removeClassName("copy"); + for (var i = 0; i < accounts.length; i++) { + handle.removeClassName("account" + i); + } } function dropAction (dropped, zone, e) { diff --git a/UI/WebServerResources/generic.js b/UI/WebServerResources/generic.js index 53943df57..01cb4abf0 100644 --- a/UI/WebServerResources/generic.js +++ b/UI/WebServerResources/generic.js @@ -848,7 +848,7 @@ function popupSubmenu(event) { parentNode.submenu = submenuNode; if (submenuNode.prepareVisibility) - submenuNode.prepareVisibility(); + submenuNode.prepareVisibility.apply(submenuNode, []); var menuTop = (parentNode.offsetTop - 1 + this.offsetTop);