RED-6523 - ui multitenancy links

This commit is contained in:
Timo Bejan 2023-04-05 16:21:07 +03:00
parent 8c1c3f7a29
commit 722e86eb7a
9 changed files with 64 additions and 15 deletions

View File

@ -3,9 +3,16 @@ import { UserPreferenceService } from '@users/user-preference.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { adminSideNavTranslations } from '@translations/admin-side-nav-translations';
import { ActivatedRoute, RouterLink, RouterLinkActive } from '@angular/router';
import { AdminSideNavType, AdminSideNavTypes, ENTITY_TYPE, User } from '@red/domain';
import { AdminSideNavType, AdminSideNavTypes, DOSSIER_TEMPLATE_ID, ENTITY_TYPE, User, WATERMARK_ID } from '@red/domain';
import { ROLES } from '@users/roles';
import { getCurrentUser, IqserHelpModeModule, IqserPermissionsService, SideNavComponent, TenantPipe } from '@iqser/common-ui';
import {
getCurrentUser,
IqserHelpModeModule,
IqserPermissionsService,
SideNavComponent,
TenantContextHolder,
TenantPipe,
} from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { NgForOf, NgIf } from '@angular/common';
@ -166,6 +173,7 @@ export class AdminSideNavComponent implements OnInit {
constructor(
private readonly _permissionsService: IqserPermissionsService,
private readonly _tenantContextHolder: TenantContextHolder,
private readonly _route: ActivatedRoute,
readonly userPreferenceService: UserPreferenceService,
) {}
@ -175,7 +183,20 @@ export class AdminSideNavComponent implements OnInit {
}
ngOnInit(): void {
this.prefix = this._route.snapshot.paramMap.get(ENTITY_TYPE) ? '' : '../';
const dossierTemplate = this._route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID);
const watermark = this._route.snapshot.paramMap.get(WATERMARK_ID);
const entity = this._route.snapshot.paramMap.get(ENTITY_TYPE);
if (!dossierTemplate) {
this.prefix = '/main/admin/';
} else {
this.prefix = `/main/admin/dossier-templates/${dossierTemplate}/`;
if (entity) {
this.prefix = this.prefix + `entities/${entity}/`;
}
if (watermark) {
this.prefix = this.prefix + `watermarks/${watermark}/`;
}
}
}
isDisabled(screen: string): boolean {

View File

@ -2,7 +2,7 @@ import { Component, Input, OnChanges } from '@angular/core';
import { PermissionsService } from '@services/permissions.service';
import { Dossier, File, ProcessingFileStatuses } from '@red/domain';
import { FileDownloadService } from '@upload-download/services/file-download.service';
import { CircleButtonType, CircleButtonTypes, defaultDialogConfig, Toaster } from '@iqser/common-ui';
import { CircleButtonType, CircleButtonTypes, defaultDialogConfig, TenantContextHolder, Toaster } from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { MatDialog } from '@angular/material/dialog';
import {
@ -31,6 +31,7 @@ export class FileDownloadBtnComponent implements OnChanges {
constructor(
private readonly _permissionsService: PermissionsService,
private readonly _tenantContextHolder: TenantContextHolder,
private readonly _fileDownloadService: FileDownloadService,
private readonly _dialog: MatDialog,
private readonly _toaster: Toaster,
@ -59,7 +60,11 @@ export class FileDownloadBtnComponent implements OnChanges {
});
await downloadRequest
.then(() => this._toaster.info(_('download-status.queued')))
.then(() =>
this._toaster.info(_('download-status.queued'), {
params: { downloadHref: `/ui/${this._tenantContextHolder.currentTenant}/main/downloads` },
}),
)
.catch(() => this._toaster.error(_('download-status.error')));
}
}

View File

@ -1,6 +1,13 @@
import { Component, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';
import { Action, ActionTypes, Dossier, File } from '@red/domain';
import { CircleButtonType, defaultDialogConfig, IqserTooltipPosition, Toaster, trackByFactory } from '@iqser/common-ui';
import {
CircleButtonType,
defaultDialogConfig,
IqserTooltipPosition,
TenantContextHolder,
Toaster,
trackByFactory,
} from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { FileDownloadService } from '@upload-download/services/file-download.service';
import { PermissionsService } from '@services/permissions.service';
@ -34,6 +41,7 @@ export class ExpandableFileActionsComponent implements OnChanges {
constructor(
private readonly _fileDownloadService: FileDownloadService,
private readonly _tenantContextHolder: TenantContextHolder,
private readonly _toaster: Toaster,
private readonly _permissionsService: PermissionsService,
private readonly _dialog: MatDialog,
@ -97,6 +105,8 @@ export class ExpandableFileActionsComponent implements OnChanges {
fileIds: files.map(f => f.id),
...result,
});
this._toaster.info(_('download-status.queued'));
this._toaster.info(_('download-status.queued'), {
params: { downloadHref: `/ui/${this._tenantContextHolder.currentTenant}/main/downloads` },
});
}
}

View File

@ -1,5 +1,15 @@
import { Inject, Injectable, OnDestroy } from '@angular/core';
import { BASE_HREF, EntitiesService, getConfig, List, mapEach, QueryParam, RequiredParam, Validate } from '@iqser/common-ui';
import {
BASE_HREF,
EntitiesService,
getConfig,
List,
mapEach,
QueryParam,
RequiredParam,
TenantContextHolder,
Validate,
} from '@iqser/common-ui';
import { TranslateService } from '@ngx-translate/core';
import { EMPTY, firstValueFrom, iif, merge, Observable, of, Subscription, timer } from 'rxjs';
import { AppConfig, Dossier, INotification, Notification, NotificationTypes } from '@red/domain';
@ -30,6 +40,7 @@ export class NotificationsService extends EntitiesService<INotification, Notific
constructor(
@Inject(BASE_HREF) private readonly _baseHref: string,
private readonly _translateService: TranslateService,
private readonly _tenantContextHolder: TenantContextHolder,
private readonly _userService: UserService,
private readonly _dossiersCacheService: DossiersCacheService,
) {
@ -120,6 +131,7 @@ export class NotificationsService extends EntitiesService<INotification, Notific
const dossier = this._dossiersCacheService.get(dossierId);
const fileName = notification.target.fileName;
const dossierName = notification.target?.dossierName ?? dossier?.dossierName;
const downloadHref = `/ui/${this._tenantContextHolder.currentTenant}/main/downloads`;
return this._translateService.instant(translation, {
fileHref: this._getFileHref(dossier, fileId),
@ -127,6 +139,7 @@ export class NotificationsService extends EntitiesService<INotification, Notific
dossierName: dossierName ?? this._translateService.instant(_('notifications.deleted-dossier')),
fileName: fileName ?? this._translateService.instant(_('file')),
user: this._getUsername(notification.userId),
downloadHref: downloadHref,
});
}

View File

@ -1717,7 +1717,7 @@
"dossier-owner-deleted": "",
"dossier-owner-removed": "Der Dossier-Owner von <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> wurde entfernt!",
"dossier-owner-set": "Eigentümer von <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> geändert zu <b>{user}</b>!",
"download-ready": "Ihr <b><a href='/ui/main/downloads', target=\"_blank\">Download</a></b> ist fertig!",
"download-ready": "Ihr <b><a href=\"{downloadHref}\", target=\"_blank\">Download</a></b> ist fertig!",
"no-data": "Du hast aktuell keine Benachrichtigungen",
"unassigned-from-file": "Sie wurden vom Dokument <b>{fileHref, select, null{{fileName}} other{<a href=\"{fileHref}\" target=\"_blank\">{fileName}</a>}}</b> im Dossier <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}<b> entfernt!",
"user-becomes-dossier-member": "<b>{user}</b> ist jetzt Mitglied des Dossiers <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b>!",

View File

@ -1053,7 +1053,7 @@
"download-includes": "Choose what is included at download:",
"download-status": {
"error": "The download preparation failed, please recheck the selected files and download option settings.",
"queued": "Your download has been queued, you can see all your requested downloads here: <a href='/ui/main/downloads'>My Downloads<a/>."
"queued": "Your download has been queued, you can see all your requested downloads here: <a href=\"{downloadHref}\">My Downloads<a/>."
},
"download-type": {
"annotated": "Annotated PDF",
@ -1717,7 +1717,7 @@
"dossier-owner-deleted": "The owner of dossier: <b>{dossierName}</b> has been deleted!",
"dossier-owner-removed": "You have been removed as dossier owner from <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b>!",
"dossier-owner-set": "You are now the dossier owner of <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b>!",
"download-ready": "Your <b><a href='/ui/main/downloads', target=\"_blank\">download</a></b> is ready!",
"download-ready": "Your <b><a href=\"{downloadHref}\", target=\"_blank\">download</a></b> is ready!",
"no-data": "You currently have no notifications",
"unassigned-from-file": "You have been unassigned from <b>{fileHref, select, null{{fileName}} other{<a href=\"{fileHref}\" target=\"_blank\">{fileName}</a>}}</b> in dossier: <b>{dossierHref, select, null{{dossierName}} other{{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}}}</b>!",
"user-becomes-dossier-member": "You have been added to dossier: <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b>!",

View File

@ -1717,7 +1717,7 @@
"dossier-owner-deleted": "",
"dossier-owner-removed": "Der Dossier-Owner von <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> wurde entfernt!",
"dossier-owner-set": "Eigentümer von <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b> geändert zu <b>{user}</b>!",
"download-ready": "Ihr <b><a href='/ui/main/downloads', target=\"_blank\">Download</a></b> ist fertig!",
"download-ready": "Ihr <b><a href=\"{downloadHref}\", target=\"_blank\">Download</a></b> ist fertig!",
"no-data": "Du hast aktuell keine Benachrichtigungen",
"unassigned-from-file": "Sie wurden vom Dokument <b>{fileHref, select, null{{fileName}} other{<a href=\"{fileHref}\" target=\"_blank\">{fileName}</a>}}</b> im Dossier <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}<b> entfernt!",
"user-becomes-dossier-member": "<b>{user}</b> ist jetzt Mitglied des Dossiers <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b>!",

View File

@ -1053,7 +1053,7 @@
"download-includes": "Choose what is included at download:",
"download-status": {
"error": "",
"queued": "Your download has been queued, you can see all your requested downloads here: <a href='/ui/main/downloads'>My Downloads<a/>."
"queued": "Your download has been queued, you can see all your requested downloads here: <a href=\"{downloadHref}\">My Downloads<a/>."
},
"download-type": {
"annotated": "Annotated PDF",
@ -1717,7 +1717,7 @@
"dossier-owner-deleted": "The owner of dossier: <b>{dossierName}</b> has been deleted!",
"dossier-owner-removed": "You have been removed as dossier owner from <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b>!",
"dossier-owner-set": "You are now the dossier owner of <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b>!",
"download-ready": "Your <b><a href='/ui/main/downloads', target=\"_blank\">download</a></b> is ready!",
"download-ready": "Your <b><a href=\"{downloadHref}\", target=\"_blank\">download</a></b> is ready!",
"no-data": "You currently have no notifications",
"unassigned-from-file": "You have been unassigned from <b>{fileHref, select, null{{fileName}} other{<a href=\"{fileHref}\" target=\"_blank\">{fileName}</a>}}</b> in dossier: <b>{dossierHref, select, null{{dossierName}} other{{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}}}</b>!",
"user-becomes-dossier-member": "You have been added to dossier: <b>{dossierHref, select, null{{dossierName}} other{<a href=\"{dossierHref}\" target=\"_blank\">{dossierName}</a>}}</b>!",

@ -1 +1 @@
Subproject commit 97470bb723f430e9bee2a04f7a4266eb5faa3b6d
Subproject commit 6c63f851cf09496d425e9af75f18902557021c8e