Community site: links back to seosoft.dk
Some checks are pending
CI / Integration (mcr.microsoft.com/mssql/server:2017-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2019-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2022-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2025-latest) (push) Blocked by required conditions
CI / Build og unit tests (push) Successful in 58s
deploy community / deploy (push) Successful in 13s
deploy hub / deploy (push) Successful in 23s
CI / MSI-installer (push) Successful in 35s

A thin bar above the header ("Tilbage til seosoft.dk") and footer links
lead back to the vendor's site. CompanyUrl is configurable.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Søren Eggert Lundsteen Olsen 2026-10-01 13:22:55 +02:00
parent 967c01ec97
commit 3bfb59f302
4 changed files with 25 additions and 1 deletions

View file

@ -29,6 +29,9 @@ public sealed class CommunityOptions
public Uri SourceUrl { get; set; } = new("https://git.seosoft.dk/seo/sqlinsight-pro");
/// <summary>The vendor's own site, linked from the header and footer so visitors can get back to it.</summary>
public Uri CompanyUrl { get; set; } = new("https://seosoft.dk/");
/// <summary>Where Professional and Enterprise enquiries go.</summary>
public string ContactEmail { get; set; } = "salg@example.com";

View file

@ -1,6 +1,9 @@
@inherits LayoutComponentBase
@inject IOptions<CommunityOptions> Options
<div class="vendor-bar">
<div class="wrap"><a href="@Options.Value.CompanyUrl">&larr; Tilbage til seosoft.dk</a></div>
</div>
<header class="site-header">
<div class="wrap header-row">
<a class="brand" href="/"><span class="logo" aria-hidden="true">SI</span><span>SQLInsight <strong>Pro</strong></span></a>
@ -25,7 +28,7 @@
<div class="wrap footer-row">
<div>
<strong>SQLInsight Pro</strong><br />
Gratis og open source (MIT). Udviklet af SEOSoft.
Gratis og open source (MIT). Udviklet af <a href="@Options.Value.CompanyUrl">SEOSoft</a>.
</div>
<div class="footer-links">
@if (Options.Value.ForumHome is { } forumLink)
@ -35,6 +38,7 @@
<a href="@Options.Value.SourceUrl" rel="noopener">Kildekode og issues</a>
<a href="/dokumentation/databehandling">Databehandling</a>
<a href="/support">Support og priser</a>
<a href="@Options.Value.CompanyUrl">seosoft.dk</a>
</div>
</div>
</footer>

View file

@ -69,6 +69,12 @@ pre code { background: none; padding: 0; }
/* Header and footer */
.site-header { position: sticky; top: 0; z-index: 10; background: color-mix(in srgb, var(--surface) 92%, transparent); backdrop-filter: blur(8px); border-bottom: 1px solid var(--border); }
.header-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 64px; flex-wrap: wrap; }
/* Thin bar above the header: the way back to the vendor's own site. */
.vendor-bar { background: var(--surface-2); border-bottom: 1px solid var(--border); font-size: .85rem; }
.vendor-bar .wrap { padding-top: .35rem; padding-bottom: .35rem; }
.vendor-bar a { color: var(--text-2); }
.vendor-bar a:hover { color: var(--text); }
.brand { display: flex; align-items: center; gap: .6rem; color: var(--text); font-size: 1.1rem; }
.brand:hover { text-decoration: none; }
.brand strong { color: var(--accent); }

View file

@ -136,6 +136,17 @@ public sealed class SiteTests : IDisposable
Assert.EndsWith("/latest.json", _forum.Requests.Single().AbsolutePath, StringComparison.Ordinal);
}
[Fact]
public async Task Every_page_links_back_to_the_vendor_site()
{
using var factory = Site();
var html = await Get(factory, "/dokumentation");
Assert.Contains("href=\"https://seosoft.dk/\"", html, StringComparison.Ordinal);
Assert.Contains("Tilbage til seosoft.dk", html, StringComparison.Ordinal);
}
[Fact]
public async Task Front_page_works_when_the_forum_is_down()
{