Side navigation with scrollspy
Note: scrollspy is visible only on desktop layouts.
Non iusto ipsum At ipsum dolores id exercitationem culpa. Ab cupiditate facilis et reprehenderit perspiciatis ut itaque molestiae et omnis temporibus. Sit expedita laborum ex omnis praesentium quo sapiente quaerat ab impedit nulla qui quis aliquam et Quis officia 33 voluptas excepturi.
Et nesciunt laudantium eum veritatis libero ea explicabo voluptas et iste iste non dolore voluptatum At odio praesentium ea itaque amet! A molestiae laudantium ad obcaecati nobis qui internos voluptatum nam dolores autem id officia excepturi cum sint soluta.
@using Microsoft.AspNetCore.Mvc.Localization;
@inject IHtmlLocalizer<SharedResources> SharedLocalizer
<!DOCTYPE html>
<html lang="@ViewData["Language"]" class="h-100">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"]</title>
<link rel="icon" href="~/images/app-fav-icon.webp" type="image/webp" />
<link rel="shortcut icon" href="~/images/app-fav-icon.webp" type="image/webp">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css?family=Lato:400,300italic,300,400italic,700,700italic,900,900italic|Raleway:400,400italic,700,700italic|Montserrat:200,300,400,400i,600,600i,700,700i" rel="stylesheet" type="text/css" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/8.0.0/mdb.min.css" rel="stylesheet" />
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
<link rel="stylesheet" href="~/css/fragments.css" asp-append-version="true" />
@await RenderSectionAsync("Css", required: false)
</head>
<body class="d-flex flex-column h-100" data-mdb-theme="@ViewData["Theme"]">
<header>
<nav class="navbar navbar-expand-lg border-bottom box-shadow top-site-header">
<div class="container">
<a id="logo" href="@ViewData["HomePage"]">
<div class="logo-title">@SharedLocalizer["App_Title"]</div>
<div class="logo-slogan">@SharedLocalizer["App_Slogan"]</div>
</a>
<button class="navbar-toggler" type="button" data-mdb-collapse-init data-mdb-toggle="collapse" data-mdb-target="#navbar-main-menu" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbar-main-menu">
@await RenderSectionAsync("MainMenu", required: false)
</div>
</div>
</nav>
</header>
<main role="main" class="pb-3 flex-shrink-0">
@RenderBody()
</main>
<footer class="border-top footer text-muted mt-auto py-3">
@await RenderSectionAsync("Footer", required: false)
</footer>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/8.0.0/mdb.umd.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>
Map example


Text with picture
Lorem ipsum dolor sit amet. Ad aperiam deserunt ut voluptatem nulla ut molestiae iure vel maxime rerum ut facere galisum et enim sunt. Id quam quas aut sequi aliquam id quisquam dolores ut tempora voluptatem! Qui accusantium omnis est velit alias sed dolore voluptates. Aut veniam voluptates non odit repellendus et facere suscipit aut sapiente tempore aut consequatur voluptatibus et provident dolores ut ducimus voluptates. Est saepe dolor vel doloribus provident qui earum praesentium sed minus provident ex quod labore et minima facilis est architecto omnis.
Et obcaecati tenetur et temporibus cumque ut nihil maiores.
Aut temporibus voluptate et doloremque velit et accusantium quia eos facere quam sed officia galisum cum nisi nihil ab dolores omnis. At quia adipisci sed quia voluptas sit animi sint qui illum tenetur. Et veritatis delectus non eaque asperiores nam atque laborum est aliquid magnam quo facilis dolorem est numquam facere ut nulla fugit. Id ipsam maxime hic corrupti velit ut earum consequatur et saepe vero est nostrum autem et vero tempora. Aut officiis cupiditate non exercitationem sequi et consequatur vero est molestiae quas. Ut Quis consequuntur et magni consequatur et deserunt consectetur sed quibusdam expedita? Aut rerum consequatur aut nostrum quaerat qui nostrum facere vel quisquam eius. Non ipsum autem rem ratione itaque et rerum molestias rem ipsum quos et suscipit amet. Rem voluptatum beatae et ipsam recusandae qui deserunt necessitatibus a possimus praesentium et recusandae excepturi et reprehenderit fugit ut nihil accusantium.
Quo doloremque earum At quod aperiam aut consectetur ipsam?
Vel inventore quas sed quos praesentium et nobis excepturi ut dolor eius est quaerat itaque. Eos voluptas dolores aut accusamus placeat qui quod obcaecati At laborum deleniti qui quia consectetur sit perferendis dolorum. Ut voluptas suscipit aut magni culpa in odit omnis. Ut quisquam quasi quo sint delectus aut recusandae nostrum quo excepturi praesentium eos quae consectetur et odit quam. Ab perferendis dolores sed numquam libero in quos totam ex natus labore id expedita mollitia. Est reiciendis voluptatem qui ipsa laboriosam id tempore commodi eum itaque aliquam est expedita voluptas eum molestiae quia ea ipsum harum. Rem vitae dolorum qui voluptatum consequatur ab voluptas ducimus sed culpa ullam non labore repellendus.
This is the markdown fragment with code highlight.
result.Attributes = await dbContext.DocumentAttributes
.AsNoTracking()
.Where(a => a.DocumentRef == doc.Id && a.Enabled)
.OrderBy(a => a.AttributeKey)
.ToDictionaryAsync(a => a.AttributeKey, a => a.Value);
if (children)
result.Children = await Children(doc.Id);
else
result.Children = [];
var refs = await dbContext.References
.AsNoTracking()
.GroupJoin(dbContext.Documents, r => r.ReferenceTo, d => d.Id, (r, d) => new { r, d })
.Where(rd => rd.r.DocumentRef == doc.Id)
.SelectMany(
rd => rd.d.DefaultIfEmpty(),
(r, d) => new Reference(r.r.ReferenceTo, d.Path, r.r.MediaLink, mediaHost))
.ToDictionaryAsync(r => r.Pattern, r => r.Replacement);
result.Summary = ReplaceRefs(result.Summary, refs);
result.CoverPicture = ReplaceRefs(result.CoverPicture, refs);
Also the markdown fragment.
target_lxd, err := srv.lxd.GetNewClient(target_node)
if err != nil {
srv.log.Error(err).Container(container.Name).Msg("Connect to LXD service on target node '%s'.", target_node)
return customerror.NewError(customerror.ErrServiceUnavailable, "Cannot connect to LXD.")
}
source_lxd, err := srv.lxd.GetNewClient(container.Node)
if err != nil {
srv.log.Error(err).Container(container.Name).Msg("Connect to LXD service on source node '%s'.", container.Node)
return customerror.NewError(customerror.ErrServiceUnavailable, "Cannot connect to LXD.")
}
if err := source_lxd.Migrate(container.Name, target_lxd); err != nil {
return err
}
Est aliquid tempore aut totam excepturi ut animi dolores ea autem culpa et asperiores dolor. Qui molestiae laborum et aliquid mollitia nam dolorem voluptas. 33 voluptatem sunt ut consectetur quis qui deleniti sequi sed dolor nulla et quos optio quo doloremque quos? Aut sunt facere id explicabo dolorem At maiores laboriosam hic maiores possimus eos animi dolorem est consequuntur error.