Реструктуризация: два глобальных раздела — Яша и Семен
Весь контент перенесён в content/yasha/ (7 подразделов). Создан content/semen/ с подразделами: changelog, kb, diary. Навигация — dropdown в навбаре, двухуровневое меню в hugo.toml. Шаблоны, сайдбар, поиск обновлены под вложенные секции.
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>Креды</h1>
|
||||
<p class="text-muted">Данные зашифрованы. Нажмите "Расшифровать" и введите мастер-пароль.</p>
|
||||
|
||||
<div class="row">
|
||||
{{ range .Pages.ByDate.Reverse }}
|
||||
<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,26 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content creds-card">
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ partial "source-path.html" . }}
|
||||
|
||||
{{ 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,21 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>Дневник</h1>
|
||||
|
||||
<div class="diary-timeline">
|
||||
{{ 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,17 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>{{ .Title }}</h1>
|
||||
<p class="diary-date">{{ .Date.Format "02.01.2006" }}</p>
|
||||
{{ partial "source-path.html" . }}
|
||||
|
||||
{{ .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 .Pages.ByDate.Reverse }}
|
||||
<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,16 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ partial "source-path.html" . }}
|
||||
|
||||
{{ 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,25 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>База знаний</h1>
|
||||
|
||||
<div class="row">
|
||||
{{ range .Pages.ByDate.Reverse }}
|
||||
<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,16 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ partial "source-path.html" . }}
|
||||
|
||||
{{ 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,27 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>{{ .Title }}</h1>
|
||||
|
||||
{{ .Content }}
|
||||
|
||||
<div class="row">
|
||||
{{ range .Pages.ByDate.Reverse }}
|
||||
<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,16 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ partial "source-path.html" . }}
|
||||
|
||||
{{ 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,78 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>Яша</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="/yasha/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="/yasha/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="/yasha/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="/yasha/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="/yasha/creds/" 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">Leadera</h3>
|
||||
<p class="card-text">Документация по проекту Leadera.</p>
|
||||
<a href="/yasha/leadera/" 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="/yasha/personal-site/" class="btn btn-outline-primary">Открыть</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,73 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>Планы</h1>
|
||||
|
||||
{{ $upcoming := slice }}
|
||||
{{ $completed := slice }}
|
||||
|
||||
{{ range .Pages }}
|
||||
{{ $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,40 @@
|
||||
{{ define "main" }}
|
||||
<div class="article-content">
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ partial "source-path.html" . }}
|
||||
|
||||
<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 }}
|
||||
Reference in New Issue
Block a user