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} > - + ); };