diff --git a/mail/inc/class.mail_compose.inc.php b/mail/inc/class.mail_compose.inc.php index 7d78f2454d..143a9cef92 100644 --- a/mail/inc/class.mail_compose.inc.php +++ b/mail/inc/class.mail_compose.inc.php @@ -3374,6 +3374,7 @@ class mail_compose 'label' => $list_name, 'class' => 'mailinglist', 'title' => lang('Mailinglist'), + 'data' => $key ); if($list_count++ > 5) break; } diff --git a/mail/js/app.js b/mail/js/app.js index aa61c278b2..12ad6597a2 100644 --- a/mail/js/app.js +++ b/mail/js/app.js @@ -4239,28 +4239,57 @@ app.classes.mail = AppJS.extend( drop:function (event, ui) { var widget = self.et2.getWidgetById(this.getAttribute('name')); - var emails = []; + var emails, distLists = []; var fromWidget = {}; + + var parentWidgetDOM = ui.draggable.parentsUntil('div[id^="mail-compoe_"]','.ui-droppable'); + if (parentWidgetDOM != 'undefined' && parentWidgetDOM.length > 0) + { + fromWidget = self.et2.getWidgetById(parentWidgetDOM.attr('name')); + } + var draggedValue = ui.draggable.text(); - + + // index of draggable item in selection list + var dValueKey = draggedValue; + + var distItem = ui.draggable.find('.mailinglist'); + if (distItem.length>0) + { + var distItemId = parseInt(distItem.attr('data')); + if (distItemId) + { + var fromDistLists = resolveDistList(fromWidget); + for (var i=0;i 0) - { - fromWidget = self.et2.getWidgetById(parentWidgetDOM.attr('name')); - } + + // Resolve the dist list and normal emails + distLists = resolveDistList(widget, emails); + + // Add normal emails + if (emails) widget.set_value(emails); + + // check if there's any dist list to be added + if (distLists.length>0) widget.taglist.addToSelection(distLists); if (!jQuery.isEmptyObject(fromWidget) && !(ui.draggable.attr('class').search('mailCompose_copyEmail') > -1)) { - if (!_removeDragged(fromWidget, draggedValue)) + if (!_removeDragged(fromWidget, dValueKey)) { //Not successful remove, returns the item to its origin jQuery(ui.draggable).draggable('option','revert',true); @@ -4300,10 +4329,25 @@ app.classes.mail = AppJS.extend( { var emails = _widget.get_value(); var itemIndex = emails.indexOf(_value); + var dist = []; if (itemIndex > -1) { emails.splice(itemIndex,1); + // Resolve the dist list and normal emails + var dist = resolveDistList(_widget, emails) + + // Add normal emails _widget.set_value(emails); + + //check if there's any dist list to be added + if (dist) + { + for(var i=0;i