[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:
Denys Vuika
2021-03-23 16:22:32 +00:00
committed by GitHub
parent c0a3f9d99d
commit b97aa7dfee
11 changed files with 217 additions and 64 deletions

View File

@@ -1,4 +1,18 @@
{
"ADF": {
"ROLES": {
"ALL": "All",
"CONTRIBUTOR": "Contributor",
"COLLABORATOR": "Collaborator",
"COORDINATOR": "Coordinator",
"EDITOR": "Editor",
"CONSUMER": "Consumer",
"SITECOLLABORATOR": "Site Collaborator",
"SITECONSUMER": "Site Consumer",
"SITECONTRIBUTOR": "Site Contributor",
"SITEMANAGER": "Site Manager"
}
},
"SAVE": "SAVE",
"COMPLETE": "COMPLETE",
"CANCEL": "CANCEL",

View File

@@ -0,0 +1,50 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { LocalizedRolePipe } from './localized-role.pipe';
describe('LocalizedRolePipe', () => {
let translationService: any;
let pipe: LocalizedRolePipe;
beforeEach(() => {
translationService = jasmine.createSpyObj('TranslationService', ['instant']);
pipe = new LocalizedRolePipe(translationService);
});
it('should return null', () => {
expect(pipe.transform(null)).toBeNull();
});
it('should translate value', () => {
translationService.instant.and.returnValue('Consumer');
expect(pipe.transform('ADF.ROLES.CONSUMER')).toEqual('Consumer');
});
it('should return the key when translation not present', () => {
translationService.instant.and.callFake((value) => {
if (value === 'ADF.ROLES.CONSUMER') {
return 'Consumer';
} else {
return value;
}
});
expect(pipe.transform('Contributor')).toBe('ADF.ROLES.CONTRIBUTOR');
expect(pipe.transform('Consumer')).toEqual('Consumer');
});
});

View File

@@ -0,0 +1,39 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Pipe, PipeTransform } from '@angular/core';
import { TranslationService } from '../services/translation.service';
@Pipe({
name: 'adfLocalizedRole'
})
export class LocalizedRolePipe implements PipeTransform {
constructor(private translationService: TranslationService) {
}
transform(value: string): any {
if (value) {
const key = `ADF.ROLES.${value.toUpperCase()}`;
const translation = this.translationService.instant(key);
if (translation) {
return translation;
}
}
return value;
}
}

View File

@@ -30,10 +30,13 @@ import { FileTypePipe } from './file-type.pipe';
import { MultiValuePipe } from './multi-value.pipe';
import { LocalizedDatePipe } from './localized-date.pipe';
import { DecimalNumberPipe } from './decimal-number.pipe';
import { LocalizedRolePipe } from './localized-role.pipe';
import { TranslateModule } from '@ngx-translate/core';
@NgModule({
imports: [
CommonModule
CommonModule,
TranslateModule
],
declarations: [
FileSizePipe,
@@ -47,7 +50,8 @@ import { DecimalNumberPipe } from './decimal-number.pipe';
FileTypePipe,
MultiValuePipe,
LocalizedDatePipe,
DecimalNumberPipe
DecimalNumberPipe,
LocalizedRolePipe
],
providers: [
FileSizePipe,
@@ -60,7 +64,8 @@ import { DecimalNumberPipe } from './decimal-number.pipe';
FileTypePipe,
MultiValuePipe,
LocalizedDatePipe,
DecimalNumberPipe
DecimalNumberPipe,
LocalizedRolePipe
],
exports: [
FileSizePipe,
@@ -74,7 +79,8 @@ import { DecimalNumberPipe } from './decimal-number.pipe';
FileTypePipe,
MultiValuePipe,
LocalizedDatePipe,
DecimalNumberPipe
DecimalNumberPipe,
LocalizedRolePipe
]
})
export class PipeModule {

View File

@@ -27,5 +27,5 @@ export * from './node-name-tooltip.pipe';
export * from './text-highlight.pipe';
export * from './time-ago.pipe';
export * from './user-initial.pipe';
export * from './localized-role.pipe';
export * from './pipe.module';