updated templates.py
This commit is contained in:
146
templates.py
146
templates.py
@@ -1,18 +1,23 @@
|
||||
default = """
|
||||
<!doctype html>
|
||||
<html>
|
||||
<html data-bs-theme="light">
|
||||
<head>
|
||||
{% set base = "" %}
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.6/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-4Q6Gf2aSP4eDXB8Miphtr37CMZZQ5oXLH2yaXMJ2w8e2ZtHTl7GptT4jmndRuHDT" crossorigin="anonymous">
|
||||
<title>{{ page_title }}</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||
"Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif,
|
||||
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
}
|
||||
.top_header {
|
||||
position: relative;
|
||||
height: 250px;
|
||||
background: rgb(70, 70, 124);
|
||||
background-image: url("{{ header_image }}");
|
||||
background-image: url("{{ parent_path }}static/header.jpg");
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
display: flex;
|
||||
@@ -33,82 +38,114 @@ default = """
|
||||
padding: 10px 20px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
|
||||
.top_menu a {
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
padding: 6px 12px;
|
||||
margin-left: 10px;
|
||||
text-decoration: none;
|
||||
|
||||
transition: background 0.2s ease;
|
||||
}
|
||||
|
||||
.top_menu a:hover {
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
|
||||
/*
|
||||
@media (min-width: 768px) {
|
||||
.top_header_text {
|
||||
font-size: 4rem;
|
||||
}
|
||||
}
|
||||
|
||||
.card-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
*/
|
||||
article {
|
||||
font-size: 1.1rem;
|
||||
line-height: 1.6;
|
||||
}
|
||||
</style>
|
||||
{% block head_includes %}
|
||||
{% endblock %}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="top_header">
|
||||
<div >
|
||||
<div class="col-auto">
|
||||
<h1 class="top_header_text"><a style="border-radius: 5px; padding: 10px; opacity: 0.7; background: black">{{ page_title }}</a></h1>
|
||||
</div>
|
||||
</div>
|
||||
<div class="top_menu d-flex justify-content-end" style="margin-bottom: 20px;">
|
||||
|
||||
<a href="index.html">Home</a>
|
||||
<a href="about.html">About</a>
|
||||
|
||||
<div class="row justify-content-end pe-2 py-2" >
|
||||
<div class="col-auto fw-bold">
|
||||
<a class="link-body-emphasis mx-2 text-decoration-none" href="{{ parent_path }}index.html">Home</a>
|
||||
<a class="link-body-emphasis mx-2 text-decoration-none" id="categories_toggle" href="#none">Categories</a>
|
||||
<a class="link-body-emphasis mx-2 text-decoration-none" href="{{ parent_path }}static/about.html">About</a>
|
||||
<a class="link-body-emphasis mx-2 text-decoration-none" id="dark_theme_toggle" href="#none">🌓︎</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="categories_container" class="container">
|
||||
<div id="categories_menu" class="row justify-content-center mx-auto mb-2" style="display: none">
|
||||
{% for category in categories %}
|
||||
<a href="{{ parent_path }}categories/{{ category }}.html" class="mx-1 text-decoration-none">{{ category }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="content">{% block content %}{% endblock %}</div>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js" integrity="sha384-VHvPCCyXqtD5DqJeNxl2dtTyhF78xXNXdkwX1CZeRusQfRKp+tA7hAShOK/B/fQ2" crossorigin="anonymous"></script>
|
||||
<div id="content" class="container-fluid mb-2">
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
<div id="footer" class="container-fluid">
|
||||
<div id="footer-data" class="row my-1">
|
||||
{% block footer_includes %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
<div class="row small d-flex text-muted justify-content-end">
|
||||
<div class="col-auto" style="font-size: 0.75rem;">
|
||||
<p>Page created with <a class="text-decoration-none" href="#microgen">microgen</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js" integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.6/dist/js/bootstrap.min.js" integrity="sha384-RuyvpeZCxMJCqVUGFI0Do1mQrods/hhxYlcVfGPOfQtPJh0JCw12tUAZ/Mv10S7D" crossorigin="anonymous"></script>
|
||||
<script defer>
|
||||
const saved_color_theme = localStorage.getItem('saved_color_theme');
|
||||
if (saved_color_theme) {
|
||||
document.documentElement.setAttribute('data-bs-theme', saved_color_theme);
|
||||
}
|
||||
|
||||
document.getElementById("categories_toggle").onclick = function() {
|
||||
categories_menu_item = document.getElementById("categories_menu");
|
||||
categories_menu_item.style.display = categories_menu_item.style.display === "none" ? "block" : "none"
|
||||
};
|
||||
document.getElementById("dark_theme_toggle").onclick = function() {
|
||||
html = document.documentElement;
|
||||
current_color_theme = html.getAttribute('data-bs-theme');
|
||||
new_color_theme = current_color_theme === 'dark' ? 'light' : 'dark';
|
||||
html.setAttribute('data-bs-theme', new_color_theme);
|
||||
localStorage.setItem('saved_color_theme', new_color_theme);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
"""
|
||||
|
||||
index = """
|
||||
{% extends "default.html" %}
|
||||
|
||||
{% block head_includes %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="row row-cols-1 row-cols-md-3 g-4 px-1 py-2">
|
||||
<div class="row justify-content-between g-4 mb-4 py-4">
|
||||
{% for content_item in content_items %}
|
||||
<div class="col mb-3">
|
||||
<div class="card h-100" style="border-radius: 5px;">
|
||||
<img src="{{ content_item.image }}" alt="{{ content_item.title }}" class="card-img-top img-fluid" style="background: rgb(77, 77, 77); object-fit: cover; height: 200px; border-radius: 5px;">
|
||||
<div class="card-body d-flex flex-column">
|
||||
<h5 class="card-title"><a class="text-decoration-none text-body" href="{{ content_item.slug}}.html ">{{ content_item.title }}</a></h5>
|
||||
<p class="card-text mb-3">{{ content_item.preview | safe}}</p>
|
||||
|
||||
<div class="col-auto align-items-stretch d-flex mx-2" style="width: 100%; width: 24em;">
|
||||
<div class="card h-100 px-0 rounded mx-1 my-3" style="width: 100%; width: 22em;">
|
||||
<div class="card-header">
|
||||
{% if content_item.image_file %}
|
||||
<img src="{{ parent_path }}static/images/{{ content_item.image_file }}" alt="{{ content_item.title }}" class="card-img-top img-fluid mx-auto d-block object-fit-fill rounded" style="height: 200px; width: auto;">
|
||||
{% else %}
|
||||
<img src="{{ parent_path }}static/images/1x1.png" alt="{{ content_item.title }}" class="card-img-top img-fluid mx-auto d-block object-fit-scale rounded" style="height: 200px; width: auto;">
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="fw-bold"><a class="text-decoration-none text-body" href="{{ parent_path }}content/{{ content_item.slug}}.html">{{ content_item.title }}</a></h5>
|
||||
<p class="card-text mb-2">{{ content_item.preview | safe}}<a class="text-decoration-none" href="{{ parent_path }}content/{{ content_item.slug}}.html">... read more</a> </p>
|
||||
</div>
|
||||
<div class="card-footer" style="height: 4em;">
|
||||
{% for item_category in content_item.categories %}
|
||||
<small><a href="{{ parent_path }}categories/{{ item_category }}.html" class="text-muted text-decoration-none mx-1">{{ item_category }}</a></small>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
"""
|
||||
|
||||
@@ -116,25 +153,30 @@ content_item="""
|
||||
{% extends "default.html" %}
|
||||
|
||||
{% block head_includes %}
|
||||
{% if content_item.custom_css %}
|
||||
<link href="{{ content_item.custom_css }}">
|
||||
{% if content_item.css_file %}
|
||||
<link rel="stylesheet" href="{{ parent_path }}static/css/{{ content_item.slug }}.css">
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container mt-4 mb-5">
|
||||
{% if content_item.image %}<img src="{{ content_item.image }}" class="img-fluid mb-5" style="border-radius: 5px;">{% endif %}
|
||||
{% if content_item.image_file %}<img src="{{ parent_path }}static/images/{{ content_item.image_file }}" class="img-fluid mb-5 rounded w-100 h-auto">{% endif %}
|
||||
{% if not content_item.omit_second_title %}
|
||||
<h1>{{ content_item.title }}</h1>
|
||||
{% endif %}
|
||||
<article>{{ content_item.html | safe }}</article>
|
||||
<a href="index.html" class="btn btn-secondary mt-4">← Back</a>
|
||||
<div id="categories">
|
||||
{% for category in content_item.categories %}
|
||||
<a href="{{ parent_path }}categories/{{ category }}.html" class="mx-1 text-decoration-none small text-muted">{{ category }} </a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<a href="../index.html" class="btn btn-secondary mt-4">← Back</a>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block footer_includes %}
|
||||
{% if content_item.custom_js %}
|
||||
<script src="{{ content_item.custom_js }}"></script>
|
||||
{% if content_item.js_file %}
|
||||
<script src="{{ parent_path}}static/js/{{ content_item.slug }}.js"></script>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
"""
|
||||
Reference in New Issue
Block a user