From 0c191b21f49b1855e9bb0f7d984d900ca7c5d4a5 Mon Sep 17 00:00:00 2001 From: "hoeppner.dataport" Date: Thu, 16 Jan 2025 11:49:06 +0100 Subject: [PATCH 1/7] replace nbc mail adresses --- src/components/administration/AdminMigrationSection.unit.ts | 2 +- src/components/administration/AdminMigrationSection.vue | 2 +- .../user-login-migration/UserLoginMigrationError.page.unit.ts | 4 ++-- src/themes/n21/components/legacy/TheFooter.vue | 2 +- src/themes/n21/components/templates/impressum.vue | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/administration/AdminMigrationSection.unit.ts b/src/components/administration/AdminMigrationSection.unit.ts index 3c1f66322b..3e51026eff 100644 --- a/src/components/administration/AdminMigrationSection.unit.ts +++ b/src/components/administration/AdminMigrationSection.unit.ts @@ -60,7 +60,7 @@ describe("AdminMigrationSection", () => { }); envConfigModule = createModuleMocks(EnvConfigModule, { - getAccessibilityReportEmail: "nbc-support@netz-21.de", + getAccessibilityReportEmail: "ticketsystem@niedersachsen.support", getEnv: {} as ConfigResponse, ...envConfigGetters, }); diff --git a/src/components/administration/AdminMigrationSection.vue b/src/components/administration/AdminMigrationSection.vue index dfa7b6945d..2ddf960a76 100644 --- a/src/components/administration/AdminMigrationSection.vue +++ b/src/components/administration/AdminMigrationSection.vue @@ -66,7 +66,7 @@ tag="p" > {{ t("components.administrationSection.description.support.link") }} diff --git a/src/pages/user-login-migration/UserLoginMigrationError.page.unit.ts b/src/pages/user-login-migration/UserLoginMigrationError.page.unit.ts index cc16993ac8..93fcd87dba 100644 --- a/src/pages/user-login-migration/UserLoginMigrationError.page.unit.ts +++ b/src/pages/user-login-migration/UserLoginMigrationError.page.unit.ts @@ -46,7 +46,7 @@ describe("UserLoginMigrationError", () => { getSystems: systemsMock, }); envConfigModule = createModuleMocks(EnvConfigModule, { - getAccessibilityReportEmail: "nbc-support@netz-21.de", + getAccessibilityReportEmail: "ticketsystem@niedersachsen.support", }); userLoginMigrationModule = createModuleMocks(UserLoginMigrationModule, { getUserLoginMigration: userLoginMigrationFactory.build(), @@ -142,7 +142,7 @@ describe("UserLoginMigrationError", () => { "pages.userMigration.error.description.support.link" ); expect(supportLink.element.href).toEqual( - "mailto:nbc-support@netz-21.de?subject=Schulnummer%20nicht%20korrekt" + "mailto:ticketsystem@niedersachsen.support?subject=Schulnummer%20nicht%20korrekt" ); }); }); diff --git a/src/themes/n21/components/legacy/TheFooter.vue b/src/themes/n21/components/legacy/TheFooter.vue index 60216f4997..c2ddc11c8a 100644 --- a/src/themes/n21/components/legacy/TheFooter.vue +++ b/src/themes/n21/components/legacy/TheFooter.vue @@ -58,7 +58,7 @@ export default { rel: "noopener", }, { - href: "mailto:nbc-support@netz-21.de?subject=Niedersächsische%20Bildungscloud%20Anfrage", + href: "mailto:ticketsystem@niedersachsen.support?subject=Niedersächsische%20Bildungscloud%20Anfrage", text: this.$t("components.legacy.footer.contact"), }, ]; diff --git a/src/themes/n21/components/templates/impressum.vue b/src/themes/n21/components/templates/impressum.vue index 5002e5e8ae..9d1d54765b 100644 --- a/src/themes/n21/components/templates/impressum.vue +++ b/src/themes/n21/components/templates/impressum.vue @@ -22,8 +22,8 @@

Support-Anfragen richten Sie bitte direkt an - nbc-support@netz-21.deticketsystem@niedersachsen.support.

Vertretungsberechtigter Geschäftsführer

From 29a8c32d5c04cdee9e3fe3c356d15844299a50cf Mon Sep 17 00:00:00 2001 From: "hoeppner.dataport" Date: Thu, 16 Jan 2025 14:50:19 +0100 Subject: [PATCH 2/7] use dof-values for email --- .../AdminMigrationSection.unit.ts | 1 + .../administration/AdminMigrationSection.vue | 2 +- src/serverApi/v3/api.ts | 100 ++++++++++++------ src/store/env-config-defaults.ts | 1 + src/store/env-config.ts | 4 + .../n21/components/legacy/TheFooter.vue | 5 +- .../n21/components/templates/impressum.vue | 9 +- 7 files changed, 83 insertions(+), 39 deletions(-) diff --git a/src/components/administration/AdminMigrationSection.unit.ts b/src/components/administration/AdminMigrationSection.unit.ts index 3e51026eff..c8b3554cc5 100644 --- a/src/components/administration/AdminMigrationSection.unit.ts +++ b/src/components/administration/AdminMigrationSection.unit.ts @@ -61,6 +61,7 @@ describe("AdminMigrationSection", () => { envConfigModule = createModuleMocks(EnvConfigModule, { getAccessibilityReportEmail: "ticketsystem@niedersachsen.support", + getSupportProblemEmail: "ticketsystem@niedersachsen.support", getEnv: {} as ConfigResponse, ...envConfigGetters, }); diff --git a/src/components/administration/AdminMigrationSection.vue b/src/components/administration/AdminMigrationSection.vue index 2ddf960a76..09172e9b82 100644 --- a/src/components/administration/AdminMigrationSection.vue +++ b/src/components/administration/AdminMigrationSection.vue @@ -66,7 +66,7 @@ tag="p" > {{ t("components.administrationSection.description.support.link") }} diff --git a/src/serverApi/v3/api.ts b/src/serverApi/v3/api.ts index 5e45b37cf5..e15964979e 100644 --- a/src/serverApi/v3/api.ts +++ b/src/serverApi/v3/api.ts @@ -1000,6 +1000,16 @@ export interface ClassInfoSearchListResponse { */ limit: number; } +/** + * + * @export + * @enum {string} + */ +export enum ClassRequestContext { + Course = 'course', + ClassOverview = 'class-overview' +} + /** * * @export @@ -1262,6 +1272,12 @@ export interface ConfigResponse { * @memberof ConfigResponse */ ACCESSIBILITY_REPORT_EMAIL: string; + /** + * + * @type {string} + * @memberof ConfigResponse + */ + SUPPORT_PROBLEM_EMAIL_ADDRESS: string; /** * * @type {boolean} @@ -16679,10 +16695,11 @@ export const GroupApiAxiosParamCreator = function (configuration?: Configuration * @param {'asc' | 'desc'} [sortOrder] * @param {ClassSortQueryType} [sortBy] * @param {SchoolYearQueryType} [type] + * @param {ClassRequestContext} [calledFrom] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - groupControllerFindClasses: async (skip?: number, limit?: number, sortOrder?: 'asc' | 'desc', sortBy?: ClassSortQueryType, type?: SchoolYearQueryType, options: any = {}): Promise => { + groupControllerFindClasses: async (skip?: number, limit?: number, sortOrder?: 'asc' | 'desc', sortBy?: ClassSortQueryType, type?: SchoolYearQueryType, calledFrom?: ClassRequestContext, options: any = {}): Promise => { const localVarPath = `/groups/class`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -16719,6 +16736,10 @@ export const GroupApiAxiosParamCreator = function (configuration?: Configuration localVarQueryParameter['type'] = type; } + if (calledFrom !== undefined) { + localVarQueryParameter['calledFrom'] = calledFrom; + } + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); @@ -16840,11 +16861,12 @@ export const GroupApiFp = function(configuration?: Configuration) { * @param {'asc' | 'desc'} [sortOrder] * @param {ClassSortQueryType} [sortBy] * @param {SchoolYearQueryType} [type] + * @param {ClassRequestContext} [calledFrom] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async groupControllerFindClasses(skip?: number, limit?: number, sortOrder?: 'asc' | 'desc', sortBy?: ClassSortQueryType, type?: SchoolYearQueryType, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.groupControllerFindClasses(skip, limit, sortOrder, sortBy, type, options); + async groupControllerFindClasses(skip?: number, limit?: number, sortOrder?: 'asc' | 'desc', sortBy?: ClassSortQueryType, type?: SchoolYearQueryType, calledFrom?: ClassRequestContext, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.groupControllerFindClasses(skip, limit, sortOrder, sortBy, type, calledFrom, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** @@ -16890,11 +16912,12 @@ export const GroupApiFactory = function (configuration?: Configuration, basePath * @param {'asc' | 'desc'} [sortOrder] * @param {ClassSortQueryType} [sortBy] * @param {SchoolYearQueryType} [type] + * @param {ClassRequestContext} [calledFrom] * @param {*} [options] Override http request option. * @throws {RequiredError} */ - groupControllerFindClasses(skip?: number, limit?: number, sortOrder?: 'asc' | 'desc', sortBy?: ClassSortQueryType, type?: SchoolYearQueryType, options?: any): AxiosPromise { - return localVarFp.groupControllerFindClasses(skip, limit, sortOrder, sortBy, type, options).then((request) => request(axios, basePath)); + groupControllerFindClasses(skip?: number, limit?: number, sortOrder?: 'asc' | 'desc', sortBy?: ClassSortQueryType, type?: SchoolYearQueryType, calledFrom?: ClassRequestContext, options?: any): AxiosPromise { + return localVarFp.groupControllerFindClasses(skip, limit, sortOrder, sortBy, type, calledFrom, options).then((request) => request(axios, basePath)); }, /** * @@ -16936,11 +16959,12 @@ export interface GroupApiInterface { * @param {'asc' | 'desc'} [sortOrder] * @param {ClassSortQueryType} [sortBy] * @param {SchoolYearQueryType} [type] + * @param {ClassRequestContext} [calledFrom] * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof GroupApiInterface */ - groupControllerFindClasses(skip?: number, limit?: number, sortOrder?: 'asc' | 'desc', sortBy?: ClassSortQueryType, type?: SchoolYearQueryType, options?: any): AxiosPromise; + groupControllerFindClasses(skip?: number, limit?: number, sortOrder?: 'asc' | 'desc', sortBy?: ClassSortQueryType, type?: SchoolYearQueryType, calledFrom?: ClassRequestContext, options?: any): AxiosPromise; /** * @@ -16982,12 +17006,13 @@ export class GroupApi extends BaseAPI implements GroupApiInterface { * @param {'asc' | 'desc'} [sortOrder] * @param {ClassSortQueryType} [sortBy] * @param {SchoolYearQueryType} [type] + * @param {ClassRequestContext} [calledFrom] * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof GroupApi */ - public groupControllerFindClasses(skip?: number, limit?: number, sortOrder?: 'asc' | 'desc', sortBy?: ClassSortQueryType, type?: SchoolYearQueryType, options?: any) { - return GroupApiFp(this.configuration).groupControllerFindClasses(skip, limit, sortOrder, sortBy, type, options).then((request) => request(this.axios, this.basePath)); + public groupControllerFindClasses(skip?: number, limit?: number, sortOrder?: 'asc' | 'desc', sortBy?: ClassSortQueryType, type?: SchoolYearQueryType, calledFrom?: ClassRequestContext, options?: any) { + return GroupApiFp(this.configuration).groupControllerFindClasses(skip, limit, sortOrder, sortBy, type, calledFrom, options).then((request) => request(this.axios, this.basePath)); } /** @@ -21949,10 +21974,12 @@ export const SchoolApiAxiosParamCreator = function (configuration?: Configuratio /** * * @param {string} schoolId + * @param {number} [skip] Number of elements (not pages) to be skipped + * @param {number} [limit] Page limit, defaults to 10. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - schoolControllerGetTeachers: async (schoolId: string, options: any = {}): Promise => { + schoolControllerGetTeachers: async (schoolId: string, skip?: number, limit?: number, options: any = {}): Promise => { // verify required parameter 'schoolId' is not null or undefined assertParamExists('schoolControllerGetTeachers', 'schoolId', schoolId) const localVarPath = `/school/{schoolId}/teachers` @@ -21972,6 +21999,14 @@ export const SchoolApiAxiosParamCreator = function (configuration?: Configuratio // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + if (skip !== undefined) { + localVarQueryParameter['skip'] = skip; + } + + if (limit !== undefined) { + localVarQueryParameter['limit'] = limit; + } + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); @@ -22189,11 +22224,13 @@ export const SchoolApiFp = function(configuration?: Configuration) { /** * * @param {string} schoolId + * @param {number} [skip] Number of elements (not pages) to be skipped + * @param {number} [limit] Page limit, defaults to 10. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async schoolControllerGetTeachers(schoolId: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.schoolControllerGetTeachers(schoolId, options); + async schoolControllerGetTeachers(schoolId: string, skip?: number, limit?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.schoolControllerGetTeachers(schoolId, skip, limit, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** @@ -22299,11 +22336,13 @@ export const SchoolApiFactory = function (configuration?: Configuration, basePat /** * * @param {string} schoolId + * @param {number} [skip] Number of elements (not pages) to be skipped + * @param {number} [limit] Page limit, defaults to 10. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - schoolControllerGetTeachers(schoolId: string, options?: any): AxiosPromise { - return localVarFp.schoolControllerGetTeachers(schoolId, options).then((request) => request(axios, basePath)); + schoolControllerGetTeachers(schoolId: string, skip?: number, limit?: number, options?: any): AxiosPromise { + return localVarFp.schoolControllerGetTeachers(schoolId, skip, limit, options).then((request) => request(axios, basePath)); }, /** * @@ -22404,11 +22443,13 @@ export interface SchoolApiInterface { /** * * @param {string} schoolId + * @param {number} [skip] Number of elements (not pages) to be skipped + * @param {number} [limit] Page limit, defaults to 10. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof SchoolApiInterface */ - schoolControllerGetTeachers(schoolId: string, options?: any): AxiosPromise; + schoolControllerGetTeachers(schoolId: string, skip?: number, limit?: number, options?: any): AxiosPromise; /** * @@ -22521,12 +22562,14 @@ export class SchoolApi extends BaseAPI implements SchoolApiInterface { /** * * @param {string} schoolId + * @param {number} [skip] Number of elements (not pages) to be skipped + * @param {number} [limit] Page limit, defaults to 10. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof SchoolApi */ - public schoolControllerGetTeachers(schoolId: string, options?: any) { - return SchoolApiFp(this.configuration).schoolControllerGetTeachers(schoolId, options).then((request) => request(this.axios, this.basePath)); + public schoolControllerGetTeachers(schoolId: string, skip?: number, limit?: number, options?: any) { + return SchoolApiFp(this.configuration).schoolControllerGetTeachers(schoolId, skip, limit, options).then((request) => request(this.axios, this.basePath)); } /** @@ -27197,11 +27240,10 @@ export const UserImportApiAxiosParamCreator = function (configuration?: Configur /** * Populates import users from specific user migration populate endpoint. * @summary Populates import users - * @param {boolean} [matchByPreferredName] Should the users preferred name from the external system be used for auto-matching to existing users? * @param {*} [options] Override http request option. * @throws {RequiredError} */ - importUserControllerPopulateImportUsers: async (matchByPreferredName?: boolean, options: any = {}): Promise => { + importUserControllerPopulateImportUsers: async (options: any = {}): Promise => { const localVarPath = `/user/import/populate-import-users`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -27218,10 +27260,6 @@ export const UserImportApiAxiosParamCreator = function (configuration?: Configur // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) - if (matchByPreferredName !== undefined) { - localVarQueryParameter['matchByPreferredName'] = matchByPreferredName; - } - setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); @@ -27503,12 +27541,11 @@ export const UserImportApiFp = function(configuration?: Configuration) { /** * Populates import users from specific user migration populate endpoint. * @summary Populates import users - * @param {boolean} [matchByPreferredName] Should the users preferred name from the external system be used for auto-matching to existing users? * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async importUserControllerPopulateImportUsers(matchByPreferredName?: boolean, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.importUserControllerPopulateImportUsers(matchByPreferredName, options); + async importUserControllerPopulateImportUsers(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.importUserControllerPopulateImportUsers(options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** @@ -27631,12 +27668,11 @@ export const UserImportApiFactory = function (configuration?: Configuration, bas /** * Populates import users from specific user migration populate endpoint. * @summary Populates import users - * @param {boolean} [matchByPreferredName] Should the users preferred name from the external system be used for auto-matching to existing users? * @param {*} [options] Override http request option. * @throws {RequiredError} */ - importUserControllerPopulateImportUsers(matchByPreferredName?: boolean, options?: any): AxiosPromise { - return localVarFp.importUserControllerPopulateImportUsers(matchByPreferredName, options).then((request) => request(axios, basePath)); + importUserControllerPopulateImportUsers(options?: any): AxiosPromise { + return localVarFp.importUserControllerPopulateImportUsers(options).then((request) => request(axios, basePath)); }, /** * @@ -27752,12 +27788,11 @@ export interface UserImportApiInterface { /** * Populates import users from specific user migration populate endpoint. * @summary Populates import users - * @param {boolean} [matchByPreferredName] Should the users preferred name from the external system be used for auto-matching to existing users? * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof UserImportApiInterface */ - importUserControllerPopulateImportUsers(matchByPreferredName?: boolean, options?: any): AxiosPromise; + importUserControllerPopulateImportUsers(options?: any): AxiosPromise; /** * @@ -27883,13 +27918,12 @@ export class UserImportApi extends BaseAPI implements UserImportApiInterface { /** * Populates import users from specific user migration populate endpoint. * @summary Populates import users - * @param {boolean} [matchByPreferredName] Should the users preferred name from the external system be used for auto-matching to existing users? * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof UserImportApi */ - public importUserControllerPopulateImportUsers(matchByPreferredName?: boolean, options?: any) { - return UserImportApiFp(this.configuration).importUserControllerPopulateImportUsers(matchByPreferredName, options).then((request) => request(this.axios, this.basePath)); + public importUserControllerPopulateImportUsers(options?: any) { + return UserImportApiFp(this.configuration).importUserControllerPopulateImportUsers(options).then((request) => request(this.axios, this.basePath)); } /** diff --git a/src/store/env-config-defaults.ts b/src/store/env-config-defaults.ts index 81c74c84fb..aff6f21f92 100644 --- a/src/store/env-config-defaults.ts +++ b/src/store/env-config-defaults.ts @@ -30,6 +30,7 @@ export const defaultConfigEnvs: ConfigResponse = { FEATURE_CTL_TOOLS_TAB_ENABLED: false, FEATURE_CTL_TOOLS_COPY_ENABLED: false, ACCESSIBILITY_REPORT_EMAIL: "", + SUPPORT_PROBLEM_EMAIL_ADDRESS: "", FEATURE_NEW_SCHOOL_ADMINISTRATION_PAGE_AS_DEFAULT_ENABLED: false, FEATURE_LTI_TOOLS_TAB_ENABLED: true, FEATURE_SHOW_MIGRATION_WIZARD: false, diff --git a/src/store/env-config.ts b/src/store/env-config.ts index 9afb2b85f4..adeef7bab4 100644 --- a/src/store/env-config.ts +++ b/src/store/env-config.ts @@ -144,6 +144,10 @@ export default class EnvConfigModule extends VuexModule { return this.env.GHOST_BASE_URL; } + get getSupportProblemEmail(): string { + return this.env.SUPPORT_PROBLEM_EMAIL_ADDRESS; + } + get getAccessibilityReportEmail(): string { return this.env.ACCESSIBILITY_REPORT_EMAIL; } diff --git a/src/themes/n21/components/legacy/TheFooter.vue b/src/themes/n21/components/legacy/TheFooter.vue index c2ddc11c8a..215061e31f 100644 --- a/src/themes/n21/components/legacy/TheFooter.vue +++ b/src/themes/n21/components/legacy/TheFooter.vue @@ -58,7 +58,10 @@ export default { rel: "noopener", }, { - href: "mailto:ticketsystem@niedersachsen.support?subject=Niedersächsische%20Bildungscloud%20Anfrage", + href: + "mailto:" + + envConfigModule.getSupportProblemEmail + + "?subject=Niedersächsische%20Bildungscloud%20Anfrage", text: this.$t("components.legacy.footer.contact"), }, ]; diff --git a/src/themes/n21/components/templates/impressum.vue b/src/themes/n21/components/templates/impressum.vue index 9d1d54765b..a1f93a3155 100644 --- a/src/themes/n21/components/templates/impressum.vue +++ b/src/themes/n21/components/templates/impressum.vue @@ -22,8 +22,7 @@

Support-Anfragen richten Sie bitte direkt an - ticketsystem@niedersachsen.support{{ supportMail }}.

Vertretungsberechtigter Geschäftsführer

@@ -89,8 +88,10 @@ -