diff --git a/backend/src/main/java/com/bakdata/conquery/apiv1/frontend/FrontendConfiguration.java b/backend/src/main/java/com/bakdata/conquery/apiv1/frontend/FrontendConfiguration.java
index 42fa1f39f3..8aa6ce070a 100644
--- a/backend/src/main/java/com/bakdata/conquery/apiv1/frontend/FrontendConfiguration.java
+++ b/backend/src/main/java/com/bakdata/conquery/apiv1/frontend/FrontendConfiguration.java
@@ -1,14 +1,24 @@
package com.bakdata.conquery.apiv1.frontend;
+import java.net.URL;
+
import com.bakdata.conquery.models.config.FrontendConfig;
import com.bakdata.conquery.models.config.IdColumnConfig;
/**
* API Response for the dynamic configuration of the frontend
*
- * @param version backend version
- * @param currency currency representation
- * @param queryUpload identifier specific column configuration for the query upload
+ * @param version backend version
+ * @param currency currency representation
+ * @param queryUpload identifier specific column configuration for the query upload
+ * @param manualUrl url to a user manual
+ * @param contactEmail typical a mailto-url
*/
-public record FrontendConfiguration(String version, FrontendConfig.CurrencyConfig currency, IdColumnConfig queryUpload) {
+public record FrontendConfiguration(
+ String version,
+ FrontendConfig.CurrencyConfig currency,
+ IdColumnConfig queryUpload,
+ URL manualUrl,
+ String contactEmail
+) {
}
diff --git a/backend/src/main/java/com/bakdata/conquery/resources/api/ConfigResource.java b/backend/src/main/java/com/bakdata/conquery/resources/api/ConfigResource.java
index fd950e3777..8f1f695329 100644
--- a/backend/src/main/java/com/bakdata/conquery/resources/api/ConfigResource.java
+++ b/backend/src/main/java/com/bakdata/conquery/resources/api/ConfigResource.java
@@ -9,6 +9,7 @@
import com.bakdata.conquery.apiv1.frontend.FrontendConfiguration;
import com.bakdata.conquery.models.config.ColumnConfig;
import com.bakdata.conquery.models.config.ConqueryConfig;
+import com.bakdata.conquery.models.config.FrontendConfig;
import com.bakdata.conquery.models.config.IdColumnConfig;
import com.bakdata.conquery.util.VersionInfo;
import lombok.RequiredArgsConstructor;
@@ -30,7 +31,14 @@ public FrontendConfiguration getFrontendConfig() {
.filter(ColumnConfig::isResolvable)
.toList());
- return new FrontendConfiguration(VersionInfo.INSTANCE.getProjectVersion(), config.getFrontend().getCurrency(), idColumns);
+ final FrontendConfig frontendConfig = config.getFrontend();
+ return new FrontendConfiguration(
+ VersionInfo.INSTANCE.getProjectVersion(),
+ frontendConfig.getCurrency(),
+ idColumns,
+ frontendConfig.getManualUrl(),
+ frontendConfig.getContactEmail()
+ );
}
}
\ No newline at end of file
diff --git a/cypress/integration/test_3_openHelpMenu.js b/cypress/integration/test_3_openHelpMenu.js
new file mode 100644
index 0000000000..11945fba06
--- /dev/null
+++ b/cypress/integration/test_3_openHelpMenu.js
@@ -0,0 +1,19 @@
+///
+import { visitWithToken } from "../integration-helpers/visitWithToken";
+
+const USER_TOKEN_WITH_PERMISSIONS = "user.user2";
+
+describe("Visit Form Editor", () => {
+ before(() => {
+ visitWithToken(USER_TOKEN_WITH_PERMISSIONS);
+ });
+
+ it("Can open help menu", () => {
+
+ cy.get('[data-test-id="help-menu"]').click()
+
+ cy.get('[data-test-id="help-manual"]').should("have.attr", "href", "https://example.org");
+
+ cy.get('[data-test-id="help-email"]').should("have.attr", "href", "mailto:test@example.org");
+ });
+});
diff --git a/cypress/support/backend_config.json b/cypress/support/backend_config.json
index 9e26dfeeb6..6f983ee7c5 100644
--- a/cypress/support/backend_config.json
+++ b/cypress/support/backend_config.json
@@ -1 +1,6 @@
-{}
\ No newline at end of file
+{
+ "frontend": {
+ "manualUrl": "https://example.org",
+ "contactEmail": "test@example.org"
+ }
+}
\ No newline at end of file
diff --git a/frontend/src/js/header/HelpMenu.tsx b/frontend/src/js/header/HelpMenu.tsx
index 26b1bf8e71..dc61332b60 100644
--- a/frontend/src/js/header/HelpMenu.tsx
+++ b/frontend/src/js/header/HelpMenu.tsx
@@ -35,12 +35,21 @@ export const HelpMenu = ({ contactEmail, manualUrl }: Props) => {
const Dropdown = useMemo(
() => (
-
+
{t("common.contact")}
-
+
{t("common.manual")}
@@ -57,7 +66,7 @@ export const HelpMenu = ({ contactEmail, manualUrl }: Props) => {
html={Dropdown}
offset={dropdownOffset}
>
-
+
);
};