Allow mass-removal of addresses from a group (#1487748)

pull/1/head
thomascube 12 years ago
parent 21a0d91938
commit 1ba07f0709

@ -1,7 +1,8 @@
CHANGELOG Roundcube Webmail
===========================
- Fix removing all folders on import to LDAP addressbook
- Allow mass-removal of addresses from a group (#1487748)
- Fix removing all contacts on import to LDAP addressbook
- Fix so "Back" from compose/show doesn't reset search request (#1488238)
- Add option to delete messages instead of moving to Trash when in Junk folder (#1486686)
- Fix invisible cursor when replying to a html message (#1487073)

@ -4016,6 +4016,10 @@ function rcube_webmail()
}
}
// if a group is currently selected, and there is at least one contact selected
// thend we can enable the group-remove-selected command
this.enable_command('group-remove-selected', typeof this.env.group != 'undefined' && list.selection.length > 0);
this.enable_command('compose', this.env.group || list.selection.length > 0);
this.enable_command('edit', id && writable);
this.enable_command('delete', list.selection.length && writable);
@ -4375,6 +4379,28 @@ function rcube_webmail()
this.name_input.select().focus();
};
//remove selected contacts from current active group
this.group_remove_selected = function()
{
ref.http_post('group-delmembers','_cid='+urlencode(this.contact_list.selection)
+ '&_source='+urlencode(this.env.source)
+ '&_gid='+urlencode(this.env.group));
};
//callback after deleting contact(s) from current group
this.remove_group_contacts = function(props)
{
if('undefined' != typeof this.env.group && (this.env.group === props.gid)){
var selection = this.contact_list.get_selection();
for (var n=0; n<selection.length; n++) {
id = selection[n];
this.contact_list.remove_row(id, (n == selection.length-1));
}
}
}
// handler for keyboard events on the input field
this.add_input_keydown = function(e)
{

@ -284,6 +284,7 @@ $labels['exportvcards'] = 'Kontakte im vCard-Format exportieren';
$labels['newcontactgroup'] = 'Neue Adressgruppe erstellen';
$labels['grouprename'] = 'Gruppe umbenennen';
$labels['groupdelete'] = 'Gruppe löschen';
$labels['groupremoveselected'] = 'Gewählte Kontakte aus Gruppe entfernen';
$labels['previouspage'] = 'Eine Seite zurück';
$labels['firstpage'] = 'Erste Seite';
$labels['nextpage'] = 'Nächste Seite';

@ -284,6 +284,7 @@ $labels['exportvcards'] = 'Kontakte im vCard-Format exportieren';
$labels['newcontactgroup'] = 'Neue Kontaktgruppe erstellen';
$labels['grouprename'] = 'Gruppe umbenennen';
$labels['groupdelete'] = 'Gruppe löschen';
$labels['groupremoveselected'] = 'Gewählte Kontakte aus Gruppe entfernen';
$labels['previouspage'] = 'Seite zurück';
$labels['firstpage'] = 'Erste Seite';
$labels['nextpage'] = 'Nächste Seite';

@ -334,6 +334,7 @@ $labels['exportvcards'] = 'Export contacts in vCard format';
$labels['newcontactgroup'] = 'Create new contact group';
$labels['grouprename'] = 'Rename group';
$labels['groupdelete'] = 'Delete group';
$labels['groupremoveselected'] = 'Remove selected contacts from group';
$labels['previouspage'] = 'Show previous page';
$labels['firstpage'] = 'Show first page';

@ -64,10 +64,12 @@ else if ($RCMAIL->action == 'group-delmembers') {
else
$result = $plugin['result'];
if ($result)
if ($result){
$OUTPUT->show_message('contactremovedfromgroup');
else
$OUTPUT->command('remove_group_contacts',array('source' => $source, 'gid' => $gid));
}else{
$OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
}
}
}

@ -99,6 +99,7 @@
<ul>
<li><roundcube:button command="group-rename" label="grouprename" classAct="active" /></li>
<li><roundcube:button command="group-delete" label="groupdelete" classAct="active" /></li>
<li><roundcube:button command="group-remove-selected" label="group-remove-selected" classAct="active" /></li>
<li class="separator_above"><roundcube:button command="search-create" label="searchsave" classAct="active" /></li>
<li><roundcube:button command="search-delete" label="searchdelete" classAct="active" /></li>
<roundcube:container name="groupoptions" id="groupoptionsmenu" />

@ -49,14 +49,14 @@
position: absolute;
top: 42px;
left: 0;
width: 260px;
width: 280px;
bottom: 0;
}
#contacts-box {
position: absolute;
top: 42px;
left: 272px;
left: 292px;
right: 0;
bottom: 0;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 33 KiB

@ -748,11 +748,11 @@ h3.subject {
div.more-headers {
cursor: pointer;
height: 10px;
background: url(images/buttons.png) center -1539px no-repeat;
background: url(images/buttons.png) center -1579px no-repeat;
}
div.hide-headers {
background-position: center -1549px;
background-position: center -1589px;
}
#all-headers {

@ -860,6 +860,10 @@ table.layout td {
background-position: 2px -1502px;
}
.boxfooter .listbutton.removegroup .inner {
background-position: 5px -1540px;
}
.boxfooter .listbutton.disabled .inner {
opacity: 0.4;
filter: alpha(opacity=40);
@ -1411,7 +1415,7 @@ ul.proplist li {
}
.toolbar a.button.spellcheck.selected {
background-position: left -1570px;
background-position: left -1610px;
color: #1978a1;
}

@ -50,7 +50,7 @@
<roundcube:object name="addresslist" id="contacts-table" class="listing" noheader="true" />
</div>
<div class="boxfooter">
<roundcube:button command="add" type="link" title="newcontact" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button command="delete" type="link" title="deletecontact" class="listbutton delete disabled" classAct="listbutton delete" innerClass="inner" content="x" />
<roundcube:button command="add" type="link" title="newcontact" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button command="delete" type="link" title="deletecontact" class="listbutton delete disabled" classAct="listbutton delete" innerClass="inner" content="x" /><roundcube:button command="group-remove-selected" type="link" title="groupremoveselected" class="listbutton removegroup disabled" classAct="listbutton removegroup" innerClass="inner" content="-" />
<roundcube:object name="recordsCountDisplay" class="countdisplay" label="fromtoshort" />
</div>
<div class="boxpagenav">

@ -155,7 +155,7 @@ function rcube_mail_ui()
new rcube_splitter({ id:'addressviewsplitterd', p1:'#addressview-left', p2:'#addressview-right',
orientation:'v', relative:true, start:226, min:150, size:12, render:resize_leftcol }).init();
new rcube_splitter({ id:'addressviewsplitter', p1:'#addresslist', p2:'#contacts-box',
orientation:'v', relative:true, start:266, min:220, size:12 }).init();
orientation:'v', relative:true, start:286, min:270, size:12 }).init();
new rcube_scroller('#directorylist-content', '#directorylist-header', '#directorylist-footer');
}

Loading…
Cancel
Save