Compare commits
2 Commits
4bcc3884cf
...
a94c612af7
| Author | SHA1 | Date |
|---|---|---|
|
|
a94c612af7 | |
|
|
e0a02a34a3 |
|
|
@ -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)'
|
||||
|
|
|
|||
|
|
@ -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 %}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
>
|
||||
|
|
|
|||
|
|
@ -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 %}
|
||||
|
|
|
|||
|
|
@ -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 %}
|
||||
|
|
|
|||
|
|
@ -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 %}
|
||||
|
|
|
|||
|
|
@ -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" />
|
||||
|
|
|
|||
|
|
@ -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" />
|
||||
|
|
|
|||
|
|
@ -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 %}
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
),
|
||||
]
|
||||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
),
|
||||
]
|
||||
|
|
@ -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ę)'),
|
||||
),
|
||||
]
|
||||
|
|
@ -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}'
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
),
|
||||
]
|
||||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
),
|
||||
]
|
||||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
),
|
||||
]
|
||||
|
|
@ -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)'
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
),
|
||||
]
|
||||
|
|
@ -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ę)'),
|
||||
),
|
||||
]
|
||||
|
|
@ -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}'
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue