mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[MNT-22236] Permission i18n support (#6843)
* localized role pipe * update tests * additional tests * update module * fix package lock * update module settings * try update code * update import * test fixes
This commit is contained in:
@@ -33,11 +33,11 @@
|
||||
[placeholder]="entry.data.getValue(entry.row, entry.col)"
|
||||
value="{{entry.data.getValue(entry.row, entry.col)}}"
|
||||
(selectionChange)="saveNewRole($event, entry.row.obj)">
|
||||
<mat-option *ngFor="let role of settableRoles" [value]="role">{{ role }}</mat-option>
|
||||
<mat-option *ngFor="let role of settableRoles" [value]="role">{{ role | adfLocalizedRole }}</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<ng-template #show_only_label>
|
||||
<span>{{entry.data.getValue(entry.row, entry.col)}}</span>
|
||||
<span>{{ entry.data.getValue(entry.row, entry.col) | adfLocalizedRole }}</span>
|
||||
</ng-template>
|
||||
</ng-template>
|
||||
</data-column>
|
||||
|
@@ -31,7 +31,7 @@ import { fakeNodeWithPermissions,
|
||||
import { ContentTestingModule } from '../../../testing/content.testing.module';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
|
||||
describe('PermissionDisplayComponent', () => {
|
||||
describe('PermissionListComponent', () => {
|
||||
|
||||
let fixture: ComponentFixture<PermissionListComponent>;
|
||||
let component: PermissionListComponent;
|
||||
@@ -127,10 +127,10 @@ describe('PermissionDisplayComponent', () => {
|
||||
const options: any = fixture.debugElement.queryAll(By.css('mat-option'));
|
||||
expect(options).not.toBeNull();
|
||||
expect(options.length).toBe(4);
|
||||
expect(options[0].nativeElement.innerText).toContain('SiteCollaborator');
|
||||
expect(options[1].nativeElement.innerText).toContain('SiteConsumer');
|
||||
expect(options[2].nativeElement.innerText).toContain('SiteContributor');
|
||||
expect(options[3].nativeElement.innerText).toContain('SiteManager');
|
||||
expect(options[0].nativeElement.innerText).toContain('ADF.ROLES.SITECOLLABORATOR');
|
||||
expect(options[1].nativeElement.innerText).toContain('ADF.ROLES.SITECONSUMER');
|
||||
expect(options[2].nativeElement.innerText).toContain('ADF.ROLES.SITECONTRIBUTOR');
|
||||
expect(options[3].nativeElement.innerText).toContain('ADF.ROLES.SITEMANAGER');
|
||||
});
|
||||
});
|
||||
}));
|
||||
@@ -152,11 +152,11 @@ describe('PermissionDisplayComponent', () => {
|
||||
const options: any = fixture.debugElement.queryAll(By.css('mat-option'));
|
||||
expect(options).not.toBeNull();
|
||||
expect(options.length).toBe(5);
|
||||
expect(options[0].nativeElement.innerText).toContain('Contributor');
|
||||
expect(options[1].nativeElement.innerText).toContain('Collaborator');
|
||||
expect(options[2].nativeElement.innerText).toContain('Coordinator');
|
||||
expect(options[3].nativeElement.innerText).toContain('Editor');
|
||||
expect(options[4].nativeElement.innerText).toContain('Consumer');
|
||||
expect(options[0].nativeElement.innerText).toContain('ADF.ROLES.CONTRIBUTOR');
|
||||
expect(options[1].nativeElement.innerText).toContain('ADF.ROLES.COLLABORATOR');
|
||||
expect(options[2].nativeElement.innerText).toContain('ADF.ROLES.COORDINATOR');
|
||||
expect(options[3].nativeElement.innerText).toContain('ADF.ROLES.EDITOR');
|
||||
expect(options[4].nativeElement.innerText).toContain('ADF.ROLES.CONSUMER');
|
||||
});
|
||||
});
|
||||
}));
|
||||
|
@@ -35,11 +35,11 @@ export class PermissionListComponent implements OnInit {
|
||||
|
||||
/** Emitted when the permission is updated. */
|
||||
@Output()
|
||||
update: EventEmitter<PermissionElement> = new EventEmitter();
|
||||
update = new EventEmitter<PermissionElement>();
|
||||
|
||||
/** Emitted when an error occurs. */
|
||||
@Output()
|
||||
error: EventEmitter<any> = new EventEmitter();
|
||||
error = new EventEmitter<any>();
|
||||
|
||||
permissionList: PermissionDisplayModel[];
|
||||
settableRoles: any[];
|
||||
@@ -47,7 +47,6 @@ export class PermissionListComponent implements OnInit {
|
||||
|
||||
constructor(private nodeService: NodesApiService,
|
||||
private nodePermissionService: NodePermissionService) {
|
||||
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
@@ -61,7 +60,7 @@ export class PermissionListComponent implements OnInit {
|
||||
private fetchNodePermissions() {
|
||||
this.nodeService.getNode(this.nodeId).subscribe((node: Node) => {
|
||||
this.actualNode = node;
|
||||
this.permissionList = this.getPermissionList(node);
|
||||
this.permissionList = this.nodePermissionService.getNodePermissions(node);
|
||||
|
||||
this.nodePermissionService.getNodeRoles(node).subscribe((settableList: string[]) => {
|
||||
this.settableRoles = settableList;
|
||||
@@ -69,26 +68,9 @@ export class PermissionListComponent implements OnInit {
|
||||
});
|
||||
}
|
||||
|
||||
private getPermissionList(node: Node): PermissionDisplayModel[] {
|
||||
const allPermissions: PermissionDisplayModel[] = [];
|
||||
if (node?.permissions?.locallySet) {
|
||||
node.permissions.locallySet.map((permissionElement: PermissionElement) => {
|
||||
const permission = new PermissionDisplayModel(permissionElement);
|
||||
allPermissions.push(permission);
|
||||
});
|
||||
}
|
||||
if (node?.permissions?.inherited) {
|
||||
node.permissions.inherited.map((permissionElement: PermissionElement) => {
|
||||
const permissionInherited = new PermissionDisplayModel(permissionElement);
|
||||
permissionInherited.isInherited = true;
|
||||
allPermissions.push(permissionInherited);
|
||||
});
|
||||
}
|
||||
return allPermissions;
|
||||
}
|
||||
|
||||
saveNewRole(event: any, permissionRow: PermissionDisplayModel) {
|
||||
const updatedPermissionRole: PermissionElement = this.buildUpdatedPermission(event.value, permissionRow);
|
||||
const updatedPermissionRole = this.buildUpdatedPermission(event.value, permissionRow);
|
||||
|
||||
this.nodePermissionService.updatePermissionRole(this.actualNode, updatedPermissionRole)
|
||||
.subscribe(() => {
|
||||
this.update.emit(updatedPermissionRole);
|
||||
@@ -96,11 +78,11 @@ export class PermissionListComponent implements OnInit {
|
||||
}
|
||||
|
||||
private buildUpdatedPermission(newRole: string, permissionRow: PermissionDisplayModel): PermissionElement {
|
||||
const permissionRole: PermissionElement = {};
|
||||
permissionRole.accessStatus = permissionRow.accessStatus;
|
||||
permissionRole.name = newRole;
|
||||
permissionRole.authorityId = permissionRow.authorityId;
|
||||
return permissionRole;
|
||||
return {
|
||||
accessStatus: permissionRow.accessStatus,
|
||||
name: newRole,
|
||||
authorityId: permissionRow.authorityId
|
||||
};
|
||||
}
|
||||
|
||||
removePermission(permissionRow: PermissionDisplayModel) {
|
||||
@@ -111,5 +93,4 @@ export class PermissionListComponent implements OnInit {
|
||||
error => this.error.emit(error)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -22,7 +22,7 @@ import { MaterialModule } from '../material.module';
|
||||
import { PermissionListComponent } from './components/permission-list/permission-list.component';
|
||||
import { AddPermissionComponent } from './components/add-permission/add-permission.component';
|
||||
import { AddPermissionDialogComponent } from './components/add-permission/add-permission-dialog.component';
|
||||
import { CoreModule } from '@alfresco/adf-core';
|
||||
import { CoreModule, PipeModule } from '@alfresco/adf-core';
|
||||
import { InheritPermissionDirective } from './components/inherited-button.directive';
|
||||
import { NoPermissionTemplateComponent } from './components/permission-list/no-permission.component';
|
||||
import { AddPermissionPanelComponent } from './components/add-permission/add-permission-panel.component';
|
||||
@@ -35,7 +35,8 @@ import { SearchModule } from '../search/search.module';
|
||||
FormsModule,
|
||||
ReactiveFormsModule,
|
||||
MaterialModule,
|
||||
SearchModule
|
||||
SearchModule,
|
||||
PipeModule
|
||||
],
|
||||
declarations: [
|
||||
PermissionListComponent,
|
||||
|
@@ -20,6 +20,7 @@ import { Observable, of, from, throwError } from 'rxjs';
|
||||
import { AlfrescoApiService, SearchService, NodesApiService, TranslationService } from '@alfresco/adf-core';
|
||||
import { QueryBody, Node, NodeEntry, PathElement, GroupMemberEntry, GroupMemberPaging, PermissionElement } from '@alfresco/js-api';
|
||||
import { switchMap, map } from 'rxjs/operators';
|
||||
import { PermissionDisplayModel } from '../models/permission.model';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
@@ -52,6 +53,25 @@ export class NodePermissionService {
|
||||
);
|
||||
}
|
||||
|
||||
getNodePermissions(node: Node): PermissionDisplayModel[] {
|
||||
const result: PermissionDisplayModel[] = [];
|
||||
|
||||
if (node?.permissions?.locallySet) {
|
||||
node.permissions.locallySet.map((permissionElement) => {
|
||||
result.push(new PermissionDisplayModel(permissionElement));
|
||||
});
|
||||
}
|
||||
|
||||
if (node?.permissions?.inherited) {
|
||||
node.permissions.inherited.map((permissionElement) => {
|
||||
const permissionInherited = new PermissionDisplayModel(permissionElement);
|
||||
permissionInherited.isInherited = true;
|
||||
result.push(permissionInherited);
|
||||
});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the permission role for a node.
|
||||
* @param node Target node
|
||||
@@ -128,14 +148,13 @@ export class NodePermissionService {
|
||||
|
||||
private transformNodeToPermissionElement(nodes: NodeEntry[], nodeRole: any): PermissionElement[] {
|
||||
return nodes.map((node) => {
|
||||
const newPermissionElement: PermissionElement = <PermissionElement> {
|
||||
return {
|
||||
'authorityId': node.entry.properties['cm:authorityName'] ?
|
||||
node.entry.properties['cm:authorityName'] :
|
||||
node.entry.properties['cm:userName'],
|
||||
'name': nodeRole,
|
||||
'accessStatus': 'ALLOWED'
|
||||
};
|
||||
return newPermissionElement;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -188,10 +207,11 @@ export class NodePermissionService {
|
||||
|
||||
private buildRetrieveSiteQueryBody(nodePath: PathElement[]): QueryBody {
|
||||
const pathNames = nodePath.map((node: PathElement) => 'name: "' + node.name + '"');
|
||||
const buildedPathNames = pathNames.join(' OR ');
|
||||
const builtPathNames = pathNames.join(' OR ');
|
||||
|
||||
return {
|
||||
'query': {
|
||||
'query': buildedPathNames
|
||||
'query': builtPathNames
|
||||
},
|
||||
'paging': {
|
||||
'maxItems': 100,
|
||||
|
Reference in New Issue
Block a user