diff --git a/home/migrations/0024_homepersonpage_name_titles.py b/home/migrations/0024_homepersonpage_name_titles.py new file mode 100644 index 0000000000000000000000000000000000000000..d57bb697d87c98324650da2798b3209502cece1c --- /dev/null +++ b/home/migrations/0024_homepersonpage_name_titles.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.4 on 2023-08-19 22:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("home", "0023_homepage_academic_council"), + ] + + operations = [ + migrations.AddField( + model_name="homepersonpage", + name="name_titles", + field=models.CharField( + blank=True, max_length=32, null=True, verbose_name="Tituly" + ), + ), + ] diff --git a/home/migrations/0025_homearticlepage_image_and_more.py b/home/migrations/0025_homearticlepage_image_and_more.py new file mode 100644 index 0000000000000000000000000000000000000000..9d21716259acebc2a43da22cfb864582027c63da --- /dev/null +++ b/home/migrations/0025_homearticlepage_image_and_more.py @@ -0,0 +1,33 @@ +# Generated by Django 4.2.4 on 2023-08-19 23:08 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("wagtailimages", "0025_alter_image_file_alter_rendition_file"), + ("home", "0024_homepersonpage_name_titles"), + ] + + operations = [ + migrations.AddField( + model_name="homearticlepage", + name="image", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="wagtailimages.image", + verbose_name="Obrázek", + ), + ), + migrations.AddField( + model_name="homearticlepage", + name="show_image_on_homepage", + field=models.BooleanField( + default=False, verbose_name="Zobrazovat obrázek na homepage" + ), + ), + ] diff --git a/home/migrations/0026_socialmediasettings.py b/home/migrations/0026_socialmediasettings.py new file mode 100644 index 0000000000000000000000000000000000000000..596a2da7d1036ba2064ab4c68ed09d89e389dd5b --- /dev/null +++ b/home/migrations/0026_socialmediasettings.py @@ -0,0 +1,55 @@ +# Generated by Django 4.2.4 on 2023-08-20 14:17 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("wagtailcore", "0083_workflowcontenttype"), + ("home", "0025_homearticlepage_image_and_more"), + ] + + operations = [ + migrations.CreateModel( + name="SocialMediaSettings", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "mastodon", + models.URLField(blank=True, help_text="Mastodon URL", null=True), + ), + ( + "twitter", + models.URLField(blank=True, help_text="Twitter URL", null=True), + ), + ( + "linkedin", + models.URLField(blank=True, help_text="LinkedIn URL", null=True), + ), + ( + "facebook", + models.URLField(blank=True, help_text="Facebook URL", null=True), + ), + ( + "site", + models.OneToOneField( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + to="wagtailcore.site", + ), + ), + ], + options={ + "verbose_name": "Sociální sítě", + }, + ), + ] diff --git a/home/migrations/0027_remove_homedocumentpage_tags_and_more.py b/home/migrations/0027_remove_homedocumentpage_tags_and_more.py new file mode 100644 index 0000000000000000000000000000000000000000..33592151c26cf12b0e73c7234237ad3abae3292e --- /dev/null +++ b/home/migrations/0027_remove_homedocumentpage_tags_and_more.py @@ -0,0 +1,20 @@ +# Generated by Django 4.2.4 on 2023-08-20 15:50 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("home", "0026_socialmediasettings"), + ] + + operations = [ + migrations.RemoveField( + model_name="homedocumentpage", + name="tags", + ), + migrations.RemoveField( + model_name="homeeventpage", + name="tags", + ), + ] diff --git a/home/migrations/0028_articletag_remove_homearticlepage_tags_delete_tag_and_more.py b/home/migrations/0028_articletag_remove_homearticlepage_tags_delete_tag_and_more.py new file mode 100644 index 0000000000000000000000000000000000000000..b3de88dc060b41f1b8f8950df48c6dfa9c9a3836 --- /dev/null +++ b/home/migrations/0028_articletag_remove_homearticlepage_tags_delete_tag_and_more.py @@ -0,0 +1,57 @@ +# Generated by Django 4.2.4 on 2023-08-20 16:06 + +import django.db.models.deletion +import modelcluster.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("taggit", "0005_auto_20220424_2025"), + ("home", "0027_remove_homedocumentpage_tags_and_more"), + ] + + operations = [ + migrations.CreateModel( + name="ArticleTag", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ], + options={ + "abstract": False, + }, + ), + migrations.RemoveField( + model_name="homearticlepage", + name="tags", + ), + migrations.DeleteModel( + name="Tag", + ), + migrations.AddField( + model_name="articletag", + name="content_object", + field=modelcluster.fields.ParentalKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="tagged_items", + to="home.homearticlepage", + ), + ), + migrations.AddField( + model_name="articletag", + name="tag", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="%(app_label)s_%(class)s_items", + to="taggit.tag", + ), + ), + ] diff --git a/home/migrations/0029_homearticlepage_tags.py b/home/migrations/0029_homearticlepage_tags.py new file mode 100644 index 0000000000000000000000000000000000000000..b4bd0bb847213a31552e09b6c5d78cd3160bcc81 --- /dev/null +++ b/home/migrations/0029_homearticlepage_tags.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.4 on 2023-08-20 16:06 + +import modelcluster.contrib.taggit +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("taggit", "0005_auto_20220424_2025"), + ("home", "0028_articletag_remove_homearticlepage_tags_delete_tag_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="homearticlepage", + name="tags", + field=modelcluster.contrib.taggit.ClusterTaggableManager( + blank=True, + help_text="A comma-separated list of tags.", + through="home.ArticleTag", + to="taggit.Tag", + verbose_name="Štítky", + ), + ), + ] diff --git a/home/migrations/0030_homevideospage_homevideopage.py b/home/migrations/0030_homevideospage_homevideopage.py new file mode 100644 index 0000000000000000000000000000000000000000..ef74a1dff7c4868b0e587472f10c08c8041450db --- /dev/null +++ b/home/migrations/0030_homevideospage_homevideopage.py @@ -0,0 +1,116 @@ +# Generated by Django 4.2.4 on 2023-08-20 16:50 + +import django.db.models.deletion +import django.utils.timezone +import wagtail.contrib.routable_page.models +import wagtail.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("wagtailimages", "0025_alter_image_file_alter_rendition_file"), + ("wagtailcore", "0083_workflowcontenttype"), + ("home", "0029_homearticlepage_tags"), + ] + + operations = [ + migrations.CreateModel( + name="HomeVideosPage", + fields=[ + ( + "page_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="wagtailcore.page", + ), + ), + ( + "content", + wagtail.fields.RichTextField( + blank=True, null=True, verbose_name="Obsah" + ), + ), + ], + options={ + "verbose_name": "Rozcestník videí", + }, + bases=( + wagtail.contrib.routable_page.models.RoutablePageMixin, + "wagtailcore.page", + ), + ), + migrations.CreateModel( + name="HomeVideoPage", + fields=[ + ( + "page_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="wagtailcore.page", + ), + ), + ( + "author", + models.CharField( + blank=True, + max_length=128, + null=True, + verbose_name="Jméno autora", + ), + ), + ( + "date", + models.DateField( + default=django.utils.timezone.now, + verbose_name="Datum vytvoření", + ), + ), + ("content", wagtail.fields.RichTextField(verbose_name="Obsah")), + ( + "embed_url", + models.URLField( + help_text="Pro získání adresy zmáčkni tlačítko Sdílet, vyber záložku Embed a zaškrtní zobrazování pouze URL.", + verbose_name="URL Embedu", + ), + ), + ( + "author_page", + models.ForeignKey( + blank=True, + help_text="Pokud je vybrána stránka, není nutno vyplňovat jméno autora níže.", + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="home.homepersonpage", + verbose_name="Stránka autora", + ), + ), + ( + "thumbnail", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="wagtailimages.image", + verbose_name="Náhledový obrázek", + ), + ), + ], + options={ + "abstract": False, + }, + bases=( + wagtail.contrib.routable_page.models.RoutablePageMixin, + "wagtailcore.page", + ), + ), + ] diff --git a/home/migrations/0031_alter_homevideopage_options.py b/home/migrations/0031_alter_homevideopage_options.py new file mode 100644 index 0000000000000000000000000000000000000000..da76e7a41707c621488b638d9541c86b6f1a09b6 --- /dev/null +++ b/home/migrations/0031_alter_homevideopage_options.py @@ -0,0 +1,16 @@ +# Generated by Django 4.2.4 on 2023-08-20 16:53 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("home", "0030_homevideospage_homevideopage"), + ] + + operations = [ + migrations.AlterModelOptions( + name="homevideopage", + options={"verbose_name": "Video"}, + ), + ] diff --git a/home/migrations/0032_alter_homevideopage_content.py b/home/migrations/0032_alter_homevideopage_content.py new file mode 100644 index 0000000000000000000000000000000000000000..9963490f270a2ed05d3a3d61c32dc1464efb6f74 --- /dev/null +++ b/home/migrations/0032_alter_homevideopage_content.py @@ -0,0 +1,20 @@ +# Generated by Django 4.2.4 on 2023-08-20 16:54 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("home", "0031_alter_homevideopage_options"), + ] + + operations = [ + migrations.AlterField( + model_name="homevideopage", + name="content", + field=wagtail.fields.RichTextField( + blank=True, null=True, verbose_name="Obsah" + ), + ), + ] diff --git a/home/models.py b/home/models.py index 534b0c15b6b2c2f8e3dbc5b875b508570c9fc839..4423dbb744894fb146cefd9417cac1d0cb6105f8 100644 --- a/home/models.py +++ b/home/models.py @@ -1,5 +1,8 @@ from django.db import models from django.utils import timezone +from modelcluster.contrib.taggit import ClusterTaggableManager +from modelcluster.fields import ParentalKey +from taggit.models import TaggedItemBase from wagtail.admin.panels import ( FieldPanel, MultiFieldPanel, @@ -8,12 +11,24 @@ from wagtail.admin.panels import ( ) from wagtail.blocks import PageChooserBlock from wagtail.contrib.routable_page.models import RoutablePageMixin, path +from wagtail.contrib.settings.models import BaseSiteSetting, register_setting from wagtail.documents import get_document_model from wagtail.fields import RichTextField, StreamField from wagtail.models import Page from .blocks import PersonBlock +# --- BEGIN Tags --- + + +class ArticleTag(TaggedItemBase): + content_object = ParentalKey( + "home.HomeArticlePage", on_delete=models.CASCADE, related_name="tagged_items" + ) + + +# --- END Tags --- + class HomePage(RoutablePageMixin, Page): heading_text = RichTextField(verbose_name="Hlavní text stránky") @@ -137,6 +152,7 @@ class HomePage(RoutablePageMixin, Page): "home.HomeArticlesPage", "home.HomeEventsPage", "home.HomeDocumentsPage", + "home.HomeVideosPage", "home.HomePeoplePage", ] @@ -242,7 +258,7 @@ class HomePage(RoutablePageMixin, Page): verbose_name = "Domovská stránka" -# --- BEGIN Articles, events and documents --- +# --- BEGIN Articles, events, videos and documents --- class HomeArticlesPage(RoutablePageMixin, Page): @@ -257,7 +273,21 @@ class HomeArticlesPage(RoutablePageMixin, Page): @property def articles(self): - return HomeArticlePage.objects.live().order_by("-date").all() + return HomeArticlePage.objects.live().order_by("-date") + + def get_context(self, request): + context = super().get_context(request) + articles = self.articles + + # Filter by tag + tag = request.GET.get("tag") + if tag: + articles = articles.filter(tags__name=tag) + context["filtered_tag"] = tag + + context["articles"] = articles + + return context class Meta: verbose_name = "Rozcestník článků" @@ -299,9 +329,25 @@ class HomeDocumentsPage(RoutablePageMixin, Page): verbose_name = "Rozcestník dokumentů" -class HomeContentPageMixin(RoutablePageMixin, Page): - tags = models.ManyToManyField("Tag", verbose_name="Štítky") +class HomeVideosPage(RoutablePageMixin, Page): + content = RichTextField(verbose_name="Obsah", blank=True, null=True) + + parent_page_type = ["home.HomePage"] + subpage_types = ["home.HomeVideoPage"] + + content_panels = Page.content_panels + [ + FieldPanel("content", icon="pilcrow"), + ] + + @property + def videos(self): + return HomeVideoPage.objects.live().order_by("-date").all() + + class Meta: + verbose_name = "Rozcestník videí" + +class HomeContentPageMixin(RoutablePageMixin, Page): author_page = models.ForeignKey( "home.HomePersonPage", on_delete=models.SET_NULL, @@ -348,6 +394,22 @@ class HomeContentPageMixin(RoutablePageMixin, Page): class HomeArticlePage(HomeContentPageMixin): + image = models.ForeignKey( + "wagtailimages.Image", + null=True, + blank=True, + on_delete=models.SET_NULL, + related_name="+", + verbose_name="Obrázek", + ) + + show_image_on_homepage = models.BooleanField( + verbose_name="Zobrazovat obrázek na homepage", + default=False, + ) + + tags = ClusterTaggableManager(through=ArticleTag, blank=True, verbose_name="Štítky") + perex = models.TextField(verbose_name="Perex") content_panels = Page.content_panels + [ @@ -358,8 +420,16 @@ class HomeArticlePage(HomeContentPageMixin): ], heading="Autor", ), + MultiFieldPanel( + [ + FieldPanel("image", icon="image", heading=" "), + FieldPanel("show_image_on_homepage"), + ], + heading="Obrázek", + ), FieldPanel("date", icon="calendar"), FieldPanel("perex", icon="pilcrow"), + FieldPanel("tags", icon="tag"), FieldPanel("content", icon="pilcrow"), ] @@ -418,7 +488,42 @@ class HomeDocumentPage(HomeContentPageMixin): verbose_name = "Dokument" -# --- END Articles, events and documents --- +class HomeVideoPage(HomeContentPageMixin): + embed_url = models.URLField( + verbose_name="URL Embedu", + help_text="Pro získání adresy zmáčkni tlačítko Sdílet, vyber záložku Embed a zaškrtní zobrazování pouze URL.", + ) + + thumbnail = models.ForeignKey( + "wagtailimages.Image", + null=True, + blank=True, + on_delete=models.SET_NULL, + related_name="+", + verbose_name="Náhledový obrázek", + ) + + content = RichTextField(verbose_name="Obsah", blank=True, null=True) + + content_panels = Page.content_panels + [ + FieldPanel("embed_url", icon="link"), + FieldPanel("thumbnail", icon="image"), + MultiFieldPanel( + [ + FieldPanel("author_page", icon="user"), + FieldPanel("author", icon="user"), + ], + heading="Autor", + ), + FieldPanel("date", icon="calendar"), + FieldPanel("content", icon="pilcrow"), + ] + + class Meta: + verbose_name = "Video" + + +# --- END Articles, events, videos and documents --- # --- BEGIN People --- @@ -450,6 +555,13 @@ class HomePersonPage(RoutablePageMixin, Page): verbose_name="Profilový obrázek", ) + name_titles = models.CharField( + max_length=32, + blank=True, + null=True, + verbose_name="Tituly", + ) + position = models.TextField(verbose_name="Pracovní pozice", blank=True, null=True) email = models.EmailField(verbose_name="Emailová adresa", blank=True, null=True) @@ -457,22 +569,63 @@ class HomePersonPage(RoutablePageMixin, Page): description = RichTextField(verbose_name="Popis", blank=True, null=True) content_panels = Page.content_panels + [ + FieldPanel("name_titles", icon="pilcrow"), FieldPanel("image", icon="image"), FieldPanel("position", icon="pilcrow"), FieldPanel("email", icon="mail"), FieldPanel("description", icon="pilcrow"), ] + @property + def full_name(self) -> str: + name = self.title + + if self.name_titles is not None: + name = f"{self.name_titles} {name}" + + return name + + @property + def inline_position(self) -> str: + """Returns this person's position formatted to fit on a single line.""" + + if self.position is None: + return None + + split_positions = self.position.split("\n") + split_positions = [position.strip() for position in split_positions] + + return ", ".join(split_positions) + class Meta: verbose_name = "Osoba" # --- END People --- +# --- BEGIN Settings --- + +@register_setting +class SocialMediaSettings(BaseSiteSetting): + mastodon = models.URLField(blank=True, null=True, help_text="Mastodon URL") + twitter = models.URLField(blank=True, null=True, help_text="Twitter URL") + linkedin = models.URLField(blank=True, null=True, help_text="LinkedIn URL") + facebook = models.URLField(blank=True, null=True, help_text="Facebook URL") -class Tag(models.Model): - name = models.CharField(verbose_name="Jméno", max_length=32) + panels = [ + MultiFieldPanel( + [ + FieldPanel("mastodon"), + FieldPanel("twitter"), + FieldPanel("linkedin"), + FieldPanel("facebook"), + ], + heading="Nastavení sociálních sítí", + ) + ] class Meta: - verbose_name = "Štítek" - verbose_name_plural = "Štítky" + verbose_name = "Sociální sítě" + + +# --- END Settings --- diff --git a/home/static/fonts/bebas-neue/bebas-neue-v10-latin_latin-ext-regular.woff2 b/home/static/home/fonts/bebas-neue/bebas-neue-v10-latin_latin-ext-regular.woff2 similarity index 100% rename from home/static/fonts/bebas-neue/bebas-neue-v10-latin_latin-ext-regular.woff2 rename to home/static/home/fonts/bebas-neue/bebas-neue-v10-latin_latin-ext-regular.woff2 diff --git a/home/static/fonts/bebas-neue/style.css b/home/static/home/fonts/bebas-neue/style.css similarity index 100% rename from home/static/fonts/bebas-neue/style.css rename to home/static/home/fonts/bebas-neue/style.css diff --git a/institut/static/fonts/pirati-ui/pirati-ui.eot b/home/static/home/fonts/pirati-ui/pirati-ui.eot similarity index 76% rename from institut/static/fonts/pirati-ui/pirati-ui.eot rename to home/static/home/fonts/pirati-ui/pirati-ui.eot index 7d2e824a94e622568aa2591e684456951d0d8e20..f81505c9eafe633cf7ba41c3c60d62dd9856e6b4 100644 Binary files a/institut/static/fonts/pirati-ui/pirati-ui.eot and b/home/static/home/fonts/pirati-ui/pirati-ui.eot differ diff --git a/institut/static/fonts/pirati-ui/pirati-ui.svg b/home/static/home/fonts/pirati-ui/pirati-ui.svg similarity index 74% rename from institut/static/fonts/pirati-ui/pirati-ui.svg rename to home/static/home/fonts/pirati-ui/pirati-ui.svg index cbbaf107ffb0f2b2a1cf0613af4332586aa79376..db8387b0918b90ee3a5fa343c9b7271e757edf12 100644 --- a/institut/static/fonts/pirati-ui/pirati-ui.svg +++ b/home/static/home/fonts/pirati-ui/pirati-ui.svg @@ -115,4 +115,12 @@ <glyph unicode="" glyph-name="bed" horiz-adv-x="1170" d="M146.286 365.714h987.429c20 0 36.571-16.571 36.571-36.571v-256h-146.286v146.286h-877.714v-146.286h-146.286v694.857c0 20 16.571 36.571 36.571 36.571h73.143c20 0 36.571-16.571 36.571-36.571v-402.286zM475.429 548.571c0 80.571-65.714 146.286-146.286 146.286s-146.286-65.714-146.286-146.286 65.714-146.286 146.286-146.286 146.286 65.714 146.286 146.286zM1170.286 402.286v36.571c0 121.143-98.286 219.429-219.429 219.429h-402.286c-20 0-36.571-16.571-36.571-36.571v-219.429h658.286z" /> <glyph unicode="" glyph-name="train" horiz-adv-x="878" d="M621.714 950.857c141.143 0 256-81.714 256-182.857v-512c0-98.857-109.143-178.857-246.286-182.286l121.714-115.429c12-11.429 4-31.429-12.571-31.429h-603.429c-16.571 0-24.571 20-12.571 31.429l121.714 115.429c-137.143 3.429-246.286 83.429-246.286 182.286v512c0 101.143 114.857 182.857 256 182.857h365.714zM438.857 182.857c60.571 0 109.714 49.143 109.714 109.714s-49.143 109.714-109.714 109.714-109.714-49.143-109.714-109.714 49.143-109.714 109.714-109.714zM768 512v292.571h-658.286v-292.571h658.286z" /> <glyph unicode="" glyph-name="bus" horiz-adv-x="878" d="M219.429 256c0 40.571-32.571 73.143-73.143 73.143s-73.143-32.571-73.143-73.143 32.571-73.143 73.143-73.143 73.143 32.571 73.143 73.143zM804.571 256c0 40.571-32.571 73.143-73.143 73.143s-73.143-32.571-73.143-73.143 32.571-73.143 73.143-73.143 73.143 32.571 73.143 73.143zM778.286 482.286l-41.143 219.429c-3.429 17.143-18.286 29.714-36 29.714h-524.571c-17.714 0-32.571-12.571-36-29.714l-41.143-219.429c-4-22.857 13.143-43.429 36-43.429h606.857c22.857 0 40 20.571 36 43.429zM649.143 832c0 15.429-12 27.429-27.429 27.429h-365.714c-14.857 0-27.429-12-27.429-27.429s12.571-27.429 27.429-27.429h365.714c15.429 0 27.429 12 27.429 27.429zM877.714 417.714v-344.571h-73.143v-73.143c0-40.571-32.571-73.143-73.143-73.143s-73.143 32.571-73.143 73.143v73.143h-438.857v-73.143c0-40.571-32.571-73.143-73.143-73.143s-73.143 32.571-73.143 73.143v73.143h-73.143v344.571c0 46.857 4 81.714 14.286 127.429l58.857 259.429c10.857 91.429 170.857 146.286 365.714 146.286s354.857-54.857 365.714-146.286l60-259.429c10.286-45.714 13.143-80.571 13.143-127.429z" /> +<glyph unicode="" glyph-name="donation-full" d="M579.709 195.28c-1.324-0.361-2.167-1.204-2.528-2.528s0.241-2.528 1.324-3.25l33.343-22.028c0.722-0.481 1.565-0.602 2.407-0.481l301.531 60.065c-4.935 23.593-31.537 29.491-73.547 20.102l-262.53-51.88zM583.561 832.045c-47.547 83.658-120.251 150.585-220.882 120.612-82.454-24.435-142.881-104.362-142.881-198.974 0-131.085 134.696-237.493 221.243-321.994l121.816-112.066c13.361-12.398 33.945-12.398 47.306 0l121.696 112.066c86.667 84.38 221.243 190.789 221.243 321.994 0 92.205-57.297 170.326-136.381 196.928-102.797 34.667-178.029-32.139-227.141-118.566-0.602-1.204-1.685-1.806-3.009-1.806s-2.407 0.722-3.009 1.806zM152.631 324.078c-15.769-10.232-94.010-55.25-132.649-87.149-12.759-10.713-19.982-24.195-19.982-52.963v-234.122c0-18.296 17.935-14.565 27.204-8.306l173.696 118.566c14.445 9.87 31.658 9.991 48.028 3.972l183.928-67.769c56.815-20.945 112.307-15.167 169.964 3.13l373.152 118.686c79.325 19.139 51.399 111.464-24.315 97.501l-348.596-72.343c-0.843-0.241-1.565 0-2.287 0.361l-26 15.408c-0.963 0.602-1.926 0.602-2.889 0.241-0.963-0.481-1.685-1.204-1.926-2.167-9.389-33.824-35.389-47.547-65.964-43.334l-88.714 12.278c-11.074 1.565-26.241 7.222-35.148 13.963l-99.788 75.232c-10.954 7.222 0.361 22.269 9.75 14.685l98.584-71.14c8.907-6.5 18.056-9.87 29.010-11.315l88.955-11.556c41.287-9.269 64.038 53.806 19.259 78.603l-85.464 48.028c-34.667 20.824-62.714 55.491-99.908 72.825-56.815 26.482-125.547 29.13-187.9-11.315z" /> +<glyph unicode="" glyph-name="donation-outline" horiz-adv-x="1116" d="M717.43 356.829c-17.185 0-33.845 5.903-47.356 16.66l-1.574 1.443-45.257 39.092-21.645 17.972c-127.77 107.437-219.991 185.359-219.991 309.719s89.466 218.285 204.511 218.285c48.668 0.525 95.762-17.841 131.312-51.029 35.55 33.32 82.513 51.554 131.181 51.029 114.783 0 204.511-95.893 204.774-218.417 0-95.106-58.638-163.845-115.964-218.548-28.466-27.417-60.737-54.834-97.992-86.58l-6.428-5.378c-21.12-17.972-43.683-36.731-66.771-56.933l-1.574-1.443c-13.512-10.363-30.172-16.004-47.225-15.873zM586.117 871.19c-64.541 0-115.046-56.408-115.046-128.82 0-79.233 61.13-134.198 188.114-241.242l22.17-19.021c11.675-9.97 23.875-20.202 35.812-30.959 20.071 17.972 39.617 33.976 57.851 49.324l6.034 5.247c35.812 30.828 67.296 57.326 94.057 82.906 53.784 50.636 88.285 96.156 88.285 153.875 0 71.625-50.636 128.82-115.177 128.82-38.83-0.394-74.511-21.383-93.663-55.227-8.264-12.331-22.17-19.677-37.124-19.677v0c-14.955-0.131-28.86 7.346-37.255 19.677-19.021 33.845-54.965 54.834-94.057 55.096zM276.53 16.676v0c17.185 9.445 38.043 9.445 55.227 0 157.68-83.956 234.683-84.218 264.068-78.578 0 0 238.618 7.871 483.665 235.601l19.677 19.677c17.709 17.709 21.514 45.126 9.183 67.034v0c-19.021 33.32-61.393 44.995-94.844 25.974-1.968-1.181-3.935-2.361-5.903-3.804v0l-76.216-42.896c-50.636-27.942-99.304-59.425-145.611-94.057-87.629-72.281-213.038-75.692-304.471-8.396 109.667-38.567 215.006-7.346 263.018 31.746 43.552 34.369 41.978 75.823-42.24 81.332-129.476 8.789-169.617 32.271-181.948 46.438-11.019 13.118-24.137 24.137-38.83 32.795-174.077 97.861-345.006-55.49-345.006-55.49l9.839-17.972 110.848-205.954 17.972-31.877c0.525-0.918 1.705-1.443 2.624-1.049v0zM108.88 261.198l140.101-256.853-106.388-66.115-142.594 267.085z" /> +<glyph unicode="" glyph-name="helios" horiz-adv-x="1087" d="M323.005-53.723c-82.623 17.892-141.556 51.591-201.675 115.321-88.495 93.809-132.229 216.201-119.009 333.051 9.475 83.749 10.736 84.371 62.010 30.616 26.899-28.201 43.375-51.833 40.805-58.529-7.421-19.34 10.651-107.642 31.23-152.593 27.906-60.955 89.477-123.132 149.292-150.761 44.759-20.675 57.076-22.73 136.201-22.73 80.251 0 90.662 1.802 134.342 23.248 92.723 45.525 155.431 132.83 171.68 239.019 4.55 29.738 11.633 61.187 15.739 69.886 11.944 25.304 75.999 95.197 81.867 89.329 10.748-10.748 13.615-140.775 4.187-189.829-44.615-232.117-270.154-377.244-506.67-326.026zM235.947 286.683c-97.83 98.346-174.314 177.341-169.965 175.545 29.455-12.161 87.806-40.328 202.471-97.736l131.625-65.899 341.867 300.060c188.027 165.033 343.371 300.060 345.21 300.060s-80.978-100.535-184.035-223.412c-103.058-122.877-251.722-300.663-330.365-395.080s-146.576-171.821-150.962-172.008c-4.386-0.179-88.017 80.125-185.847 178.47zM333.046 380.575c-69.504 30.215-77.19 147.321-11.884 181.071 46.018 23.782 90.145 19.083 125.557-13.37 23.856-21.862 29.14-32.649 31.958-65.244 4.138-47.862-14.272-81.6-55.101-100.974-33.495-15.894-56.51-16.271-90.529-1.483zM87.73 517.854c-22.835 11.052-41.519 23.551-41.519 27.776 0 17.363 51.75 86.469 93.979 125.497 154.894 143.154 405.997 142.989 560.44-0.368 18.486-17.159 33.275-34.278 32.866-38.042s-16.372-20.605-35.472-37.422l-34.727-30.577-28.372 24.911c-101.096 88.763-228.25 111.963-338.076 61.683-50.714-23.218-121.895-86.409-144.394-128.187-8.217-15.258-16.8-27.207-19.073-26.554-2.273 0.655-22.816 10.23-45.652 21.282zM769.468 712.151c-13.914 10.174-14.171 12.42-2.947 25.702 84.847 100.4 162.568 190.885 172.132 200.401 13.897 13.828 19.429 23.274-77.578-132.466-35.898-57.632-67.765-104.786-70.815-104.786s-12.406 5.017-20.792 11.148zM692.897 766.247c-11.311 8.781-6.311 19.839 44.755 98.989 31.619 49.007 59.96 91.576 62.981 94.597s-12.864-35.296-35.3-85.15c-22.436-49.853-42.585-96.871-44.774-104.482-4.722-16.417-10.539-17.249-27.663-3.954zM220.82 776.791c0.38 9.213 2.253 11.087 4.778 4.778 2.284-5.709 2.004-12.53-0.624-15.158s-4.497 2.043-4.154 10.38zM606.82 802.836c-10.919 4.221-7.74 15.716 22.142 80.059 35.822 77.133 38.463 67.213 7.945-29.845-13.808-43.916-19.934-54.139-30.087-50.213zM316.345 819.628c0 10.874 1.795 15.323 3.989 9.885s2.194-14.334 0-19.771c-2.194-5.437-3.989-0.988-3.989 9.886zM410.785 848.818c-0.434 18.229 2.771 35.343 7.12 38.032 9.217 5.697 9.217-22.623 0-51.405-5.408-16.886-6.447-14.935-7.12 13.373zM505.005 829.514c0.060 5.437 7.084 31.238 15.612 57.336l15.505 47.45-4.321-43.496c-2.377-23.923-6.083-49.724-8.237-57.336-4.475-15.818-18.72-18.853-18.559-3.954z" /> +<glyph unicode="" glyph-name="redmine" horiz-adv-x="1501" d="M0-64.003h325.808l23.272 279.283-302.555 69.797zM58.18 331.64l290.9-69.816 69.816 244.356-244.356 127.977zM197.792 680.72l232.72-127.996 186.195 127.996-174.54 197.812zM1501.024-64.003h-325.788l-23.291 279.283 302.555 69.797zM1442.844 331.64l-290.9-69.816-69.797 244.356 244.336 127.977zM1303.212 680.72l-232.72-127.996-186.156 127.996 174.54 197.812zM500.348 913.44l174.54-209.448h162.885l151.287 209.448-151.287 46.544h-166.976z" /> +<glyph unicode="" glyph-name="zulip" horiz-adv-x="919" d="M918.742 806.888c0-51.583-23.166-97.414-58.471-125.218l-342.735-306.088c-6.365-5.456-14.641 3.342-10.048 10.685l125.718 251.709c3.524 7.047-1.046 15.709-8.275 15.709h-487.618c-75.522 0-137.312 68.929-137.312 153.158 0 84.252 61.791 153.158 137.312 153.158h644.118c75.522 0.045 137.312-68.884 137.312-153.112zM137.312-64h644.118c75.522 0 137.312 68.929 137.312 153.158 0 84.252-61.791 153.158-137.312 153.158h-487.618c-7.229 0-11.799 8.662-8.275 15.709l125.718 251.709c4.592 7.343-3.683 16.141-10.048 10.685l-342.735-306.043c-35.306-27.781-58.471-73.635-58.471-125.218 0-84.229 61.791-153.158 137.312-153.158z" /> +<glyph unicode="" glyph-name="forum" d="M17.552 181.544c-11.34 4.238-17.537 13.082-17.537 25.116 0 20.572 19.788 32.762 38.106 23.467 9.506-4.816 13.451-11.065 13.919-22.060 0.329-7.721 0.017-9.129-3.236-14.723-6.279-10.736-20.117-15.963-31.273-11.809zM87.449 181.698c-6.648 2.362-10.253 5.349-14.254 11.802-6.65 10.688-4.031 25.511 5.96 33.741 12.878 10.602 32.307 6.751 39.982-7.936 7.83-14.991 0.687-32.965-14.99-37.608-7.22-2.152-10.631-2.142-16.699 0.017zM163.579 181.331c-6.684 1.859-15.595 10.891-17.37 17.604-5.578 20.892 12.355 38.925 33.149 33.325 7.688-2.060 15.997-10.824 17.936-18.858 4.874-20.318-13.417-37.738-33.685-32.076zM236.020 181.406c-2.955 0.785-6.751 3.3-10.268 6.822-7.119 7.119-9.379 15.159-7.019 24.975 1.993 8.314 10.101 16.968 17.83 19.013 27.104 7.229 45.879-24.381 26.18-44.081-7.521-7.521-15.829-9.632-26.707-6.751zM308.525 181.698c-6.65 2.362-10.253 5.349-14.254 11.802-6.65 10.688-4.031 25.511 5.96 33.741 12.869 10.602 32.307 6.751 39.971-7.947 11.26-21.542-9.062-45.644-31.674-37.598zM699.661 181.146c-15.697 4.706-23.333 23.915-15.293 38.548 12.926 23.538 49.062 14.419 49.323-12.472 0.174-18.131-16.901-31.212-34.023-26.080zM772.129 181.331c-6.684 1.859-15.595 10.891-17.37 17.604-4.39 16.466 5.812 32.114 22.171 34.053 8.828 1.046 15.292-1.257 21.792-7.755 19.555-19.555 0.285-51.406-26.582-43.902zM844.814 181.612c-9.961 3.547-15.695 10-17.772 19.972-1.085 5.142-1.022 7.688 0.251 12.269 2.194 7.849 10.536 16.445 17.811 18.392 27.104 7.229 45.879-24.381 26.18-44.081-7.621-7.621-16.968-9.933-26.464-6.549zM919.843 181.497c-7.22 2.697-11.454 6.516-14.79 13.317-4.238 8.663-3.856 19.213 0.979 26.515 6.269 9.464 18.915 14.002 30.253 10.837 6.784-1.892 14.824-9.43 16.957-15.902 2.362-7.132 1.089-18.537-2.665-24.234-6.221-9.41-20.563-14.321-30.728-10.524zM989.803 181.544c-6.88 2.563-12.277 7.287-15.159 13.25-3.87 8.015-3.065 19.894 1.831 26.978 4.525 6.521 14.157 11.641 21.948 11.641 7.81 0 17.423-5.108 21.987-11.686 3.266-4.706 3.568-5.998 3.568-14.942 0-8.663-0.377-10.349-3.236-14.69-6.315-9.555-20.563-14.4-30.938-10.536zM328.406 259.684c-21.122 3.903-28.218 31.508-11.793 45.931 11.822 10.377 30.737 7.626 39.613-5.756 3.769-5.712 5.039-16.164 2.764-23.031-4.004-12.144-17.303-19.581-30.569-17.135zM685.836 259.55c-8.358 1.557-15.436 7.112-19.603 15.35-3.14 6.231-2.102 18.543 2.102 24.908 4.773 7.22 11.507 11.239 19.849 11.842 16.628 1.192 28.548-9.632 28.548-25.912 0-16.881-14.556-29.206-30.904-26.154zM249.408 261.192c-20.385 5.578-26.106 31.513-10.067 45.602 5.63 4.941 11.541 6.684 20.039 5.913 13.082-1.19 22.362-10.503 23.296-23.411 0.611-8.358-1.201-14.321-6.013-19.807-6.885-7.855-17.303-11.017-27.249-8.291zM761.12 260.895c-6.65 1.524-15.125 9.129-17.705 15.883-2.898 7.617-1.959 17.955 2.21 24.271 4.874 7.354 11.531 11.22 20.318 11.775 16.231 1.027 28.057-9.884 28.057-25.912 0-8.66-1.889-13.585-7.22-18.945-6.583-6.583-16.23-9.235-25.644-7.084zM23.788 262.303c-2.295 0.721-6.65 3.803-9.68 6.822-7.064 7.052-9.303 15.116-6.948 24.975 2.636 11.017 14.288 20.15 25.677 20.117 14.080-0.019 26.591-12.613 26.591-26.745 0-7.152-2.578-13.015-8.157-18.576-7.688-7.688-17.001-9.932-27.491-6.589zM94.969 262.39c-7.019 2.51-11.357 6.318-14.623 12.869-5.542 11.105-3.669 22.201 5.204 30.804 19.414 18.844 50.3 1.066 43.974-25.3-1.144-4.767-2.797-7.521-7.103-11.812-7.855-7.855-17.423-10.134-27.454-6.549zM168.893 263.89c-21.871 10.904-17.37 43.587 6.784 49.275 10.301 2.429 23.218-3.3 28.392-12.58 13.14-23.518-11.038-48.726-35.175-36.7zM830.693 264.073c-12.043 6.281-17.236 20.787-11.842 33.015 4.971 11.206 12.703 16.357 24.673 16.396 27.113 0.084 36.397-36.867 12.412-49.397-4.612-2.403-8.072-3.324-12.616-3.324s-8.004 0.921-12.616 3.333zM911.206 262.498c-9.341 3.333-17.37 14.778-17.37 24.774 0 11.502 9.062 23.098 20.117 25.756 9.866 2.362 17.927 0.117 24.961-6.952 11.183-11.239 11.273-26.147 0.251-37.171-7.855-7.855-17.604-10.101-27.956-6.414zM982.596 262.467c-18.040 6.445-23.299 30.335-9.632 43.858 9.729 9.622 25.001 10.369 35.46 1.725 16.365-13.484 10.703-40.921-9.498-46.013-6.65-1.676-10.746-1.559-16.337 0.419zM372.928 325.443c-11.251 4.011-17.955 13.634-17.839 25.612 0.251 27.152 36.735 36.097 49.296 12.055 7.83-14.991 0.687-32.965-14.99-37.608-7.153-2.127-10.636-2.132-16.466-0.050zM634.589 325.31c-7.22 2.697-11.454 6.516-14.79 13.317-4.406 8.993-3.87 19.535 1.324 26.949 4.606 6.549 14.178 11.667 21.826 11.667 7.889 0 17.47-5.075 22.060-11.686 3.266-4.706 3.568-5.998 3.568-14.953 0-8.663-0.369-10.349-3.236-14.69-6.279-9.477-20.582-14.4-30.77-10.601zM285.89 333.414c-6.279 1.464-11.809 5.339-15.762 11.004-4.473 6.405-5.281 19.414-1.658 26.522 2.81 5.511 8.425 10.631 14.428 13.149 6.248 2.627 17.849 1.357 23.802-2.568 10.369-6.851 14.632-20.446 10.134-32.244-2.79-7.287-10.971-14.302-18.61-15.94-3.266-0.697-6.309-1.221-6.754-1.156s-2.965 0.62-5.578 1.223zM725.95 333.35c-7.019 1.658-13.335 6.549-16.909 13.121-2.839 5.233-3.199 7.019-2.797 14.051 0.814 14.381 10.067 23.915 24.051 24.807 16.328 1.037 27.956-9.9 28.023-26.357 0.050-12.636-8.056-22.82-20.418-25.677-5.862-1.357-5.98-1.357-11.943 0.050zM197.594 339.27c-15.092 7.654-19.213 27.655-8.425 40.753 11.206 13.585 34.456 11.675 43.4-3.595 4.706-8.043 4.739-18.911 0.050-26.87-4.974-8.459-11.153-12.043-21.524-12.51-6.792-0.301-9.419 0.117-13.518 2.194zM802.311 339.476c-6.337 3.353-12.5 11.793-13.663 18.71-1.87 11.105 3.937 23.132 13.663 28.291 4.506 2.394 6.684 2.764 13.885 2.429 10.904-0.519 17.054-4.438 22.127-14.053 2.965-5.63 3.363-7.443 2.831-13.35-0.754-8.593-5.194-16.464-11.775-20.82-7.055-4.673-19.481-5.214-27.085-1.19zM119.375 339.614c-7.354 2.395-12.132 6.549-15.528 13.484-4.272 8.731-3.702 19.362 1.424 26.783 4.272 6.147 14.197 11.608 21.122 11.608 11.306 0 22.563-7.5 25.747-17.169 2.362-7.141 1.089-18.537-2.665-24.238-6.114-9.244-19.514-13.915-30.089-10.469zM888.772 339.707c-19.581 6.985-24.4 32.53-8.586 45.563 8.459 6.977 19.112 8.056 29.162 2.965 8.731-4.439 12.982-10.64 13.852-20.318 1.212-13.324-5.969-24.584-17.927-28.14-7.209-2.132-10.669-2.16-16.503-0.068zM44.654 340.682c-6.147 1.624-15.475 10.873-17.202 17.074-2.936 10.602-0.754 19.148 6.861 26.765 11.028 11.037 26.338 11.037 37.035 0.017 10.971-11.306 10.979-26.114 0.039-37.068-7.554-7.554-15.843-9.665-26.726-6.784zM963.427 340.682c-6.667 1.758-15.192 10.602-17.228 17.849-2.73 9.71-0.285 19.347 6.617 26.261 5.63 5.639 9.799 7.22 18.945 7.258 7.186 0.019 9.129-0.446 13.283-3.198 10.569-6.996 14.904-17.202 12.278-28.934-1.231-5.542-2.596-7.889-7.086-12.384-7.646-7.635-15.883-9.748-26.817-6.851zM573.050 363.739c-10.971 5.578-17.133 18.073-14.496 29.463 1.892 8.218 6.202 13.986 13.324 17.868 5.233 2.85 7.019 3.199 14.053 2.8 9.598-0.542 16.030-4.171 21.155-11.909 2.864-4.331 3.276-6.114 3.276-14.051s-0.419-9.729-3.276-14.051c-5.271-7.956-11.574-11.425-21.58-11.842-6.174-0.251-9.498 0.203-12.446 1.691zM438.819 365.948c-7.153 3.1-11.144 6.784-14.012 12.937-5.41 11.608-2.898 23.741 6.569 31.851 17.236 14.749 43.684 2.295 43.353-20.385-0.271-18.442-19.526-31.513-35.912-24.405zM505.468 374.97c-9.224 4.564-14.556 13.25-14.556 23.644 0 15.192 11.017 26.067 26.482 26.114 8.314 0.029 13.283-1.892 18.595-7.19 10.168-10.174 10.302-27.326 0.282-37.471-7.53-7.621-21.155-9.884-30.786-5.108zM334.906 394.758c-8.479 4.904-12.043 10.902-12.58 21.189-0.352 6.751 0.050 9.379 1.993 13.183 9.363 18.344 34.807 19.807 46.174 2.63 3.769-5.712 5.039-16.164 2.764-23.031-1.861-5.669-7.5-12.035-13.216-14.958-7.019-3.576-17.973-3.166-25.109 0.969zM665.032 393.458c-9.565 5.029-14.797 13.585-14.797 24.171 0 15.192 10.93 26.147 26.095 26.147 15.326 0 26.067-10.904 26.114-26.512 0.048-10.335-5.117-18.71-14.489-23.527-5.534-2.839-17.772-2.998-22.931-0.29zM244.865 405.203c-9.47 4.305-15.945 13.684-15.945 24.573 0 2.009 0.218 3.97 0.64 5.846l-0.034-0.184c4.554 21.223 31.474 27.956 45.946 11.474 4.941-5.63 6.684-11.541 5.913-20.039-0.766-8.479-4.612-14.923-11.725-19.614-6.105-4.037-18.14-5.041-24.778-2.064zM757.443 405.873c-9.216 4.564-14.556 13.25-14.556 23.644 0 15.025 11.163 26.348 26.046 26.448 8.023 0.050 13.701-2.194 19.013-7.521 5.343-5.343 7.22-10.268 7.22-18.945 0-8.090-2.462-14.061-7.917-19.246-7.521-7.152-20.446-9.041-29.832-4.406zM158.569 410.619c-6.202 1.458-14.422 8.45-17.239 14.681-6.415 14.154 1.156 31.851 15.494 36.154 20.388 6.114 38.743-10.402 34.389-30.971-3.062-14.388-17.772-23.363-32.646-19.849zM852.514 410.429c-9.498 2.362-18.052 11.697-19.781 21.591-1.899 10.902 5.059 23.896 15.271 28.526 11.589 5.271 26.716 0.721 33.249-10 8.286-13.566 3.769-30.669-9.923-37.638-5.252-2.675-13.614-3.78-18.818-2.496zM80.841 414.050c-5.946 1.114-10.989 4.031-15.159 8.76-4.941 5.611-6.684 11.541-5.911 20.030 1.19 13.159 10.503 22.362 23.576 23.299 9.531 0.687 16.298-1.993 22.356-8.876 16.628-18.878-0.050-47.851-24.874-43.218zM933.274 414.273c-7.152 1.24-12.994 5.176-16.957 11.44-4.457 7.019-5.388 13.78-3.032 21.893 3.568 12.297 14.516 19.514 28.057 18.543 20.753-1.492 31.173-26.648 17.772-42.889-6.298-7.635-15.394-10.803-25.845-8.993zM412.757 435.588c-20.010 9.9-19.303 39.413 1.156 47.956 5.779 2.429 16.706 2.362 21.926-0.116 20.418-9.699 19.748-39.807-1.056-48.492-6.329-2.645-15.931-2.362-22.027 0.653zM591.043 435.588c-19.514 9.665-19.548 37.504-0.050 47.521 8.934 4.603 22.703 2.423 30.36-4.807 10.235-9.69 10-28.358-0.486-38.335-7.521-7.141-20.446-9.041-29.826-4.399zM504.897 449.381c-11.231 6.65-15.896 18.174-12.316 30.447 3.635 12.5 13.384 19.196 26.842 18.442 9.534-0.542 15.997-4.171 21.105-11.909 2.864-4.331 3.276-6.114 3.276-14.051s-0.419-9.72-3.276-14.051c-5.252-7.947-11.574-11.407-21.57-11.842-7.454-0.318-9.070 0.017-14.053 2.965zM309.453 457.966c-23.692 5.913-27.822 38.508-6.248 49.245 23.467 11.686 47.621-12.54 35.694-35.786-5.33-10.388-18.207-16.269-29.449-13.459zM702.877 457.966c-23.768 5.946-27.755 38.538-6.047 49.342 20.753 10.339 43.199-7.454 37.805-29.966-3.266-13.617-18.241-22.762-31.745-19.38zM207.646 474.046c-13.384 4.773-20.15 18.777-16.131 33.344 1.754 6.315 10.786 15.359 17.102 17.102 18.040 4.991 34.361-7.086 34.361-25.41 0-18.683-17.792-31.273-35.33-25.021zM798.746 473.879c-5.776 1.825-14.589 10.989-16.366 17.001-3.081 10.369-0.888 18.911 6.832 26.648 11.105 11.105 25.845 11.038 37.075-0.151 10.989-10.937 10.971-25.883-0.039-36.901-7.688-7.688-17.001-9.933-27.5-6.6zM124.053 481.707c-5.98 1.524-11.734 5.678-15.427 11.105-3.091 4.539-3.434 6.013-3.434 14.757 0 8.858 0.318 10.155 3.568 14.857 4.564 6.583 14.178 11.686 21.987 11.686 7.82 0 17.423-5.108 21.987-11.686 3.266-4.706 3.568-5.998 3.568-14.953 0-8.663-0.377-10.349-3.236-14.69-5.872-8.861-18.643-13.751-29.028-11.105zM885.212 482.328c-19.089 6.818-24.167 32.177-9.028 45.142 16.434 14.080 42.027 3.935 43.568-17.269 0.955-13.284-6.153-24.271-18.023-27.792-7.22-2.142-10.679-2.16-16.533-0.077zM374.699 498.535c-15.092 7.654-19.216 27.655-8.425 40.753 11.239 13.644 34.429 11.675 43.467-3.682 6.967-11.842 3.227-28.091-8.224-35.669-6.818-4.506-19.4-5.176-26.817-1.395zM625.211 498.736c-9.732 5.146-15.542 17.172-13.663 28.285 1.163 6.918 7.327 15.36 13.663 18.71 4.506 2.394 6.687 2.764 13.885 2.429 10.843-0.519 17.068-4.439 22.016-13.885 4.406-8.43 4.419-15.368 0.050-23.994-4.807-9.496-11.046-13.44-22.060-13.954-7.2-0.349-9.379 0.048-13.885 2.429zM465.484 514.131c-6.684 1.859-15.595 10.891-17.375 17.606-5.544 20.815 12.446 38.906 33.149 33.316 7.684-2.060 15.997-10.814 17.927-18.858 4.874-20.318-13.417-37.733-33.685-32.076zM551.38 515.486c-7.119 2.663-11.373 6.434-14.623 12.946-8.712 17.47 2.127 36.949 21.483 38.575 5.98 0.514 7.855 0.117 13.484-2.771 24.129-12.424 17.104-47.559-9.951-49.831-3.501-0.285-7.922 0.174-10.388 1.089zM268.638 526.172c-6.751 3.534-9.312 5.902-12.311 11.396-3.993 7.327-4.351 18.063-0.843 24.941 9.235 18.11 34.769 19.447 46.046 2.395 3.769-5.712 5.039-16.164 2.764-23.031-1.861-5.669-7.5-12.035-13.216-14.958-5.339-2.73-17.86-3.132-22.443-0.746zM734.564 526.172c-10.636 5.544-15.461 13.121-15.427 24.149 0.050 15.678 10.77 26.582 26.114 26.582 14.923 0 26.057-11.038 26.114-25.883 0.050-10.708-5.117-19.313-14.489-24.137-5.214-2.695-17.772-3.081-22.328-0.708zM175.267 542.31c-10.134 4.606-17.068 17.248-15.339 27.985 3.367 20.988 27.956 29.943 43.835 15.969 9.923-8.727 11.842-22.429 4.74-33.906-6.684-10.803-21.629-15.326-33.247-10.048zM826.537 542.921c-17.169 7.989-19.972 31.184-5.31 43.734 17.209 14.729 43.3 2.539 43.266-20.217-0.019-19.748-19.781-31.977-37.972-23.518zM339.356 564.794c-5.846 2.73-11.742 9.235-13.663 15.092-2.395 7.287-1.056 18.528 2.898 24.238 4.798 6.948 12.714 11.439 21.661 11.439 6.717 0 12.848-2.529 17.504-6.684l-0.017 0.017c13.353-11.764 11.909-32.51-2.985-42.355-6.482-4.283-18.241-5.107-25.387-1.758zM662.359 565.091c-9.496 4.807-14.556 13.317-14.556 24.405 0 27.051 36.331 36.063 49.296 12.239 2.839-5.233 3.199-7.019 2.797-14.053-0.542-9.574-4.171-16.030-11.86-21.122-6.818-4.506-18.381-5.176-25.677-1.458zM416.31 588.915c-9.296 4.606-14.564 13.267-14.522 23.902 0.116 26.247 33.618 36.202 48.48 14.422 4.071-5.969 5.008-17.123 2.074-24.774-2.19-5.712-8.353-11.842-14.489-14.422-5.872-2.452-15.61-2.060-21.524 0.872zM585.984 588.244c-9.363 4.237-15.747 13.484-15.747 24.22 0 0.002 0 0.004 0 0.007v0c-0.050 8.024 2.194 13.701 7.521 19.021 10.803 10.803 28.627 10.101 38.819-1.524 10.402-11.86 7.646-30.757-5.812-39.648-6.114-4.037-18.14-5.041-24.778-2.064zM242.183 590.422c-6.87 2.563-12.277 7.287-15.159 13.25-3.87 8.015-3.065 19.884 1.831 26.968 4.525 6.521 14.157 11.641 21.948 11.641 7.82 0 17.423-5.108 21.987-11.686 3.266-4.706 3.568-5.998 3.568-14.953 0-8.663-0.377-10.349-3.236-14.69-6.315-9.545-20.563-14.4-30.938-10.536zM508.13 590.054c-9.9 2.898-17.236 13.818-17.236 25.677 0 27.345 37.135 36.329 49.294 11.928 10.87-21.813-8.492-44.506-32.045-37.605zM765.162 590.42c-6.88 2.563-12.278 7.287-15.159 13.25-3.87 8.023-3.065 19.904 1.831 26.978 4.539 6.551 14.154 11.641 22.027 11.641 7.688 0 17.236-5.108 21.871-11.708 3.023-4.305 3.625-6.382 3.937-13.617 0.339-7.721 0.017-9.129-3.236-14.723-6.269-10.736-20.117-15.963-31.27-11.809zM310.156 630.103c-24.204 12.278-15.259 49.095 11.996 49.353 17.268 0.155 29.698-14.556 26.29-31.139-3.702-18.040-21.725-26.616-38.285-18.207zM689.254 630.152c-9.186 4.807-13.546 12.144-13.484 22.729 0.077 13.411 7.045 22.5 19.748 25.812 12.446 3.233 24.961-2.797 30.379-14.642 10.582-23.112-13.919-45.778-36.658-33.886zM390.079 653.139c-5.455 1.57-13.614 10.067-15.394 16.027-3.459 11.551-0.62 21.893 8.033 29.296 17.161 14.69 43.218 2.362 43.19-20.417-0.019-18.442-17.093-30.301-35.835-24.908zM613.854 654.032c-6.377 2.898-13.024 10.837-14.723 17.571-4.245 16.867 8.66 33.199 26.013 32.947 19.633-0.285 31.808-20.016 23.4-37.905-3.276-6.985-5.475-9.129-12.655-12.378-6.667-3.032-15.662-3.13-22.027-0.218zM467.562 666.606c-14.167 7.172-18.576 24.975-9.498 38.383 5.008 7.403 11.957 10.971 21.357 10.971 20.756 0 33.005-19.714 23.668-38.106-4.706-9.263-11.057-13.392-21.455-13.935-6.724-0.352-8.928 0.077-14.087 2.675zM539.048 665.928c-9.565 4.428-14.857 13.183-14.857 24.507 0 14.757 11.038 25.543 26.147 25.543 15.394 0 26.182-10.904 26.114-26.415-0.050-10.882-6.192-20.059-16.279-24.284-5.41-2.261-15.494-1.959-21.125 0.653z" /> +<glyph unicode="" glyph-name="envelop" d="M928 832h-832c-52.8 0-96-43.2-96-96v-640c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v640c0 52.8-43.2 96-96 96zM398.74 409.628l-270.74-210.892v501.642l270.74-290.75zM176.38 704h671.24l-335.62-252-335.62 252zM409.288 398.302l102.712-110.302 102.71 110.302 210.554-270.302h-626.528l210.552 270.302zM625.26 409.628l270.74 290.75v-501.642l-270.74 210.892z" /> +<glyph unicode="" glyph-name="mastodon" d="M510 831c-96.656-0.392-192.626-12.664-242.562-35.688 0 0-107.438-48.908-107.438-215.5 0-198.304-0.144-447.34 178-495.5 68.224-18.336 126.894-22.282 174.062-19.562 85.6 4.832 127.938 31.062 127.938 31.062l-2.875 63.25c0 0-55.483-19.553-124.187-17.312-68.064 2.4-139.77 7.508-150.938 92.5-1.024 7.904-1.532 15.907-1.5 23.875 144.224-35.808 267.206-15.596 301.062-11.5 94.528 11.488 176.817 70.762 187.313 124.938 16.448 85.376 15.062 208.25 15.062 208.25 0 166.592-107.25 215.5-107.25 215.5-52.656 24.592-150.031 36.080-246.687 35.688zM406.562 703.938c33.116-0.888 65.84-15.704 86-47l19.5-33.125 19.438 33.125c40.48 62.944 131.207 59.016 174.375 10.312 39.808-46.336 30.938-76.242 30.938-283.25v-0.062h-78.313v180.125c0 84.32-107.5 87.577-107.5-11.687v-104.375h-77.813v104.375c0 99.264-107.437 96.070-107.437 11.75v-180.125h-78.5c0 207.168-8.71 237.266 30.938 283.25 21.744 24.512 55.259 37.576 88.375 36.688z" /> </font></defs></svg> diff --git a/institut/static/fonts/pirati-ui/pirati-ui.ttf b/home/static/home/fonts/pirati-ui/pirati-ui.ttf similarity index 76% rename from institut/static/fonts/pirati-ui/pirati-ui.ttf rename to home/static/home/fonts/pirati-ui/pirati-ui.ttf index 6077db831dd26e2cc02223051c1ecef10f0e8040..e0061eeb5955048a4416bef7bc673c118bae6e3c 100644 Binary files a/institut/static/fonts/pirati-ui/pirati-ui.ttf and b/home/static/home/fonts/pirati-ui/pirati-ui.ttf differ diff --git a/institut/static/fonts/pirati-ui/pirati-ui.woff b/home/static/home/fonts/pirati-ui/pirati-ui.woff similarity index 76% rename from institut/static/fonts/pirati-ui/pirati-ui.woff rename to home/static/home/fonts/pirati-ui/pirati-ui.woff index fc22ab0410e3d940917ad963a722ebeae7756cc8..521278f69c4168e1946d5b6ba40d270e0a801bf4 100644 Binary files a/institut/static/fonts/pirati-ui/pirati-ui.woff and b/home/static/home/fonts/pirati-ui/pirati-ui.woff differ diff --git a/home/static/home/fonts/pirati-ui/style.css b/home/static/home/fonts/pirati-ui/style.css new file mode 100644 index 0000000000000000000000000000000000000000..62f6ed5887ce0a1f45b5f981dbcfb6f72f092db7 --- /dev/null +++ b/home/static/home/fonts/pirati-ui/style.css @@ -0,0 +1,374 @@ +@font-face { + font-family: "pirati-ui"; + src: + url("./pirati-ui.eot") format("embedded-opentype"), + url("./pirati-ui.ttf") format("truetype"), + url("./pirati-ui.woff") format("woff"), + url("./pirati-ui.svg") format("svg"); + font-weight: normal; + font-style: normal; + font-display: block; +} + +[class^="ico--"], [class*=" ico--"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'pirati-ui' !important; + speak: never; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.ico--mastodon:before { + content: "\e973"; +} +.ico--helios:before { + content: "\e96e"; +} +.ico--redmine:before { + content: "\e96f"; +} +.ico--zulip:before { + content: "\e970"; +} +.ico--forum:before { + content: "\e971"; +} +.ico--pirati:before { + content: "\e90d"; +} +.ico--jitsi:before { + content: "\e90f"; +} +.ico--open-source:before { + content: "\e90e"; +} +.ico--donation-full:before { + content: "\e96c"; +} +.ico--donation-outline:before { + content: "\e96d"; +} +.ico--strategy:before { + content: "\e932"; +} +.ico--pig:before { + content: "\e928"; +} +.ico--thermometer:before { + content: "\e90a"; +} +.ico--menu:before { + content: "\e933"; +} +.ico--chevron-right:before { + content: "\e923"; +} +.ico--chevron-left:before { + content: "\e924"; +} +.ico--chevron-down:before { + content: "\e925"; +} +.ico--chevron-up:before { + content: "\e926"; +} +.ico--link-horizontal:before { + content: "\e910"; +} +.ico--beer:before { + content: "\e909"; +} +.ico--food:before { + content: "\e968"; +} +.ico--dots-three-vertical:before { + content: "\e940"; +} +.ico--dots-three-horizontal:before { + content: "\e941"; +} +.ico--log-out:before { + content: "\e942"; +} +.ico--envelope:before { + content: "\e908"; +} +.ico--pin:before { + content: "\e943"; +} +.ico--at:before { + content: "\e905"; +} +.ico--glass:before { + content: "\e967"; +} +.ico--checkmark:before { + content: "\e965"; +} +.ico--info:before { + content: "\e901"; +} +.ico--question:before { + content: "\e904"; +} +.ico--warning:before { + content: "\e93f"; +} +.ico--code:before { + content: "\e94a"; +} +.ico--checkbox-unchecked:before { + content: "\e94e"; +} +.ico--star-full:before { + content: "\e94f"; +} +.ico--star-empty:before { + content: "\e950"; +} +.ico--bookmark:before { + content: "\e951"; +} +.ico--cog:before { + content: "\e952"; +} +.ico--key:before { + content: "\e953"; +} +.ico--zoom-in:before { + content: "\e954"; +} +.ico--zoom-out:before { + content: "\e955"; +} +.ico--shrink:before { + content: "\e956"; +} +.ico--printer:before { + content: "\e957"; +} +.ico--file-openoffice:before { + content: "\e958"; +} +.ico--user:before { + content: "\e959"; +} +.ico--file-excel:before { + content: "\e95a"; +} +.ico--file-word:before { + content: "\e95b"; +} +.ico--file-pdf:before { + content: "\e95c"; +} +.ico--file-picture:before { + content: "\e95d"; +} +.ico--file-blank:before { + content: "\e95e"; +} +.ico--folder-upload:before { + content: "\e95f"; +} +.ico--upload:before { + content: "\e960"; +} +.ico--cloud-upload:before { + content: "\e961"; +} +.ico--folder-download:before { + content: "\e962"; +} +.ico--download:before { + content: "\e963"; +} +.ico--cloud-download:before { + content: "\e964"; +} +.ico--alarm:before { + content: "\e900"; +} +.ico--calculator:before { + content: "\e911"; +} +.ico--facebook-full:before { + content: "\e913"; +} +.ico--feed:before { + content: "\e927"; +} +.ico--library:before { + content: "\e929"; +} +.ico--office:before { + content: "\e92a"; +} +.ico--attachment:before { + content: "\e92b"; +} +.ico--enlarge:before { + content: "\e92c"; +} +.ico--eye-off:before { + content: "\e92e"; +} +.ico--eye:before { + content: "\e92f"; +} +.ico--share:before { + content: "\e931"; +} +.ico--search:before { + content: "\e939"; +} +.ico--pencil:before { + content: "\e93c"; +} +.ico--lock-open:before { + content: "\e947"; +} +.ico--lock:before { + content: "\e948"; +} +.ico--equalizer:before { + content: "\e949"; +} +.ico--switch:before { + content: "\e94b"; +} +.ico--loop:before { + content: "\e94c"; +} +.ico--refresh:before { + content: "\e94d"; +} +.ico--bullhorn:before { + content: "\e944"; +} +.ico--bin:before { + content: "\e945"; +} +.ico--cross:before { + content: "\e937"; +} +.ico--checkbox-checked:before { + content: "\e938"; +} +.ico--globe:before { + content: "\e93a"; +} +.ico--wikipedia:before { + content: "\e93b"; +} +.ico--youtube:before { + content: "\e936"; +} +.ico--users:before { + content: "\e934"; +} +.ico--book:before { + content: "\e935"; +} +.ico--bubbles:before { + content: "\e930"; +} +.ico--map:before { + content: "\e914"; +} +.ico--compass:before { + content: "\e915"; +} +.ico--folder-open:before { + content: "\e916"; +} +.ico--folder:before { + content: "\e917"; +} +.ico--drawer:before { + content: "\e918"; +} +.ico--stop:before { + content: "\e919"; +} +.ico--github:before { + content: "\e91a"; +} +.ico--clock:before { + content: "\e91b"; +} +.ico--calendar:before { + content: "\e91c"; +} +.ico--flickr:before { + content: "\e91d"; +} +.ico--instagram:before { + content: "\e91e"; +} +.ico--twitter:before { + content: "\e91f"; +} +.ico--newspaper:before { + content: "\e920"; +} +.ico--cart:before { + content: "\e921"; +} +.ico--home:before { + content: "\e922"; +} +.ico--link:before { + content: "\e912"; +} +.ico--power:before { + content: "\e90c"; +} +.ico--rocket:before { + content: "\e946"; +} +.ico--location:before { + content: "\e906"; +} +.ico--phone:before { + content: "\e907"; +} +.ico--linkedin:before { + content: "\e903"; +} +.ico--facebook:before { + content: "\e902"; +} +.ico--envelop:before { + content: "\e972"; +} +.ico--bed:before { + content: "\e969"; +} +.ico--train:before { + content: "\e96a"; +} +.ico--bus:before { + content: "\e96b"; +} +.ico--wheelchair:before { + content: "\e966"; +} +.ico--thumbs-down:before { + content: "\e93d"; +} +.ico--thumbs-up:before { + content: "\e93e"; +} +.ico--anchor:before { + content: "\e92d"; +} +.ico--paw:before { + content: "\e90b"; +} diff --git a/home/static/fonts/source-serif/source-serif-4-v7-latin_latin-ext-700.woff2 b/home/static/home/fonts/source-serif/source-serif-4-v7-latin_latin-ext-700.woff2 similarity index 100% rename from home/static/fonts/source-serif/source-serif-4-v7-latin_latin-ext-700.woff2 rename to home/static/home/fonts/source-serif/source-serif-4-v7-latin_latin-ext-700.woff2 diff --git a/home/static/fonts/source-serif/source-serif-4-v7-latin_latin-ext-700italic.woff2 b/home/static/home/fonts/source-serif/source-serif-4-v7-latin_latin-ext-700italic.woff2 similarity index 100% rename from home/static/fonts/source-serif/source-serif-4-v7-latin_latin-ext-700italic.woff2 rename to home/static/home/fonts/source-serif/source-serif-4-v7-latin_latin-ext-700italic.woff2 diff --git a/home/static/fonts/source-serif/source-serif-4-v7-latin_latin-ext-italic.woff2 b/home/static/home/fonts/source-serif/source-serif-4-v7-latin_latin-ext-italic.woff2 similarity index 100% rename from home/static/fonts/source-serif/source-serif-4-v7-latin_latin-ext-italic.woff2 rename to home/static/home/fonts/source-serif/source-serif-4-v7-latin_latin-ext-italic.woff2 diff --git a/home/static/fonts/source-serif/source-serif-4-v7-latin_latin-ext-regular.woff2 b/home/static/home/fonts/source-serif/source-serif-4-v7-latin_latin-ext-regular.woff2 similarity index 100% rename from home/static/fonts/source-serif/source-serif-4-v7-latin_latin-ext-regular.woff2 rename to home/static/home/fonts/source-serif/source-serif-4-v7-latin_latin-ext-regular.woff2 diff --git a/home/static/fonts/source-serif/style.css b/home/static/home/fonts/source-serif/style.css similarity index 100% rename from home/static/fonts/source-serif/style.css rename to home/static/home/fonts/source-serif/style.css diff --git a/home/static/home/images/cc-by-sa.png b/home/static/home/images/cc-by-sa.png new file mode 100644 index 0000000000000000000000000000000000000000..8770732928cb20d8aeafee32bec9c5de89d51238 Binary files /dev/null and b/home/static/home/images/cc-by-sa.png differ diff --git a/institut/static/images/logo.png b/home/static/home/images/logo.png similarity index 100% rename from institut/static/images/logo.png rename to home/static/home/images/logo.png diff --git a/institut/static/images/logo_big.png b/home/static/home/images/logo_big.png similarity index 100% rename from institut/static/images/logo_big.png rename to home/static/home/images/logo_big.png diff --git a/home/templates/home/blocks/person_page_block.html b/home/templates/home/blocks/person_page_block.html index 903facb5e32ce79cac58b1df7100c3f8c6f81844..e547d0148b7ee8c3bd95ce97c3c8fd2671a2cba9 100644 --- a/home/templates/home/blocks/person_page_block.html +++ b/home/templates/home/blocks/person_page_block.html @@ -3,9 +3,9 @@ <div class="flex gap-2"> <a href="{{ page.url }}"> {% if page.position %} - <strong>{{ page.title }}</strong> + <strong>{{ page.full_name }}</strong> {% else %} - {{ page.title }} + {{ page.full_name }} {% endif %} </a> diff --git a/home/templates/home/home_article_page.html b/home/templates/home/home_article_page.html index 4f0b5b74ccf4d37a16ecfacdb3388be657cb464f..b909afedce49271b2caf7c6854786e8097b7cd77 100644 --- a/home/templates/home/home_article_page.html +++ b/home/templates/home/home_article_page.html @@ -1,11 +1,17 @@ {% extends "base.html" %} -{% load static wagtailcore_tags %} +{% load static wagtailcore_tags wagtailimages_tags %} {% block content %} <main class="flex flex-col items-center gap-10 pt-14"> <div class="container"> <h1 class="font-bebas text-4xl">{{ page.title }}</h1> + <small class="text-pii-cyan uppercase font-bold"> + {% for tag in page.tags.all %} + <a href="/clanky?tag={{ tag.name }}">{{ tag.name }}</a> + {% endfor %} + </small> + <div class="flex flex-col gap-1 mt-3 text-gray-700"> <div class="flex gap-2 items-center"> <i class="ico--calendar"></i> @@ -29,6 +35,11 @@ </div> <div class="mt-5 prose max-w-screen-md font-serif"> + {% if page.image %} + {% image page.image original as article_image %} + <img src="{{ article_image.url }}"> + {% endif %} + <p class="mb-3">{{ page.perex }}</p> {{ page.content|richtext }} diff --git a/home/templates/home/home_articles_page.html b/home/templates/home/home_articles_page.html index 7e0af815fae8b97b1a75bc3b905bc7f57b22b849..41d4460e75cd3f35aabe202ad9b79f915cf2cd96 100644 --- a/home/templates/home/home_articles_page.html +++ b/home/templates/home/home_articles_page.html @@ -1,11 +1,22 @@ {% extends "base.html" %} -{% load static wagtailcore_tags %} +{% load static wagtailcore_tags wagtailimages_tags %} {% block content %} <main class="flex flex-col items-center gap-10 pt-14"> <div class="container"> <h1 class="font-bebas text-4xl mb-4">{{ page.title }}</h1> + {% if filtered_tag %} + <div class="text-gray-500 mb-5"> + <span>Filtrovaný štítek: <strong>{{ filtered_tag }}</strong></span> + <br> + <a href="/clanky"> + <i class="ico--chevron-left"></i> + <span class="underline">Zpět na seznam</span> + </a> + </div> + {% endif %} + {% if page.content %} <div class="prose font-serif mb-3"> {{ page.content|richtext }} @@ -13,26 +24,36 @@ {% endif %} <ul class="flex gap-4 flex-wrap"> - {% for article in page.articles %} - <li class="bg-pii-cyan lg:h-96 text-white p-7 lg:w-80"> - <a - class="flex flex-col gap-2 h-full" - href="{{ article.url }}" - > - <small class="text-pii-cyan uppercase font-bold"> - {% for tag in article.tags.all %} - {{ tag.name }} - {% endfor %} - </small> - <h3 class="font-serif text-xl leading-6 font-bold">{{ article.title }}</h3> + {% for article in articles %} + <li class="bg-pii-cyan lg:h-96 text-white w-full lg:w-80 drop-shadow-lg"> + <a href="{{ article.url }}"> + {% if article.image and article.show_image_on_homepage %} + {% image article.image max-400x400 as article_image %} + <img + class="w-full bg-white max-h-48 object-cover" + src="{{ article_image.url }}" + alt="Náhledový obrázek článku" + > + {% endif %} + + <div class="p-7 flex flex-col gap-2 h-full"> + <small class="text-white uppercase font-bold"> + {% for tag in article.tags.all %} + {{ tag.name }} + {% endfor %} + </small> + <h3 class="font-serif text-xl leading-6 font-bold">{{ article.title }}</h3> - <p class="font-serif leading-5 grow"> - {{ article.shortened_perex }} - </p> + {% if not article.image or not article.show_image_on_homepage %} + <p class="font-serif leading-5 grow"> + {{ article.shortened_perex }} + </p> + {% endif %} - <small class="font-serif"> - Přidáno {{ article.date }} - </small> + <small class="font-serif"> + Přidáno {{ article.date }} + </small> + </div> </a> </li> {% endfor %} diff --git a/home/templates/home/home_document_page.html b/home/templates/home/home_document_page.html index 54e9eadd405b0c5e0e16cc4c8f03b676da8a8fcc..7b9db1a3add832c06ccf5b23584b9aeabfff92e6 100644 --- a/home/templates/home/home_document_page.html +++ b/home/templates/home/home_document_page.html @@ -6,20 +6,29 @@ <div class="container"> <h1 class="font-bebas text-4xl">{{ page.title }}</h1> - {% if page.author_page %} - <a - class="flex gap-2 items-center" - href="{{ page.author_page.url }}" - > - <i class="ico--user"></i> - <div>{{ page.author_page.title }}</div> - </a> - {% elif page.author %} - <div class="flex gap-2 items-center"> - <i class="ico--user"></i> - <div>{{ page.author }}</div> - </div> - {% endif %} + <div class="flex flex-col gap-1 mt-3 text-gray-700"> + {% if page.date %} + <div class="flex gap-2 items-center"> + <i class="ico--calendar"></i> + <div>{{ page.date }}</div> + </div> + {% endif %} + + {% if page.author_page %} + <a + class="flex gap-2 items-center" + href="{{ page.author_page.url }}" + > + <i class="ico--user"></i> + <div>{{ page.author_page.title }}</div> + </a> + {% elif page.author %} + <div class="flex gap-2 items-center"> + <i class="ico--user"></i> + <div>{{ page.author }}</div> + </div> + {% endif %} + </div> <div class="mt-5 prose max-w-screen-md font-serif"> {{ page.content|richtext }} diff --git a/home/templates/home/home_page.html b/home/templates/home/home_page.html index e08b5255c8e943dbe23b8975655b996e831634c0..8045a87bbf2dca88eb7dc351ead6ba39b1c3fa66 100644 --- a/home/templates/home/home_page.html +++ b/home/templates/home/home_page.html @@ -1,12 +1,12 @@ {% extends "base.html" %} -{% load static wagtailcore_tags %} +{% load static wagtailcore_tags wagtailimages_tags %} {% block content %} <main class="flex flex-col items-center gap-10 pt-14"> <div class="container flex gap-10"> <figure class="w-32 flex-col gap-2 hidden lg:flex"> <img - src="{% static 'images/logo_big.png' %}" + src="{% static 'home/images/logo_big.png' %}" alt="Logo" > <figcaption class="font-sans leading-4"> @@ -26,25 +26,35 @@ <ul class="flex gap-4 lg:h-96 lg:flex-nowrap flex-wrap"> {% for article in page.latest_articles %} - <li class="bg-white p-7 lg:w-80"> - <a - class="flex flex-col gap-2 h-full" - href="{{ article.url }}" - > - <small class="text-pii-cyan uppercase font-bold"> - {% for tag in article.tags.all %} - {{ tag.name }} - {% endfor %} - </small> - <h3 class="font-serif text-xl leading-6 font-bold">{{ article.title }}</h3> - - <p class="font-serif leading-5 grow"> - {{ article.shortened_perex }} - </p> - - <small class="font-serif"> - Přidáno {{ article.date }} - </small> + <li class="bg-white lg:w-80"> + <a href="{{ article.url }}"> + {% if article.image and article.show_image_on_homepage %} + {% image article.image max-400x400 as article_image %} + <img + class="w-full max-h-48 object-cover" + src="{{ article_image.url }}" + alt="Náhledový obrázek článku" + > + {% endif %} + + <div class="p-7 flex flex-col gap-2 h-full"> + <small class="text-pii-cyan uppercase font-bold"> + {% for tag in article.tags.all %} + {{ tag.name }} + {% endfor %} + </small> + <h3 class="font-serif text-xl leading-6 font-bold">{{ article.title }}</h3> + + {% if not article.image or not article.show_image_on_homepage %} + <p class="font-serif leading-5 grow"> + {{ article.shortened_perex }} + </p> + {% endif %} + + <small class="font-serif"> + Přidáno {{ article.date }} + </small> + </div> </a> </li> {% endfor %} diff --git a/home/templates/home/home_people_page.html b/home/templates/home/home_people_page.html index 6bc7bfdea2e33db69c93869b76c40d3211c55bf6..8a0a8370af0d2ecb6da2ca08db2b945f2d79c534 100644 --- a/home/templates/home/home_people_page.html +++ b/home/templates/home/home_people_page.html @@ -18,9 +18,7 @@ <a class="underline" href="{{ person.url }}" - > - {{ person.title }} - </a> + >{{ person.full_name }}</a>{% if person.position %}<span class="text-gray-500">, {{ person.inline_position }}{% endif %} </li> {% endfor %} </ul> diff --git a/home/templates/home/home_person_page.html b/home/templates/home/home_person_page.html index 7421d6148b2dafee3549b6e0fd508980f07db214..4b6ce46836d8509366ebdd261495d0df01a21fc6 100644 --- a/home/templates/home/home_person_page.html +++ b/home/templates/home/home_person_page.html @@ -11,11 +11,11 @@ <img class="rounded-full w-40 h-40" src="{{ profile_image.url }}" - alt="Profilový obrázek osoby {{ page.title }}" + alt="Profilový obrázek osoby {{ page.full_name }}" > {% endif %} <div class="flex flex-col"> - <h1 class="font-bebas text-4xl">{{ page.title }}</h1> + <h1 class="font-bebas text-4xl">{{ page.full_name }}</h1> {% if page.position %} <div class="text-gray-500 whitespace-pre-line font-serif">{{ page.position }}</div> diff --git a/home/templates/home/home_video_page.html b/home/templates/home/home_video_page.html new file mode 100644 index 0000000000000000000000000000000000000000..c498bf83b151bfb8d450e9fe32110ddf8e125ef1 --- /dev/null +++ b/home/templates/home/home_video_page.html @@ -0,0 +1,50 @@ +{% extends "base.html" %} +{% load static wagtailcore_tags %} + +{% block content %} +<main class="flex flex-col items-center gap-10 pt-14"> + <div class="container"> + <h1 class="font-bebas text-4xl">{{ page.title }}</h1> + + <div class="flex flex-col gap-1 mt-3 text-gray-700"> + {% if page.date %} + <div class="flex gap-2 items-center"> + <i class="ico--calendar"></i> + <div>{{ page.date }}</div> + </div> + {% endif %} + + {% if page.author_page %} + <a + class="flex gap-2 items-center" + href="{{ page.author_page.url }}" + > + <i class="ico--user"></i> + <div>{{ page.author_page.title }}</div> + </a> + {% elif page.author %} + <div class="flex gap-2 items-center"> + <i class="ico--user"></i> + <div>{{ page.author }}</div> + </div> + {% endif %} + </div> + + {% if page.content %} + <div class="mt-5 prose max-w-screen-md font-serif"> + {{ page.content|richtext }} + </div> + {% endif %} + + <div class="mt-5 lg:mt-7 flex justify-center"> + <iframe + class="lg:w-[850px] lg:h-[478px] md:w-[600px] md:h-[366px] w-full h-[200px]" + src="{{ page.embed_url }}" + frameborder="0" + allowfullscreen="" + sandbox="allow-same-origin allow-scripts allow-popups" + ></iframe> + </div> + </div> +</main> +{% endblock content %} diff --git a/home/templates/home/home_videos_page.html b/home/templates/home/home_videos_page.html new file mode 100644 index 0000000000000000000000000000000000000000..183d02f1c2996ebe997fe7567652eeb6559e7e21 --- /dev/null +++ b/home/templates/home/home_videos_page.html @@ -0,0 +1,42 @@ +{% extends "base.html" %} +{% load static wagtailcore_tags wagtailimages_tags %} + +{% block content %} +<main class="flex flex-col items-center gap-10 pt-14"> + <div class="container"> + <h1 class="font-bebas text-4xl mb-4">{{ page.title }}</h1> + + {% if page.content %} + <div class="prose font-serif mb-5"> + {{ page.content|richtext }} + </div> + {% endif %} + + <ul class="flex flex-col gap-5 font-serif"> + {% for video in page.videos %} + <a href="{{ video.url }}"> + <li class=" + flex gap-6 md:flex-row flex-col + {% if not forloop.last %} + border-b border-gray-100 pb-5 + {% endif %} + "> + <div class="drop-shadow-lg bg-white"> + {% image video.thumbnail max-500x500 as thumbnail_image %} + <img + class="md:h-40 md:w-64 w-full max-h-48 object-cover" + src="{{ thumbnail_image.url }}" + alt="Náhledový obrázek videa" + > + </div> + <div class="flex flex-col"> + <h2 class="text-lg font-bold">{{ video.title }}</h2> + <span class="text-gray-500">{{ video.date }}</span> + </div> + </li> + </a> + {% endfor %} + </ul> + </div> +</main> +{% endblock content %} diff --git a/institut/settings/base.py b/institut/settings/base.py index ae65da8ccc749119cc74e6bfe2493159b6c41b45..7330ad8c0a96fe5a050dec7f09e62ac45f291e12 100644 --- a/institut/settings/base.py +++ b/institut/settings/base.py @@ -39,6 +39,7 @@ INSTALLED_APPS = [ "wagtail.contrib.forms", "wagtail.contrib.redirects", "wagtail.contrib.routable_page", + "wagtail.contrib.settings", "wagtail.embeds", "wagtail.sites", "wagtail.users", @@ -84,6 +85,7 @@ TEMPLATES = [ "django.template.context_processors.request", "django.contrib.auth.context_processors.auth", "django.contrib.messages.context_processors.messages", + "wagtail.contrib.settings.context_processors.settings", ], }, }, diff --git a/institut/static/fonts/pirati-ui/style.css b/institut/static/fonts/pirati-ui/style.css deleted file mode 100644 index 9f6005ce97ed2350713e3c67447e0681fde61a1e..0000000000000000000000000000000000000000 --- a/institut/static/fonts/pirati-ui/style.css +++ /dev/null @@ -1,129 +0,0 @@ -@font-face { - font-family: "pirati-ui"; - src: - url("./pirati-ui.eot") format("embedded-opentype"), - url("./pirati-ui.ttf") format("truetype"), - url("./pirati-ui.woff") format("woff"), - url("./pirati-ui.svg") format("svg"); - font-weight: normal; - font-style: normal; - font-display: block; -} - -[class^="ico--"], [class*=" ico--"] { - /* Use !important to prevent issues with browser extensions that change fonts */ - font-family: "pirati-ui" !important; - speak: never; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - - /* Better Font Rendering */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.ico--dots-three-vertical:before { content: "\e940"; } -.ico--dots-three-horizontal:before { content: "\e941"; } -.ico--log-out:before { content: "\e942"; } -.ico--envelope:before { content: "\e908"; } -.ico--pin:before { content: "\e943"; } -.ico--at:before { content: "\e905"; } -.ico--strategy:before { content: "\e932"; } -.ico--pig:before { content: "\e928"; } -.ico--thermometer:before { content: "\e90a"; } -.ico--menu:before { content: "\e933"; } -.ico--chevron-right:before { content: "\e923"; } -.ico--chevron-left:before { content: "\e924"; } -.ico--chevron-down:before { content: "\e925"; } -.ico--chevron-up:before { content: "\e926"; } -.ico--link-horizontal:before { content: "\e910"; } -.ico--beer:before { content: "\e909"; } -.ico--pirati:before { content: "\e90d"; } -.ico--jitsi:before { content: "\e90f"; } -.ico--open-source:before { content: "\e90e"; } -.ico--thumbs-down:before { content: "\e93d"; } -.ico--thumbs-up:before { content: "\e93e"; } -.ico--anchor:before { content: "\e92d"; } -.ico--paw:before { content: "\e90b"; } -.ico--checkmark:before { content: "\e965"; } -.ico--info:before { content: "\e901"; } -.ico--question:before { content: "\e904"; } -.ico--warning:before { content: "\e93f"; } -.ico--code:before { content: "\e94a"; } -.ico--checkbox-unchecked:before { content: "\e94e"; } -.ico--star-full:before { content: "\e94f"; } -.ico--star-empty:before { content: "\e950"; } -.ico--bookmark:before { content: "\e951"; } -.ico--cog:before { content: "\e952"; } -.ico--key:before { content: "\e953"; } -.ico--zoom-in:before { content: "\e954"; } -.ico--zoom-out:before { content: "\e955"; } -.ico--shrink:before { content: "\e956"; } -.ico--printer:before { content: "\e957"; } -.ico--file-openoffice:before { content: "\e958"; } -.ico--user:before { content: "\e959"; } -.ico--file-excel:before { content: "\e95a"; } -.ico--file-word:before { content: "\e95b"; } -.ico--file-pdf:before { content: "\e95c"; } -.ico--file-picture:before { content: "\e95d"; } -.ico--file-blank:before { content: "\e95e"; } -.ico--folder-upload:before { content: "\e95f"; } -.ico--upload:before { content: "\e960"; } -.ico--cloud-upload:before { content: "\e961"; } -.ico--folder-download:before { content: "\e962"; } -.ico--download:before { content: "\e963"; } -.ico--cloud-download:before { content: "\e964"; } -.ico--alarm:before { content: "\e900"; } -.ico--calculator:before { content: "\e911"; } -.ico--facebook-full:before { content: "\e913"; } -.ico--feed:before { content: "\e927"; } -.ico--library:before { content: "\e929"; } -.ico--office:before { content: "\e92a"; } -.ico--attachment:before { content: "\e92b"; } -.ico--enlarge:before { content: "\e92c"; } -.ico--eye-off:before { content: "\e92e"; } -.ico--eye:before { content: "\e92f"; } -.ico--share:before { content: "\e931"; } -.ico--search:before { content: "\e939"; } -.ico--pencil:before { content: "\e93c"; } -.ico--lock-open:before { content: "\e947"; } -.ico--lock:before { content: "\e948"; } -.ico--equalizer:before { content: "\e949"; } -.ico--switch:before { content: "\e94b"; } -.ico--loop:before { content: "\e94c"; } -.ico--refresh:before { content: "\e94d"; } -.ico--bullhorn:before { content: "\e944"; } -.ico--bin:before { content: "\e945"; } -.ico--cross:before { content: "\e937"; } -.ico--checkbox-checked:before { content: "\e938"; } -.ico--globe:before { content: "\e93a"; } -.ico--wikipedia:before { content: "\e93b"; } -.ico--youtube:before { content: "\e936"; } -.ico--users:before { content: "\e934"; } -.ico--book:before { content: "\e935"; } -.ico--bubbles:before { content: "\e930"; } -.ico--map:before { content: "\e914"; } -.ico--compass:before { content: "\e915"; } -.ico--folder-open:before { content: "\e916"; } -.ico--folder:before { content: "\e917"; } -.ico--drawer:before { content: "\e918"; } -.ico--stop:before { content: "\e919"; } -.ico--github:before { content: "\e91a"; } -.ico--clock:before { content: "\e91b"; } -.ico--calendar:before { content: "\e91c"; } -.ico--flickr:before { content: "\e91d"; } -.ico--instagram:before { content: "\e91e"; } -.ico--twitter:before { content: "\e91f"; } -.ico--newspaper:before { content: "\e920"; } -.ico--cart:before { content: "\e921"; } -.ico--home:before { content: "\e922"; } -.ico--link:before { content: "\e912"; } -.ico--power:before { content: "\e90c"; } -.ico--rocket:before { content: "\e946"; } -.ico--location:before { content: "\e906"; } -.ico--phone:before { content: "\e907"; } -.ico--linkedin:before { content: "\e903"; } -.ico--facebook:before { content: "\e902"; } diff --git a/institut/templates/404.html b/institut/templates/404.html index f19ab953b209453ede26407c9223f91fc667e500..2a639b880a82fcca04bb8386b145c41d08b1cea3 100644 --- a/institut/templates/404.html +++ b/institut/templates/404.html @@ -1,11 +1,14 @@ {% extends "base.html" %} - -{% block title %}Page not found{% endblock %} - -{% block body_class %}template-404{% endblock %} +{% load static wagtailcore_tags %} {% block content %} -<h1>Page not found</h1> - -<h2>Sorry, this page could not be found.</h2> -{% endblock %} +<main class="flex flex-col items-center gap-10 pt-14"> + <div class="container"> + <h1 class="font-bebas text-4xl">Stránka nenalezena</h1> + + <p class="prose"> + Stránka byla smazána, nebo se nacházela na staré verzi webu. + Nové články můžeš nalézt <a href="/clanky">zde</a>. + </p> + </div> +</main> diff --git a/institut/templates/500.html b/institut/templates/500.html index 77379e55885132205ee164b3a95a01109122190c..f80f0f89ac686ec1054f5216d23df3da956270c2 100644 --- a/institut/templates/500.html +++ b/institut/templates/500.html @@ -1,13 +1,13 @@ -<!DOCTYPE html> -<html lang="en" dir="ltr"> - <head> - <meta charset="utf-8" /> - <title>Internal server error</title> - <meta name="viewport" content="width=device-width, initial-scale=1" /> - </head> - <body> - <h1>Internal server error</h1> +{% extends "base.html" %} +{% load static wagtailcore_tags %} - <h2>Sorry, there seems to be an error. Please try again soon.</h2> - </body> -</html> +{% block content %} +<main class="flex flex-col items-center gap-10 pt-14"> + <div class="container"> + <h1 class="font-bebas text-4xl">Chyba serveru</h1> + + <p class="prose"> + Nastala chyba z naší strany. Pokud přetrvá, kontaktuj prosím správce webu. + </p> + </div> +</main> diff --git a/institut/templates/base.html b/institut/templates/base.html index d9d96a7b28aa2f2ffc4a155d71f431cd562fbac9..5983fd883cecebda46f928a20c96db4d27c7f96f 100644 --- a/institut/templates/base.html +++ b/institut/templates/base.html @@ -25,17 +25,17 @@ {# Global stylesheets #} <link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}"> - <link rel="stylesheet" type="text/css" href="{% static 'fonts/pirati-ui/style.css' %}"> + <link rel="stylesheet" type="text/css" href="{% static 'home/fonts/pirati-ui/style.css' %}?v=2"> <link rel="stylesheet" - href="{% static 'fonts/bebas-neue/style.css' %}" + href="{% static 'home/fonts/bebas-neue/style.css' %}" > <link rel="stylesheet" - href="{% static 'fonts/source-serif/style.css' %}" + href="{% static 'home/fonts/source-serif/style.css' %}" > - <link rel="icon" type="image/png" href="{% static 'images/logo_big.png' %}"> + <link rel="icon" type="image/png" href="{% static 'home/images/logo_big.png' %}"> {% block extra_css %} {# Override this in templates to add extra stylesheets #} @@ -46,28 +46,36 @@ {% wagtailuserbar %} <nav class="sticky top-0 drop-shadow-lg bg-grey-800 py-8 flex justify-center"> - <div class="flex gap-7 container text-white items-center"> - <a - href="/" - > - <img - class="h-9" - src="{% static 'images/logo.png' %}" - alt="Logo" + <div class="flex justify-between container"> + <div class="flex gap-7 text-white items-center"> + <a + href="/" > - </a> + <img + class="h-9" + src="{% static 'home/images/logo.png' %}" + alt="Logo" + > + </a> - <div - class="w-px h-6 bg-white hidden md:block" - ></div> + <div + class="w-px h-6 bg-white hidden md:block" + ></div> - <div class="gap-4 hidden md:flex"> - <a class="nav__item" href="/clanky">Články</a> - <a class="nav__item" href="/akce">Akce</a> - <a class="nav__item" href="/dokumenty">Dokumenty</a> - <a class="nav__item" href="/#dary">Dary</a> - <a class="nav__item" href="/#kontakty">Kontakty</a> - <a class="nav__item" href="/#lide">Lidé</a> + <div class="gap-4 hidden md:flex"> + <a class="nav__item" href="/clanky">Články</a> + <a class="nav__item" href="/akce">Akce</a> + <a class="nav__item" href="/dokumenty">Dokumenty</a> + <a class="nav__item" href="/lide">Lidé</a> + <a class="nav__item" href="/videa">Videa</a> + <a class="nav__item" href="/#dary">Dary</a> + </div> + </div> + + <div class="md:hidden block"> + <a href="#mobile-menu" class="text-white text-4xl"> + <i class="ico--menu" aria-label="Otevřít menu"></i> + </a> </div> </div> </nav> @@ -78,13 +86,77 @@ <div class="flex justify-center bg-gray-100"> <footer class="container text-gray-500 py-8"> - <a href="/feeds/atom" class="flex gap-2 items-center max-w-max"> - <i class="ico--feed"></i> - <span>RSS</span> - </a> + <div class="flex gap-2 justify-between items-start w-full"> + <div class="flex flex-col gap-3"> + <a href="https://creativecommons.org/licenses/by-sa/4.0/"> + <img + class="h-8 opacity-75" + src="{% static 'home/images/cc-by-sa.png' %}" + alt="Licence CC BY-SA 4.0" + > + </a> + <a href="/#kontakty" class="flex gap-2 items-center max-w-max"> + <i class="ico--envelope"></i> + <span>Kontakty</span> + </a> + </div> + + <div class="flex flex-col"> + {% if settings.home.SocialMediaSettings.mastodon %} + <a href="{{ settings.home.SocialMediaSettings.mastodon }}" class="flex gap-2 items-center h-8"> + <span class="w-6 text-2xl"><i class="ico--mastodon ml-[-0.25rem]"></i></span> + <span>Mastodon</span> + </a> + {% endif %} + {% if settings.home.SocialMediaSettings.twitter %} + <a href="{{ settings.home.SocialMediaSettings.twitter }}" class="flex gap-2 items-center h-8"> + <span class="w-6 text-xl font-bold">𝕏<!-- Fuck you, Twitter --></span> + <span>Twitter</span> + </a> + {% endif %} + {% if settings.home.SocialMediaSettings.linkedin %} + <a href="{{ settings.home.SocialMediaSettings.linkedin }}" class="flex gap-2 items-center h-8"> + <span class="w-6 text-xl font-bold"><i class="ico--linkedin"></i></span> + <span>LinkedIn</span> + </a> + {% endif %} + {% if settings.home.SocialMediaSettings.facebook %} + <a href="{{ settings.home.SocialMediaSettings.facebook }}" class="flex gap-2 items-center h-8"> + <span class="w-6 text-xl font-bold"><i class="ico--facebook"></i></span> + <span>Facebook</span> + </a> + {% endif %} + <a href="/feeds/atom" class="flex gap-2 items-center max-w-max h-8"> + <span class="w-6"><i class="ico--feed"></i></span> + <span>RSS</span> + </a> + </div> + </div> </footer> </div> + <div class="fixed top-0 left-0 p-3 w-full h-full bg-grey-800 z-50 hidden overflow-y-auto target:block text-white" id="mobile-menu"> + <div class="flex flex-col p-3 gap-4"> + <a + role="button" + href="#" + aria-label="Zavřít menu" + title="Zavřít menu" + > + <i class="ico--chevron-left text-white text-2xl"></i> + </a> + + <div class="flex flex-col gap-1 text-2xl"> + <a class="nav__item" href="/clanky">Články</a> + <a class="nav__item" href="/akce">Akce</a> + <a class="nav__item" href="/dokumenty">Dokumenty</a> + <a class="nav__item" href="/lide">Lidé</a> + <a class="nav__item" href="/videa">Videa</a> + <a class="nav__item" href="/#dary">Dary</a> + </div> + </div> + </div> + {% block extra_js %}{% endblock %} </body> </html> diff --git a/requirements/base.txt b/requirements/base.txt index db6cbf12dea5d26931d47e9ccb6257b8f0393b0e..7a996fcb52225acc3278aa89430fe3e53ee0d506 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -2,3 +2,5 @@ dj-database-url==2.0.0 django-environ==0.9.0 psycopg2-binary==2.9.6 wagtail==5.0.2 +django-taggit==4.0.0 +django-modelcluster==6.0