Compare commits

...

2 Commits

Author SHA1 Message Date
yaemiku a94c612af7
[func] anchors on steroids 2022-09-28 23:51:32 +02:00
yaemiku e0a02a34a3
[func] buttons everywhere 2022-09-28 22:41:50 +02:00
26 changed files with 456 additions and 41 deletions

View File

@ -1,7 +1,10 @@
from django.db import models
from tinymce.models import HTMLField
from admin_ordering.models import OrderableModel
from filebrowser.fields import FileBrowseField
from django.urls.base import reverse_lazy
from db.calendar.models import Calendar
from db.membership.models import Membership
# Create your models here.
@ -14,6 +17,18 @@ class Button(OrderableModel):
def __str__(self):
return self.title or '-'
@property
def link(self):
h = self.href
c = None
if h == reverse_lazy('calendar'):
c = Calendar.get_current()
elif h in reverse_lazy('membership'):
c = Membership.get_current()
return h + (('#' + str(c.year)) if c is not None else '')
class Meta(OrderableModel.Meta):
verbose_name = 'Przycisk nawigacji (zielony)'
verbose_name_plural = 'Przyciski nawigacji (zielone)'

View File

@ -4,6 +4,11 @@
<!---->
{% load static tailwind_tags wysiwyg %} {% block content %}
<div class="flex">
<article class="max-w-full mx-auto scrollable">{% content atu %}</article>
<article class="max-w-full mx-auto scrollable">
{% content atu %}
<div class="flex flex-wrap gap-4 items-center justify-center">
{% buttons atu.buttons %}
</div>
</article>
</div>
{% endblock %}

View File

@ -55,7 +55,7 @@
<li>
<a
class="nbutton home {% if button.href == '/' %}{{ home }}{% elif button.href in request.path %}active{% endif %}"
href="{{ button.href }}"
href="{{ button.link }}"
target="{% if button.blank %}_blank{% else %}_self{% endif %}"
>{{ button.title }}</a
>

View File

@ -4,6 +4,7 @@
<!---->
{% if calendars %}
<ul class="flex justify-center gap-4">
{% for calendar in calendars %}
<li>
@ -18,11 +19,20 @@
</ul>
{% endif %}
<div class="flex flex-col items-center gap-4">
<div class="flex flex-col items-center">
{% for calendar in calendars %}
<article class="w-full py-4 hidden target:block" id="{{ calendar.year }}">
{% content calendar %}
</article>
<div class="w-full">
<span
class="peer absolute top-0 inset-x-0 float-right"
id="{{ calendar.year }}"
></span>
<article class="w-full py-4 hidden peer-target:block">
{% content calendar %}
<div class="flex flex-wrap gap-4 items-center justify-center">
{% buttons calendar.buttons %}
</div>
</article>
</div>
{% empty %}
<span class="py-4 text-xl">Brak kalendarzy</span>
{% endfor %}

View File

@ -3,5 +3,10 @@
{% block title %}Grand Prix Białegostoku | pdlzbs{% endblock %}
<!---->
{% load static tailwind_tags wysiwyg %} {% block content %}
<article class="w-full">{% content gpb %}</article>
<article class="w-full">
{% content gpb %}
<div class="flex flex-wrap gap-4 items-center justify-center">
{% buttons gpb.buttons %}
</div>
</article>
{% endblock %}

View File

@ -9,6 +9,9 @@
<h1 class="font-medium text-center">{{ focus.title }}</h1>
{% endif %}
<div>{% content focus %}</div>
<div class="flex flex-wrap gap-4 items-center justify-center">
{% buttons focus.buttons %}
</div>
</article>
</div>
{% endblock %}

View File

@ -21,6 +21,9 @@
<h2 class="font-medium">{{ post.title }}</h2>
{% endif %}
<div>{% readmore post %}</div>
<div class="flex flex-wrap gap-4 items-center justify-center">
{% buttons post.buttons %}
</div>
</article>
{% if not forloop.last %}
<hr class="w-36 border-b border-stone-200" />

View File

@ -11,6 +11,9 @@
{% if article.show_title %}
<h2 class="font-normal">{{ article.title }}</h2>
{% endif %} {% content article %}
<div class="flex flex-wrap gap-4 items-center justify-center">
{% buttons article.buttons %}
</div>
</article>
{% if not forloop.last %}
<hr class="w-36 border-b border-stone-200" />

View File

@ -20,11 +20,20 @@
</ul>
{% endif %}
<div class="flex flex-col items-center gap-4">
<div class="flex flex-col items-center">
{% for membership in memberships %}
<article class="w-full py-4 hidden target:block" id="{{ membership.year }}">
{% content membership %}
</article>
<div class="w-full">
<span
class="peer absolute top-0 inset-x-0 float-right"
id="{{ membership.year }}"
></span>
<article class="w-full py-4 hidden peer-target:block">
{% content membership %}
<div class="flex flex-wrap gap-4 items-center justify-center">
{% buttons membership.buttons %}
</div>
</article>
</div>
{% empty %}
<span class="py-4 text-xl">Brak dokumentów</span>
{% endfor %}

View File

@ -22,7 +22,9 @@ def readmore(context, value: str):
res = value.content.split('<!-- pagebreak -->')
cntnt = res[0]
if len(res) > 1:
cntnt += f'<br /><br /><p class="text-center">...</p><a href="{reverse_view_url}" style="float: right;" class="button mt-4">Czytaj dalej</a>'
cntnt += '<br /><br /><p class="text-center">...</p>'
cntnt += f'<a href="{reverse_view_url}" style="float: right;" class="button mt-4">Czytaj dalej</a>'
cntnt += '<hr class="not-prose" style="border-color: white; margin: 3rem 0;" />'
return mark_safe(tableoverflow(cntnt))

View File

@ -0,0 +1,18 @@
# Generated by Django 4.0.5 on 2022-09-28 20:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('atu', '0002_alter_atu_content'),
]
operations = [
migrations.AddField(
model_name='atu',
name='buttons',
field=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 /> Klikając na zdjęcie zawsze zostaniemy przekierowani na pierwszy podany link<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>, a zdjęcie przekieruje nas do wyników!<br /> ', verbose_name='Przyciski'),
),
]

View File

@ -4,9 +4,36 @@ from core.utils import SingletonModel
# Create your models here.
buttons_help_text = """Tutaj można wpisać dowolną ilość przycisków w następującym formacie:
<code>
tekst1 -> link
teskt2 | link
...
</code>
Symbol <code>-></code> oznacza, że link będzie otwarty w nowej karcie
Symbol <code>|</code> oznacza, że link będzie otwarty w tej samej karcie
Na przykład:
<code>
pzbs -> https://pzbs.pl
fotogaleria | https://galeria.podlaskizbs.pl
cezar -> https://www.msc.com.pl/cezar
</code>
PZBS i Cezar zostaną otwarte w nowej karcie
<b>UWAGA !!</b>
Klikając na zdjęcie zawsze zostaniemy przekierowani na pierwszy podany link
Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób:
<code>
-> link do wyników
fotogaleria -> link do fotogalerii
</code>
Wtedy pokaże się <b>tylko przycisk fotogalerii</b>, a zdjęcie przekieruje nas do wyników!
""".replace('\n', '<br />')
class Atu(SingletonModel):
content = HTMLField('Tekst', default='', blank=True)
buttons = models.TextField(
'Przyciski', default='', blank=True, help_text=buttons_help_text)
def __str__(self):
return 'Stowarzyszenie Brydżowe ATU'

View File

@ -0,0 +1,18 @@
# Generated by Django 4.0.5 on 2022-09-28 20:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('calendar', '0003_calendar_published'),
]
operations = [
migrations.AddField(
model_name='calendar',
name='buttons',
field=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 /> Klikając na zdjęcie zawsze zostaniemy przekierowani na pierwszy podany link<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>, a zdjęcie przekieruje nas do wyników!<br /> ', verbose_name='Przyciski'),
),
]

View File

@ -0,0 +1,18 @@
# Generated by Django 4.0.5 on 2022-09-28 20:47
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('calendar', '0004_calendar_buttons'),
]
operations = [
migrations.AddField(
model_name='calendar',
name='current',
field=models.BooleanField(default=False, verbose_name='Aktualny kalendarz (pokazywany przy przekierowaniu na stronę)'),
),
]

View File

@ -2,12 +2,49 @@ from django.db import models
from tinymce.models import HTMLField
# Create your models here.
buttons_help_text = """Tutaj można wpisać dowolną ilość przycisków w następującym formacie:
<code>
tekst1 -> link
teskt2 | link
...
</code>
Symbol <code>-></code> oznacza, że link będzie otwarty w nowej karcie
Symbol <code>|</code> oznacza, że link będzie otwarty w tej samej karcie
Na przykład:
<code>
pzbs -> https://pzbs.pl
fotogaleria | https://galeria.podlaskizbs.pl
cezar -> https://www.msc.com.pl/cezar
</code>
PZBS i Cezar zostaną otwarte w nowej karcie
<b>UWAGA !!</b>
Klikając na zdjęcie zawsze zostaniemy przekierowani na pierwszy podany link
Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób:
<code>
-> link do wyników
fotogaleria -> link do fotogalerii
</code>
Wtedy pokaże się <b>tylko przycisk fotogalerii</b>, a zdjęcie przekieruje nas do wyników!
""".replace('\n', '<br />')
class Calendar(models.Model):
published = models.BooleanField('Kalendarz opublikowany', default=True)
year = models.IntegerField('Rok', primary_key=True)
content = HTMLField('Kalendarz', default='', blank=True)
buttons = models.TextField(
'Przyciski', default='', blank=True, help_text=buttons_help_text)
current = models.BooleanField(
'Aktualny kalendarz (pokazywany przy przekierowaniu na stronę)', default=False)
@staticmethod
def get_current():
return Calendar.objects.filter(current=True).first()
def update(self, *args, **kwargs):
if self.current is True:
Calendar.objects.exclude(year=self.year).update(current=False)
def __str__(self):
return f'Kalendarz {self.year}'

View File

@ -0,0 +1,18 @@
# Generated by Django 4.0.5 on 2022-09-28 20:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('gpb', '0002_alter_grandprixb_content'),
]
operations = [
migrations.AddField(
model_name='grandprixb',
name='buttons',
field=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 /> Klikając na zdjęcie zawsze zostaniemy przekierowani na pierwszy podany link<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>, a zdjęcie przekieruje nas do wyników!<br /> ', verbose_name='Przyciski'),
),
]

View File

@ -3,10 +3,36 @@ from tinymce.models import HTMLField
from core.utils import SingletonModel
# Create your models here.
buttons_help_text = """Tutaj można wpisać dowolną ilość przycisków w następującym formacie:
<code>
tekst1 -> link
teskt2 | link
...
</code>
Symbol <code>-></code> oznacza, że link będzie otwarty w nowej karcie
Symbol <code>|</code> oznacza, że link będzie otwarty w tej samej karcie
Na przykład:
<code>
pzbs -> https://pzbs.pl
fotogaleria | https://galeria.podlaskizbs.pl
cezar -> https://www.msc.com.pl/cezar
</code>
PZBS i Cezar zostaną otwarte w nowej karcie
<b>UWAGA !!</b>
Klikając na zdjęcie zawsze zostaniemy przekierowani na pierwszy podany link
Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób:
<code>
-> link do wyników
fotogaleria -> link do fotogalerii
</code>
Wtedy pokaże się <b>tylko przycisk fotogalerii</b>, a zdjęcie przekieruje nas do wyników!
""".replace('\n', '<br />')
class GrandPrixB(SingletonModel):
content = HTMLField('Tekst GPB', default='', blank=True)
buttons = models.TextField(
'Przyciski', default='', blank=True, help_text=buttons_help_text)
def __str__(self):
return 'Grand Prix Białegostoku'

View File

@ -0,0 +1,23 @@
# Generated by Django 4.0.5 on 2022-09-28 20:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('main', '0005_post_published_post_show_title'),
]
operations = [
migrations.AddField(
model_name='grandprixw',
name='buttons',
field=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 /> Klikając na zdjęcie zawsze zostaniemy przekierowani na pierwszy podany link<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>, a zdjęcie przekieruje nas do wyników!<br /> ', verbose_name='Przyciski'),
),
migrations.AddField(
model_name='post',
name='buttons',
field=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 /> Klikając na zdjęcie zawsze zostaniemy przekierowani na pierwszy podany link<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>, a zdjęcie przekieruje nas do wyników!<br /> ', verbose_name='Przyciski'),
),
]

View File

@ -6,6 +6,30 @@ from admin_ordering.models import OrderableModel
from core.utils import SingletonModel
# Create your models here.
buttons_help_text = """Tutaj można wpisać dowolną ilość przycisków w następującym formacie:
<code>
tekst1 -> link
teskt2 | link
...
</code>
Symbol <code>-></code> oznacza, że link będzie otwarty w nowej karcie
Symbol <code>|</code> oznacza, że link będzie otwarty w tej samej karcie
Na przykład:
<code>
pzbs -> https://pzbs.pl
fotogaleria | https://galeria.podlaskizbs.pl
cezar -> https://www.msc.com.pl/cezar
</code>
PZBS i Cezar zostaną otwarte w nowej karcie
<b>UWAGA !!</b>
Klikając na zdjęcie zawsze zostaniemy przekierowani na pierwszy podany link
Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób:
<code>
-> link do wyników
fotogaleria -> link do fotogalerii
</code>
Wtedy pokaże się <b>tylko przycisk fotogalerii</b>, a zdjęcie przekieruje nas do wyników!
""".replace('\n', '<br />')
class Post(OrderableModel):
@ -13,6 +37,8 @@ class Post(OrderableModel):
show_title = models.BooleanField('Pokaż tytuł', default=True)
title = models.CharField('Tytuł', default='', blank=True, max_length=250)
content = HTMLField('Treść', default='', blank=True)
buttons = models.TextField(
'Przyciski', default='', blank=True, help_text=buttons_help_text)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
@ -30,6 +56,8 @@ class Post(OrderableModel):
class GrandPrixW(SingletonModel):
content = HTMLField('Tekst GPW', default='', blank=True)
buttons = models.TextField(
'Przyciski', default='', blank=True, help_text=buttons_help_text)
def __str__(self):
return 'Grand Prix Województwa'

View File

@ -0,0 +1,18 @@
# Generated by Django 4.0.5 on 2022-09-28 20:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('mbkb', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='mbkb',
name='buttons',
field=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 /> Klikając na zdjęcie zawsze zostaniemy przekierowani na pierwszy podany link<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>, a zdjęcie przekieruje nas do wyników!<br /> ', verbose_name='Przyciski'),
),
]

View File

@ -4,12 +4,39 @@ from admin_ordering.models import OrderableModel
# Create your models here.
buttons_help_text = """Tutaj można wpisać dowolną ilość przycisków w następującym formacie:
<code>
tekst1 -> link
teskt2 | link
...
</code>
Symbol <code>-></code> oznacza, że link będzie otwarty w nowej karcie
Symbol <code>|</code> oznacza, że link będzie otwarty w tej samej karcie
Na przykład:
<code>
pzbs -> https://pzbs.pl
fotogaleria | https://galeria.podlaskizbs.pl
cezar -> https://www.msc.com.pl/cezar
</code>
PZBS i Cezar zostaną otwarte w nowej karcie
<b>UWAGA !!</b>
Klikając na zdjęcie zawsze zostaniemy przekierowani na pierwszy podany link
Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób:
<code>
-> link do wyników
fotogaleria -> link do fotogalerii
</code>
Wtedy pokaże się <b>tylko przycisk fotogalerii</b>, a zdjęcie przekieruje nas do wyników!
""".replace('\n', '<br />')
class MBKB(OrderableModel):
published = models.BooleanField('Wpis opublikowany', default=True)
show_title = models.BooleanField('Pokaż tytuł', default=True)
title = models.CharField('Tytuł', default='', blank=True, max_length=250)
content = HTMLField('Tekst', default='', blank=True)
buttons = models.TextField(
'Przyciski', default='', blank=True, help_text=buttons_help_text)
def __str__(self):
return self.title or '(brak tytułu)'

View File

@ -0,0 +1,18 @@
# Generated by Django 4.0.5 on 2022-09-28 20:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('membership', '0003_membership_published'),
]
operations = [
migrations.AddField(
model_name='membership',
name='buttons',
field=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 /> Klikając na zdjęcie zawsze zostaniemy przekierowani na pierwszy podany link<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>, a zdjęcie przekieruje nas do wyników!<br /> ', verbose_name='Przyciski'),
),
]

View File

@ -0,0 +1,18 @@
# Generated by Django 4.0.5 on 2022-09-28 20:47
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('membership', '0004_membership_buttons'),
]
operations = [
migrations.AddField(
model_name='membership',
name='current',
field=models.BooleanField(default=False, verbose_name='Aktualne składki (pokazywane przy przekierowaniu na stronę)'),
),
]

View File

@ -3,11 +3,51 @@ from tinymce.models import HTMLField
# Create your models here.
buttons_help_text = """Tutaj można wpisać dowolną ilość przycisków w następującym formacie:
<code>
tekst1 -> link
teskt2 | link
...
</code>
Symbol <code>-></code> oznacza, że link będzie otwarty w nowej karcie
Symbol <code>|</code> oznacza, że link będzie otwarty w tej samej karcie
Na przykład:
<code>
pzbs -> https://pzbs.pl
fotogaleria | https://galeria.podlaskizbs.pl
cezar -> https://www.msc.com.pl/cezar
</code>
PZBS i Cezar zostaną otwarte w nowej karcie
<b>UWAGA !!</b>
Klikając na zdjęcie zawsze zostaniemy przekierowani na pierwszy podany link
Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób:
<code>
-> link do wyników
fotogaleria -> link do fotogalerii
</code>
Wtedy pokaże się <b>tylko przycisk fotogalerii</b>, a zdjęcie przekieruje nas do wyników!
""".replace('\n', '<br />')
class Membership(models.Model):
published = models.BooleanField('Wpis opublikowany', default=True)
year = models.IntegerField('Rok', primary_key=True)
content = HTMLField('Treść', default='', blank=True)
buttons = models.TextField(
'Przyciski', default='', blank=True, help_text=buttons_help_text)
current = models.BooleanField(
'Aktualne składki (pokazywane przy przekierowaniu na stronę)', default=False)
@staticmethod
def get_current():
return Membership.objects.filter(current=True).first()
def save(self, *args, **kwargs):
if self.current is True:
Membership.objects.exclude(year=self.year).update(current=False)
super(Membership, self).save(*args, **kwargs)
def __str__(self):
return f'Składki członkowskie {self.year}'

View File

@ -1262,6 +1262,19 @@ select {
position: sticky;
}
.inset-x-0 {
left: 0px;
right: 0px;
}
.top-0 {
top: 0px;
}
.float-right {
float: right;
}
.m-4 {
margin: 1rem;
}
@ -1467,16 +1480,16 @@ select {
border-color: rgb(148 163 184 / var(--tw-border-opacity));
}
.border-stone-200 {
--tw-border-opacity: 1;
border-color: rgb(231 229 228 / var(--tw-border-opacity));
}
.border-stone-300 {
--tw-border-opacity: 1;
border-color: rgb(214 211 209 / var(--tw-border-opacity));
}
.border-stone-200 {
--tw-border-opacity: 1;
border-color: rgb(231 229 228 / var(--tw-border-opacity));
}
.bg-white {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
@ -1519,16 +1532,16 @@ select {
padding-bottom: 0.75rem;
}
.py-4 {
padding-top: 1rem;
padding-bottom: 1rem;
}
.py-2 {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
}
.py-4 {
padding-top: 1rem;
padding-bottom: 1rem;
}
.pb-1 {
padding-bottom: 0.25rem;
}
@ -1791,10 +1804,6 @@ h4 {
display: block;
}
.last\:hidden:last-child {
display: none;
}
.target\:block:target {
display: block;
}
@ -1805,6 +1814,10 @@ h4 {
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.peer:target ~ .peer-target\:block {
display: block;
}
.prose-h2\:mb-2 :is(:where(h2):not(:where([class~="not-prose"] *))) {
margin-bottom: 0.5rem;
}

View File

@ -1262,6 +1262,19 @@ select {
position: sticky;
}
.inset-x-0 {
left: 0px;
right: 0px;
}
.top-0 {
top: 0px;
}
.float-right {
float: right;
}
.m-4 {
margin: 1rem;
}
@ -1467,16 +1480,16 @@ select {
border-color: rgb(148 163 184 / var(--tw-border-opacity));
}
.border-stone-200 {
--tw-border-opacity: 1;
border-color: rgb(231 229 228 / var(--tw-border-opacity));
}
.border-stone-300 {
--tw-border-opacity: 1;
border-color: rgb(214 211 209 / var(--tw-border-opacity));
}
.border-stone-200 {
--tw-border-opacity: 1;
border-color: rgb(231 229 228 / var(--tw-border-opacity));
}
.bg-white {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
@ -1519,16 +1532,16 @@ select {
padding-bottom: 0.75rem;
}
.py-4 {
padding-top: 1rem;
padding-bottom: 1rem;
}
.py-2 {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
}
.py-4 {
padding-top: 1rem;
padding-bottom: 1rem;
}
.pb-1 {
padding-bottom: 0.25rem;
}
@ -1791,10 +1804,6 @@ h4 {
display: block;
}
.last\:hidden:last-child {
display: none;
}
.target\:block:target {
display: block;
}
@ -1805,6 +1814,10 @@ h4 {
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.peer:target ~ .peer-target\:block {
display: block;
}
.prose-h2\:mb-2 :is(:where(h2):not(:where([class~="not-prose"] *))) {
margin-bottom: 0.5rem;
}