diff --git a/backend/routes/clickTtHttpPageRoutes.js b/backend/routes/clickTtHttpPageRoutes.js index 2f2c3acc..2cecd490 100644 --- a/backend/routes/clickTtHttpPageRoutes.js +++ b/backend/routes/clickTtHttpPageRoutes.js @@ -159,6 +159,86 @@ function rewriteFormActionsInHtml(html, proxyBaseUrl, pageBaseUrl, sid) { } } +function injectProxyNavigationScript(html, proxyBaseUrl, pageBaseUrl, sid) { + if (!html || !proxyBaseUrl || !pageBaseUrl) return html; + + const script = ` +`; + + if (/<\/body>/i.test(html)) { + return html.replace(/<\/body>/i, `${script}`); + } + + return html + script; +} + /** * GET /api/clicktt/proxy * Proxy für iframe-Einbettung – liefert HTML direkt (ohne Auth, für iframe src). @@ -248,6 +328,7 @@ router.get('/proxy', async (req, res, next) => { html = rewriteLinksInHtml(html, proxyBase, effectivePageUrl, sid); html = rewriteFormActionsInHtml(html, proxyBase, effectivePageUrl, sid); html = rewriteMetaRefreshInHtml(html, proxyBase, effectivePageUrl, sid); + html = injectProxyNavigationScript(html, proxyBase, effectivePageUrl, sid); res.set({ 'Content-Type': 'text/html; charset=utf-8', @@ -344,6 +425,7 @@ router.post('/proxy', async (req, res, next) => { responseBody = rewriteLinksInHtml(responseBody, proxyBase, effectivePageUrl, sid); responseBody = rewriteFormActionsInHtml(responseBody, proxyBase, effectivePageUrl, sid); responseBody = rewriteMetaRefreshInHtml(responseBody, proxyBase, effectivePageUrl, sid); + responseBody = injectProxyNavigationScript(responseBody, proxyBase, effectivePageUrl, sid); } res.set({ diff --git a/frontend/src/views/ClickTtView.vue b/frontend/src/views/ClickTtView.vue index 91638605..fcd963ed 100644 --- a/frontend/src/views/ClickTtView.vue +++ b/frontend/src/views/ClickTtView.vue @@ -17,10 +17,12 @@ + + -
+
-
+
-
- - -
-
0; } + if (pageType.value.startsWith('preset:')) { + return true; + } if (pageType.value === 'clubInfo') { return clubId.value.trim().length > 0; } @@ -126,6 +124,8 @@ export default { if (pageType.value === 'url') { params.set('url', directUrl.value.trim()); + } else if (pageType.value.startsWith('preset:')) { + params.set('url', presetUrls[pageType.value]); } else { params.set('type', pageType.value); params.set('association', association.value);