daily update 2026-03-29
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ .Site.LanguageCode }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{{ if .Title }}{{ .Title }} — {{ end }}{{ .Site.Title }}</title>
|
||||
|
||||
<!-- Bootstrap 5 CSS -->
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom CSS -->
|
||||
<link rel="stylesheet" href="/css/custom.css">
|
||||
|
||||
{{ block "head" . }}{{ end }}
|
||||
</head>
|
||||
<body>
|
||||
{{ partial "header.html" . }}
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
{{ block "sidebar" . }}
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
{{ partial "sidebar.html" . }}
|
||||
</aside>
|
||||
{{ end }}
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
{{ block "main" . }}{{ end }}
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ partial "footer.html" . }}
|
||||
|
||||
<!-- Bootstrap 5 JS -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
<!-- Fuse.js for search -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
<!-- Custom JS -->
|
||||
<script src="/js/search.js"></script>
|
||||
<script src="/js/creds.js"></script>
|
||||
|
||||
{{ block "scripts" . }}{{ end }}
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,5 @@
|
||||
{{- $.Scratch.Add "index" slice -}}
|
||||
{{- range .Site.RegularPages -}}
|
||||
{{- $.Scratch.Add "index" (dict "title" .Title "url" .RelPermalink "content" .Plain "section" .Section "tags" .Params.tags) -}}
|
||||
{{- end -}}
|
||||
{{- $.Scratch.Get "index" | jsonify -}}
|
||||
@@ -0,0 +1,12 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ .Content }}
|
||||
|
||||
<ul>
|
||||
{{ range .Pages }}
|
||||
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,5 @@
|
||||
{{- $.Scratch.Add "index" slice -}}
|
||||
{{- range .Pages -}}
|
||||
{{- $.Scratch.Add "index" (dict "title" .Title "url" .RelPermalink "content" .Plain "section" .Section "tags" .Params.tags) -}}
|
||||
{{- end -}}
|
||||
{{- $.Scratch.Get "index" | jsonify -}}
|
||||
@@ -0,0 +1,6 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ .Content }}
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,36 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>Креды</h1>
|
||||
<p class="text-muted">Данные зашифрованы. Нажмите "Расшифровать" и введите мастер-пароль.</p>
|
||||
|
||||
<div class="row">
|
||||
{{ range where .Site.RegularPages "Section" "creds" }}
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card creds-card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">{{ .Title }}</h3>
|
||||
{{ if .Params.description }}
|
||||
<p class="card-text">{{ .Params.description }}</p>
|
||||
{{ end }}
|
||||
{{ if .Params.service }}
|
||||
<p class="text-muted mb-2"><strong>Сервис:</strong> {{ .Params.service }}</p>
|
||||
{{ end }}
|
||||
|
||||
<div class="encrypted-data" id="encrypted-{{ .File.ContentBaseName }}">
|
||||
{{ .Plain | base64Encode }}
|
||||
</div>
|
||||
|
||||
<div class="decrypted-fields" id="decrypted-{{ .File.ContentBaseName }}" style="display: none;">
|
||||
<!-- Decrypted content will be inserted here -->
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mt-2 decrypt-btn" data-id="{{ .File.ContentBaseName }}">
|
||||
Расшифровать
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,25 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content creds-card">
|
||||
<h1>{{ .Title }}</h1>
|
||||
|
||||
{{ if .Params.description }}
|
||||
<p>{{ .Params.description }}</p>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Params.service }}
|
||||
<p class="text-muted mb-2"><strong>Сервис:</strong> {{ .Params.service }}</p>
|
||||
{{ end }}
|
||||
|
||||
<div class="encrypted-data" id="encrypted-{{ .File.ContentBaseName }}">
|
||||
{{ .Plain | base64Encode }}
|
||||
</div>
|
||||
|
||||
<div class="decrypted-fields" id="decrypted-{{ .File.ContentBaseName }}" style="display: none;">
|
||||
<!-- Decrypted content will be inserted here -->
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mt-3 decrypt-btn" data-id="{{ .File.ContentBaseName }}">
|
||||
Расшифровать
|
||||
</button>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,22 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>Дневник</h1>
|
||||
|
||||
<div class="diary-timeline">
|
||||
{{ $pages := where .Site.RegularPages "Section" "diary" }}
|
||||
{{ range $pages.ByDate.Reverse }}
|
||||
<div class="diary-entry">
|
||||
<div class="diary-date">{{ .Date.Format "02.01.2006" }}</div>
|
||||
<h3><a href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
|
||||
{{ if .Params.tags }}
|
||||
<div class="tags">
|
||||
{{ range .Params.tags }}
|
||||
<a href="{{ "/tags/" | relURL }}{{ . | urlize }}/" class="tag">{{ . }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,16 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>{{ .Title }}</h1>
|
||||
<p class="diary-date">{{ .Date.Format "02.01.2006" }}</p>
|
||||
|
||||
{{ .Content }}
|
||||
|
||||
{{ if .Params.tags }}
|
||||
<div class="tags">
|
||||
{{ range .Params.tags }}
|
||||
<a href="{{ "/tags/" | relURL }}{{ . | urlize }}/" class="tag">{{ . }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,25 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>Инструкции</h1>
|
||||
|
||||
<div class="row">
|
||||
{{ range where .Site.RegularPages "Section" "guides" }}
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title"><a href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
|
||||
<p class="card-text">{{ .Summary }}</p>
|
||||
{{ if .Params.tags }}
|
||||
<div class="tags">
|
||||
{{ range .Params.tags }}
|
||||
<a href="{{ "/tags/" | relURL }}{{ . | urlize }}/" class="tag">{{ . }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,15 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>{{ .Title }}</h1>
|
||||
|
||||
{{ if .Params.tags }}
|
||||
<div class="tags mb-3">
|
||||
{{ range .Params.tags }}
|
||||
<a href="{{ "/tags/" | relURL }}{{ . | urlize }}/" class="tag">{{ . }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ .Content }}
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,58 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>Добро пожаловать в docs.a2v.space</h1>
|
||||
<p class="lead">Персональная документация и база знаний.</p>
|
||||
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Дневник</h3>
|
||||
<p class="card-text">Записи по датам о событиях и обсуждениях.</p>
|
||||
<a href="/diary/" class="btn btn-outline-primary">Открыть</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">База знаний</h3>
|
||||
<p class="card-text">Статьи и документация по различным темам.</p>
|
||||
<a href="/kb/" class="btn btn-outline-primary">Открыть</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Планы</h3>
|
||||
<p class="card-text">Запланированные задачи и их статус.</p>
|
||||
<a href="/plans/" class="btn btn-outline-primary">Открыть</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Инструкции</h3>
|
||||
<p class="card-text">Пошаговые инструкции для различных задач.</p>
|
||||
<a href="/guides/" class="btn btn-outline-primary">Открыть</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Креды</h3>
|
||||
<p class="card-text">Зашифрованные учётные данные (требуется мастер-пароль).</p>
|
||||
<a href="/creds/" class="btn btn-outline-primary">Открыть</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,25 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>База знаний</h1>
|
||||
|
||||
<div class="row">
|
||||
{{ range where .Site.RegularPages "Section" "kb" }}
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title"><a href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
|
||||
<p class="card-text">{{ .Summary }}</p>
|
||||
{{ if .Params.tags }}
|
||||
<div class="tags">
|
||||
{{ range .Params.tags }}
|
||||
<a href="{{ "/tags/" | relURL }}{{ . | urlize }}/" class="tag">{{ . }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,15 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>{{ .Title }}</h1>
|
||||
|
||||
{{ if .Params.tags }}
|
||||
<div class="tags mb-3">
|
||||
{{ range .Params.tags }}
|
||||
<a href="{{ "/tags/" | relURL }}{{ . | urlize }}/" class="tag">{{ . }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ .Content }}
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,5 @@
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© {{ now.Year }} docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
@@ -0,0 +1,41 @@
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="/">{{ .Site.Title }}</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
{{ range .Site.Menus.main }}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link{{ if $.IsMenuCurrent "main" . }} active{{ end }}" href="{{ .URL }}">{{ .Name }}</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Search Results -->
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
@@ -0,0 +1,107 @@
|
||||
<div class="sidebar-content">
|
||||
{{ $section := .Section }}
|
||||
|
||||
{{ if eq $section "diary" }}
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="/diary/">Все записи</a></li>
|
||||
</ul>
|
||||
{{ .Scratch.Set "tags" (index .Site.Taxonomies.tags (slice "diary")) }}
|
||||
{{ $diaryTags := slice }}
|
||||
{{ range where .Site.RegularPages "Section" "diary" }}
|
||||
{{ range .Params.tags }}
|
||||
{{ $diaryTags = $diaryTags | append . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $diaryTags = $diaryTags | uniq }}
|
||||
{{ if $diaryTags }}
|
||||
<h6 class="mt-3">Теги</h6>
|
||||
<ul class="nav flex-column">
|
||||
{{ range $diaryTags }}
|
||||
<li class="nav-item"><a class="nav-link" href="{{ "/tags/" | relURL }}{{ . | urlize }}/">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
|
||||
{{ else if eq $section "kb" }}
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="/kb/">Все статьи</a></li>
|
||||
</ul>
|
||||
{{ $kbTags := slice }}
|
||||
{{ range where .Site.RegularPages "Section" "kb" }}
|
||||
{{ range .Params.tags }}
|
||||
{{ $kbTags = $kbTags | append . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $kbTags = $kbTags | uniq }}
|
||||
{{ if $kbTags }}
|
||||
<h6 class="mt-3">Теги</h6>
|
||||
<ul class="nav flex-column">
|
||||
{{ range $kbTags }}
|
||||
<li class="nav-item"><a class="nav-link" href="{{ "/tags/" | relURL }}{{ . | urlize }}/">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
|
||||
{{ else if eq $section "plans" }}
|
||||
<h6>Статусы</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="/plans/">Все планы</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-planned" href="/plans/?status=planned">🟡 Запланировано</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-in-progress" href="/plans/?status=in_progress">🟠 В процессе</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-done" href="/plans/?status=done">✅ Сделано</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-cancelled" href="/plans/?status=cancelled">❌ Отменено</a></li>
|
||||
</ul>
|
||||
|
||||
{{ else if eq $section "guides" }}
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="/guides/">Все инструкции</a></li>
|
||||
</ul>
|
||||
{{ $guideTags := slice }}
|
||||
{{ range where .Site.RegularPages "Section" "guides" }}
|
||||
{{ range .Params.tags }}
|
||||
{{ $guideTags = $guideTags | append . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $guideTags = $guideTags | uniq }}
|
||||
{{ if $guideTags }}
|
||||
<h6 class="mt-3">Теги</h6>
|
||||
<ul class="nav flex-column">
|
||||
{{ range $guideTags }}
|
||||
<li class="nav-item"><a class="nav-link" href="{{ "/tags/" | relURL }}{{ . | urlize }}/">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
|
||||
{{ else if eq $section "creds" }}
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="/creds/">Все креды</a></li>
|
||||
</ul>
|
||||
{{ $credServices := slice }}
|
||||
{{ range where .Site.RegularPages "Section" "creds" }}
|
||||
{{ if .Params.service }}
|
||||
{{ $credServices = $credServices | append .Params.service }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $credServices = $credServices | uniq }}
|
||||
{{ if $credServices }}
|
||||
<h6 class="mt-3">Сервисы</h6>
|
||||
<ul class="nav flex-column">
|
||||
{{ range $credServices }}
|
||||
<li class="nav-item"><a class="nav-link" href="/creds/?service={{ . | urlize }}">{{ . }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
|
||||
{{ else }}
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
{{ range .Site.Menus.main }}
|
||||
<li class="nav-item"><a class="nav-link" href="{{ .URL }}">{{ .Name }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
</div>
|
||||
@@ -0,0 +1,73 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>Планы</h1>
|
||||
|
||||
{{ $upcoming := slice }}
|
||||
{{ $completed := slice }}
|
||||
|
||||
{{ range where .Site.RegularPages "Section" "plans" }}
|
||||
{{ $status := .Params.status }}
|
||||
{{ if or (eq $status "done") (eq $status "cancelled") }}
|
||||
{{ $completed = $completed | append . }}
|
||||
{{ else }}
|
||||
{{ $upcoming = $upcoming | append . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ $upcoming = sort $upcoming ".Params.plan_date" "asc" }}
|
||||
{{ $completed = sort $completed ".Params.done_date" "desc" }}
|
||||
|
||||
<h3 class="mb-3">Предстоящие</h3>
|
||||
{{ range $upcoming }}
|
||||
<div class="card plan-card {{ .Params.status }} mb-3">
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-start">
|
||||
<h4 class="card-title"><a href="{{ .RelPermalink }}">{{ .Title }}</a></h4>
|
||||
<span class="status-badge">
|
||||
{{ if eq .Params.status "planned" }}🟡 Запланировано{{ end }}
|
||||
{{ if eq .Params.status "in_progress" }}🟠 В процессе{{ end }}
|
||||
</span>
|
||||
</div>
|
||||
{{ if .Params.plan_date }}
|
||||
<p class="text-muted mb-0">Планируется: {{ time .Params.plan_date | dateFormat "02.01.2006" }}</p>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if $completed }}
|
||||
<h3 class="mt-4 mb-3">Завершённые</h3>
|
||||
{{ range $completed }}
|
||||
<div class="card plan-card {{ .Params.status }} mb-3">
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-start">
|
||||
<h4 class="card-title"><a href="{{ .RelPermalink }}">{{ .Title }}</a></h4>
|
||||
<span class="status-badge">
|
||||
{{ if eq .Params.status "done" }}✅ Сделано{{ end }}
|
||||
{{ if eq .Params.status "cancelled" }}❌ Отменено{{ end }}
|
||||
</span>
|
||||
</div>
|
||||
{{ if .Params.done_date }}
|
||||
<p class="text-muted mb-0">Завершено: {{ time .Params.done_date | dateFormat "02.01.2006" }}</p>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// Filter by status from URL
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
const status = urlParams.get('status');
|
||||
if (status) {
|
||||
document.querySelectorAll('.plan-card').forEach(card => {
|
||||
if (!card.classList.contains(status)) {
|
||||
card.style.display = 'none';
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,37 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<div class="d-flex justify-content-between align-items-start mb-3">
|
||||
<h1>{{ .Title }}</h1>
|
||||
<span class="status-badge h5">
|
||||
{{ if eq .Params.status "planned" }}🟡 Запланировано{{ end }}
|
||||
{{ if eq .Params.status "in_progress" }}🟠 В процессе{{ end }}
|
||||
{{ if eq .Params.status "done" }}✅ Сделано{{ end }}
|
||||
{{ if eq .Params.status "cancelled" }}❌ Отменено{{ end }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
{{ if .Params.plan_date }}
|
||||
<div class="col">
|
||||
<strong>Планируется:</strong> {{ time .Params.plan_date | dateFormat "02.01.2006" }}
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ if .Params.done_date }}
|
||||
<div class="col">
|
||||
<strong>Завершено:</strong> {{ time .Params.done_date | dateFormat "02.01.2006" }}
|
||||
</div>
|
||||
{{ end }}
|
||||
<div class="col">
|
||||
<strong>Запланировано:</strong> {{ .Date.Format "02.01.2006" }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ .Content }}
|
||||
|
||||
{{ if .Params.context_quote }}
|
||||
<blockquote class="context-quote">
|
||||
{{ .Params.context_quote }}
|
||||
</blockquote>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1 @@
|
||||
{{ .Inner }}
|
||||
Reference in New Issue
Block a user