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 django.db import models
|
||||||
|
|
||||||
from wagtail.admin.panels import (
|
from wagtail.admin.panels import (
|
||||||
FieldPanel,
|
FieldPanel,
|
||||||
MultiFieldPanel,
|
MultiFieldPanel,
|
||||||
|
PublishingPanel,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from wagtail.fields import RichTextField
|
||||||
|
|
||||||
|
from wagtail.models import (
|
||||||
|
DraftStateMixin,
|
||||||
|
PreviewableMixin,
|
||||||
|
RevisionMixin,
|
||||||
|
TranslatableMixin,
|
||||||
|
)
|
||||||
|
|
||||||
from wagtail.contrib.settings.models import (
|
from wagtail.contrib.settings.models import (
|
||||||
BaseGenericSetting,
|
BaseGenericSetting,
|
||||||
register_setting,
|
register_setting,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from wagtail.snippets.models import register_snippet
|
||||||
|
|
||||||
|
|
||||||
@register_setting
|
@register_setting
|
||||||
class NavigationSettings(BaseGenericSetting):
|
class NavigationSettings(BaseGenericSetting):
|
||||||
youtube_url = models.URLField(verbose_name="Youtube URL", blank=True)
|
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)
|
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)
|
gitea_url = models.URLField(verbose_name="Gitea URL", blank=True)
|
||||||
|
|
||||||
|
|
||||||
panels = [
|
panels = [
|
||||||
MultiFieldPanel(
|
MultiFieldPanel(
|
||||||
[
|
[
|
||||||
FieldPanel("youtube_url"),
|
FieldPanel("youtube_url"),
|
||||||
FieldPanel("facebook_url"),
|
|
||||||
FieldPanel("instagram_url"),
|
FieldPanel("instagram_url"),
|
||||||
|
FieldPanel("facebook_url"),
|
||||||
FieldPanel("gitea_url"),
|
FieldPanel("gitea_url"),
|
||||||
],
|
],
|
||||||
"Social settings",
|
"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 %}
|
{% load static wagtailcore_tags wagtailuserbar %}
|
||||||
|
|
||||||
|
{# Remove wagtailuserbar: #}
|
||||||
|
{% load static wagtailcore_tags %}
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
@ -23,6 +26,13 @@
|
|||||||
<base target="_blank">
|
<base target="_blank">
|
||||||
{% endif %}
|
{% 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 #}
|
{# Global stylesheets #}
|
||||||
<link rel="stylesheet" type="text/css" href="{% static 'css/jacksbastards.css' %}">
|
<link rel="stylesheet" type="text/css" href="{% static 'css/jacksbastards.css' %}">
|
||||||
|
|
||||||
@ -32,9 +42,13 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="{% block body_class %}{% endblock %}">
|
<body class="{% block body_class %}{% endblock %}">
|
||||||
{% wagtailuserbar %}
|
|
||||||
|
|
||||||
{% block content %}{% endblock %}
|
{% include "includes/header.html" %}
|
||||||
|
|
||||||
|
{# Wrap your block content within a <main> HTML5 tag: #}
|
||||||
|
<main id="main">
|
||||||
|
{% block content %}{% endblock %}
|
||||||
|
</main>
|
||||||
|
|
||||||
{% include "includes/footer.html" %}
|
{% include "includes/footer.html" %}
|
||||||
|
|
||||||
|
|||||||
@ -1,18 +1,21 @@
|
|||||||
|
{# Load navigation_tags at the top of the file: #}
|
||||||
|
{% load navigation_tags %}
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
<p>Built with Wagtail</p>
|
<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 %}
|
{% 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 facebook_url or instagram_url or gitea_url %}
|
{% if youtube_url or instagram_url or facebook_url or gitea_url %}
|
||||||
<p>
|
<p>
|
||||||
Follow me on:
|
Follow us on:
|
||||||
{% if youtube_url %}
|
{% if youtube_url %}
|
||||||
<a href="{{ youtube_url }}">Youtube</a>
|
<a href="{{ youtube_url }}">Youtube</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if facebook_url %}
|
|
||||||
<a href="{{ facebook_url }}">Facebook</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if instagram_url %}
|
{% if instagram_url %}
|
||||||
<a href="{{ instagram_url }}">Instagram</a>
|
<a href="{{ instagram_url }}">Instagram</a>
|
||||||
|
{% endif %}
|
||||||
|
{% if facebook_url %}
|
||||||
|
<a href="{{ facebook_url }}">Facebook</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if gitea_url %}
|
{% if gitea_url %}
|
||||||
<a href="{{ gitea_url }}">Gitea</a>
|
<a href="{{ gitea_url }}">Gitea</a>
|
||||||
@ -20,4 +23,7 @@
|
|||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
|
|
||||||
|
{# Add footer_text: #}
|
||||||
|
{% get_footer_text %}
|
||||||
</footer>
|
</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