diff --git a/core/context_processors.py b/core/context_processors.py index f012cb4..66f3e30 100644 --- a/core/context_processors.py +++ b/core/context_processors.py @@ -11,4 +11,5 @@ def load_config(request): 'middle_posts': MiddlePost.Published(), 'right_posts': RightPost.Published(), 'banner': Banner.Get(), + 'footer': Footer.Get(), } diff --git a/core/migrations/0003_alter_additionalpage_published_and_more.py b/core/migrations/0003_alter_additionalpage_published_and_more.py new file mode 100644 index 0000000..c79c4ac --- /dev/null +++ b/core/migrations/0003_alter_additionalpage_published_and_more.py @@ -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'), + ), + ] diff --git a/core/templates/base.html b/core/templates/base.html index b35feb9..723e01d 100644 --- a/core/templates/base.html +++ b/core/templates/base.html @@ -97,20 +97,15 @@ > {% block content %}{% endblock %} - + {% endif %} diff --git a/core/urls.py b/core/urls.py index a5dfff5..ed73ba9 100644 --- a/core/urls.py +++ b/core/urls.py @@ -11,6 +11,7 @@ urlpatterns = [ rtpath('aktualnosci/', 'postm', MiddlePost, {'home': 'active'}), rtpath('postp/', 'postr', RightPost, {'home': 'active'}), rtpath('baner/', 'banner', Banner, {'home': 'active'}), + rtpath('stopka/', 'footer', Footer, {'home': 'active'}), rtpath('post/', 'post', AdditionalPagePost, {'post': 'active'}), path('', wildcard_additional_page), diff --git a/db/main/admin.py b/db/main/admin.py index c97a1b8..707d9f7 100644 --- a/db/main/admin.py +++ b/db/main/admin.py @@ -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'] diff --git a/db/main/migrations/0003_footer.py b/db/main/migrations/0003_footer.py new file mode 100644 index 0000000..79421e7 --- /dev/null +++ b/db/main/migrations/0003_footer.py @@ -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:

tekst1 -> link
teskt2 | link
...

Symbol -> oznacza, że link będzie otwarty w nowej karcie
Symbol | oznacza, że link będzie otwarty w tej samej karcie
Na przykład:

pzbs -> https://pzbs.pl
fotogaleria | https://galeria.podlaskizbs.pl
cezar -> https://www.msc.com.pl/cezar

PZBS i Cezar zostaną otwarte w nowej karcie
UWAGA !!
Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób:

-> link do wyników
fotogaleria -> link do fotogalerii

Wtedy pokaże się tylko przycisk fotogalerii
', verbose_name='Przyciski')), + ('created_at', models.DateTimeField(auto_now_add=True)), + ], + options={ + 'verbose_name': 'Stopka', + 'verbose_name_plural': 'Stopki', + 'ordering': ['ordering'], + 'abstract': False, + }, + ), + ] diff --git a/db/main/models.py b/db/main/models.py index 4e18566..1d07c90 100644 --- a/db/main/models.py +++ b/db/main/models.py @@ -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" diff --git a/static/css/dist/styles.css b/static/css/dist/styles.css index 8db73f3..f7633d8 100644 --- a/static/css/dist/styles.css +++ b/static/css/dist/styles.css @@ -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); } diff --git a/theme/static/css/dist/styles.css b/theme/static/css/dist/styles.css index 8db73f3..f7633d8 100644 --- a/theme/static/css/dist/styles.css +++ b/theme/static/css/dist/styles.css @@ -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); }