From a23d5c543a7cb44d2615239de2c3df08b3d430e4 Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Sat, 7 Jul 2018 12:43:59 +0100 Subject: [PATCH] [ACA-1488] admin actions and settings (#496) * restrict experimental settings to admins * automatically edit new experimental flags * extra menu items for admins --- package-lock.json | 6 +-- package.json | 2 +- .../current-user/current-user.component.html | 12 +++++ .../settings/settings.component.html | 38 ++----------- .../components/settings/settings.component.ts | 54 ++++++------------- src/assets/i18n/en.json | 1 + 6 files changed, 37 insertions(+), 76 deletions(-) diff --git a/package-lock.json b/package-lock.json index d831a4d0f..dfb887f54 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10991,9 +10991,9 @@ "dev": true }, "typescript": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", - "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", + "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index 28f0742f4..b6c7ed07b 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "selenium-webdriver": "4.0.0-alpha.1", "ts-node": "~4.1.0", "tslint": "~5.9.1", - "typescript": "~2.7.2", + "typescript": "^2.9.2", "wait-on": "2.1.0" } } diff --git a/src/app/components/current-user/current-user.component.html b/src/app/components/current-user/current-user.component.html index 46858be8c..68143330e 100644 --- a/src/app/components/current-user/current-user.component.html +++ b/src/app/components/current-user/current-user.component.html @@ -13,6 +13,18 @@ {{ 'APP.LANGUAGE' | translate }} + + + + diff --git a/src/app/components/settings/settings.component.html b/src/app/components/settings/settings.component.html index da4df8162..b334a2ca0 100644 --- a/src/app/components/settings/settings.component.html +++ b/src/app/components/settings/settings.component.html @@ -53,45 +53,17 @@ - + {{ 'APP.SETTINGS.EXPERIMENTAL-FEATURES' | translate }} -
+
- Library Management - -
-
- - Comments - -
-
- - Cardview - -
-
- - Share - -
-
- - Extensions + [(ngModel)]="flag.value" + (change)="onToggleExperimentalFeature(flag.key, $event)"> + {{ flag.key }}
diff --git a/src/app/components/settings/settings.component.ts b/src/app/components/settings/settings.component.ts index 4ed9f18cd..497fe1b2b 100644 --- a/src/app/components/settings/settings.component.ts +++ b/src/app/components/settings/settings.component.ts @@ -28,8 +28,8 @@ import { AppConfigService, StorageService, SettingsService } from '@alfresco/adf import { Validators, FormGroup, FormBuilder } from '@angular/forms'; import { Observable } from 'rxjs/Rx'; import { Store } from '@ngrx/store'; -import { AppStore } from '../../store/states'; -import { appLanguagePicker, selectHeaderColor, selectAppName } from '../../store/selectors/app.selectors'; +import { AppStore, ProfileState } from '../../store/states'; +import { appLanguagePicker, selectHeaderColor, selectAppName, selectUser } from '../../store/selectors/app.selectors'; import { MatCheckboxChange } from '@angular/material'; import { SetLanguagePickerAction } from '../../store/actions'; @@ -45,14 +45,11 @@ export class SettingsComponent implements OnInit { form: FormGroup; + profile$: Observable; appName$: Observable; headerColor$: Observable; languagePicker$: Observable; - libraries: boolean; - comments: boolean; - cardview: boolean; - share: boolean; - extensions: boolean; + experimental: Array<{ key: string, value: boolean }> = []; constructor( private store: Store, @@ -60,6 +57,7 @@ export class SettingsComponent implements OnInit { private settingsService: SettingsService, private storage: StorageService, private fb: FormBuilder) { + this.profile$ = store.select(selectUser); this.appName$ = store.select(selectAppName); this.languagePicker$ = store.select(appLanguagePicker); this.headerColor$ = store.select(selectHeaderColor); @@ -76,20 +74,14 @@ export class SettingsComponent implements OnInit { this.reset(); - const libraries = this.appConfig.get('experimental.libraries'); - this.libraries = (libraries === true || libraries === 'true'); - - const comments = this.appConfig.get('experimental.comments'); - this.comments = (comments === true || comments === 'true'); - - const cardview = this.appConfig.get('experimental.cardview'); - this.cardview = (cardview === true || cardview === 'true'); - - const share = this.appConfig.get('experimental.share'); - this.share = (share === true || share === 'true'); - - const extensions = this.appConfig.get('experimental.extensions'); - this.extensions = (extensions === true || extensions === 'true'); + const settings = this.appConfig.get('experimental'); + this.experimental = Object.keys(settings).map(key => { + const value = this.appConfig.get(`experimental.${key}`); + return { + key, + value: (value === true || value === 'true') + }; + }); } apply(model: any, isValid: boolean) { @@ -110,23 +102,7 @@ export class SettingsComponent implements OnInit { this.store.dispatch(new SetLanguagePickerAction(event.checked)); } - onChangeLibrariesFeature(event: MatCheckboxChange) { - this.storage.setItem('experimental.libraries', event.checked.toString()); - } - - onChangeCommentsFeature(event: MatCheckboxChange) { - this.storage.setItem('experimental.comments', event.checked.toString()); - } - - onChangeCardviewFeature(event: MatCheckboxChange) { - this.storage.setItem('experimental.cardview', event.checked.toString()); - } - - onChangeShareFeature(event: MatCheckboxChange) { - this.storage.setItem('experimental.share', event.checked.toString()); - } - - onChangeExtensionsFeature(event: MatCheckboxChange) { - this.storage.setItem('experimental.extensions', event.checked.toString()); + onToggleExperimentalFeature(key: string, event: MatCheckboxChange) { + this.storage.setItem(`experimental.${key}`, event.checked.toString()); } } diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index a04083252..10e678b8e 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -4,6 +4,7 @@ "SIGN_IN": "Sign in", "SIGN_OUT": "Sign out", "SETTINGS": { + "TITLE": "Settings", "APPLICATION-SETTINGS": "Application Settings", "REPOSITORY-SETTINGS": "Repository Settings", "EXPERIMENTAL-FEATURES": "Experimental Features",