footer
parent
d4cebae7f7
commit
d33554395c
|
|
@ -11,4 +11,5 @@ def load_config(request):
|
|||
'middle_posts': MiddlePost.Published(),
|
||||
'right_posts': RightPost.Published(),
|
||||
'banner': Banner.Get(),
|
||||
'footer': Footer.Get(),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
# Generated by Django 5.0 on 2024-01-04 00:26
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0002_additionalpage_additionalpagepost'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='additionalpage',
|
||||
name='published',
|
||||
field=models.BooleanField(default=False, verbose_name='Strona opublikowana'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='additionalpage',
|
||||
name='slug',
|
||||
field=models.SlugField(max_length=255, primary_key=True, serialize=False, unique=True, verbose_name='Link'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='additionalpage',
|
||||
name='title',
|
||||
field=models.CharField(max_length=255, verbose_name='Nazwa'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='additionalpagepost',
|
||||
name='page',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='posts', to='core.additionalpage', verbose_name='Strona'),
|
||||
),
|
||||
]
|
||||
|
|
@ -97,20 +97,15 @@
|
|||
>
|
||||
{% block content %}{% endblock %}
|
||||
</main>
|
||||
<footer class="footer flex flex-col items-center gap-8 text-center shadow-lg border-t border-slate-400 bg-footer h-full">
|
||||
<h6 class="mt-4 font-medium text-xl">Nasi Partnerzy:</h6>
|
||||
<div class="flex gap-8">
|
||||
<div class="self-center">
|
||||
<img class="max-h-[90px]" src="{% static 'msit.png' %}" alt="" />
|
||||
{% if footer %}
|
||||
<footer class="shadow-lg border-t border-slate-400 bg-footer h-full mt-8">
|
||||
<ul class="lg:m-0 prose max-w-full w-full">
|
||||
{% content footer %}
|
||||
<div class="flex flex-wrap gap-4 justify-center items-center mb-4">
|
||||
{% buttons footer.buttons %}
|
||||
</div>
|
||||
<div class="self-center">
|
||||
<img class="max-h-[90px]" src="{% static 'lomza.jpg' %}" alt="" />
|
||||
</div>
|
||||
<div class="self-center">
|
||||
<img class="max-h-[90px]" src="{% static 'podlaskie.jpg' %}" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
<h6 class="mb-4 font-light italic">© {% now "Y" %} Nikola Kubiczek</h6>
|
||||
</ul>
|
||||
</footer>
|
||||
{% endif %}
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ urlpatterns = [
|
|||
rtpath('aktualnosci/<int:id>', 'postm', MiddlePost, {'home': 'active'}),
|
||||
rtpath('postp/<int:id>', 'postr', RightPost, {'home': 'active'}),
|
||||
rtpath('baner/<int:id>', 'banner', Banner, {'home': 'active'}),
|
||||
rtpath('stopka/<int:id>', 'footer', Footer, {'home': 'active'}),
|
||||
|
||||
rtpath('post/<int:id>', 'post', AdditionalPagePost, {'post': 'active'}),
|
||||
path('<str:wildcard>', wildcard_additional_page),
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from .models import *
|
|||
# Register your models here.
|
||||
|
||||
|
||||
@admin.register(LeftPost, MiddlePost, RightPost, Banner)
|
||||
@admin.register(LeftPost, MiddlePost, RightPost, Banner, Footer)
|
||||
class PostModelAdmin(OrderableAdmin, admin.ModelAdmin):
|
||||
list_display = ['__str__', 'link', 'published', 'ordering']
|
||||
list_editable = ['ordering']
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
# Generated by Django 5.0 on 2024-01-04 00:26
|
||||
|
||||
import tinymce.models
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('main', '0002_alter_leftpost_options_alter_rightpost_options'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Footer',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('ordering', models.IntegerField(default=0, verbose_name='Kolejność')),
|
||||
('published', models.BooleanField(default=False, verbose_name='Wpis opublikowany')),
|
||||
('show_title', models.BooleanField(default=True, verbose_name='Pokaż tytuł')),
|
||||
('title', models.CharField(blank=True, default='', max_length=250, verbose_name='Tytuł')),
|
||||
('content', tinymce.models.HTMLField(blank=True, default='', verbose_name='Treść')),
|
||||
('buttons', models.TextField(blank=True, default='', help_text='Tutaj można wpisać dowolną ilość przycisków w następującym formacie:<br /> <code><br /> tekst1 -> link<br /> teskt2 | link<br /> ...<br /> </code><br /> Symbol <code>-></code> oznacza, że link będzie otwarty w nowej karcie<br /> Symbol <code>|</code> oznacza, że link będzie otwarty w tej samej karcie<br /> Na przykład:<br /> <code><br /> pzbs -> https://pzbs.pl<br /> fotogaleria | https://galeria.podlaskizbs.pl<br /> cezar -> https://www.msc.com.pl/cezar<br /> </code><br /> PZBS i Cezar zostaną otwarte w nowej karcie<br /> <b>UWAGA !!</b><br /> Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób:<br /> <code><br /> -> link do wyników<br /> fotogaleria -> link do fotogalerii<br /> </code><br /> Wtedy pokaże się <b>tylko przycisk fotogalerii</b><br /> ', verbose_name='Przyciski')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Stopka',
|
||||
'verbose_name_plural': 'Stopki',
|
||||
'ordering': ['ordering'],
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
|
|
@ -32,3 +32,10 @@ class Banner(PostableModel, SingletonModel):
|
|||
class Meta(OrderableModel.Meta):
|
||||
verbose_name = "Baner"
|
||||
verbose_name_plural = "Banery"
|
||||
|
||||
class Footer(PostableModel, SingletonModel):
|
||||
reverse_href = "footer-reverse"
|
||||
|
||||
class Meta(OrderableModel.Meta):
|
||||
verbose_name = "Stopka"
|
||||
verbose_name_plural = "Stopki"
|
||||
|
|
|
|||
|
|
@ -1318,6 +1318,10 @@ select {
|
|||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
.mt-8 {
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.mb-2 {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
|
@ -1330,10 +1334,6 @@ select {
|
|||
margin-top: 1.5rem;
|
||||
}
|
||||
|
||||
.mt-4 {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.block {
|
||||
display: block;
|
||||
}
|
||||
|
|
@ -1374,38 +1374,10 @@ select {
|
|||
max-height: 3rem;
|
||||
}
|
||||
|
||||
.max-h-screen {
|
||||
max-height: 100vh;
|
||||
}
|
||||
|
||||
.max-h-72 {
|
||||
max-height: 18rem;
|
||||
}
|
||||
|
||||
.max-h-\[100px\] {
|
||||
max-height: 100px;
|
||||
}
|
||||
|
||||
.max-h-\[150px\] {
|
||||
max-height: 150px;
|
||||
}
|
||||
|
||||
.max-h-\[50px\] {
|
||||
max-height: 50px;
|
||||
}
|
||||
|
||||
.max-h-\[750px\] {
|
||||
max-height: 750px;
|
||||
}
|
||||
|
||||
.max-h-\[75px\] {
|
||||
max-height: 75px;
|
||||
}
|
||||
|
||||
.max-h-\[90px\] {
|
||||
max-height: 90px;
|
||||
}
|
||||
|
||||
.w-full {
|
||||
width: 100%;
|
||||
}
|
||||
|
|
@ -1552,6 +1524,11 @@ select {
|
|||
background-color: rgb(224 252 252 / var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.bg-white {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.bg-footer {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(224 252 252 / var(--tw-bg-opacity));
|
||||
|
|
@ -1562,11 +1539,6 @@ select {
|
|||
background-color: rgb(0 111 222 / var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.bg-white {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.bg-green-100 {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(220 252 231 / var(--tw-bg-opacity));
|
||||
|
|
@ -1672,14 +1644,14 @@ select {
|
|||
line-height: 1;
|
||||
}
|
||||
|
||||
.font-light {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.font-medium {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.font-light {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.font-normal {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
|
@ -1718,18 +1690,18 @@ select {
|
|||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.shadow-md {
|
||||
--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
||||
--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
|
||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
||||
}
|
||||
|
||||
.shadow-lg {
|
||||
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
||||
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
|
||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
||||
}
|
||||
|
||||
.shadow-md {
|
||||
--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
||||
--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
|
||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
||||
}
|
||||
|
||||
.filter {
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1318,6 +1318,10 @@ select {
|
|||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
.mt-8 {
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.mb-2 {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
|
@ -1330,10 +1334,6 @@ select {
|
|||
margin-top: 1.5rem;
|
||||
}
|
||||
|
||||
.mt-4 {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.block {
|
||||
display: block;
|
||||
}
|
||||
|
|
@ -1374,38 +1374,10 @@ select {
|
|||
max-height: 3rem;
|
||||
}
|
||||
|
||||
.max-h-screen {
|
||||
max-height: 100vh;
|
||||
}
|
||||
|
||||
.max-h-72 {
|
||||
max-height: 18rem;
|
||||
}
|
||||
|
||||
.max-h-\[100px\] {
|
||||
max-height: 100px;
|
||||
}
|
||||
|
||||
.max-h-\[150px\] {
|
||||
max-height: 150px;
|
||||
}
|
||||
|
||||
.max-h-\[50px\] {
|
||||
max-height: 50px;
|
||||
}
|
||||
|
||||
.max-h-\[750px\] {
|
||||
max-height: 750px;
|
||||
}
|
||||
|
||||
.max-h-\[75px\] {
|
||||
max-height: 75px;
|
||||
}
|
||||
|
||||
.max-h-\[90px\] {
|
||||
max-height: 90px;
|
||||
}
|
||||
|
||||
.w-full {
|
||||
width: 100%;
|
||||
}
|
||||
|
|
@ -1552,6 +1524,11 @@ select {
|
|||
background-color: rgb(224 252 252 / var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.bg-white {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.bg-footer {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(224 252 252 / var(--tw-bg-opacity));
|
||||
|
|
@ -1562,11 +1539,6 @@ select {
|
|||
background-color: rgb(0 111 222 / var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.bg-white {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.bg-green-100 {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(220 252 231 / var(--tw-bg-opacity));
|
||||
|
|
@ -1672,14 +1644,14 @@ select {
|
|||
line-height: 1;
|
||||
}
|
||||
|
||||
.font-light {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.font-medium {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.font-light {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.font-normal {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
|
@ -1718,18 +1690,18 @@ select {
|
|||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.shadow-md {
|
||||
--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
||||
--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
|
||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
||||
}
|
||||
|
||||
.shadow-lg {
|
||||
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
||||
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
|
||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
||||
}
|
||||
|
||||
.shadow-md {
|
||||
--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
||||
--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
|
||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
||||
}
|
||||
|
||||
.filter {
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue