});
}
-function contactgroupChangeMember(gid,cid) {
+function contactgroupChangeMember(checkbox, gid, cid) {
+ let url;
+ // checkbox.checked is the checkbox state after the click
+ if (checkbox.checked) {
+ url = 'group/' + gid + '/add/' + cid;
+ } else {
+ url = 'group/' + gid + '/remove/' + cid;
+ }
$('body').css('cursor', 'wait');
- $.get('contactgroup/' + gid + '/' + cid, function(data) {
- $('body').css('cursor', 'auto');
+ $.post(url)
+ .error(function () {
+ // Restores previous state in case of error
+ checkbox.checked = !checkbox.checked;
+ })
+ .always(function() {
+ $('body').css('cursor', 'auto');
});
+
+ return true;
}
function checkboxhighlight(box) {
{{if $group.cid}}
<input type="checkbox"
class="{{if $group.selected}}ticked{{else}}unticked {{/if}} action"
- onclick="contactgroupChangeMember('{{$group.id}}','{{$group.cid}}');return true;"
+ onclick="return contactgroupChangeMember(this, '{{$group.id}}','{{$group.cid}}');"
{{if $group.ismember}}checked="checked"{{/if}}
/>
{{/if}}
<input type="checkbox"
id="sidebar-group-checkbox-{{$group.id}}"
class="{{if $group.selected}}ticked{{else}}unticked {{/if}} action"
- onclick="contactgroupChangeMember('{{$group.id}}','{{$group.cid}}');return true;"
+ onclick="return contactgroupChangeMember(this, '{{$group.id}}','{{$group.cid}}');"
{{if $group.ismember}}checked="checked"{{/if}}
aria-checked="{{if $group.ismember}}true{{else}}false{{/if}}"
/>
{{if $group.cid}}
<input type="checkbox"
class="{{if $group.selected}}ticked{{else}}unticked {{/if}} action"
- onclick="contactgroupChangeMember('{{$group.id}}','{{$group.cid}}');return true;"
+ onclick="return contactgroupChangeMember(this, '{{$group.id}}','{{$group.cid}}');"
{{if $group.ismember}}checked="checked"{{/if}}
/>
{{/if}}