From 5b96b8fb75cf1a8a4d536d004117d844d10c728a Mon Sep 17 00:00:00 2001 From: exyi Date: Sat, 17 Oct 2020 18:10:56 +0000 Subject: [PATCH] Rewriting header --- .../Controllers/GrafikPageController.cs | 6 +++- server/Ksp.WebServer/KspPageRewriter.cs | 30 ++++++++++++++++--- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/server/Ksp.WebServer/Controllers/GrafikPageController.cs b/server/Ksp.WebServer/Controllers/GrafikPageController.cs index cca73d2..40fc950 100644 --- a/server/Ksp.WebServer/Controllers/GrafikPageController.cs +++ b/server/Ksp.WebServer/Controllers/GrafikPageController.cs @@ -21,14 +21,17 @@ namespace Ksp.WebServer.Controllers { private readonly ILogger logger; private readonly IWebHostEnvironment env; + private readonly KspPageRewriter pageRewriter; private readonly KspProxyConfig kspProxyConfig; public GrafikPageController( ILogger logger, IWebHostEnvironment env, - IOptions kspProxyConfig) + IOptions kspProxyConfig, + KspPageRewriter pageRewriter) { this.env = env; + this.pageRewriter = pageRewriter; this.kspProxyConfig = kspProxyConfig.Value; this.logger = logger; } @@ -56,6 +59,7 @@ namespace Ksp.WebServer.Controllers var grafik = p.ParseDocument(grafikPage); var kspTemplate = p.ParseDocument(await FetchBlankPage()); + pageRewriter.ModifyTree(kspTemplate, "grafik"); var innerBody = grafik.Body; innerBody.Replace(kspTemplate.Body); diff --git a/server/Ksp.WebServer/KspPageRewriter.cs b/server/Ksp.WebServer/KspPageRewriter.cs index 611ade2..75c69e2 100644 --- a/server/Ksp.WebServer/KspPageRewriter.cs +++ b/server/Ksp.WebServer/KspPageRewriter.cs @@ -1,6 +1,8 @@ using System.IO; using AngleSharp.Html; using Microsoft.AspNetCore.Http; +using System.Linq; +using AngleSharp.Html.Dom; namespace Ksp.WebServer { @@ -11,6 +13,15 @@ namespace Ksp.WebServer var p = new AngleSharp.Html.Parser.HtmlParser(); var document = p.ParseDocument(source); + ModifyTree(document, context.Request.Path.Value.Trim('/')); + + var outputHtml = new StringWriter(); + document.ToHtml(outputHtml, new PrettyMarkupFormatter() { Indentation = "\t", NewLine = "\n" }); + return outputHtml.ToString(); + } + + public void ModifyTree(IHtmlDocument document, string path) + { foreach (var form in document.QuerySelectorAll("form")) { if (form.QuerySelector("input[type=password]") is null) @@ -22,11 +33,22 @@ namespace Ksp.WebServer form.Prepend(warning); } + var encyklopedie = document.QuerySelectorAll("#menu ul li:not(.active) a").FirstOrDefault(x => x.TextContent.Trim() == "Encyklopedie"); + if (encyklopedie is object) + { + encyklopedie.TextContent = "Kurzy"; + encyklopedie.SetAttribute("href", "/grafik"); + if ("grafik" == path) + { + encyklopedie.ParentElement.ClassList.Add("active"); + } + } - - var outputHtml = new StringWriter(); - document.ToHtml(outputHtml, new PrettyMarkupFormatter() { Indentation = "\t", NewLine = "\n" }); - return outputHtml.ToString(); + var logo = document.QuerySelector("#logo > h1:nth-child(1) > a:nth-child(1)"); + if (logo is object) + { + logo.TextContent = "KSP Hacked Edition"; + } } } }