Allow set present on user list if config was set
Depending on "selt self presence" config, allow users to set themselves as present on the user list
This commit is contained in:
parent
ad4ed3443a
commit
9ffbb39e95
@ -98,7 +98,7 @@
|
|||||||
class="checkbox-ripple-padding"
|
class="checkbox-ripple-padding"
|
||||||
(change)="setPresent(user)"
|
(change)="setPresent(user)"
|
||||||
[checked]="user.is_present"
|
[checked]="user.is_present"
|
||||||
[disabled]="isMultiSelect || !this.operator.hasPerms('users.can_manage')"
|
[disabled]="isPresentToggleDisabled(user)"
|
||||||
>
|
>
|
||||||
<span>{{ 'Present' | translate }}</span>
|
<span>{{ 'Present' | translate }}</span>
|
||||||
</mat-checkbox>
|
</mat-checkbox>
|
||||||
|
@ -134,6 +134,10 @@ export class UserListComponent extends BaseListViewComponent<ViewUser> implement
|
|||||||
*/
|
*/
|
||||||
public filterProps = ['full_name', 'groups', 'structure_level', 'number'];
|
public filterProps = ['full_name', 'groups', 'structure_level', 'number'];
|
||||||
|
|
||||||
|
private selfPresentConfStr = 'users_allow_self_set_present';
|
||||||
|
|
||||||
|
private allowSelfSetPresent: boolean;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The usual constructor for components
|
* The usual constructor for components
|
||||||
* @param titleService Serivce for setting the title
|
* @param titleService Serivce for setting the title
|
||||||
@ -176,6 +180,7 @@ export class UserListComponent extends BaseListViewComponent<ViewUser> implement
|
|||||||
// enable multiSelect for this listView
|
// enable multiSelect for this listView
|
||||||
this.canMultiSelect = true;
|
this.canMultiSelect = true;
|
||||||
config.get<boolean>('users_enable_presence_view').subscribe(state => (this._presenceViewConfigured = state));
|
config.get<boolean>('users_enable_presence_view').subscribe(state => (this._presenceViewConfigured = state));
|
||||||
|
config.get<boolean>(this.selfPresentConfStr).subscribe(allowed => (this.allowSelfSetPresent = allowed));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -201,6 +206,16 @@ export class UserListComponent extends BaseListViewComponent<ViewUser> implement
|
|||||||
this.router.navigate(['./new'], { relativeTo: this.route });
|
this.router.navigate(['./new'], { relativeTo: this.route });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public isPresentToggleDisabled(user: ViewUser): boolean {
|
||||||
|
if (this.isMultiSelect) {
|
||||||
|
return true;
|
||||||
|
} else if (this.allowSelfSetPresent && this.operator.viewUser === user) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return !this.operator.hasPerms('users.can_manage');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function opens the dialog,
|
* This function opens the dialog,
|
||||||
* where the user can quick change the groups,
|
* where the user can quick change the groups,
|
||||||
@ -412,6 +427,11 @@ export class UserListComponent extends BaseListViewComponent<ViewUser> implement
|
|||||||
*/
|
*/
|
||||||
public setPresent(viewUser: ViewUser): void {
|
public setPresent(viewUser: ViewUser): void {
|
||||||
viewUser.user.is_present = !viewUser.user.is_present;
|
viewUser.user.is_present = !viewUser.user.is_present;
|
||||||
|
|
||||||
|
if (this.operator.viewUser === viewUser) {
|
||||||
|
this.operator.setPresence(viewUser.user.is_present).catch(this.raiseError);
|
||||||
|
} else {
|
||||||
this.repo.update(viewUser.user, viewUser).catch(this.raiseError);
|
this.repo.update(viewUser.user, viewUser).catch(this.raiseError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user