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 @@
-