divan/GanjooRazor/Pages/Shared/_Layout.cshtml
2026-09-11 07:47:15 +03:30

57 lines
2.9 KiB
Plaintext

@{
// Shared layout for public-site pages (Pages/ folder). NOT used by Areas/Admin or Areas/User,
// which have their own separate _AdminLayout / _UserPanelLayout under their own Areas/*/Pages/Shared
// folders - see Areas/Admin/Pages/_ViewStart.cshtml and Areas/User/Pages/_ViewStart.cshtml.
//
// Individual pages opt in with `Layout = "_Layout";` (root Pages/_ViewStart.cshtml still defaults
// to Layout = null, so pages that don't opt in are completely unaffected).
//
// Extension points:
// @section Head { ... } extra <meta>/<link>/<script> tags specific to one page
// @section Scripts { ... } extra end-of-body <script> blocks specific to one page
// ViewData["Title"] page <title>
//
// NOTE: ViewData["TrackingScript"] output is intentionally NOT centralized here even though it
// looked identical across pages at first glance. Several pages (FAQ, Contribs, Quotes, Hashieha,
// Tagged, Simi) only render it inside their "no LastError" branch - i.e. analytics is
// deliberately (or at least currently) skipped on error pages. A layout can't see each page's
// own LastError state, so centralizing this would make tracking fire on error pages that
// previously suppressed it. Each page keeps rendering its own TrackingScript block as before.
//
// vaabd.js WAS centralized below (confirmed byte-identical and unconditional across every main
// page). One minor, functionally-inert reordering: it used to render right before each page's
// own TrackingScript block; now it renders right after @RenderBody() finishes, which is after
// TrackingScript on any page that has one. The two scripts are unrelated (word-tooltip widget vs
// analytics), so this shouldn't matter, but flagging it since it's a real order change.
}
<!DOCTYPE html>
<html lang="fa-IR" dir="rtl">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>@Html.Raw(ViewData["Title"])</title>
<link href="/css/p8.css?version=90" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="/favicon.ico?version=1" type="image/x-icon" />
<link rel="search" type="application/opensearchdescription+xml" title="گنجور" href="https://ganjoor.net/search.xml" />
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/js/bk.js?version=90"></script>
<script>
var cookieValue = getCookie("playerScrollLock");
var playerScrollLock = cookieValue === "true";
cookieValue = getCookie("stickyEnabled");
var stickyEnabled = cookieValue != "false";
</script>
@await RenderSectionAsync("Head", required: false)
</head>
<body>
@RenderBody()
<script src="/js/vaabd.js?version=10"></script>
<partial name="_SemanticSearchWidgetPartial" />
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>