Rewriting header
This commit is contained in:
parent
f6ca2e163b
commit
5b96b8fb75
2 changed files with 31 additions and 5 deletions
|
@ -21,14 +21,17 @@ namespace Ksp.WebServer.Controllers
|
||||||
{
|
{
|
||||||
private readonly ILogger<TasksController> logger;
|
private readonly ILogger<TasksController> logger;
|
||||||
private readonly IWebHostEnvironment env;
|
private readonly IWebHostEnvironment env;
|
||||||
|
private readonly KspPageRewriter pageRewriter;
|
||||||
private readonly KspProxyConfig kspProxyConfig;
|
private readonly KspProxyConfig kspProxyConfig;
|
||||||
|
|
||||||
public GrafikPageController(
|
public GrafikPageController(
|
||||||
ILogger<TasksController> logger,
|
ILogger<TasksController> logger,
|
||||||
IWebHostEnvironment env,
|
IWebHostEnvironment env,
|
||||||
IOptions<KspProxyConfig> kspProxyConfig)
|
IOptions<KspProxyConfig> kspProxyConfig,
|
||||||
|
KspPageRewriter pageRewriter)
|
||||||
{
|
{
|
||||||
this.env = env;
|
this.env = env;
|
||||||
|
this.pageRewriter = pageRewriter;
|
||||||
this.kspProxyConfig = kspProxyConfig.Value;
|
this.kspProxyConfig = kspProxyConfig.Value;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
}
|
}
|
||||||
|
@ -56,6 +59,7 @@ namespace Ksp.WebServer.Controllers
|
||||||
var grafik = p.ParseDocument(grafikPage);
|
var grafik = p.ParseDocument(grafikPage);
|
||||||
|
|
||||||
var kspTemplate = p.ParseDocument(await FetchBlankPage());
|
var kspTemplate = p.ParseDocument(await FetchBlankPage());
|
||||||
|
pageRewriter.ModifyTree(kspTemplate, "grafik");
|
||||||
|
|
||||||
var innerBody = grafik.Body;
|
var innerBody = grafik.Body;
|
||||||
innerBody.Replace(kspTemplate.Body);
|
innerBody.Replace(kspTemplate.Body);
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using AngleSharp.Html;
|
using AngleSharp.Html;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using System.Linq;
|
||||||
|
using AngleSharp.Html.Dom;
|
||||||
|
|
||||||
namespace Ksp.WebServer
|
namespace Ksp.WebServer
|
||||||
{
|
{
|
||||||
|
@ -11,6 +13,15 @@ namespace Ksp.WebServer
|
||||||
var p = new AngleSharp.Html.Parser.HtmlParser();
|
var p = new AngleSharp.Html.Parser.HtmlParser();
|
||||||
var document = p.ParseDocument(source);
|
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"))
|
foreach (var form in document.QuerySelectorAll("form"))
|
||||||
{
|
{
|
||||||
if (form.QuerySelector("input[type=password]") is null)
|
if (form.QuerySelector("input[type=password]") is null)
|
||||||
|
@ -22,11 +33,22 @@ namespace Ksp.WebServer
|
||||||
form.Prepend(warning);
|
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 logo = document.QuerySelector("#logo > h1:nth-child(1) > a:nth-child(1)");
|
||||||
var outputHtml = new StringWriter();
|
if (logo is object)
|
||||||
document.ToHtml(outputHtml, new PrettyMarkupFormatter() { Indentation = "\t", NewLine = "\n" });
|
{
|
||||||
return outputHtml.ToString();
|
logo.TextContent = "KSP Hacked Edition";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue