diff options
| author | ivarlovlie <git@ivarlovlie.no> | 2022-11-15 05:05:05 +0100 |
|---|---|---|
| committer | ivarlovlie <git@ivarlovlie.no> | 2022-11-15 05:05:05 +0100 |
| commit | add94527050dc311c4ad117e25dd5e4517b3b887 (patch) | |
| tree | 137306ea8c7c63b6287bd77c6deaf09e1319833e /src/Pages | |
| download | lettnytt-add94527050dc311c4ad117e25dd5e4517b3b887.tar.xz lettnytt-add94527050dc311c4ad117e25dd5e4517b3b887.zip | |
feat: Initial commit
Diffstat (limited to 'src/Pages')
| -rw-r--r-- | src/Pages/Index.cshtml | 19 | ||||
| -rw-r--r-- | src/Pages/Index.cshtml.cs | 30 | ||||
| -rw-r--r-- | src/Pages/Read.cshtml | 26 | ||||
| -rw-r--r-- | src/Pages/Read.cshtml.cs | 24 | ||||
| -rw-r--r-- | src/Pages/Shared/_Layout.cshtml | 20 | ||||
| -rw-r--r-- | src/Pages/_ViewImports.cshtml | 3 | ||||
| -rw-r--r-- | src/Pages/_ViewStart.cshtml | 3 |
7 files changed, 125 insertions, 0 deletions
diff --git a/src/Pages/Index.cshtml b/src/Pages/Index.cshtml new file mode 100644 index 0000000..d7599bc --- /dev/null +++ b/src/Pages/Index.cshtml @@ -0,0 +1,19 @@ +@page "{site?}" +@model IndexModel +@{ + ViewData["Title"] = Model.Source.Name; +} + +@foreach (var article in Model.Source.Articles) { + <section> + <a href="/les/@Model.Source.Name?url=@article.Href"> + <h2>@Html.Raw(article.Title)</h2> + <a href="@article.Href" rel="noreferrer">Kilde</a> + </a> + </section> +} +<footer> + <small> + @Model.Source.Attribution © @Model.Source.Name, @(DateTime.UtcNow.Subtract(Model.Source.Created).Minutes) minutter siden + </small> +</footer>
\ No newline at end of file diff --git a/src/Pages/Index.cshtml.cs b/src/Pages/Index.cshtml.cs new file mode 100644 index 0000000..9305766 --- /dev/null +++ b/src/Pages/Index.cshtml.cs @@ -0,0 +1,30 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace I2R.LightNews.Pages; + +public class IndexModel : PageModel +{ + private readonly ILogger<IndexModel> _logger; + private readonly GrabberService _grabber; + + public IndexModel(ILogger<IndexModel> logger, GrabberService grabber) { + _logger = logger; + _grabber = grabber; + } + + public NewsSource Source { get; set; } + + public async Task<ActionResult> OnGet(string site) { + if (site.IsNullOrWhiteSpace()) { + return Redirect("/nrk"); + } + + Source = site switch { + "nrk" => await _grabber.GrabNrkAsync(), + _ => await _grabber.GrabNrkAsync() + }; + + return Page(); + } +}
\ No newline at end of file diff --git a/src/Pages/Read.cshtml b/src/Pages/Read.cshtml new file mode 100644 index 0000000..2aecc75 --- /dev/null +++ b/src/Pages/Read.cshtml @@ -0,0 +1,26 @@ +@page "/les/{site}" +@model ReadModel +@{ + ViewData["Title"] = Model.Source.Title; +} + +<div style="display: flex; justify-content: space-between"> + <div> + <h1>@Model.Source.Title</h1> + <p>@Model.Source.Subtitle</p> + </div> + <div style="display: flex; flex-direction: row"> + <div style="flex-direction:column"> + <small>Publisert: @Model.Source.PublishedAt.ToString("F")</small><br> + <small>Oppdatert: @Model.Source.UpdatedAt.ToString("F")</small> + </div> + <div style="margin: 0 5px; height: 100%; border: 1px solid black"></div> + <div style="flex-direction:column"> + @foreach (var author in Model.Source.Authors) { + <small><em>@author.Name</em>: @author.Title</small> <br/> + } + </div> + </div> +</div> +<hr> +@Html.Raw(Model.Source.Content)
\ No newline at end of file diff --git a/src/Pages/Read.cshtml.cs b/src/Pages/Read.cshtml.cs new file mode 100644 index 0000000..16a1055 --- /dev/null +++ b/src/Pages/Read.cshtml.cs @@ -0,0 +1,24 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace I2R.LightNews.Pages; + +public class ReadModel : PageModel +{ + private readonly GrabberService _grabber; + + public NewsArticle Source { get; set; } + + public ReadModel(GrabberService grabber) { + _grabber = grabber; + } + + public async Task<ActionResult> OnGet([FromRoute] string site, [FromQuery] string url) { + Source = site switch { + "nrk" => await _grabber.GrabNrkArticleAsync(url), + _ => default + }; + if (Source == default) return Redirect("/"); + return Page(); + } +}
\ No newline at end of file diff --git a/src/Pages/Shared/_Layout.cshtml b/src/Pages/Shared/_Layout.cshtml new file mode 100644 index 0000000..bcdd658 --- /dev/null +++ b/src/Pages/Shared/_Layout.cshtml @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html lang="nb"> +<head> + <meta charset="utf-8"/> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="/reset.css" > + <link rel="stylesheet" href="/index.css" > + <title>@ViewData["Title"] - Lettnytt</title> +</head> +<body> +<header> + <nav> + <a href="/nrk">NRK</a> + </nav> +</header> +<main> + @RenderBody() +</main> +</body> +</html>
\ No newline at end of file diff --git a/src/Pages/_ViewImports.cshtml b/src/Pages/_ViewImports.cshtml new file mode 100644 index 0000000..bc2d314 --- /dev/null +++ b/src/Pages/_ViewImports.cshtml @@ -0,0 +1,3 @@ +@using I2R.LightNews +@namespace I2R.LightNews.Pages +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/src/Pages/_ViewStart.cshtml b/src/Pages/_ViewStart.cshtml new file mode 100644 index 0000000..a5f1004 --- /dev/null +++ b/src/Pages/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} |
