added some style
This commit is contained in:
parent
5eb9bb64d2
commit
4226e12e15
Binary file not shown.
@ -0,0 +1,44 @@
|
||||
# Generated by Django 5.2.9 on 2025-12-19 23:30
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('base', '0002_remove_navigationsettings_github_url_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='navigationsettings',
|
||||
name='facebook_url',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='navigationsettings',
|
||||
name='gitea_url',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='navigationsettings',
|
||||
name='instagram_url',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='navigationsettings',
|
||||
name='youtube_url',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='navigationsettings',
|
||||
name='github_url',
|
||||
field=models.URLField(blank=True, verbose_name='GitHub URL'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='navigationsettings',
|
||||
name='linkedin_url',
|
||||
field=models.URLField(blank=True, verbose_name='LinkedIn URL'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='navigationsettings',
|
||||
name='mastodon_url',
|
||||
field=models.URLField(blank=True, verbose_name='Mastodon URL'),
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,22 @@
|
||||
# Generated by Django 5.2.9 on 2025-12-19 23:45
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('base', '0003_remove_navigationsettings_facebook_url_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='navigationsettings',
|
||||
name='github_url',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='navigationsettings',
|
||||
name='gitea_url',
|
||||
field=models.URLField(blank=True, verbose_name='Gitea URL'),
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,36 @@
|
||||
# Generated by Django 5.2.9 on 2025-12-19 23:54
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('base', '0004_remove_navigationsettings_github_url_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='navigationsettings',
|
||||
name='linkedin_url',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='navigationsettings',
|
||||
name='mastodon_url',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='navigationsettings',
|
||||
name='facebook_url',
|
||||
field=models.URLField(blank=True, verbose_name='Facebook URL'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='navigationsettings',
|
||||
name='instagram_url',
|
||||
field=models.URLField(blank=True, verbose_name='Instagram URL'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='navigationsettings',
|
||||
name='youtube_url',
|
||||
field=models.URLField(blank=True, verbose_name='Youtube URL'),
|
||||
),
|
||||
]
|
||||
42
base/migrations/0006_footertext.py
Normal file
42
base/migrations/0006_footertext.py
Normal file
@ -0,0 +1,42 @@
|
||||
# Generated by Django 5.2.9 on 2025-12-20 00:19
|
||||
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
import wagtail.fields
|
||||
import wagtail.models.preview
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('base', '0005_remove_navigationsettings_linkedin_url_and_more'),
|
||||
('wagtailcore', '0096_referenceindex_referenceindex_source_object_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='FooterText',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('translation_key', models.UUIDField(default=uuid.uuid4, editable=False)),
|
||||
('live', models.BooleanField(default=True, editable=False, verbose_name='live')),
|
||||
('has_unpublished_changes', models.BooleanField(default=False, editable=False, verbose_name='has unpublished changes')),
|
||||
('first_published_at', models.DateTimeField(blank=True, db_index=True, null=True, verbose_name='first published at')),
|
||||
('last_published_at', models.DateTimeField(editable=False, null=True, verbose_name='last published at')),
|
||||
('go_live_at', models.DateTimeField(blank=True, null=True, verbose_name='go live date/time')),
|
||||
('expire_at', models.DateTimeField(blank=True, null=True, verbose_name='expiry date/time')),
|
||||
('expired', models.BooleanField(default=False, editable=False, verbose_name='expired')),
|
||||
('body', wagtail.fields.RichTextField()),
|
||||
('latest_revision', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailcore.revision', verbose_name='latest revision')),
|
||||
('live_revision', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailcore.revision', verbose_name='live revision')),
|
||||
('locale', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtailcore.locale', verbose_name='locale')),
|
||||
],
|
||||
options={
|
||||
'verbose_name_plural': 'Footer Text',
|
||||
'abstract': False,
|
||||
'unique_together': {('translation_key', 'locale')},
|
||||
},
|
||||
bases=(wagtail.models.preview.PreviewableMixin, models.Model),
|
||||
),
|
||||
]
|
||||
@ -1,29 +1,71 @@
|
||||
from django.db import models
|
||||
|
||||
from wagtail.admin.panels import (
|
||||
FieldPanel,
|
||||
MultiFieldPanel,
|
||||
PublishingPanel,
|
||||
)
|
||||
|
||||
from wagtail.fields import RichTextField
|
||||
|
||||
from wagtail.models import (
|
||||
DraftStateMixin,
|
||||
PreviewableMixin,
|
||||
RevisionMixin,
|
||||
TranslatableMixin,
|
||||
)
|
||||
|
||||
from wagtail.contrib.settings.models import (
|
||||
BaseGenericSetting,
|
||||
register_setting,
|
||||
)
|
||||
|
||||
from wagtail.snippets.models import register_snippet
|
||||
|
||||
|
||||
@register_setting
|
||||
class NavigationSettings(BaseGenericSetting):
|
||||
youtube_url = models.URLField(verbose_name="Youtube URL", blank=True)
|
||||
facebook_url = models.URLField(verbose_name="Facebook URL", blank=True)
|
||||
instagram_url = models.URLField(verbose_name="Instagram URL", blank=True)
|
||||
facebook_url = models.URLField(verbose_name="Facebook URL", blank=True)
|
||||
gitea_url = models.URLField(verbose_name="Gitea URL", blank=True)
|
||||
|
||||
|
||||
panels = [
|
||||
MultiFieldPanel(
|
||||
[
|
||||
FieldPanel("youtube_url"),
|
||||
FieldPanel("facebook_url"),
|
||||
FieldPanel("instagram_url"),
|
||||
FieldPanel("facebook_url"),
|
||||
FieldPanel("gitea_url"),
|
||||
],
|
||||
"Social settings",
|
||||
)
|
||||
]
|
||||
|
||||
@register_snippet
|
||||
class FooterText(
|
||||
DraftStateMixin,
|
||||
RevisionMixin,
|
||||
PreviewableMixin,
|
||||
TranslatableMixin,
|
||||
models.Model,
|
||||
):
|
||||
|
||||
body = RichTextField()
|
||||
|
||||
panels = [
|
||||
FieldPanel("body"),
|
||||
PublishingPanel(),
|
||||
]
|
||||
|
||||
def __str__(self):
|
||||
return "Footer text"
|
||||
|
||||
def get_preview_template(self, request, mode_name):
|
||||
return "base.html"
|
||||
|
||||
def get_preview_context(self, request, mode_name):
|
||||
return {"footer_text": self.body}
|
||||
|
||||
class Meta(TranslatableMixin.Meta):
|
||||
verbose_name_plural = "Footer Text"
|
||||
5
base/templates/base/includes/footer_text.html
Normal file
5
base/templates/base/includes/footer_text.html
Normal file
@ -0,0 +1,5 @@
|
||||
{% load wagtailcore_tags %}
|
||||
|
||||
<div>
|
||||
{{ footer_text|richtext }}
|
||||
</div>
|
||||
0
base/templatetags/__init__.py
Normal file
0
base/templatetags/__init__.py
Normal file
24
base/templatetags/navigation_tags.py
Normal file
24
base/templatetags/navigation_tags.py
Normal file
@ -0,0 +1,24 @@
|
||||
from django import template
|
||||
|
||||
from wagtail.models import Site
|
||||
|
||||
from base.models import FooterText
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.inclusion_tag("base/includes/footer_text.html", takes_context=True)
|
||||
def get_footer_text(context):
|
||||
footer_text = context.get("footer_text", "")
|
||||
|
||||
if not footer_text:
|
||||
instance = FooterText.objects.filter(live=True).first()
|
||||
footer_text = instance.body if instance else ""
|
||||
|
||||
return {
|
||||
"footer_text": footer_text,
|
||||
}
|
||||
|
||||
@register.simple_tag(takes_context=True)
|
||||
def get_site_root(context):
|
||||
return Site.find_for_request(context["request"]).root_page
|
||||
BIN
db.sqlite3
BIN
db.sqlite3
Binary file not shown.
0
jacksbastards/db.sqlite3
Normal file
0
jacksbastards/db.sqlite3
Normal file
Binary file not shown.
@ -0,0 +1,58 @@
|
||||
*,
|
||||
::before,
|
||||
::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif, Apple Color Emoji, "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
}
|
||||
|
||||
body {
|
||||
min-height: 100vh;
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 10px;
|
||||
display: grid;
|
||||
gap: 3vw;
|
||||
grid-template-rows: min-content 1fr min-content;
|
||||
background-image: url('/media/images/f6c80e0e-25d3-4915-a92f-a733939cf9.2e16d0ba.fill-480x320.jpg');
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
background-attachment: fixed;
|
||||
background-position: center center;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
|
||||
}
|
||||
|
||||
a {
|
||||
color: currentColor;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: verdana;
|
||||
font-size: 300%;
|
||||
}
|
||||
|
||||
footer {
|
||||
border-top: 2px dotted;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
header {
|
||||
border-bottom: 2px dotted;
|
||||
}
|
||||
|
||||
.template-homepage main {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.skip-link {
|
||||
position: absolute;
|
||||
top: -30px;
|
||||
}
|
||||
|
||||
.skip-link:focus-visible {
|
||||
top: 5px;
|
||||
}
|
||||
BIN
jacksbastards/static/files/logo.jpeg
Normal file
BIN
jacksbastards/static/files/logo.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 68 KiB |
@ -1,5 +1,8 @@
|
||||
{% load static wagtailcore_tags wagtailuserbar %}
|
||||
|
||||
{# Remove wagtailuserbar: #}
|
||||
{% load static wagtailcore_tags %}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
@ -23,6 +26,13 @@
|
||||
<base target="_blank">
|
||||
{% endif %}
|
||||
|
||||
{# Add supported color schemes: #}
|
||||
<meta name="color-scheme" content="light dark">
|
||||
|
||||
{# Add a favicon with inline SVG: #}
|
||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🏴☠️</text></svg>"/>
|
||||
|
||||
|
||||
{# Global stylesheets #}
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'css/jacksbastards.css' %}">
|
||||
|
||||
@ -32,9 +42,13 @@
|
||||
</head>
|
||||
|
||||
<body class="{% block body_class %}{% endblock %}">
|
||||
{% wagtailuserbar %}
|
||||
|
||||
{% include "includes/header.html" %}
|
||||
|
||||
{# Wrap your block content within a <main> HTML5 tag: #}
|
||||
<main id="main">
|
||||
{% block content %}{% endblock %}
|
||||
</main>
|
||||
|
||||
{% include "includes/footer.html" %}
|
||||
|
||||
|
||||
@ -1,18 +1,21 @@
|
||||
{# Load navigation_tags at the top of the file: #}
|
||||
{% load navigation_tags %}
|
||||
|
||||
<footer>
|
||||
<p>Built with Wagtail</p>
|
||||
|
||||
{% with youtube_url=settings.base.NavigationSettings.youtube_url facebook_url=settings.base.NavigationSettings.facebook_url instagram_url=settings.base.NavigationSettings.instagram_url gitea_url=settings.base.NavigationSettings.gitea_url %}
|
||||
{% if youtube_url or facebook_url or instagram_url or gitea_url %}
|
||||
{% with youtube_url=settings.base.NavigationSettings.youtube_url instagram_url=settings.base.NavigationSettings.instagram_url facebook_url=settings.base.NavigationSettings.facebook_url gitea_url=settings.base.NavigationSettings.gitea_url %}
|
||||
{% if youtube_url or instagram_url or facebook_url or gitea_url %}
|
||||
<p>
|
||||
Follow me on:
|
||||
Follow us on:
|
||||
{% if youtube_url %}
|
||||
<a href="{{ youtube_url }}">Youtube</a>
|
||||
{% endif %}
|
||||
{% if facebook_url %}
|
||||
<a href="{{ facebook_url }}">Facebook</a>
|
||||
{% endif %}
|
||||
{% if instagram_url %}
|
||||
<a href="{{ instagram_url }}">Instagram</a>
|
||||
{% endif %}
|
||||
{% if facebook_url %}
|
||||
<a href="{{ facebook_url }}">Facebook</a>
|
||||
{% endif %}
|
||||
{% if gitea_url %}
|
||||
<a href="{{ gitea_url }}">Gitea</a>
|
||||
@ -20,4 +23,7 @@
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
|
||||
{# Add footer_text: #}
|
||||
{% get_footer_text %}
|
||||
</footer>
|
||||
17
jacksbastards/templates/includes/header.html
Normal file
17
jacksbastards/templates/includes/header.html
Normal file
@ -0,0 +1,17 @@
|
||||
{% load wagtailcore_tags navigation_tags wagtailuserbar %}
|
||||
|
||||
<header>
|
||||
|
||||
<a href="#main" class="skip-link">Skip to content</a>
|
||||
|
||||
{% get_site_root as site_root %}
|
||||
<nav>
|
||||
<p>
|
||||
<a href="{% pageurl site_root %}">Home</a> |
|
||||
{% for menuitem in site_root.get_children.live.in_menu %}
|
||||
{# Add the child pages of your HomePage that have their `Show in menu` checked #}
|
||||
<a href="{% pageurl menuitem %}">{{ menuitem.title }}</a>{% if not forloop.last %} | {% endif %}
|
||||
{% endfor %}
|
||||
</p>
|
||||
</nav>
|
||||
</header>
|
||||
Loading…
Reference in New Issue
Block a user