Compare commits
54 Commits
develop-1.
...
radiocampu
Author | SHA1 | Date | |
---|---|---|---|
ae5c888cdc | |||
e3e8007564 | |||
a6383e23e4 | |||
a2e08809cf | |||
58f44150c0 | |||
b1c56173c7 | |||
ff9cfd4a89 | |||
4f28e884ae | |||
f073a9ef77 | |||
1363d22e89 | |||
9a58fba0fd | |||
ccc6ed26fd | |||
56f9ecff1f | |||
a7eb1f4aa3 | |||
97a534e422 | |||
973367ea8f | |||
1df0aa7332 | |||
cae5bdc1d8 | |||
8ecf71b96e | |||
0788d4af37 | |||
05be58b0c1 | |||
529ed25d7f | |||
129360f89d | |||
c102cf936e | |||
fe424e9d9d | |||
2a594821bb | |||
c6fe3a5a34 | |||
cd67b0ac6f | |||
7369d2d8d3 | |||
7a5bb3fb41 | |||
c09ad6c1fd | |||
eb77652569 | |||
3caeab15d9 | |||
92b6bcfae5 | |||
8b55ab5dea | |||
c5ecca2d36 | |||
efac8997f2 | |||
3fa038ddf9 | |||
9a702202e2 | |||
4adacd1f80 | |||
acfd5c49b7 | |||
29b4dc2de5 | |||
4e1c876d62 | |||
86e0b1a7a0 | |||
6615ebe5da | |||
2513d9eff5 | |||
b7429e11f0 | |||
a0be3c0fda | |||
070af46ef1 | |||
a8719bbc80 | |||
1551e1310f | |||
f29cced5f5 | |||
a323901d0e | |||
0a7a615288 |
2
.gitignore
vendored
|
@ -8,3 +8,5 @@ node_modules/
|
|||
|
||||
db.sqlite3
|
||||
instance/settings/settings.py
|
||||
|
||||
/static
|
||||
|
|
|
@ -37,3 +37,4 @@ class EpisodeAdmin(SortableAdminBase, ChildPageAdmin):
|
|||
# readonly_fields = ('parent',)
|
||||
|
||||
inlines = (TrackInline, EpisodeSoundInline, DiffusionInline)
|
||||
ordering = ["-pub_date", "-pk"]
|
||||
|
|
|
@ -181,8 +181,8 @@ class Settings(BaseSettings):
|
|||
"""Allow comments."""
|
||||
|
||||
# ---- bleach
|
||||
ALLOWED_TAGS = [*sanitizer.ALLOWED_TAGS, "br", "p", "h3", "h4", "h5"]
|
||||
ALLOWED_ATTRIBUTES = sanitizer.ALLOWED_ATTRIBUTES
|
||||
ALLOWED_TAGS = [*sanitizer.ALLOWED_TAGS, "br", "p", "hr", "h2", "h3", "h4", "h5", "iframe", "pre"]
|
||||
ALLOWED_ATTRIBUTES = [*sanitizer.ALLOWED_ATTRIBUTES, "src", "width", "height", "frameborder", "href"]
|
||||
ALLOWED_PROTOCOLS = sanitizer.ALLOWED_PROTOCOLS
|
||||
|
||||
|
||||
|
|
|
@ -14,15 +14,27 @@ class EpisodeForm(ChildPageForm):
|
|||
fields = ChildPageForm.Meta.fields
|
||||
|
||||
|
||||
class EpisodeSoundForm(forms.ModelForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
if "instance" in kwargs:
|
||||
"""Limit available sounds."""
|
||||
episode_sounds = kwargs["instance"].episode.episodesound_set.all()
|
||||
self.fields["sound"].queryset = models.Sound.objects.filter(id__in=[x.sound.id for x in episode_sounds])
|
||||
|
||||
|
||||
EpisodeSoundFormSet = modelformset_factory(
|
||||
models.EpisodeSound,
|
||||
form=EpisodeSoundForm,
|
||||
fields=(
|
||||
"id",
|
||||
"position",
|
||||
"episode",
|
||||
"sound",
|
||||
"broadcast",
|
||||
),
|
||||
widgets={
|
||||
"id": forms.HiddenInput(),
|
||||
"broadcast": forms.CheckboxInput(),
|
||||
"episode": forms.HiddenInput(),
|
||||
# "sound": forms.HiddenInput(),
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Aircox 0.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-04-28 18:57+0000\n"
|
||||
"POT-Creation-Date: 2024-11-07 08:18+0100\n"
|
||||
"PO-Revision-Date: 2016-10-10 16:00+02\n"
|
||||
"Last-Translator: Aarys\n"
|
||||
"Language-Team: Aircox's translators team\n"
|
||||
|
@ -22,7 +22,7 @@ msgstr ""
|
|||
msgid "start"
|
||||
msgstr "début"
|
||||
|
||||
#: admin/diffusion.py:31 models/diffusion.py:127 models/program.py:172
|
||||
#: admin/diffusion.py:31 models/diffusion.py:127 models/program.py:182
|
||||
msgid "end"
|
||||
msgstr "fin"
|
||||
|
||||
|
@ -38,7 +38,7 @@ msgstr "Depuis"
|
|||
msgid "Until"
|
||||
msgstr "Jusque"
|
||||
|
||||
#: admin/filters.py:28 models/page.py:289 tests/admin/test_filters.py:53
|
||||
#: admin/filters.py:28 models/page.py:282 tests/admin/test_filters.py:53
|
||||
msgid "None"
|
||||
msgstr "Aucun"
|
||||
|
||||
|
@ -88,7 +88,7 @@ msgstr "temps"
|
|||
msgid "Search"
|
||||
msgstr "Chercher"
|
||||
|
||||
#: filters.py:36 models/episode.py:131
|
||||
#: filters.py:36 models/episode.py:135
|
||||
msgid "Podcast"
|
||||
msgstr "Podcast"
|
||||
|
||||
|
@ -140,31 +140,33 @@ msgstr "éditer les dates de diffusion"
|
|||
msgid "rerun"
|
||||
msgstr "rediffusion"
|
||||
|
||||
#: models/episode.py:60 templates/aircox/dashboard/statistics.html:29
|
||||
#: models/episode.py:61 templates/aircox/dashboard/statistics.html:29
|
||||
msgid "Episode"
|
||||
msgstr "Épisode"
|
||||
|
||||
#: models/episode.py:61
|
||||
#: models/episode.py:62
|
||||
#: templates/aircox/dashboard/widgets/program_episodes.html:4
|
||||
#: templates/aircox/program_form.html:10
|
||||
msgid "Episodes"
|
||||
msgstr "Épisodes"
|
||||
|
||||
#: models/episode.py:118 models/page.py:351 models/track.py:35
|
||||
#: models/episode.py:122 models/page.py:344 models/track.py:35
|
||||
msgid "order"
|
||||
msgstr "ordre"
|
||||
|
||||
#: models/episode.py:120 models/track.py:37
|
||||
#: models/episode.py:124 models/track.py:37
|
||||
msgid "position in the playlist"
|
||||
msgstr "position dans la playlist"
|
||||
|
||||
#: models/episode.py:123 models/sound.py:59
|
||||
#: models/episode.py:127 models/sound.py:59
|
||||
msgid "Broadcast"
|
||||
msgstr "Broadcast"
|
||||
|
||||
#: models/episode.py:125 models/sound.py:61
|
||||
#: models/episode.py:129 models/sound.py:61
|
||||
msgid "The sound is broadcasted on air"
|
||||
msgstr "Le son est radiodiffusé"
|
||||
|
||||
#: models/episode.py:132 templates/aircox/episode_detail.html:16
|
||||
#: models/episode.py:136 templates/aircox/episode_detail.html:16
|
||||
#: templates/aircox/episode_form.html:11 templates/aircox/episode_list.html:8
|
||||
msgid "Podcasts"
|
||||
msgstr "Podcasts"
|
||||
|
@ -213,7 +215,7 @@ msgstr "stop"
|
|||
msgid "other"
|
||||
msgstr "autre"
|
||||
|
||||
#: models/log.py:89 models/page.py:349 models/program.py:55
|
||||
#: models/log.py:89 models/page.py:342 models/program.py:55
|
||||
#: models/station.py:146
|
||||
msgid "station"
|
||||
msgstr "station"
|
||||
|
@ -255,7 +257,7 @@ msgstr "Log"
|
|||
msgid "Logs"
|
||||
msgstr "Logs"
|
||||
|
||||
#: models/page.py:43 models/page.py:352 models/track.py:45
|
||||
#: models/page.py:43 models/page.py:345 models/track.py:45
|
||||
msgid "title"
|
||||
msgstr "titre"
|
||||
|
||||
|
@ -271,7 +273,8 @@ msgstr "Catégorie"
|
|||
msgid "Categories"
|
||||
msgstr "Catégories"
|
||||
|
||||
#: models/page.py:84
|
||||
#: models/page.py:84 templates/aircox/dashboard/widgets/program_episodes.html:6
|
||||
#: views/episode.py:150
|
||||
msgid "draft"
|
||||
msgstr "brouillon"
|
||||
|
||||
|
@ -291,107 +294,107 @@ msgstr "statut"
|
|||
msgid "cover"
|
||||
msgstr "couverture"
|
||||
|
||||
#: models/page.py:103 models/page.py:329
|
||||
#: models/page.py:102 models/page.py:322
|
||||
msgid "content"
|
||||
msgstr "contenu"
|
||||
|
||||
#: models/page.py:202
|
||||
#: models/page.py:195
|
||||
msgid "category"
|
||||
msgstr "catégorie"
|
||||
|
||||
#: models/page.py:207
|
||||
#: models/page.py:200
|
||||
msgid "publication date"
|
||||
msgstr "date de publication"
|
||||
|
||||
#: models/page.py:209
|
||||
#: models/page.py:202
|
||||
msgid "featured"
|
||||
msgstr "en avant"
|
||||
|
||||
#: models/page.py:213
|
||||
#: models/page.py:206
|
||||
msgid "allow comments"
|
||||
msgstr "autoriser les commentaires"
|
||||
|
||||
#: models/page.py:228
|
||||
#: models/page.py:221
|
||||
msgid "Publication"
|
||||
msgstr "Publication"
|
||||
|
||||
#: models/page.py:229
|
||||
#: models/page.py:222
|
||||
msgid "Publications"
|
||||
msgstr "Publications"
|
||||
|
||||
#: models/page.py:290
|
||||
#: models/page.py:283
|
||||
msgid "Home Page"
|
||||
msgstr "Page d'accueil"
|
||||
|
||||
#: models/page.py:291
|
||||
#: models/page.py:284
|
||||
msgid "Timetable"
|
||||
msgstr "Horaires"
|
||||
|
||||
#: models/page.py:292
|
||||
#: models/page.py:285
|
||||
msgid "Programs list"
|
||||
msgstr "Liste des émissions"
|
||||
|
||||
#: models/page.py:293
|
||||
#: models/page.py:286
|
||||
msgid "Episodes list"
|
||||
msgstr "Liste des épisodes"
|
||||
|
||||
#: models/page.py:294
|
||||
#: models/page.py:287
|
||||
msgid "Articles list"
|
||||
msgstr "Liste des articles"
|
||||
|
||||
#: models/page.py:295
|
||||
#: models/page.py:288
|
||||
msgid "Publications list"
|
||||
msgstr "Publications"
|
||||
|
||||
#: models/page.py:296
|
||||
#: models/page.py:289
|
||||
msgid "Podcasts list"
|
||||
msgstr "Podcasts"
|
||||
|
||||
#: models/page.py:299
|
||||
#: models/page.py:292
|
||||
msgid "attach to"
|
||||
msgstr "attacher à"
|
||||
|
||||
#: models/page.py:304
|
||||
#: models/page.py:297
|
||||
msgid "display this page content to related element"
|
||||
msgstr "Afficher le contenu de cette page pour l'élément sélectionné"
|
||||
|
||||
#: models/page.py:322
|
||||
#: models/page.py:315
|
||||
msgid "related page"
|
||||
msgstr "page liée"
|
||||
|
||||
#: models/page.py:326
|
||||
#: models/page.py:319
|
||||
msgid "nickname"
|
||||
msgstr "pseudo"
|
||||
|
||||
#: models/page.py:327
|
||||
#: models/page.py:320
|
||||
msgid "email"
|
||||
msgstr "email"
|
||||
|
||||
#: models/page.py:342
|
||||
#: models/page.py:335
|
||||
msgid "Comment"
|
||||
msgstr "Commentaire"
|
||||
|
||||
#: models/page.py:343 templates/aircox/page_detail.html:51
|
||||
#: models/page.py:336 templates/aircox/page_detail.html:51
|
||||
msgid "Comments"
|
||||
msgstr "Commentaires"
|
||||
|
||||
#: models/page.py:350
|
||||
#: models/page.py:343
|
||||
msgid "menu"
|
||||
msgstr "menu"
|
||||
|
||||
#: models/page.py:353
|
||||
#: models/page.py:346
|
||||
msgid "url"
|
||||
msgstr "url"
|
||||
|
||||
#: models/page.py:358
|
||||
#: models/page.py:351
|
||||
msgid "page"
|
||||
msgstr "page"
|
||||
|
||||
#: models/page.py:364
|
||||
#: models/page.py:357
|
||||
msgid "Menu item"
|
||||
msgstr "Élément du menu"
|
||||
|
||||
#: models/page.py:365
|
||||
#: models/page.py:358
|
||||
msgid "Menu items"
|
||||
msgstr "Éléments de menu"
|
||||
|
||||
|
@ -411,7 +414,7 @@ msgstr "synchroniser"
|
|||
msgid "update later diffusions according to schedule changes"
|
||||
msgstr "met à jour les dates de diffusion à venir lorsque l'horaire change"
|
||||
|
||||
#: models/program.py:66 permissions.py:17
|
||||
#: models/program.py:66 permissions.py:18
|
||||
msgid "editors"
|
||||
msgstr "éditeurs"
|
||||
|
||||
|
@ -420,23 +423,23 @@ msgstr "éditeurs"
|
|||
msgid "Programs"
|
||||
msgstr "Émissions"
|
||||
|
||||
#: models/program.py:157 models/rerun.py:42
|
||||
#: models/program.py:167 models/rerun.py:42
|
||||
msgid "related program"
|
||||
msgstr "émission apparentée"
|
||||
|
||||
#: models/program.py:160
|
||||
#: models/program.py:170
|
||||
msgid "delay"
|
||||
msgstr "délai"
|
||||
|
||||
#: models/program.py:163
|
||||
#: models/program.py:173
|
||||
msgid "minimal delay between two sound plays"
|
||||
msgstr "délai minimum entre deux sons joués"
|
||||
|
||||
#: models/program.py:166
|
||||
#: models/program.py:176
|
||||
msgid "begin"
|
||||
msgstr "début"
|
||||
|
||||
#: models/program.py:169 models/program.py:175
|
||||
#: models/program.py:179 models/program.py:185
|
||||
msgid "used to define a time range this stream is played"
|
||||
msgstr "utilisé pour définir une période durant lequel ce stream est joué"
|
||||
|
||||
|
@ -550,8 +553,6 @@ msgid "downloadable"
|
|||
msgstr "téléchargeable"
|
||||
|
||||
#: models/sound.py:55
|
||||
#, fuzzy
|
||||
#| msgid "sound can be downloaded by visitors"
|
||||
msgid "Sound can be downloaded by website visitors."
|
||||
msgstr "Le son peut être téléchargé par les visiteurs du site."
|
||||
|
||||
|
@ -706,7 +707,7 @@ msgstr "Séparateur de l'éditeur de playlist"
|
|||
msgid " By %(filter_title)s "
|
||||
msgstr "Par %(filter_title)s "
|
||||
|
||||
#: templates/aircox/base.html:70
|
||||
#: templates/aircox/base.html:71
|
||||
msgid "Main menu"
|
||||
msgstr "Menu principal"
|
||||
|
||||
|
@ -735,8 +736,7 @@ msgid "Last Comments"
|
|||
msgstr "Derniers commentaires"
|
||||
|
||||
#: templates/aircox/dashboard/statistics.html:4
|
||||
#: templates/aircox/widgets/nav.html:41 tests/test_admin_site.py:40
|
||||
#: views/admin.py:35
|
||||
#: templates/aircox/widgets/nav.html:41 views/admin.py:35
|
||||
msgid "Statistics"
|
||||
msgstr "Statistiques"
|
||||
|
||||
|
@ -905,53 +905,56 @@ msgid "Post comment"
|
|||
msgstr "Commenter"
|
||||
|
||||
#: templates/aircox/page_form.html:14
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Create a %(model)s"
|
||||
#, python-format
|
||||
msgid "Create a %(model)s"
|
||||
msgstr "Ajouter %(models)s"
|
||||
msgstr "Ajouter un %(model)s"
|
||||
|
||||
#: templates/aircox/page_form.html:28
|
||||
#: templates/aircox/page_form.html:34
|
||||
msgid "Select an image"
|
||||
msgstr "Sélectionner une image"
|
||||
|
||||
#: templates/aircox/page_form.html:44
|
||||
#: templates/aircox/page_form.html:50
|
||||
msgid "Are you sure you want to remove this item from server?"
|
||||
msgstr "Êtes-vous sûr de vouloir retirer ce fichier du serveur?"
|
||||
|
||||
#: templates/aircox/page_form.html:91
|
||||
#: templates/aircox/page_form.html:97
|
||||
msgid "Change cover"
|
||||
msgstr "Changer de couverture"
|
||||
|
||||
#: templates/aircox/page_form.html:125
|
||||
#: templates/aircox/page_form.html:135
|
||||
msgid "Update"
|
||||
msgstr "Mise à jour"
|
||||
|
||||
#: templates/aircox/program_detail.html:24
|
||||
#: templates/aircox/program_detail.html:26
|
||||
#, python-format
|
||||
msgid "Rerun of %(date)s"
|
||||
msgstr "Rediffusion du %(date)s"
|
||||
|
||||
#: templates/aircox/program_detail.html:25
|
||||
#: templates/aircox/program_detail.html:27
|
||||
msgid "Rerun"
|
||||
msgstr "Rediffusion"
|
||||
|
||||
#: templates/aircox/program_detail.html:41
|
||||
#: templates/aircox/program_detail.html:48
|
||||
msgid "Last Episodes"
|
||||
msgstr "Derniers Épisodes"
|
||||
|
||||
#: templates/aircox/program_detail.html:42
|
||||
#: templates/aircox/program_detail.html:49
|
||||
msgid "All episodes"
|
||||
msgstr "Tous les épisodes"
|
||||
|
||||
#: templates/aircox/program_detail.html:49
|
||||
#: templates/aircox/program_detail.html:56
|
||||
msgid "Last Articles"
|
||||
msgstr "Derniers articles"
|
||||
|
||||
#: templates/aircox/program_detail.html:50
|
||||
#: templates/aircox/program_detail.html:57
|
||||
msgid "All articles"
|
||||
msgstr "Tous les articles"
|
||||
|
||||
#: templates/aircox/program_form.html:13
|
||||
#: templates/aircox/program_form.html:12
|
||||
msgid "New episode"
|
||||
msgstr "Nouvel épisode"
|
||||
|
||||
#: templates/aircox/program_form.html:17
|
||||
msgid "Editors"
|
||||
msgstr "Éditeurs"
|
||||
|
||||
|
@ -1021,7 +1024,7 @@ msgstr "Prochain"
|
|||
msgid "Dashboard"
|
||||
msgstr "Tableau de bord"
|
||||
|
||||
#: templates/aircox/widgets/nav.html:47
|
||||
#: templates/aircox/widgets/nav.html:50
|
||||
msgid "Disconnect"
|
||||
msgstr "Déconnexion"
|
||||
|
||||
|
@ -1244,31 +1247,35 @@ msgstr "dashboard/"
|
|||
msgid "dashboard/program/<pk>/"
|
||||
msgstr "dashboard/emissions/<pk>/"
|
||||
|
||||
#: urls.py:130
|
||||
#: urls.py:131
|
||||
msgid "dashboard/program/<pk>/add-episode/"
|
||||
msgstr "dashboard/emissions/<pk>/nouvel-episode/"
|
||||
|
||||
#: urls.py:133
|
||||
msgid "dashboard/episodes/<pk>/"
|
||||
msgstr "dashboard/episodes/<pk>/"
|
||||
|
||||
#: urls.py:131
|
||||
#: urls.py:134
|
||||
msgid "dashboard/statistics/"
|
||||
msgstr "dashboard/statistiques/"
|
||||
|
||||
#: urls.py:132
|
||||
#: urls.py:135
|
||||
msgid "dashboard/statistics/<date:date>/"
|
||||
msgstr "dashboard/statistiques/<date:date>/"
|
||||
|
||||
#: urls.py:133
|
||||
#: urls.py:136
|
||||
msgid "dashboard/users/"
|
||||
msgstr "dashboard/utilisateurs/"
|
||||
|
||||
#: urls.py:135
|
||||
#: urls.py:138
|
||||
msgid "errors/no-station/"
|
||||
msgstr "erreurs/pas-de-station/"
|
||||
|
||||
#: views/page.py:89
|
||||
#: views/page.py:100
|
||||
#, python-brace-format
|
||||
msgid "{model}"
|
||||
msgstr "{model}"
|
||||
|
||||
#: views/page.py:204
|
||||
#: views/page.py:210
|
||||
msgid "comments are not allowed"
|
||||
msgstr "les commentaires ne sont pas autorisés"
|
||||
|
|
|
@ -2,6 +2,7 @@ import os
|
|||
|
||||
from django.conf import settings as d_settings
|
||||
from django.db import models
|
||||
from django.urls import reverse
|
||||
from django.utils.functional import cached_property
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
@ -85,6 +86,9 @@ class Episode(ChildPage):
|
|||
)
|
||||
return super().get_init_kwargs_from(page, title=title, program=page, **kwargs)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse(self.detail_url_name, kwargs={"slug": self.slug})
|
||||
|
||||
|
||||
class EpisodeSoundQuerySet(models.QuerySet):
|
||||
def episode(self, episode):
|
||||
|
|
|
@ -182,8 +182,7 @@ class BasePage(Renderable, models.Model):
|
|||
|
||||
# FIXME: rename
|
||||
class PageQuerySet(BasePageQuerySet):
|
||||
def published(self):
|
||||
return self.filter(status=Page.STATUS_PUBLISHED, pub_date__lte=tz.now())
|
||||
pass
|
||||
|
||||
|
||||
class Page(BasePage):
|
||||
|
@ -241,7 +240,7 @@ class ChildPage(Page):
|
|||
|
||||
@property
|
||||
def display_title(self):
|
||||
if self.is_published:
|
||||
if self.title:
|
||||
return self.title
|
||||
return self.parent and self.parent.title or ""
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ class PagePermissions:
|
|||
"""Format used for permission name (displayed to humans)."""
|
||||
perms_codename_format = "{obj._meta.label_lower}_{obj.pk}_{perm}"
|
||||
"""Format used for permissions codename."""
|
||||
perms_cn_format = "{obj._meta.model_name}_{obj.pk}_{perm}"
|
||||
|
||||
def __init__(self, model):
|
||||
self.model = model
|
||||
|
@ -78,7 +79,7 @@ class PagePermissions:
|
|||
# TODO: avoid multiple database hits
|
||||
for name in infos["perms"]:
|
||||
perm, _ = Permission.objects.get_or_create(
|
||||
codename=self.perms_codename_format.format(obj=obj, perm=name),
|
||||
codename=self.perms_cn_format.format(obj=obj, perm=name),
|
||||
content_type=ContentType.objects.get_for_model(obj),
|
||||
defaults={"name": self.perms_name_format.format(obj=obj, perm=name)},
|
||||
)
|
||||
|
|
|
@ -16,6 +16,7 @@ Usefull context:
|
|||
<meta name="description" content="{{ site.description }}" />
|
||||
<meta name="keywords" content="{{ site.tags }}" />
|
||||
<meta name="generator" content="Aircox" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="icon" href="{% thumbnail site.favicon 32x32 crop %}" />
|
||||
|
||||
{% block assets %}
|
||||
|
@ -75,10 +76,8 @@ Usefull context:
|
|||
{% for item, render in items %}
|
||||
{{ render }}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
{% if user.is_authenticated %}
|
||||
{% include "./widgets/nav.html" %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
</nav>
|
||||
|
|
|
@ -7,9 +7,11 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block page-form-actions %}
|
||||
<a class="button secondary withmargin" href="{% url 'episode-list' parent_slug=object.slug %}">{% trans "Episodes" %}</a>
|
||||
<a class="button secondary withmargin" href="{% url 'program-add-episode' object.pk %}" target="_self">{% trans "New episode" %}</a>
|
||||
{% if object and object.pk and request.user.is_superuser %}
|
||||
<button type="button"
|
||||
class="button secondary"
|
||||
class="button secondary withmargin"
|
||||
@click="$refs['group-users-modal'].open({id: {{ object.editors_group_id }}, name: '{{ object.editors_group.name }}' })">{% translate "Editors" %}</button>
|
||||
|
||||
{{ block.super }}
|
||||
|
|
|
@ -1,11 +1,20 @@
|
|||
{% load aircox i18n %}
|
||||
<div class="dropdown is-hoverable is-right">
|
||||
<div class="dropdown-trigger">
|
||||
<button class="button square" aria-haspopup="true" aria-controls="dropdown-menu" type="button">
|
||||
{% if not user.is_authenticated %}
|
||||
<div class="dropdown-trigger nav-item">
|
||||
<a class="button square" href="{% url 'dashboard' %}" style="background-color:unset;">
|
||||
<span class="icon">
|
||||
<i class="fa-regular fa-user" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="dropdown is-hoverable is-right" style="display:block;">
|
||||
<div class="dropdown-trigger nav-item">
|
||||
<a class="button square" aria-haspopup="true" aria-controls="dropdown-menu" style="background-color:unset;">
|
||||
<span class="icon">
|
||||
<i class="fa fa-user" aria-hidden="true"></i>
|
||||
<i class="fa-regular fa-user" aria-hidden="true"></i>
|
||||
</span>
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
<div class="dropdown-menu" id="dropdown-menu" role="menu" style="z-index:200">
|
||||
<div class="dropdown-content">
|
||||
|
@ -40,11 +49,17 @@
|
|||
{% translate "Statistics" %}
|
||||
</a>
|
||||
{% endblock %}
|
||||
<hr class="dropdown-divider" />
|
||||
{% endif %}
|
||||
<a class="dropdown-item" href="{% url "logout" %}" data-force-reload="1">
|
||||
{% translate "Disconnect" %}
|
||||
</a>
|
||||
{% if user.is_authenticated %}
|
||||
<hr class="dropdown-divider" />
|
||||
<form id="logout" action="{% url 'logout' %}" method="post">
|
||||
{% csrf_token %}
|
||||
<a class="dropdown-item" href="#" type="submit" onclick="document.getElementById('logout').submit();">
|
||||
{% translate "Disconnect" %}
|
||||
</a>
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
|
@ -13,14 +13,14 @@
|
|||
{% with request.resolver_match.view_name as view_name %}
|
||||
|
||||
{% if request.path != object.get_absolute_url %}
|
||||
<a href="{% url view_name|detail_view page.slug %}" target="_self" title="{% translate 'View' %} {{ page }}">
|
||||
<a href="{% url view_name|detail_view page.slug %}" target="_self" title="{% translate 'View' %} {{ page }}" class="button secondary withmargin">
|
||||
<span class="icon">
|
||||
<i class="fa-regular fa-eye"></i>
|
||||
</span>
|
||||
<span>{% translate 'View' %} </span>
|
||||
</a>
|
||||
{% elif can_edit %}
|
||||
<a href="{% url view_name|edit_view page.pk %}" target="_self" title="{% translate 'Edit' %} {{ page }}">
|
||||
<a href="{% url view_name|edit_view page.pk %}" target="_self" title="{% translate 'Edit' %} {{ page }}" class="button secondary withmargin">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</span>
|
||||
|
|
|
@ -181,3 +181,8 @@ def is_checkbox(field):
|
|||
def is_select(field):
|
||||
"""Return True if field is a select."""
|
||||
return isinstance(field.widget, forms.Select)
|
||||
|
||||
|
||||
@register.filter
|
||||
def model_name(instance):
|
||||
return instance.__class__.__name__
|
||||
|
|
|
@ -127,6 +127,9 @@ urls = [
|
|||
# ---- dashboard
|
||||
path(_("dashboard/"), views.dashboard.DashboardView.as_view(), name="dashboard"),
|
||||
path(_("dashboard/program/<pk>/"), views.program.ProgramUpdateView.as_view(), name="program-edit"),
|
||||
path(
|
||||
_("dashboard/program/<pk>/add-episode/"), views.episode.EpisodeCreateView.as_view(), name="program-add-episode"
|
||||
),
|
||||
path(_("dashboard/episodes/<pk>/"), views.episode.EpisodeUpdateView.as_view(), name="episode-edit"),
|
||||
path(_("dashboard/statistics/"), views.dashboard.StatisticsView.as_view(), name="dashboard-statistics"),
|
||||
path(_("dashboard/statistics/<date:date>/"), views.dashboard.StatisticsView.as_view(), name="dashboard-statistics"),
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
from django.contrib.auth.mixins import UserPassesTestMixin
|
||||
from django.http import Http404, HttpResponseRedirect
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.views.generic.base import View
|
||||
|
||||
from aircox.models import Episode, Program, StaticPage, Track
|
||||
from aircox.models import Episode, Program, StaticPage, Sound, Track
|
||||
from aircox import forms, filters, permissions
|
||||
|
||||
from .mixins import VueFormDataMixin
|
||||
|
@ -12,6 +16,7 @@ __all__ = (
|
|||
"EpisodeDetailView",
|
||||
"EpisodeListView",
|
||||
"PodcastListView",
|
||||
"EpisodeCreateView",
|
||||
"EpisodeUpdateView",
|
||||
)
|
||||
|
||||
|
@ -35,6 +40,17 @@ class EpisodeDetailView(PageDetailView):
|
|||
def get_related_url(self):
|
||||
return reverse("episode-list", kwargs={"parent_slug": self.object.parent.slug})
|
||||
|
||||
def get(self, *args, **kwargs):
|
||||
"""When episode is unpublished and user not authorized, redirect to
|
||||
parent page."""
|
||||
try:
|
||||
self.object = super().get_object()
|
||||
except Http404:
|
||||
episode = get_object_or_404(Episode, slug=self.kwargs["slug"])
|
||||
return HttpResponseRedirect(reverse("program-detail", kwargs={"slug": episode.program.slug}))
|
||||
context = self.get_context_data(object=self.object)
|
||||
return self.render_to_response(context)
|
||||
|
||||
|
||||
@attach
|
||||
class EpisodeListView(PageListView):
|
||||
|
@ -55,6 +71,13 @@ class EpisodeUpdateView(UserPassesTestMixin, VueFormDataMixin, PageUpdateView):
|
|||
form_class = forms.EpisodeForm
|
||||
template_name = "aircox/episode_form.html"
|
||||
|
||||
def get_form_kwargs(self, *args, **kwargs):
|
||||
"""Render selected attribute on option 0."""
|
||||
fk = super().get_form_kwargs(*args, **kwargs)
|
||||
if not fk["instance"].status:
|
||||
fk["initial"]["status"] = "0"
|
||||
return fk
|
||||
|
||||
def can_edit(self, obj):
|
||||
return self.test_func()
|
||||
|
||||
|
@ -121,6 +144,14 @@ class EpisodeUpdateView(UserPassesTestMixin, VueFormDataMixin, PageUpdateView):
|
|||
for key in ("soundlist_formset", "tracklist_formset"):
|
||||
formset = kwargs[key]
|
||||
kwargs[f"{key}_data"] = self.get_formset_data(formset, {"episode": self.object.id})
|
||||
|
||||
for i, episode_sound in enumerate(kwargs["soundlist_formset_data"]["initials"]):
|
||||
# annotate sound properties for vuejs
|
||||
sound = Sound.objects.get(id=episode_sound["sound"])
|
||||
kwargs["soundlist_formset_data"]["initials"][i]["name"] = sound.name
|
||||
kwargs["soundlist_formset_data"]["initials"][i]["url"] = sound.file.url
|
||||
kwargs["soundlist_formset_data"]["initials"][i]["delete_attr_name"] = f"sounds-{i}-DELETE"
|
||||
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
|
@ -139,3 +170,17 @@ class EpisodeUpdateView(UserPassesTestMixin, VueFormDataMixin, PageUpdateView):
|
|||
if invalid:
|
||||
return self.get(request, **formsets)
|
||||
return resp
|
||||
|
||||
|
||||
class EpisodeCreateView(UserPassesTestMixin, View):
|
||||
def get(self, request, **kwargs):
|
||||
program = self.get_object()
|
||||
episode = Episode.objects.create(program=program, title="%s (%s)" % (program.title, _("draft")))
|
||||
return HttpResponseRedirect(reverse("episode-edit", kwargs={"pk": episode.pk}))
|
||||
|
||||
def test_func(self):
|
||||
program = self.get_object()
|
||||
return permissions.program.can(self.request.user, "update", program)
|
||||
|
||||
def get_object(self):
|
||||
return get_object_or_404(Program, pk=self.kwargs["pk"])
|
||||
|
|
|
@ -148,7 +148,7 @@ class PageListView(FiltersMixin, BasePageListView):
|
|||
return super().get_filterset(data, query)
|
||||
|
||||
def get_queryset(self):
|
||||
qs = super().get_queryset().select_related("category").order_by("-pub_date")
|
||||
qs = super().get_queryset().select_related("category").order_by("-pub_date", "-pk")
|
||||
cat_ids = self.model.objects.published().values_list("category_id", flat=True)
|
||||
self.categories = Category.objects.filter(id__in=cat_ids)
|
||||
return qs
|
||||
|
|
136
radiocampus/aircox_urls.py
Executable file
|
@ -0,0 +1,136 @@
|
|||
from django.urls import include, path, register_converter
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
from . import models, views, viewsets
|
||||
from .converters import DateConverter, PagePathConverter, WeekConverter
|
||||
|
||||
__all__ = ["api", "urls"]
|
||||
|
||||
|
||||
register_converter(PagePathConverter, "page_path")
|
||||
register_converter(DateConverter, "date")
|
||||
register_converter(WeekConverter, "week")
|
||||
|
||||
|
||||
# urls = [
|
||||
# path('on_air', views.on_air, name='aircox.on_air'),
|
||||
# path('monitor', views.Monitor.as_view(), name='aircox.monitor'),
|
||||
# path('stats', views.StatisticsView.as_view(), name='aircox.stats'),
|
||||
# ]
|
||||
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register("user", viewsets.UserViewSet, basename="user")
|
||||
router.register("group", viewsets.GroupViewSet, basename="group")
|
||||
router.register("usergroup", viewsets.UserGroupViewSet, basename="usergroup")
|
||||
|
||||
router.register("images", viewsets.ImageViewSet, basename="image")
|
||||
router.register("sound", viewsets.SoundViewSet, basename="sound")
|
||||
router.register("track", viewsets.TrackROViewSet, basename="track")
|
||||
router.register("comment", viewsets.CommentViewSet, basename="comment")
|
||||
|
||||
|
||||
api = [
|
||||
path("logs/", views.log.LogListAPIView.as_view(), name="live"),
|
||||
path(
|
||||
"user/settings/",
|
||||
viewsets.UserSettingsViewSet.as_view({"get": "retrieve", "post": "update", "put": "update"}),
|
||||
name="user-settings",
|
||||
),
|
||||
] + router.urls
|
||||
|
||||
|
||||
urls = [
|
||||
path("", views.home.HomeView.as_view(), name="home"),
|
||||
path("api/", include((api, "aircox"), namespace="api")),
|
||||
# ---- ---- objects views
|
||||
# ---- articles
|
||||
path(
|
||||
_("articles/<slug:slug>/"),
|
||||
views.article.ArticleDetailView.as_view(),
|
||||
name="article-detail",
|
||||
),
|
||||
path(
|
||||
_("articles/"),
|
||||
views.article.ArticleListView.as_view(model=models.article.Article),
|
||||
name="article-list",
|
||||
),
|
||||
path(
|
||||
_("articles/c/<slug:category_slug>/"),
|
||||
views.article.ArticleListView.as_view(model=models.article.Article),
|
||||
name="article-list",
|
||||
),
|
||||
# ---- timetable
|
||||
path(_("timetable/"), views.diffusion.TimeTableView.as_view(), name="timetable-list"),
|
||||
path(
|
||||
_("timetable/<date:date>/"),
|
||||
views.diffusion.TimeTableView.as_view(),
|
||||
name="timetable-list",
|
||||
),
|
||||
# ---- pages
|
||||
path(
|
||||
_("publications/"),
|
||||
views.PageListView.as_view(model=models.Page, attach_to_value=models.StaticPage.Target.PAGES),
|
||||
name="page-list",
|
||||
),
|
||||
path(
|
||||
_("publications/c/<slug:category_slug>/"),
|
||||
views.PageListView.as_view(model=models.Page, attach_to_value=models.StaticPage.Target.PAGES),
|
||||
name="page-list",
|
||||
),
|
||||
path(
|
||||
_("pages/<slug:slug>/"),
|
||||
views.BasePageDetailView.as_view(
|
||||
model=models.StaticPage,
|
||||
queryset=models.StaticPage.objects.filter(attach_to__isnull=True),
|
||||
),
|
||||
name="static-page-detail",
|
||||
),
|
||||
path(
|
||||
_("pages/"),
|
||||
views.BasePageListView.as_view(
|
||||
model=models.StaticPage,
|
||||
queryset=models.StaticPage.objects.filter(attach_to__isnull=True),
|
||||
),
|
||||
name="static-page-list",
|
||||
),
|
||||
# ---- programs
|
||||
path(_("programs/"), views.program.ProgramListView.as_view(), name="program-list"),
|
||||
path(_("programs/c/<slug:category_slug>/"), views.program.ProgramListView.as_view(), name="program-list"),
|
||||
path(
|
||||
_("programs/<slug:slug>/"),
|
||||
views.program.ProgramDetailView.as_view(),
|
||||
name="program-detail",
|
||||
),
|
||||
path(_("programs/<slug:parent_slug>/articles/"), views.article.ArticleListView.as_view(), name="article-list"),
|
||||
path(_("programs/<slug:parent_slug>/podcasts/"), views.episode.PodcastListView.as_view(), name="podcast-list"),
|
||||
path(_("programs/<slug:parent_slug>/episodes/"), views.episode.EpisodeListView.as_view(), name="episode-list"),
|
||||
path(
|
||||
_("programs/<slug:parent_slug>/diffusions/"), views.diffusion.DiffusionListView.as_view(), name="diffusion-list"
|
||||
),
|
||||
path(
|
||||
_("programs/<slug:parent_slug>/publications/"),
|
||||
views.PageListView.as_view(model=models.Page, attach_to_value=models.StaticPage.Target.PAGES),
|
||||
name="page-list",
|
||||
),
|
||||
# ---- episodes
|
||||
path(_("programs/episodes/"), views.episode.EpisodeListView.as_view(), name="episode-list"),
|
||||
path(_("programs/episodes/c/<slug:category_slug>/"), views.episode.EpisodeListView.as_view(), name="episode-list"),
|
||||
path(
|
||||
_("programs/episodes/<slug:slug>/"),
|
||||
views.episode.EpisodeDetailView.as_view(),
|
||||
name="episode-detail",
|
||||
),
|
||||
path(_("podcasts/"), views.episode.PodcastListView.as_view(), name="podcast-list"),
|
||||
path(_("podcasts/c/<slug:category_slug>/"), views.episode.PodcastListView.as_view(), name="podcast-list"),
|
||||
# ---- dashboard
|
||||
path(_("dashboard/"), views.dashboard.DashboardView.as_view(), name="dashboard"),
|
||||
path(_("dashboard/program/<pk>/"), views.program.ProgramUpdateView.as_view(), name="program-edit"),
|
||||
path(_("dashboard/episodes/<pk>/"), views.episode.EpisodeUpdateView.as_view(), name="episode-edit"),
|
||||
path(_("dashboard/statistics/"), views.dashboard.StatisticsView.as_view(), name="dashboard-statistics"),
|
||||
path(_("dashboard/statistics/<date:date>/"), views.dashboard.StatisticsView.as_view(), name="dashboard-statistics"),
|
||||
path(_("dashboard/users/"), views.auth.UserListView.as_view(), name="user-list"),
|
||||
# ---- others
|
||||
path(_("errors/no-station/"), views.errors.NoStationErrorView.as_view(), name="errors-no-station"),
|
||||
]
|
|
@ -1,27 +0,0 @@
|
|||
// Enable styling body background while using vue hotreload
|
||||
// Tags with side effect (<script> and <style>) are ignored in client component templates.
|
||||
|
||||
const backgrounds = new Map();
|
||||
backgrounds.set('default', "linear-gradient(#738ef2, white)");
|
||||
backgrounds.set('/', "url(/static/radiocampus/backgrounds/photo-04-20.jpg) no-repeat center center fixed");
|
||||
|
||||
|
||||
export default class BackgroundLoad {
|
||||
constructor () {
|
||||
let url = new URL(document.location)
|
||||
this.path = url.pathname
|
||||
this.update()
|
||||
document.addEventListener("pageLoaded", this.handlePageLoad.bind(this), false)
|
||||
}
|
||||
|
||||
handlePageLoad (e) {
|
||||
this.path = e.detail
|
||||
this.update()
|
||||
}
|
||||
|
||||
update () {
|
||||
let background = backgrounds.get(this.path) || backgrounds.get("default")
|
||||
document.body.style.background = background;
|
||||
document.body.style.backgroundSize = "cover";
|
||||
}
|
||||
}
|
|
@ -108,6 +108,7 @@
|
|||
|
||||
//! If provided call this function instead of adding an item to rows on "+" button click.
|
||||
actionAdd: Function,
|
||||
actionRemove: Function,
|
||||
|
||||
//! If True, columns can be reordered
|
||||
columnsOrderable: Boolean,
|
||||
|
@ -161,14 +162,12 @@
|
|||
this.$emit('move', {...event, seŧ: set_})
|
||||
},
|
||||
|
||||
removeItem(row) {
|
||||
const item = this.items[row]
|
||||
if(item.id) {
|
||||
// TODO
|
||||
}
|
||||
else {
|
||||
this.items.splice(row,1)
|
||||
removeItem(row, item) {
|
||||
if(this.actionRemove) {
|
||||
this.actionRemove(row, item);
|
||||
return
|
||||
}
|
||||
this.items.splice(row,1)
|
||||
},
|
||||
|
||||
//! Load items into set
|
||||
|
|
|
@ -24,7 +24,9 @@
|
|||
<a-form-set ref="formset" :form-data="formData" :labels="labels"
|
||||
:initials="initData.items"
|
||||
order-by="position"
|
||||
:action-add="actionAdd">
|
||||
:action-add="actionAdd"
|
||||
:action-remove="actionRemove"
|
||||
>
|
||||
<template v-for="[name,slot] of rowsSlots" :key="slot"
|
||||
v-slot:[slot]="data">
|
||||
<slot v-if="name != 'row-tail'" :name="name" v-bind="data"/>
|
||||
|
@ -34,6 +36,7 @@
|
|||
<label>{{ item.data.name }}</label><br>
|
||||
<audio controls :src="item.data.url"/>
|
||||
<input type="hidden" :name="inputName" :value="item.data.sound"/>
|
||||
<input type="checkbox" :name="item.data.delete_attr_name" :id="item.data.delete_attr_name" style="display:none;">
|
||||
</template>
|
||||
</a-form-set>
|
||||
</div>
|
||||
|
@ -78,6 +81,12 @@ export default {
|
|||
}
|
||||
this.$refs.formset.set.push(data)
|
||||
},
|
||||
|
||||
actionRemove(row, item) {
|
||||
var ckbox = document.getElementById(item.data.delete_attr_name);
|
||||
ckbox.checked = true;
|
||||
ckbox.parentNode.parentNode.style["display"] = "none";
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import {createApp} from 'vue'
|
||||
|
||||
import PageLoad from './pageLoad'
|
||||
import BackgroundLoad from './backgroundLoad'
|
||||
|
||||
|
||||
/**
|
||||
|
|
BIN
radiocampus/locale/fr/LC_MESSAGES/django.mo
Normal file
239
radiocampus/locale/fr/LC_MESSAGES/django.po
Normal file
|
@ -0,0 +1,239 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-11-12 10:10+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: aircox_urls.py:50
|
||||
msgid "articles/<slug:slug>/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:55
|
||||
msgid "articles/"
|
||||
msgstr "articles/"
|
||||
|
||||
#: aircox_urls.py:60
|
||||
msgid "articles/c/<slug:category_slug>/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:65 urls.py:32
|
||||
msgid "timetable/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:67 urls.py:34
|
||||
msgid "timetable/<date:date>/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:73
|
||||
msgid "publications/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:78
|
||||
msgid "publications/c/<slug:category_slug>/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:83
|
||||
msgid "pages/<slug:slug>/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:91
|
||||
msgid "pages/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:99
|
||||
msgid "programs/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:100
|
||||
msgid "programs/c/<slug:category_slug>/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:102
|
||||
msgid "programs/<slug:slug>/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:106
|
||||
msgid "programs/<slug:parent_slug>/articles/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:107
|
||||
msgid "programs/<slug:parent_slug>/podcasts/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:108
|
||||
msgid "programs/<slug:parent_slug>/episodes/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:110
|
||||
msgid "programs/<slug:parent_slug>/diffusions/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:113
|
||||
msgid "programs/<slug:parent_slug>/publications/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:118
|
||||
msgid "programs/episodes/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:119
|
||||
msgid "programs/episodes/c/<slug:category_slug>/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:121
|
||||
msgid "programs/episodes/<slug:slug>/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:125
|
||||
msgid "podcasts/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:126
|
||||
msgid "podcasts/c/<slug:category_slug>/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:128
|
||||
msgid "dashboard/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:129
|
||||
msgid "dashboard/program/<pk>/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:130
|
||||
msgid "dashboard/episodes/<pk>/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:131
|
||||
msgid "dashboard/statistics/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:132
|
||||
msgid "dashboard/statistics/<date:date>/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:133
|
||||
msgid "dashboard/users/"
|
||||
msgstr ""
|
||||
|
||||
#: aircox_urls.py:135
|
||||
msgid "errors/no-station/"
|
||||
msgstr ""
|
||||
|
||||
#: templates/aircox/episode_list.html:8
|
||||
msgid "Podcasts"
|
||||
msgstr ""
|
||||
|
||||
#: templates/aircox/episode_list.html:38 templates/aircox/home.html:22
|
||||
#: templates/aircox/page_list.html:19 templates/aircox/podcast_list.html:19
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
#: templates/aircox/page_detail.html:43
|
||||
#, python-format
|
||||
msgid "Related %(models)s"
|
||||
msgstr ""
|
||||
|
||||
#: templates/aircox/page_detail.html:54
|
||||
msgid "Comments"
|
||||
msgstr ""
|
||||
|
||||
#: templates/aircox/page_detail.html:64
|
||||
msgid "Post a comment"
|
||||
msgstr ""
|
||||
|
||||
#: templates/aircox/page_detail.html:91
|
||||
msgid "Post comment"
|
||||
msgstr ""
|
||||
|
||||
#: templates/aircox/page_list.html:77
|
||||
msgid "There is nothing published here..."
|
||||
msgstr ""
|
||||
|
||||
#: templates/aircox/program_detail.html:25
|
||||
#, python-format
|
||||
msgid "Rerun of %(date)s"
|
||||
msgstr ""
|
||||
|
||||
#: templates/aircox/program_detail.html:26
|
||||
msgid "Rerun"
|
||||
msgstr ""
|
||||
|
||||
#: templates/aircox/program_detail.html:46
|
||||
msgid "Last Episodes"
|
||||
msgstr "Derniers Épisodes"
|
||||
|
||||
#: templates/aircox/program_detail.html:47
|
||||
msgid "All episodes"
|
||||
msgstr "TOus les épisodes"
|
||||
|
||||
#: templates/aircox/program_detail.html:57
|
||||
msgid "Last Articles"
|
||||
msgstr "Derniers articles"
|
||||
|
||||
#: templates/aircox/program_detail.html:58
|
||||
msgid "All articles"
|
||||
msgstr "Tous les articles"
|
||||
|
||||
#: templates/aircox/widgets/episode.html:35
|
||||
msgid "Live diffusion"
|
||||
msgstr "Diffusion en direct"
|
||||
|
||||
#: templates/aircox/widgets/episode.html:38
|
||||
msgid "Differed diffusion"
|
||||
msgstr "Diffusion diférée"
|
||||
|
||||
#: templates/aircox/widgets/episode.html:65
|
||||
#: templates/aircox/widgets/episode.html:67
|
||||
msgid "Listen"
|
||||
msgstr "Écouter"
|
||||
|
||||
#: templates/aircox/widgets/item.html:26
|
||||
msgid "Draft"
|
||||
msgstr "Brouillon"
|
||||
|
||||
#: templates/aircox/widgets/list_pagination.html:12
|
||||
msgid "pagination"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: Bottom of the list, "previous page"
|
||||
#: templates/aircox/widgets/list_pagination.html:16
|
||||
msgid "first"
|
||||
msgstr "première"
|
||||
|
||||
#: templates/aircox/widgets/list_pagination.html:18
|
||||
#: templates/aircox/widgets/list_pagination.html:19
|
||||
#: templates/aircox/widgets/list_pagination.html:20
|
||||
#| msgid "Previous"
|
||||
msgid "previous"
|
||||
msgstr "précédente"
|
||||
|
||||
#: templates/aircox/widgets/list_pagination.html:31
|
||||
#: templates/aircox/widgets/list_pagination.html:32
|
||||
#: templates/aircox/widgets/list_pagination.html:33
|
||||
msgid "next"
|
||||
msgstr "suivante"
|
||||
|
||||
#: templates/aircox/widgets/list_pagination.html:36
|
||||
#: templates/aircox/widgets/list_pagination.html:37
|
||||
#: templates/aircox/widgets/list_pagination.html:38
|
||||
msgid "last"
|
||||
msgstr "dernière"
|
||||
|
||||
#: templates/aircox/widgets/preview.html:59
|
||||
msgid "Edit"
|
||||
msgstr "Édition"
|
1
radiocampus/static/aircox/admin.css
Normal file
126
radiocampus/static/aircox/admin.js
Normal file
1
radiocampus/static/aircox/admin.js.map
Normal file
2
radiocampus/static/aircox/index.js
Normal file
1
radiocampus/static/aircox/index.js.map
Normal file
1
radiocampus/static/aircox/public.css
Normal file
2
radiocampus/static/aircox/public.js
Normal file
|
@ -0,0 +1,2 @@
|
|||
import{A as p}from"./index.js";import"vue";window.App=p;
|
||||
//# sourceMappingURL=public.js.map
|
1
radiocampus/static/aircox/public.js.map
Normal file
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"public.js","sources":["../../assets/src/public.js"],"sourcesContent":["import \"./styles/public.scss\"\nimport './index.js'\nimport App from './app.js'\n\nwindow.App = App\n"],"names":["App"],"mappings":"2CAIA,OAAO,IAAMA"}
|
|
@ -1,15 +1,11 @@
|
|||
// Enable styling body background while using vue hotreload
|
||||
// Tags with side effect (<script> and <style>) are ignored in client component templates.
|
||||
|
||||
const backgrounds = new Map();
|
||||
//backgrounds.set('default', "linear-gradient(#738ef2, white)");
|
||||
//backgrounds.set('default', "linear-gradient(rgba(115, 142, 242, 0.9), white)");
|
||||
backgrounds.set('default', "white");
|
||||
backgrounds.set('/', "url(/static/radiocampus/backgrounds/photo-04-20.jpg) no-repeat center center fixed");
|
||||
backgrounds.set('/podcasts/', "url(/static/radiocampus/backgrounds/photo-04-20.jpg) no-repeat center center fixed");
|
||||
|
||||
|
||||
class BackgroundLoad {
|
||||
// change background style on load
|
||||
// and also on vuejs pageLoaded event
|
||||
|
||||
constructor () {
|
||||
let url = new URL(document.location);
|
||||
this.path = url.pathname;
|
||||
|
@ -23,14 +19,30 @@ class BackgroundLoad {
|
|||
}
|
||||
|
||||
update () {
|
||||
let background = backgrounds.get(this.path) || backgrounds.get("default");
|
||||
//let target = document.getElementsByClassName("page")[0];
|
||||
let target = document.body;
|
||||
target.style.background = background;
|
||||
//document.body.
|
||||
target.style.backgroundSize = "cover";
|
||||
let theme = this.get_theme_name();
|
||||
document.body.className = theme;
|
||||
|
||||
// home page uses different theme
|
||||
if (this.path == "/") {
|
||||
document.body.classList.add('home');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
get_theme_name () {
|
||||
var currentTime = new Date().getHours();
|
||||
if (document.body) {
|
||||
if (3 <= currentTime && currentTime <15) {
|
||||
return "yellow";
|
||||
}
|
||||
else {
|
||||
return "blue";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
window.onload = function() {
|
||||
let backgroundLoad = new BackgroundLoad();
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 1.9 MiB |
Before Width: | Height: | Size: 1.7 MiB |
BIN
radiocampus/static/radiocampus/backgrounds/degrade-01.jpg
Normal file
After Width: | Height: | Size: 108 KiB |
BIN
radiocampus/static/radiocampus/backgrounds/degrade-02.jpg
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
radiocampus/static/radiocampus/backgrounds/degrade-bleu.jpg
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
radiocampus/static/radiocampus/backgrounds/degrade-jaune.jpg
Normal file
After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 448 KiB |
Before Width: | Height: | Size: 1.8 MiB |
BIN
radiocampus/static/radiocampus/backgrounds/photo-degrade-01.jpg
Normal file
After Width: | Height: | Size: 1.9 MiB |
BIN
radiocampus/static/radiocampus/backgrounds/photo-degrade-02.jpg
Normal file
After Width: | Height: | Size: 1.9 MiB |
BIN
radiocampus/static/radiocampus/images/grand-logo.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
radiocampus/static/radiocampus/logos/Noir/logo-RC-final-01.png
Normal file
After Width: | Height: | Size: 162 KiB |
BIN
radiocampus/static/radiocampus/logos/Noir/logo-RC-final-02.png
Normal file
After Width: | Height: | Size: 156 KiB |
BIN
radiocampus/static/radiocampus/logos/Noir/logo-RC-final-04.png
Normal file
After Width: | Height: | Size: 184 KiB |
BIN
radiocampus/static/radiocampus/logos/Noir/logo-RC-final-05.png
Normal file
After Width: | Height: | Size: 178 KiB |
BIN
radiocampus/static/radiocampus/logos/Noir/logo-RC-final-06.png
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
radiocampus/static/radiocampus/logos/Noir/logo-RC-final-07.png
Normal file
After Width: | Height: | Size: 122 KiB |
BIN
radiocampus/static/radiocampus/logos/Noir/logo-RC-final-08.png
Normal file
After Width: | Height: | Size: 124 KiB |
BIN
radiocampus/static/radiocampus/logos/blanc/logo-RC-final-01.png
Normal file
After Width: | Height: | Size: 154 KiB |
BIN
radiocampus/static/radiocampus/logos/blanc/logo-RC-final-02.png
Normal file
After Width: | Height: | Size: 147 KiB |
BIN
radiocampus/static/radiocampus/logos/blanc/logo-RC-final-03.png
Normal file
After Width: | Height: | Size: 107 KiB |
BIN
radiocampus/static/radiocampus/logos/blanc/logo-RC-final-04.png
Normal file
After Width: | Height: | Size: 174 KiB |
BIN
radiocampus/static/radiocampus/logos/blanc/logo-RC-final-05.png
Normal file
After Width: | Height: | Size: 168 KiB |
BIN
radiocampus/static/radiocampus/logos/blanc/logo-RC-final-06.png
Normal file
After Width: | Height: | Size: 103 KiB |
BIN
radiocampus/static/radiocampus/logos/blanc/logo-RC-final-07.png
Normal file
After Width: | Height: | Size: 118 KiB |
BIN
radiocampus/static/radiocampus/logos/blanc/logo-RC-final-08.png
Normal file
After Width: | Height: | Size: 119 KiB |
BIN
radiocampus/static/radiocampus/logos/logo-RC-blanc1.png
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
radiocampus/static/radiocampus/logos/logo-RC-blanc2.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
radiocampus/static/radiocampus/logos/logo-RC-bleu1.png
Normal file
After Width: | Height: | Size: 126 KiB |
BIN
radiocampus/static/radiocampus/logos/logo-RC-bleu2.png
Normal file
After Width: | Height: | Size: 77 KiB |
250
radiocampus/static/radiocampus/logos/logo-RC-final.svg
Normal file
|
@ -0,0 +1,250 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 1190.6 841.9">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: none;
|
||||
}
|
||||
|
||||
.cls-1, .cls-2 {
|
||||
stroke-width: 0px;
|
||||
}
|
||||
|
||||
.cls-2 {
|
||||
fill: #000;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<g>
|
||||
<g>
|
||||
<path class="cls-2" d="M215.8-748.5c24.6.2,40.9,16,40.9,39.6s-15.6,43-38.9,43h-28.5l59,62.9h-25.2l-56.9-62.9h-12.6v62.9h-18.8v-145.5h81.1ZM153.5-684.1h64c13.3-.2,21.6-9.6,21.6-23.8s-8.3-22.3-21.6-22.5h-64v46.2Z"/>
|
||||
<path class="cls-2" d="M370.4-651.2h-66.3l-19.5,48.1h-19.3l58.4-145.5h26.7l58.4,145.5h-19.3l-19.3-48.1ZM363.2-669.4l-22.7-56.5-3.2-8.1-3.2,8.1-22.7,56.5h51.8Z"/>
|
||||
<path class="cls-2" d="M489.9-748.5c36.8.2,60.1,30.2,60.1,70.8s-19,74.7-61.4,74.7h-60.6v-145.5h61.8ZM446.9-621.2h45.6c25.5,0,39.4-22,39.4-55.4s-16.1-53.5-40.2-53.7h-44.7v109.1h0Z"/>
|
||||
<path class="cls-2" d="M657.2-620.8v17.8h-94.1v-17.8h38.5v-110h-32.1v-17.8h81.3v17.8h-31.5v110h37.9Z"/>
|
||||
</g>
|
||||
<path class="cls-2" d="M369.4-476.5h-66.3l-19.5,48.1h-19.3l58.4-145.5h26.7l58.4,145.5h-19.3l-19.3-48.1ZM362.1-494.7l-22.7-56.5-3.2-8.1-3.2,8.1-22.7,56.5h51.8Z"/>
|
||||
<path class="cls-2" d="M678.2-573.6c24.6.2,40.9,16,40.9,39.6s-15.6,43-38.9,43h-59.9v62.9h-18.8v-145.5h76.8ZM620.2-509.2h59.7c13.3-.2,21.6-9.6,21.6-23.7s-8.3-22.2-21.6-22.5h-59.7v46.2Z"/>
|
||||
<path class="cls-2" d="M849.6-471.1c-.2,29.8-20.5,47.3-54.8,47.3s-57.8-18.2-57.8-45.4v-104.4h19v102.1c.2,18.8,14.1,29.1,37.7,29.1s36.6-10.3,36.8-29.1v-102.1h19v102.5h0Z"/>
|
||||
<path class="cls-2" d="M929.4-442c17.8,0,30.8-6.8,30.8-21.4s-10.3-18.8-19.5-22c-11.8-4.1-21.4-5.6-35.1-9.6-17.1-5.1-29.7-19.7-29.7-40s15.6-42.6,47.7-42.6,38.1,4.1,55,22.5l-12.8,13.1c-15.2-14.8-34.2-17.3-43.2-17.3-17.3,0-27.8,11.1-27.8,23.5s6,19.3,20.1,23.3c7.3,2.1,18.6,5.4,34.4,10.1,23.5,7.1,29.7,21.4,29.7,38.7s-19.9,40-49.6,40-43.2-7.7-56.1-25.9l15.6-11.6c10.7,13.9,24.4,19.3,40.4,19.3Z"/>
|
||||
<path class="cls-2" d="M536.2-272.3v18.2h-103.2v-145.9h18.2v127.7h85Z"/>
|
||||
<path class="cls-2" d="M253.4-296.5c0,26.3-19.1,43-46,42.4l-9-.2h-63.4v-145.6h69.8c27.2,1.1,39,18.2,39,38.5s-3.9,21-9.2,27c10.7,7.3,18.8,20.8,18.8,37.9ZM153.2-340.8h51.8c14.8,0,20.5-8.6,20.5-20.3s-5.6-20.6-24.2-20.6h-48.2v40.9ZM235.2-298c0-13.5-7.3-24.6-24.8-24.6h-57.2v50.1h55c19.7,0,27-10.5,27-25.5Z"/>
|
||||
<g>
|
||||
<path class="cls-2" d="M301.9-381.8c0,10.1-8.2,18.3-18.3,18.3s-18.3-8.2-18.3-18.3,8.2-18.3,18.3-18.3,18.3,8.2,18.3,18.3Z"/>
|
||||
<circle class="cls-2" cx="393.6" cy="-381.8" r="18.3"/>
|
||||
<path class="cls-2" d="M338.6-345.3c0,10.1-8.2,18.3-18.3,18.4-10.1,0-18.3-8.2-18.4-18.3,0-10.1,8.2-18.3,18.3-18.4,10.1,0,18.3,8.2,18.4,18.3Z"/>
|
||||
<circle class="cls-2" cx="356.9" cy="-345.3" r="18.3"/>
|
||||
<path class="cls-2" d="M338.6-308.6c0,10.1-8.2,18.3-18.3,18.4-10.1,0-18.3-8.2-18.4-18.3,0-10.1,8.2-18.3,18.3-18.4,10.1,0,18.3,8.2,18.4,18.3Z"/>
|
||||
<circle class="cls-2" cx="357" cy="-308.7" r="18.3"/>
|
||||
<path class="cls-2" d="M301.9-271.8c0,10.1-8.2,18.3-18.3,18.3s-18.3-8.2-18.3-18.3,8.2-18.3,18.3-18.3c10.1,0,18.3,8.2,18.3,18.3Z"/>
|
||||
<circle class="cls-2" cx="393.6" cy="-271.8" r="18.3"/>
|
||||
</g>
|
||||
<polygon class="cls-2" points="428.4 -573.9 428.4 -428.6 439 -428.6 439 -557.1 480.8 -557.1 480.8 -428.6 501.2 -428.6 501.2 -557.1 544.2 -557.1 544.2 -428.6 569.8 -428.6 569.8 -573.9 428.4 -573.9"/>
|
||||
<polygon class="cls-2" points="253.5 -428.2 172.8 -428.2 172.8 -463.1 134.9 -463.1 134.9 -549.4 173.3 -549.4 173.3 -574.4 216.5 -574.4 216.5 -557.4 190.3 -557.4 190.3 -532.4 151.9 -532.4 151.9 -480.1 189.8 -480.1 189.8 -445.2 253.5 -445.2 253.5 -428.2"/>
|
||||
<path class="cls-2" d="M809.9-693.8c6.1,4.5,12.4,8.6,18.8,12.5v-21.3c-2.8-1.8-5.5-3.7-8.1-5.7-16-11.8-29.8-25.3-41.5-40.3h-22.2c14.1,20.9,31.9,39.2,53,54.8Z"/>
|
||||
<path class="cls-2" d="M695.8-655.8c-7.1-5.4-14.5-10.4-22.1-14.9v21.3c3.8,2.5,7.5,5.2,11.2,7.9,14.8,11.3,27.8,24.1,39,38.4h22.3c-13.7-20-30.6-37.7-50.4-52.8Z"/>
|
||||
<path class="cls-2" d="M828.7-648.7v-21.6c-3.8,2.4-7.5,4.8-11.1,7.4-24.3,17-44.8,37.5-60.5,60h22.5c13.7-17.2,30.4-32.7,49.1-45.7Z"/>
|
||||
<path class="cls-2" d="M746.5-748.7h-22.1c-13.9,18.4-31.1,34.2-50.8,47v21.1c29.4-17.1,54.4-40.3,72.8-68.1Z"/>
|
||||
<path class="cls-2" d="M760-347.3c0,69.6-16.9,97.2-53.1,97.2s-39.4-10.3-47.7-25.7l14.1-10.1c6.6,12.2,17.1,18,34.5,18s32.3-12.4,34.5-44.3c-9,7.9-21.2,13.1-34.7,13.1-31.7,0-52.2-24-52.2-48.2s20.8-56.9,52.2-56.9c31.3,0,52.4,24.2,52.4,56.9ZM743.8-350.5c0-23.1-17.6-34.2-36.2-34.2s-34.7,11.1-34.7,34.2,14.8,33.4,34.7,33.4c20.8,0,36.2-13.5,36.2-33.4Z"/>
|
||||
<path class="cls-2" d="M875.6-272.8v18.4h-92.5v-18.4c57.4-42.6,71.7-60.8,71.7-83.7s-11.3-28.9-31.7-28.9-33,11.3-26.8,39.2l-17.1,7.9c-9.2-30.2,4.7-65.9,45.6-65.9s47.3,18.2,47.3,43.9-21,59.5-62.9,87.6h66.4Z"/>
|
||||
<path class="cls-2" d="M907.7-276.4v22h-22v-22h22Z"/>
|
||||
<path class="cls-2" d="M960.6-399.9h18.4v145.8h-18.4v-122.7l-39,37.9v-22.7l39-38.3Z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="cls-2" d="M1448.4-1634.5c24.6.2,40.9,16,40.9,39.6s-15.6,43-38.9,43h-28.5l59,62.9h-25.2l-56.9-62.9h-12.6v62.9h-18.8v-145.5h81.1ZM1386.1-1570.1h64c13.3-.2,21.6-9.6,21.6-23.8s-8.3-22.3-21.6-22.5h-64v46.2Z"/>
|
||||
<path class="cls-2" d="M1603-1537.1h-66.3l-19.5,48.1h-19.3l58.4-145.5h26.7l58.4,145.5h-19.3l-19.3-48.1ZM1595.7-1555.3l-22.7-56.5-3.2-8.1-3.2,8.1-22.7,56.5h51.8Z"/>
|
||||
<path class="cls-2" d="M1722.4-1634.5c36.8.2,60.1,30.2,60.1,70.8s-19,74.7-61.4,74.7h-60.6v-145.5h61.8ZM1679.4-1507.2h45.6c25.5,0,39.4-22,39.4-55.4s-16.1-53.5-40.2-53.7h-44.7v109.1h0Z"/>
|
||||
<path class="cls-2" d="M1889.8-1506.7v17.8h-94.1v-17.8h38.5v-110h-32.1v-17.8h81.3v17.8h-31.5v110h37.9Z"/>
|
||||
<path class="cls-2" d="M1602-1362.4h-66.3l-19.5,48.1h-19.3l58.4-145.5h26.7l58.4,145.5h-19.3l-19.3-48.1ZM1594.7-1380.6l-22.7-56.5-3.2-8.1-3.2,8.1-22.7,56.5h51.8Z"/>
|
||||
<path class="cls-2" d="M1910.8-1459.6c24.6.2,40.9,16,40.9,39.6s-15.6,43-38.9,43h-59.9v62.9h-18.8v-145.5h76.8ZM1852.8-1395.2h59.7c13.3-.2,21.6-9.6,21.6-23.8s-8.3-22.2-21.6-22.5h-59.7v46.2Z"/>
|
||||
<path class="cls-2" d="M2082.2-1357.1c-.2,29.7-20.5,47.3-54.8,47.3s-57.8-18.2-57.8-45.4v-104.4h19v102.1c.2,18.8,14.1,29.1,37.7,29.1s36.6-10.3,36.8-29.1v-102.1h19v102.5h0Z"/>
|
||||
<path class="cls-2" d="M2162-1328c17.8,0,30.8-6.8,30.8-21.4s-10.3-18.8-19.5-22c-11.8-4.1-21.4-5.6-35.1-9.6-17.1-5.1-29.7-19.7-29.7-40s15.6-42.6,47.7-42.6,38.1,4.1,55,22.5l-12.8,13.1c-15.2-14.8-34.2-17.3-43.2-17.3-17.3,0-27.8,11.1-27.8,23.5s6,19.3,20.1,23.3c7.3,2.1,18.6,5.4,34.4,10.1,23.5,7.1,29.7,21.4,29.7,38.7s-19.9,40-49.6,40-43.2-7.7-56.1-25.9l15.6-11.6c10.7,13.9,24.4,19.3,40.4,19.3Z"/>
|
||||
<polygon class="cls-2" points="1660.9 -1459.9 1660.9 -1314.5 1671.6 -1314.5 1671.6 -1443.1 1713.3 -1443.1 1713.3 -1314.5 1733.8 -1314.5 1733.8 -1443.1 1776.7 -1443.1 1776.7 -1314.5 1802.4 -1314.5 1802.4 -1459.9 1660.9 -1459.9"/>
|
||||
<polygon class="cls-2" points="1486.1 -1314.1 1405.3 -1314.1 1405.3 -1349.1 1367.5 -1349.1 1367.5 -1435.3 1405.9 -1435.3 1405.9 -1460.4 1449 -1460.4 1449 -1443.4 1422.9 -1443.4 1422.9 -1418.3 1384.5 -1418.3 1384.5 -1366.1 1422.3 -1366.1 1422.3 -1331.1 1486.1 -1331.1 1486.1 -1314.1"/>
|
||||
<path class="cls-2" d="M2050.1-1548.9c-24.3,17-44.8,37.5-60.5,60h22.5c13.7-17.2,30.4-32.7,49.1-45.7v-21.6c-3.8,2.4-7.5,4.8-11.1,7.4Z"/>
|
||||
<path class="cls-2" d="M2042.5-1579.8c6.1,4.5,12.4,8.7,18.8,12.6v-21.3c-2.8-1.8-5.5-3.7-8.1-5.7-16-11.8-29.8-25.3-41.5-40.3h-22.2c14.1,20.9,31.9,39.2,53,54.8Z"/>
|
||||
<path class="cls-2" d="M1979.1-1634.6h-22.1c-13.9,18.4-31.1,34.2-50.8,47v21.1c29.5-17.1,54.4-40.3,72.9-68.1Z"/>
|
||||
<path class="cls-2" d="M1928.3-1541.7c-7.1-5.4-14.5-10.3-22.1-14.9v21.3c3.8,2.5,7.5,5.2,11.2,7.9,14.8,11.3,27.8,24.1,39,38.4h22.3c-13.7-20-30.6-37.7-50.4-52.8Z"/>
|
||||
<path class="cls-2" d="M1408.8-1192.9c0,10.2-8.2,18.5-18.5,18.5-10.2,0-18.5-8.2-18.5-18.5,0-10.2,8.2-18.5,18.5-18.5,10.2,0,18.5,8.3,18.5,18.5Z"/>
|
||||
<path class="cls-2" d="M1445.8-1193c0,10.2-8.2,18.5-18.5,18.5-10.2,0-18.5-8.2-18.5-18.5,0-10.2,8.3-18.5,18.5-18.5,10.2,0,18.5,8.3,18.5,18.5Z"/>
|
||||
<path class="cls-2" d="M1408.8-1155.9c0,10.2-8.3,18.5-18.5,18.5-10.2,0-18.5-8.2-18.5-18.5,0-10.2,8.3-18.5,18.5-18.5,10.2,0,18.5,8.2,18.5,18.5Z"/>
|
||||
<path class="cls-2" d="M1445.8-1156c0,10.2-8.3,18.5-18.5,18.5-10.2,0-18.5-8.2-18.5-18.5,0-10.2,8.2-18.5,18.5-18.5,10.2,0,18.5,8.2,18.5,18.5Z"/>
|
||||
<path class="cls-2" d="M1584.4-1182.4c0,26.3-19,43-46,42.4l-9-.2h-63.3v-145.5h69.8c27.2,1.1,38.9,18.2,38.9,38.5s-3.9,21-9.2,27c10.7,7.3,18.8,20.8,18.8,37.9ZM1484.2-1226.7h51.8c14.8,0,20.5-8.6,20.5-20.3s-5.6-20.5-24.2-20.5h-48.2v40.9ZM1566.2-1183.9c0-13.5-7.3-24.6-24.8-24.6h-57.1v50.1h55c19.7,0,27-10.5,27-25.5Z"/>
|
||||
<path class="cls-2" d="M1620.8-1267.5v40.9h77.2v18.2h-77.2v50.1h85.8v18.2h-104v-145.5h104v18.2h-85.8Z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="cls-2" d="M1448.8-748.7c24.6.2,40.9,16,40.9,39.6s-15.6,43-38.9,43h-28.5l59,62.9h-25.2l-56.9-62.9h-12.6v62.9h-18.8v-145.5h81.1ZM1386.6-684.3h64c13.3-.2,21.6-9.6,21.6-23.8s-8.3-22.3-21.6-22.5h-64v46.2Z"/>
|
||||
<path class="cls-2" d="M1603.5-651.4h-66.3l-19.5,48.1h-19.3l58.4-145.5h26.7l58.4,145.5h-19.3l-19.3-48.1ZM1596.2-669.5l-22.7-56.5-3.2-8.1-3.2,8.1-22.7,56.5h51.8Z"/>
|
||||
<path class="cls-2" d="M1722.9-748.7c36.8.2,60.1,30.2,60.1,70.8s-19,74.7-61.4,74.7h-60.6v-145.5h61.8ZM1679.9-621.4h45.6c25.5,0,39.4-22,39.4-55.4s-16.1-53.5-40.2-53.7h-44.7v109.1h0Z"/>
|
||||
<path class="cls-2" d="M1890.3-621v17.8h-94.1v-17.8h38.5v-110h-32.1v-17.8h81.3v17.8h-31.5v110h37.9Z"/>
|
||||
<path class="cls-2" d="M1602.5-476.7h-66.3l-19.5,48.1h-19.3l58.4-145.5h26.7l58.4,145.5h-19.3l-19.3-48.1ZM1595.2-494.9l-22.7-56.5-3.2-8.1-3.2,8.1-22.7,56.5h51.8Z"/>
|
||||
<path class="cls-2" d="M1911.3-573.8c24.6.2,40.9,16,40.9,39.6s-15.6,43-38.9,43h-59.9v62.9h-18.8v-145.5h76.8ZM1853.3-509.4h59.7c13.3-.2,21.6-9.6,21.6-23.8s-8.3-22.2-21.6-22.5h-59.7v46.2Z"/>
|
||||
<path class="cls-2" d="M2082.6-471.3c-.2,29.7-20.5,47.3-54.8,47.3s-57.8-18.2-57.8-45.4v-104.4h19v102.1c.2,18.8,14.1,29.1,37.7,29.1s36.6-10.3,36.8-29.1v-102.1h19v102.5h0Z"/>
|
||||
<path class="cls-2" d="M2162.5-442.2c17.8,0,30.8-6.8,30.8-21.4s-10.3-18.8-19.5-22c-11.8-4.1-21.4-5.6-35.1-9.6-17.1-5.1-29.7-19.7-29.7-40s15.6-42.6,47.7-42.6,38.1,4.1,55,22.5l-12.8,13.1c-15.2-14.8-34.2-17.3-43.2-17.3-17.3,0-27.8,11.1-27.8,23.5s6,19.3,20.1,23.3c7.3,2.1,18.6,5.4,34.4,10.1,23.5,7.1,29.7,21.4,29.7,38.7s-19.9,40-49.6,40-43.2-7.7-56.1-25.9l15.6-11.6c10.7,13.9,24.4,19.3,40.4,19.3Z"/>
|
||||
<polygon class="cls-2" points="1661.4 -574.1 1661.4 -428.8 1672.1 -428.8 1672.1 -557.3 1713.8 -557.3 1713.8 -428.8 1734.2 -428.8 1734.2 -557.3 1777.2 -557.3 1777.2 -428.8 1802.8 -428.8 1802.8 -574.1 1661.4 -574.1"/>
|
||||
<polygon class="cls-2" points="1486.6 -428.4 1405.8 -428.4 1405.8 -463.3 1368 -463.3 1368 -549.6 1406.4 -549.6 1406.4 -574.6 1449.5 -574.6 1449.5 -557.6 1423.4 -557.6 1423.4 -532.6 1385 -532.6 1385 -480.3 1422.8 -480.3 1422.8 -445.4 1486.6 -445.4 1486.6 -428.4"/>
|
||||
<path class="cls-2" d="M2050.6-663.1c-24.3,17-44.8,37.5-60.5,60h22.5c13.7-17.2,30.4-32.7,49.1-45.7v-21.6c-3.8,2.4-7.5,4.8-11.1,7.4Z"/>
|
||||
<path class="cls-2" d="M2042.9-694c6.1,4.5,12.4,8.7,18.8,12.6v-21.3c-2.8-1.8-5.5-3.7-8.1-5.7-16-11.8-29.8-25.3-41.5-40.3h-22.2c14.1,20.9,31.9,39.2,53,54.8Z"/>
|
||||
<path class="cls-2" d="M1979.6-748.8h-22.1c-13.9,18.4-31.1,34.2-50.8,47v21.1c29.5-17.1,54.4-40.3,72.9-68.1Z"/>
|
||||
<path class="cls-2" d="M1928.8-655.9c-7.1-5.4-14.5-10.3-22.1-14.9v21.3c3.8,2.5,7.5,5.2,11.2,7.9,14.8,11.3,27.8,24.1,39,38.4h22.3c-13.7-20-30.6-37.7-50.4-52.8Z"/>
|
||||
<g>
|
||||
<path class="cls-2" d="M1409.3-307.2c0,10.2-8.2,18.5-18.5,18.5-10.2,0-18.5-8.2-18.5-18.5,0-10.2,8.3-18.5,18.5-18.5,10.2,0,18.5,8.3,18.5,18.5Z"/>
|
||||
<path class="cls-2" d="M1446.3-307.2c0,10.2-8.2,18.5-18.5,18.5-10.2,0-18.5-8.2-18.5-18.5,0-10.2,8.3-18.5,18.5-18.5,10.2,0,18.5,8.2,18.5,18.5Z"/>
|
||||
<path class="cls-2" d="M1409.3-270.2c0,10.2-8.3,18.5-18.5,18.5-10.2,0-18.5-8.2-18.5-18.5s8.2-18.5,18.5-18.5c10.2,0,18.5,8.2,18.5,18.5Z"/>
|
||||
<circle class="cls-2" cx="1427.8" cy="-270.2" r="18.5"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="cls-2" d="M1584.9-296.6c0,26.3-19,43-46,42.4l-9-.2h-63.3v-145.5h69.8c27.2,1.1,38.9,18.2,38.9,38.5s-3.9,21-9.2,27c10.7,7.3,18.8,20.8,18.8,37.9ZM1484.7-340.9h51.8c14.8,0,20.5-8.6,20.5-20.3s-5.6-20.5-24.2-20.5h-48.1v40.9ZM1566.7-298.1c0-13.5-7.3-24.6-24.8-24.6h-57.1v50.1h55c19.7,0,27-10.5,27-25.5Z"/>
|
||||
<path class="cls-2" d="M1621.3-381.8v40.9h77.2v18.2h-77.2v50.1h85.8v18.2h-104v-145.5h104v18.2h-85.8Z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="cls-2" d="M1993.6-346.7c0,69.6-16.9,97.2-53.1,97.2s-39.4-10.3-47.7-25.7l14.1-10.1c6.6,12.2,17.1,18,34.5,18s32.3-12.4,34.5-44.3c-9,7.9-21.2,13.1-34.7,13.1-31.7,0-52.2-24-52.2-48.2s20.8-56.9,52.2-56.9c31.3,0,52.4,24.2,52.4,56.9ZM1977.4-349.9c0-23.1-17.6-34.3-36.2-34.3s-34.7,11.1-34.7,34.3,14.8,33.4,34.7,33.4c20.8,0,36.2-13.5,36.2-33.4Z"/>
|
||||
<path class="cls-2" d="M2109.2-272.2v18.4h-92.5v-18.4c57.4-42.6,71.7-60.8,71.7-83.7s-11.3-28.9-31.7-28.9-33,11.3-26.8,39.2l-17.1,7.9c-9.2-30.2,4.7-65.9,45.6-65.9s47.3,18.2,47.3,43.9-21,59.5-62.9,87.6h66.4Z"/>
|
||||
<path class="cls-2" d="M2141.3-275.8v22h-22v-22h22Z"/>
|
||||
<path class="cls-2" d="M2194.2-399.3h18.4v145.8h-18.4v-122.7l-39,37.9v-22.7l39-38.3Z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<path class="cls-2" d="M3011.2-678.5c.2-.1.4-.2.6-.4h-1.2c.2.1.4.2.6.4Z"/>
|
||||
<path class="cls-2" d="M2744.4-663.2c-24.3,17-44.8,37.5-60.5,60h22.5c13.7-17.2,30.4-32.7,49.1-45.7v-21.6c-3.8,2.4-7.5,4.8-11.1,7.4Z"/>
|
||||
<path class="cls-2" d="M2736.8-694.1c6.1,4.5,12.4,8.7,18.8,12.6v-21.3c-2.8-1.8-5.5-3.7-8.1-5.7-16-11.8-29.8-25.3-41.5-40.3h-22.2c14.1,20.9,31.9,39.2,53,54.8Z"/>
|
||||
<path class="cls-2" d="M2673.4-748.9h-22.1c-13.9,18.4-31.1,34.2-50.8,47v21.1c29.5-17.1,54.4-40.3,72.8-68.1Z"/>
|
||||
<path class="cls-2" d="M2622.6-656c-7.1-5.4-14.5-10.3-22.1-14.9v21.3c3.8,2.5,7.5,5.2,11.2,7.9,14.8,11.3,27.8,24.1,39,38.4h22.3c-13.7-20-30.6-37.7-50.4-52.8Z"/>
|
||||
<polygon class="cls-2" points="2912.4 -602.8 2831.7 -602.8 2831.7 -637.7 2793.8 -637.7 2793.8 -723.9 2832.2 -723.9 2832.2 -749 2875.4 -749 2875.4 -732 2849.2 -732 2849.2 -706.9 2810.8 -706.9 2810.8 -654.7 2848.7 -654.7 2848.7 -619.8 2912.4 -619.8 2912.4 -602.8"/>
|
||||
<polygon class="cls-2" points="2944.5 -748 2944.5 -602.6 2955.1 -602.6 2955.1 -731.2 2996.9 -731.2 2996.9 -602.6 3017.3 -602.6 3017.3 -731.2 3060.3 -731.2 3060.3 -602.6 3085.9 -602.6 3085.9 -748 2944.5 -748"/>
|
||||
<path class="cls-2" d="M3162.6-733.1c0,10.5-8.5,19.1-19.1,19.1s-19.1-8.5-19.1-19.1,8.5-19.1,19.1-19.1,19.1,8.5,19.1,19.1Z"/>
|
||||
<circle class="cls-2" cx="3258" cy="-733.1" r="19.1"/>
|
||||
<path class="cls-2" d="M3200.7-695.1c0,10.5-8.5,19.1-19,19.1s-19.1-8.5-19.1-19c0-10.5,8.5-19.1,19-19.1,10.5,0,19.1,8.5,19.1,19Z"/>
|
||||
<circle class="cls-2" cx="3219.8" cy="-695.1" r="19.1"/>
|
||||
<path class="cls-2" d="M3200.8-656.9c0,10.5-8.5,19.1-19,19.1-10.5,0-19.1-8.5-19.1-19s8.5-19.1,19-19.1,19.1,8.5,19.1,19Z"/>
|
||||
<circle class="cls-2" cx="3219.9" cy="-656.9" r="19.1"/>
|
||||
<path class="cls-2" d="M3162.6-618.6c0,10.5-8.5,19.1-19.1,19.1s-19.1-8.5-19.1-19.1,8.5-19.1,19.1-19.1,19.1,8.5,19.1,19.1Z"/>
|
||||
<circle class="cls-2" cx="3258" cy="-618.6" r="19.1"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="cls-2" d="M2765-1536.3c-27.7,19.4-51.1,42.7-69,68.4h25.6c15.6-19.6,34.6-37.3,56-52.1v-24.7c-4.3,2.7-8.5,5.5-12.7,8.4Z"/>
|
||||
<path class="cls-2" d="M2756.2-1571.5c6.9,5.1,14.1,9.9,21.5,14.3v-24.3c-3.1-2.1-6.2-4.3-9.3-6.5-18.2-13.4-34-28.8-47.3-46h-25.3c16.1,23.8,36.3,44.8,60.4,62.5Z"/>
|
||||
<path class="cls-2" d="M2683.9-1634h-25.2c-15.9,20.9-35.5,39-57.9,53.6v24.1c33.6-19.5,62-45.9,83.1-77.7Z"/>
|
||||
<path class="cls-2" d="M2626-1528.1c-8.1-6.1-16.5-11.8-25.2-17v24.3c4.3,2.9,8.6,5.9,12.7,9.1,16.9,12.8,31.7,27.5,44.5,43.8h25.4c-15.7-22.8-34.9-43-57.5-60.2Z"/>
|
||||
<polygon class="cls-2" points="2951.8 -1466.7 2859.7 -1466.7 2859.7 -1506.5 2816.6 -1506.5 2816.6 -1604.9 2860.3 -1604.9 2860.3 -1633.5 2909.6 -1633.5 2909.6 -1614.1 2879.7 -1614.1 2879.7 -1585.5 2835.9 -1585.5 2835.9 -1525.9 2879.1 -1525.9 2879.1 -1486.1 2951.8 -1486.1 2951.8 -1466.7"/>
|
||||
<polygon class="cls-2" points="2600.8 -1442.6 2600.8 -1276.8 2612.9 -1276.8 2612.9 -1423.4 2660.5 -1423.4 2660.5 -1276.8 2683.9 -1276.8 2683.9 -1423.4 2732.9 -1423.4 2732.9 -1276.8 2762.1 -1276.8 2762.1 -1442.6 2600.8 -1442.6"/>
|
||||
<path class="cls-2" d="M2854.6-1421c0,11.5-9.4,20.9-20.9,20.9s-20.9-9.4-20.9-20.9,9.4-20.9,20.9-20.9c11.5,0,20.9,9.4,20.9,20.9Z"/>
|
||||
<circle class="cls-2" cx="2959.1" cy="-1421" r="20.9"/>
|
||||
<path class="cls-2" d="M2896.4-1379.4c0,11.5-9.3,20.9-20.9,20.9-11.5,0-20.9-9.3-20.9-20.9,0-11.5,9.3-20.9,20.9-20.9,11.5,0,20.9,9.3,20.9,20.9Z"/>
|
||||
<path class="cls-2" d="M2938.2-1379.5c0,11.5-9.3,20.9-20.9,20.9-11.5,0-20.9-9.3-20.9-20.9,0-11.5,9.3-20.9,20.9-20.9,11.5,0,20.9,9.3,20.9,20.9Z"/>
|
||||
<path class="cls-2" d="M2896.5-1337.6c0,11.5-9.3,20.9-20.9,20.9-11.5,0-20.9-9.3-20.9-20.9,0-11.5,9.3-20.9,20.9-20.9,11.5,0,20.9,9.3,20.9,20.9Z"/>
|
||||
<circle class="cls-2" cx="2917.4" cy="-1337.6" r="20.9"/>
|
||||
<path class="cls-2" d="M2854.6-1295.6c0,11.5-9.4,20.9-20.9,20.9s-20.9-9.4-20.9-20.9,9.4-20.9,20.9-20.9c11.5,0,20.9,9.4,20.9,20.9Z"/>
|
||||
<path class="cls-2" d="M2980-1295.6c0,11.5-9.4,20.9-20.9,20.9s-20.9-9.4-20.9-20.9,9.4-20.9,20.9-20.9c11.5,0,20.9,9.4,20.9,20.9Z"/>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path class="cls-2" d="M215.5-1634c24.6.2,40.9,16,40.9,39.6s-15.6,43-38.9,43h-28.5l59,62.9h-25.2l-56.9-62.9h-12.6v62.9h-18.8v-145.5h81.1ZM153.2-1569.6h64c13.3-.2,21.6-9.6,21.6-23.8s-8.3-22.3-21.6-22.5h-64v46.2Z"/>
|
||||
<path class="cls-2" d="M370.1-1536.7h-66.3l-19.5,48.1h-19.3l58.4-145.5h26.7l58.4,145.5h-19.3l-19.3-48.1ZM362.8-1554.9l-22.7-56.5-3.2-8.1-3.2,8.1-22.7,56.5h51.8Z"/>
|
||||
<path class="cls-2" d="M489.5-1634c36.8.2,60.1,30.2,60.1,70.8s-19,74.7-61.4,74.7h-60.6v-145.5h61.8ZM446.5-1506.7h45.6c25.5,0,39.4-22,39.4-55.4s-16-53.5-40.2-53.7h-44.7v109.1h0Z"/>
|
||||
<path class="cls-2" d="M656.9-1506.3v17.8h-94.1v-17.8h38.5v-110h-32.1v-17.8h81.3v17.8h-31.5v110h37.9Z"/>
|
||||
</g>
|
||||
<path class="cls-2" d="M369.1-1362h-66.3l-19.5,48.1h-19.3l58.4-145.5h26.7l58.4,145.5h-19.3l-19.3-48.1ZM361.8-1380.2l-22.7-56.5-3.2-8.1-3.2,8.1-22.7,56.5h51.8Z"/>
|
||||
<path class="cls-2" d="M677.9-1459.1c24.6.2,40.9,16,40.9,39.6s-15.6,43-38.9,43h-59.9v62.9h-18.8v-145.5h76.8ZM619.9-1394.7h59.7c13.3-.2,21.6-9.6,21.6-23.8s-8.3-22.2-21.6-22.5h-59.7v46.2Z"/>
|
||||
<path class="cls-2" d="M849.3-1356.6c-.2,29.7-20.5,47.3-54.8,47.3s-57.8-18.2-57.8-45.4v-104.4h19v102.1c.2,18.8,14.1,29.1,37.7,29.1s36.6-10.3,36.8-29.1v-102.1h19v102.5h0Z"/>
|
||||
<path class="cls-2" d="M929.1-1327.5c17.8,0,30.8-6.8,30.8-21.4s-10.3-18.8-19.5-22c-11.8-4.1-21.4-5.6-35.1-9.6-17.1-5.1-29.7-19.7-29.7-40s15.6-42.6,47.7-42.6,38.1,4.1,55,22.5l-12.8,13.1c-15.2-14.8-34.2-17.3-43.2-17.3-17.3,0-27.8,11.1-27.8,23.5s6,19.3,20.1,23.3c7.3,2.1,18.6,5.4,34.4,10.1,23.5,7.1,29.7,21.4,29.7,38.7s-19.9,40-49.6,40-43.2-7.7-56.1-25.9l15.6-11.6c10.7,13.9,24.4,19.3,40.4,19.3Z"/>
|
||||
<path class="cls-2" d="M535.8-1157.8v18.2h-103.2v-145.9h18.2v127.7h85Z"/>
|
||||
<path class="cls-2" d="M253.1-1182c0,26.3-19.1,43-46,42.4l-9-.2h-63.4v-145.6h69.8c27.2,1.1,39,18.2,39,38.5s-3.9,21-9.2,27c10.7,7.3,18.8,20.8,18.8,37.9ZM152.9-1226.3h51.8c14.8,0,20.5-8.6,20.5-20.3s-5.6-20.6-24.2-20.6h-48.2v40.9h0ZM234.9-1183.5c0-13.5-7.3-24.6-24.8-24.6h-57.2v50.1h55c19.7,0,27-10.5,27-25.5Z"/>
|
||||
<g>
|
||||
<circle class="cls-2" cx="283.3" cy="-1267.3" r="18.3"/>
|
||||
<circle class="cls-2" cx="393.3" cy="-1267.3" r="18.3"/>
|
||||
<path class="cls-2" d="M338.3-1230.8c0,10.1-8.2,18.3-18.3,18.4-10.1,0-18.3-8.2-18.4-18.3,0-10.1,8.2-18.3,18.3-18.4,10.1,0,18.3,8.2,18.4,18.3Z"/>
|
||||
<circle class="cls-2" cx="356.6" cy="-1230.8" r="18.3"/>
|
||||
<path class="cls-2" d="M338.3-1194.2c0,10.1-8.2,18.3-18.3,18.4-10.1,0-18.3-8.2-18.4-18.3,0-10.1,8.2-18.3,18.3-18.4,10.1,0,18.3,8.2,18.4,18.3Z"/>
|
||||
<circle class="cls-2" cx="356.6" cy="-1194.2" r="18.3"/>
|
||||
<circle class="cls-2" cx="283.3" cy="-1157.3" r="18.3"/>
|
||||
<circle class="cls-2" cx="393.3" cy="-1157.3" r="18.3"/>
|
||||
</g>
|
||||
<polygon class="cls-2" points="253.2 -1313.7 172.4 -1313.7 172.4 -1348.6 134.6 -1348.6 134.6 -1434.9 173 -1434.9 173 -1459.9 216.2 -1459.9 216.2 -1442.9 190 -1442.9 190 -1417.9 151.6 -1417.9 151.6 -1365.6 189.4 -1365.6 189.4 -1330.7 253.2 -1330.7 253.2 -1313.7"/>
|
||||
<path class="cls-2" d="M756.8-1487.9h22.5c0,0,.1-.2.2-.3h-22.6c0,0-.1.2-.2.3Z"/>
|
||||
<path class="cls-2" d="M673.4-1587.1v21.2c29.4-17.1,54.3-40.2,72.8-67.9h-22.2c-13.9,18.2-31,34-50.5,46.7Z"/>
|
||||
<path class="cls-2" d="M828.7-1533.8v-21.7c-3.7,2.3-7.4,4.8-11.1,7.3-24.4,17.1-44.9,37.6-60.6,60.1h22.6c13.7-17.2,30.4-32.6,49.1-45.7Z"/>
|
||||
<path class="cls-2" d="M695.5-1541c-7.1-5.4-14.5-10.4-22.1-14.9v21.3c3.8,2.5,7.5,5.2,11.2,7.9,14.8,11.3,27.9,24.2,39,38.5h22.4c-13.8-20.1-30.7-37.8-50.5-52.8Z"/>
|
||||
<path class="cls-2" d="M820.6-1593.7c-15.9-11.7-29.7-25.1-41.3-40.1h-22.3c14.1,20.8,31.8,39.1,52.9,54.6,6.1,4.5,12.3,8.6,18.8,12.5v-21.4c-2.7-1.8-5.4-3.7-8.1-5.7Z"/>
|
||||
<polygon class="cls-2" points="428 -1459.4 428 -1314.1 438.7 -1314.1 438.7 -1442.2 480.4 -1442.2 480.4 -1314.1 500.8 -1314.1 500.8 -1442.2 543.7 -1442.2 543.7 -1314.1 569.2 -1314.1 569.2 -1459.4 428 -1459.4"/>
|
||||
</g>
|
||||
<path class="cls-1" d="M1684.9,411c-11.5,0-20.9-9.3-20.9-20.9,0,11.5-9.3,20.9-20.9,20.9,11.5,0,20.9,9.3,20.9,20.9,0-11.5,9.3-20.9,20.9-20.9Z"/>
|
||||
<path class="cls-2" d="M1646.7,283.4v-39.9h-43.1v-25.6c.2,0,.4-.1.6-.2-.2,0-.4-.1-.6-.2v-33.6h43.8v-28.6h29.8v-19.4h-49.2v28.6h-43.8v98.3h43.1v39.9h92.1v-19.4h-72.7Z"/>
|
||||
<path class="cls-2" d="M1462.8,301.6h25.6c15.6-19.6,34.6-37.3,56-52.1v-24.7c-4.3,2.7-8.5,5.5-12.7,8.4-27.7,19.4-51.1,42.7-69,68.4Z"/>
|
||||
<path class="cls-2" d="M1535.1,181.5c-18.2-13.4-34-28.8-47.3-46h-25.3c16.1,23.8,36.3,44.8,60.4,62.5,3.5,2.6,7.1,5.1,10.8,7.5,3.5,2.3,7.1,4.6,10.7,6.8v-24.3c-3.1-2.1-6.2-4.3-9.3-6.5Z"/>
|
||||
<path class="cls-2" d="M1450.7,135.5h-25.2c-15.9,20.9-35.5,39-57.9,53.6v24.1c4.2-2.4,8.3-5,12.4-7.6,28.2-18.6,52.3-42.3,70.7-70.1Z"/>
|
||||
<path class="cls-2" d="M1424.8,301.6h25.4c-15.7-22.8-34.9-43-57.5-60.2-8.1-6.1-16.5-11.8-25.2-17v24.3c4.3,2.9,8.6,5.9,12.7,9.1,16.9,12.8,31.7,27.5,44.5,43.8Z"/>
|
||||
<polygon class="cls-2" points="1465.6 326.9 1447.3 326.9 1442.1 326.9 1369.8 326.9 1369.8 492.7 1382 492.7 1382 346.1 1429.6 346.1 1429.6 372 1429.6 492.7 1449.8 492.7 1452.9 492.7 1452.9 365.8 1452.9 347.6 1452.9 346.1 1460.7 346.1 1474.7 346.1 1501.9 346.1 1501.9 492.7 1531.1 492.7 1531.1 326.9 1470.8 326.9 1465.6 326.9"/>
|
||||
<path class="cls-2" d="M1601.3,369.4c11.5,0,20.9-9.4,20.9-20.9s-9.4-20.9-20.9-20.9-20.9,9.4-20.9,20.9,9.4,20.9,20.9,20.9Z"/>
|
||||
<circle class="cls-2" cx="1726.7" cy="348.5" r="20.9"/>
|
||||
<path class="cls-2" d="M1664,390.1c0-11.5-9.4-20.9-20.9-20.9-11.5,0-20.9,9.4-20.9,20.9,0,11.5,9.4,20.9,20.9,20.9,11.5,0,20.9-9.4,20.9-20.9Z"/>
|
||||
<circle class="cls-2" cx="1684.9" cy="390.1" r="20.9"/>
|
||||
<path class="cls-2" d="M1643.1,411c-11.5,0-20.9,9.4-20.9,20.9,0,11.5,9.4,20.9,20.9,20.9,11.5,0,20.9-9.4,20.9-20.9,0-11.5-9.4-20.9-20.9-20.9Z"/>
|
||||
<path class="cls-2" d="M1684.9,411c-11.5,0-20.9,9.4-20.9,20.9,0,11.5,9.4,20.9,20.9,20.9,11.5,0,20.9-9.4,20.9-20.9,0-11.5-9.4-20.9-20.9-20.9Z"/>
|
||||
<path class="cls-2" d="M1601.3,453c-11.5,0-20.9,9.4-20.9,20.9s9.4,20.9,20.9,20.9,20.9-9.4,20.9-20.9c0-11.5-9.4-20.9-20.9-20.9Z"/>
|
||||
<path class="cls-2" d="M1726.7,453c-11.5,0-20.9,9.4-20.9,20.9s9.4,20.9,20.9,20.9,20.9-9.4,20.9-20.9c0-11.5-9.4-20.9-20.9-20.9Z"/>
|
||||
<path class="cls-2" d="M1900.6,139.4h-125.5c-5.5,0-10,5-10,11.1v85c0,6.1,4.5,11.1,10,11.1h18.5c.1,0,.2,0,.3,0h0s58.9,0,58.9,0h0c0,0,.1.2.1.3v19.2c0,.1,0,.2,0,.2h-30.1s0,0,0-.2v-10h-3.7v10c0,2.2,1.7,3.9,3.8,3.9h30.1c2.1,0,3.8-1.8,3.8-3.9v-19.2c0-.1,0-.2,0-.3h25.1c.1,0,.2,0,.3,0h18.5c5.5,0,10-5,10-11.1v-85c0-6.1-4.5-11.1-10-11.1ZM1790.1,238.2v-59.5c0-2.5,1.7-4.6,3.8-4.6h87.8c2.1,0,3.8,2.1,3.8,4.6v59.5c0,2.5-1.6,4.5-3.7,4.6h-8c.3-.8.5-1.7.5-2.7v-41.6c0-3.5-2.6-6.4-5.8-6.4h-61.5c-3.2,0-5.8,2.9-5.8,6.4v41.6c0,1,.2,1.9.5,2.7h-8c-2,0-3.7-2.1-3.7-4.6ZM1822.7,242.4v-20.4c0-.2,0-.3,0-.4h30.1s.1.1.1.3v20.4c0,.2,0,.3,0,.3h0s-30.1,0-30.1,0h0s-.1-.2-.1-.4ZM1852.9,218h-30.1c-2.1,0-3.8,1.8-3.8,4.1v20.4c0,.1,0,.2,0,.4h-2.7c-.5,0-.9-.6-.9-1.3v-29.1c0-.7.4-1.3.9-1.3h43c.5,0,.9.6.9,1.3v29.1c0,.7-.4,1.3-.9,1.3h0s-2.7,0-2.7,0c0-.1,0-.2,0-.4v-20.4c0-2.2-1.7-4.1-3.8-4.1ZM1859.4,207.3h-43c-2.6,0-4.6,2.2-4.6,5v29.1c0,.5,0,.9.2,1.3h-4.8c-1.2,0-2.1-1.2-2.1-2.7v-41.6c0-1.5,1-2.6,2.1-2.6h61.5c1.2,0,2.1,1.2,2.1,2.6v41.6c0,1.5-1,2.6-2.1,2.6h0s-4.8,0-4.8,0c.1-.4.2-.9.2-1.3v-29.1c0-2.8-2.1-5-4.6-5ZM1906.9,235.4c0,4.1-2.8,7.3-6.3,7.3h-12.5c.8-1.3,1.3-2.9,1.3-4.6v-59.5c0-4.6-3.4-8.3-7.6-8.3h-87.8c-4.2,0-7.6,3.7-7.6,8.3v59.5c0,1.7.5,3.3,1.3,4.6h-12.5c-3.5,0-6.3-3.3-6.3-7.3v-85c0-4.1,2.8-7.3,6.3-7.3h125.5c3.5,0,6.3,3.3,6.3,7.3v85h0Z"/>
|
||||
<path class="cls-2" d="M2058,139h-126.3c-5.5,0-10,4.8-10,10.6v42.1h3.7v-42.1c0-3.8,2.8-6.9,6.3-6.9h126.3c3.5,0,6.3,3.1,6.3,6.9v80.9c0,3.3-2.8,7.1-6.3,7.1h-12.6c.8-1.3,1.2-2.8,1.2-4.4v-56.6c0-4.4-3.4-8-7.6-8h-88.4c-4.2,0-7.6,3.6-7.6,8v29.5h3.7v-29.5c0-2.4,1.7-4.3,3.9-4.3h88.4c2.1,0,3.9,1.9,3.9,4.3v56.6c0,2.4-1.8,4.4-3.9,4.4h0s-7.9,0-7.9,0c.3-.8.5-1.6.5-2.5v-39.6c0-3.4-2.6-6.1-5.9-6.1h-61.9c-3.2,0-5.9,2.8-5.9,6.1v20.6h3.7v-20.6c0-1.3,1-2.4,2.2-2.4h61.9c1.2,0,2.2,1.1,2.2,2.4v39.6c0,1.3-.9,2.4-1.9,2.5h-5c0-.4.2-.8.2-1.2v-27.7c0-2.7-2.1-4.9-4.7-4.9h-43.3c-2.6,0-4.7,2.2-4.7,4.9v14.4h3.7v-14.4c0-.6.4-1.1,1-1.1h43.3c.5,0,.9.5.9,1.1v27.7c0,.6-.4,1.2-.9,1.2h0s-2.7,0-2.7,0c0-.1,0-.2,0-.3v-19.4c0-2.2-1.7-4-3.8-4h-30.3c-2.1,0-3.8,1.8-3.8,4v10.1h3.7v-10.1c0-.2,0-.2.1-.2h30.3s.1,0,.1.2v19.4c0,.2,0,.3-.1.3h0s-30.1,0-30.1,0v3.7s45.9,0,45.9,0h0c.2,0,.4,0,.6,0h31.6c5.4,0,10-5,10-10.8v-80.9c0-5.9-4.5-10.6-10-10.6Z"/>
|
||||
<path class="cls-2" d="M2010.1,261c0,.2,0,.2-.1.2h-30.3s-.1,0-.1-.2v-19.4c0-.2,0-.3.1-.3v-3.7c-2.1,0-3.8,1.8-3.8,4v19.4c0,2.2,1.7,4,3.8,4h30.3c2.1,0,3.8-1.8,3.8-4v-10.1h-3.7v10.1Z"/>
|
||||
<path class="cls-2" d="M2225,336.8h-3.7v-186c0-3.8-2.8-6.9-6.2-6.9h-124.4c-3.4,0-6.2,3.1-6.2,6.9h-3.7c0-5.8,4.5-10.6,9.9-10.6h124.4c5.5,0,9.9,4.7,9.9,10.6v186Z"/>
|
||||
<path class="cls-2" d="M2203.9,307.6h-3.7v-130.2c0-2.3-1.7-4.3-3.8-4.3h-87.1c-2.1,0-3.8,1.9-3.8,4.3h-3.7c0-4.4,3.4-8,7.5-8h87.1c4.1,0,7.5,3.6,7.5,8v130.2Z"/>
|
||||
<path class="cls-2" d="M2189.2,287.2h-3.7v-91.2c0-1.3-.9-2.4-2.1-2.4h-61c-1.2,0-2.1,1.1-2.1,2.4h-3.7c0-3.4,2.6-6.1,5.8-6.1h61c3.2,0,5.8,2.8,5.8,6.1v91.2h0Z"/>
|
||||
<path class="cls-2" d="M2178.8,272.8h-3.7v-63.8c0-.6-.4-1.1-.9-1.1h-42.7c-.5,0-.9.5-.9,1.1h-3.7c0-2.7,2.1-4.9,4.6-4.9h42.7c2.6,0,4.6,2.2,4.6,4.9v63.8h0Z"/>
|
||||
<path class="cls-2" d="M2171.6,262.8h-3.7v-44.7c0-.2,0-.2,0-.2h-29.9s0,0,0,.2h-3.7c0-2.2,1.7-4,3.8-4h29.9c2.1,0,3.8,1.8,3.8,4v44.7Z"/>
|
||||
<path class="cls-2" d="M2137.8,265.9c-2.1,0-3.8-1.8-3.8-4h3.7c0,.2,0,.3.1.3v3.7Z"/>
|
||||
<path class="cls-2" d="M2131.5,276.2c-2.5,0-4.6-2.2-4.6-4.9h3.7c0,.6.4,1.2.9,1.2v3.7h0Z"/>
|
||||
<path class="cls-2" d="M2122.3,291.6c-3.2,0-5.8-2.8-5.8-6.3h3.7c0,1.4.9,2.5,2.1,2.5v3.7h0Z"/>
|
||||
<path class="cls-2" d="M2109.4,312.3c-4.1,0-7.5-3.7-7.5-8.1h3.7c0,2.4,1.7,4.4,3.7,4.4v3.7h0Z"/>
|
||||
<path class="cls-2" d="M2090.4,344.1c-5.5,0-9.9-4.9-9.9-10.9h3.7c0,4,2.8,7.2,6.2,7.2v3.7Z"/>
|
||||
<g>
|
||||
<path class="cls-2" d="M1157.8,206.6v9.8h-55.5v-78.5h9.8v68.7h45.7Z"/>
|
||||
<path class="cls-2" d="M1005.1,193.6c0,14.2-10.2,23.1-24.8,22.8h-4.8c0-.1-34.1-.1-34.1-.1v-78.3h37.5c14.6.6,21,9.8,21,20.7s-2.1,11.3-5,14.5c5.8,3.9,10.1,11.2,10.1,20.4ZM951.2,169.7h27.9c7.9,0,11.1-4.6,11.1-10.9s-3-11.1-13-11.1h-25.9v22h0ZM995.3,192.8c0-7.3-3.9-13.2-13.4-13.2h-30.8v26.9h29.6c10.6,0,14.5-5.6,14.5-13.7Z"/>
|
||||
<circle class="cls-2" cx="1021.5" cy="147.7" r="9.9" transform="translate(643.1 1108) rotate(-76.7)"/>
|
||||
<circle class="cls-2" cx="1080.7" cy="147.7" r="9.9"/>
|
||||
<circle class="cls-2" cx="1041.3" cy="167.3" r="9.9"/>
|
||||
<path class="cls-2" d="M1070.8,167.3c0,5.4-4.4,9.9-9.8,9.9-5.4,0-9.9-4.4-9.9-9.8,0-5.4,4.4-9.9,9.8-9.9,5.4,0,9.9,4.4,9.9,9.8Z"/>
|
||||
<circle class="cls-2" cx="1041.3" cy="187" r="9.9"/>
|
||||
<circle class="cls-2" cx="1061" cy="187" r="9.9"/>
|
||||
<circle class="cls-2" cx="1021.5" cy="206.8" r="9.9" transform="translate(585.5 1153.5) rotate(-76.7)"/>
|
||||
<circle class="cls-2" cx="1080.7" cy="206.8" r="9.9"/>
|
||||
<path class="cls-2" d="M574.6,189.6h-35.7l-10.5,25.9h-10.4l31.4-78.3h14.4l31.4,78.3h-10.4l-10.4-25.9ZM570.7,179.8l-12.2-30.4-1.7-4.4-1.7,4.4-12.2,30.4h27.9Z"/>
|
||||
<path class="cls-2" d="M740.7,137.3c13.2.1,22,8.6,22,21.3s-8.4,23.1-21,23.1h-32.2v33.8h-10.1v-78.3h41.3ZM709.5,172h32.1c7.1-.1,11.6-5.2,11.6-12.8s-4.5-12-11.6-12.1h-32.1v24.9Z"/>
|
||||
<path class="cls-2" d="M832.9,192.5c-.1,16-11.1,25.4-29.5,25.4s-31.1-9.8-31.1-24.4v-56.2h10.2v54.9c.1,10.1,7.6,15.7,20.3,15.7s19.7-5.5,19.8-15.7v-54.9h10.2v55.1Z"/>
|
||||
<path class="cls-2" d="M875.9,208.1c9.6,0,16.6-3.7,16.6-11.5s-5.5-10.1-10.5-11.9c-6.3-2.2-11.5-3-18.9-5.2-9.2-2.8-16-10.6-16-21.5s8.4-22.9,25.7-22.9,20.5,2.2,29.6,12.1l-6.9,7c-8.2-7.9-18.4-9.3-23.3-9.3-9.3,0-15,6-15,12.7s3.2,10.4,10.8,12.5c3.9,1.2,10,2.9,18.5,5.4,12.7,3.8,16,11.5,16,20.8s-10.7,21.5-26.7,21.5-23.3-4.1-30.2-13.9l8.4-6.2c5.8,7.5,13.1,10.4,21.8,10.4Z"/>
|
||||
<polygon class="cls-2" points="512.3 215.6 468.8 215.6 468.8 196.8 448.4 196.8 448.4 150.4 469.1 150.4 469.1 136.9 492.3 136.9 492.3 146 478.2 146 478.2 159.5 457.6 159.5 457.6 187.6 477.9 187.6 477.9 206.4 512.3 206.4 512.3 215.6"/>
|
||||
<path class="cls-2" d="M73.2,137.2c13.2.1,22,8.6,22,21.3s-8.4,23.1-21,23.1h-15.3l31.8,33.9h-13.6l-30.6-33.9h-6.8v33.8h-10.1v-78.3h43.6ZM39.7,171.9h34.4c7.1-.1,11.6-5.2,11.6-12.8s-4.5-12-11.6-12.1h-34.4v24.9Z"/>
|
||||
<path class="cls-2" d="M156.4,189.6h-35.7l-10.5,25.9h-10.4l31.4-78.3h14.4l31.4,78.3h-10.4l-10.4-25.9ZM152.5,179.8l-12.2-30.4-1.7-4.4-1.7,4.4-12.2,30.4h27.9Z"/>
|
||||
<path class="cls-2" d="M220.7,137.2c19.8.1,32.3,16.2,32.3,38.1s-10.2,40.2-33,40.2h-32.6v-78.3h33.3ZM197.5,205.7h24.5c13.7,0,21.2-11.9,21.2-29.8s-8.6-28.8-21.6-28.9h-24.1v58.7Z"/>
|
||||
<path class="cls-2" d="M310.7,205.9v9.6h-50.6v-9.6h20.7v-59.2h-17.3v-9.6h43.7v9.6h-16.9v59.2h20.4Z"/>
|
||||
<polygon class="cls-2" points="612 215.7 612 146.2 634.5 146.2 634.5 215.7 645.5 215.7 645.5 146.2 668.6 146.2 668.6 215.7 682.4 215.7 682.4 136.7 606.3 136.7 606.3 215.7 612 215.7"/>
|
||||
<path class="cls-2" d="M319.6,162.4v11.4c15.8-9.2,29.1-21.6,39.1-36.5h-11.9c-7.5,9.8-16.6,18.2-27.1,25.1Z"/>
|
||||
<path class="cls-2" d="M403,191v-11.7c-2,1.3-4,2.6-5.9,3.9-13.1,9.2-24.2,20.2-32.6,32.4h12.1c7.4-9.3,16.4-17.6,26.5-24.7Z"/>
|
||||
<path class="cls-2" d="M319.6,190.6c2,1.4,4,2.8,6,4.3,8,6.1,15,13,21,20.7h12c-7.4-10.8-16.5-20.3-27.1-28.4-3.8-2.9-7.8-5.6-11.9-8v11.4h0Z"/>
|
||||
<path class="cls-2" d="M403,161.9c-1.5-1-2.9-2-4.3-3-8.5-6.3-15.9-13.5-22.2-21.5h-12c7.6,11.1,17.1,21,28.4,29.3,3.2,2.4,6.6,4.6,10.1,6.7v-11.5h0Z"/>
|
||||
</g>
|
||||
<g id="small">
|
||||
<g>
|
||||
<path class="cls-2" d="M605.8,679.6h-35.7l-10.5,25.9h-10.4l31.4-78.3h14.4l31.4,78.3h-10.4l-10.4-25.9ZM601.8,669.8l-12.2-30.4-1.7-4.4-1.7,4.4-12.2,30.4h27.9Z"/>
|
||||
<path class="cls-2" d="M771.9,627.3c13.2.1,22,8.6,22,21.3s-8.4,23.1-21,23.1h-32.2v33.8h-10.1v-78.3h41.3ZM740.7,662h32.1c7.1-.1,11.6-5.2,11.6-12.8s-4.5-12-11.6-12.1h-32.1v24.9Z"/>
|
||||
<path class="cls-2" d="M864.1,682.5c-.1,16-11.1,25.4-29.5,25.4s-31.1-9.8-31.1-24.4v-56.2h10.2v54.9c.1,10.1,7.6,15.7,20.3,15.7s19.7-5.5,19.8-15.7v-54.9h10.2v55.1Z"/>
|
||||
<path class="cls-2" d="M907,698.1c9.6,0,16.6-3.7,16.6-11.5s-5.5-10.1-10.5-11.9c-6.3-2.2-11.5-3-18.9-5.2-9.2-2.8-16-10.6-16-21.5s8.4-22.9,25.7-22.9,20.5,2.2,29.6,12.1l-6.9,7c-8.2-7.9-18.4-9.3-23.3-9.3-9.3,0-15,6-15,12.7s3.2,10.4,10.8,12.5c3.9,1.2,10,2.9,18.5,5.4,12.7,3.8,16,11.5,16,20.8s-10.7,21.5-26.7,21.5-23.3-4.1-30.2-13.9l8.4-6.2c5.8,7.5,13.1,10.4,21.8,10.4Z"/>
|
||||
<polygon class="cls-2" points="543.4 705.6 500 705.6 500 686.8 479.6 686.8 479.6 640.4 500.3 640.4 500.3 626.9 523.5 626.9 523.5 636 509.4 636 509.4 649.5 488.7 649.5 488.7 677.6 509.1 677.6 509.1 696.4 543.4 696.4 543.4 705.6"/>
|
||||
<path class="cls-2" d="M104.4,627.2c13.2.1,22,8.6,22,21.3s-8.4,23.1-21,23.1h-15.3l31.8,33.9h-13.6l-30.6-33.9h-6.8v33.8h-10.1v-78.3h43.6ZM70.9,661.9h34.4c7.1-.1,11.6-5.2,11.6-12.8s-4.5-12-11.6-12.1h-34.4v24.9Z"/>
|
||||
<path class="cls-2" d="M187.6,679.6h-35.7l-10.5,25.9h-10.4l31.4-78.3h14.4l31.4,78.3h-10.4l-10.4-25.9ZM183.7,669.8l-12.2-30.4-1.7-4.4-1.7,4.4-12.2,30.4h27.9Z"/>
|
||||
<path class="cls-2" d="M251.8,627.2c19.8.1,32.3,16.2,32.3,38.1s-10.2,40.2-33,40.2h-32.6v-78.3h33.3ZM228.7,695.7h24.5c13.7,0,21.2-11.9,21.2-29.8s-8.6-28.8-21.6-28.9h-24.1v58.7h0Z"/>
|
||||
<path class="cls-2" d="M341.9,695.9v9.6h-50.6v-9.6h20.7v-59.2h-17.3v-9.6h43.7v9.6h-16.9v59.2h20.4Z"/>
|
||||
<polygon class="cls-2" points="643.2 705.7 643.2 636.2 665.7 636.2 665.7 705.7 676.7 705.7 676.7 636.2 699.8 636.2 699.8 705.7 713.6 705.7 713.6 626.7 637.4 626.7 637.4 705.7 643.2 705.7"/>
|
||||
<path class="cls-2" d="M350.8,652.4v11.4c15.8-9.2,29.1-21.6,39.1-36.5h-11.9c-7.5,9.8-16.6,18.2-27.1,25.1Z"/>
|
||||
<path class="cls-2" d="M434.1,681v-11.7c-2,1.3-4,2.6-5.9,3.9-13.1,9.2-24.2,20.2-32.6,32.4h12.1c7.4-9.3,16.4-17.6,26.5-24.7Z"/>
|
||||
<path class="cls-2" d="M350.8,680.6c2,1.4,4,2.8,6,4.3,8,6,15,13,21,20.7h12c-7.4-10.8-16.5-20.3-27.1-28.4-3.8-2.9-7.8-5.6-11.9-8v11.5h0Z"/>
|
||||
<path class="cls-2" d="M434.1,651.9c-1.5-1-2.9-2-4.3-3-8.5-6.3-15.9-13.5-22.2-21.5h-12c7.6,11.1,17.1,21,28.4,29.3,3.2,2.4,6.6,4.6,10.1,6.7v-11.5Z"/>
|
||||
<g>
|
||||
<path class="cls-2" d="M963.9,677.9c0,5.5-4.4,10-9.9,10-5.5,0-10-4.4-10-9.9,0-5.5,4.4-10,9.9-10,5.5,0,10,4.4,10,9.9Z"/>
|
||||
<circle class="cls-2" cx="973.8" cy="677.8" r="10"/>
|
||||
<circle class="cls-2" cx="954" cy="697.8" r="10"/>
|
||||
<circle class="cls-2" cx="973.9" cy="697.8" r="10"/>
|
||||
<path class="cls-2" d="M1058.4,683.5c0,14.2-10.2,23.1-24.8,22.8h-4.8c0-.1-34.1-.1-34.1-.1v-78.3h37.5c14.6.6,21,9.8,21,20.7s-2.1,11.3-5,14.5c5.8,3.9,10.1,11.2,10.1,20.4ZM1004.5,659.7h27.9c7.9,0,11.1-4.6,11.1-10.9s-3-11.1-13-11.1h-25.9v22h0ZM1048.6,682.7c0-7.3-3.9-13.2-13.4-13.2h-30.7v26.9h29.6c10.6,0,14.5-5.6,14.5-13.7Z"/>
|
||||
<path class="cls-2" d="M1077.9,637.7v22h41.6v9.8h-41.6v26.9h46.2v9.8h-55.9v-78.3h55.9v9.8h-46.2Z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 33 KiB |
69
radiocampus/static/radiocampus/logos/logo-RC-maquette.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 1190.6 841.9">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #000;
|
||||
stroke-width: 0px;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<g>
|
||||
<path class="cls-1" d="M80,318.5c14.5.1,24.2,9.5,24.2,23.4s-9.2,25.4-23,25.4h-16.8l34.9,37.2h-14.9l-33.6-37.2h-7.4v37.2h-11.1v-86h47.9,0ZM43.2,356.6h37.8c7.9-.1,12.8-5.7,12.8-14.1s-4.9-13.2-12.8-13.3h-37.8v27.3h0Z"/>
|
||||
<path class="cls-1" d="M171.4,376.1h-39.2l-11.5,28.4h-11.4l34.5-86h15.8l34.5,86h-11.4l-11.4-28.4h.1ZM167.1,365.4l-13.4-33.4-1.9-4.8-1.9,4.8-13.4,33.4h30.6,0Z"/>
|
||||
<path class="cls-1" d="M242,318.5c21.8.1,35.5,17.9,35.5,41.9s-11.2,44.2-36.3,44.2h-35.8v-86h36.6ZM216.6,393.8h27c15.1,0,23.3-13,23.3-32.7s-9.5-31.6-23.8-31.7h-26.4v64.5h0Z"/>
|
||||
<path class="cls-1" d="M341,394v10.5h-55.6v-10.5h22.8v-65h-19v-10.5h48.1v10.5h-18.6v65h22.4,0Z"/>
|
||||
<path class="cls-1" d="M170.9,479.3h-39.2l-11.5,28.4h-11.4l34.5-86h15.8l34.5,86h-11.4l-11.4-28.4h.1ZM166.5,468.6l-13.4-33.4-1.9-4.8-1.9,4.8-13.4,33.4h30.6,0Z"/>
|
||||
<path class="cls-1" d="M353.4,421.9c14.5.1,24.2,9.5,24.2,23.4s-9.2,25.4-23,25.4h-35.4v37.2h-11.1v-86h45.4,0ZM319.1,460h35.3c7.9-.1,12.8-5.7,12.8-14.1s-4.9-13.1-12.8-13.3h-35.3v27.3h0Z"/>
|
||||
<path class="cls-1" d="M454.7,482.5c-.1,17.6-12.1,28-32.4,28s-34.2-10.8-34.2-26.8v-61.7h11.2v60.4c.1,11.1,8.3,17.2,22.3,17.2s21.6-6.1,21.8-17.2v-60.4h11.2v60.6h0Z"/>
|
||||
<path class="cls-1" d="M501.9,499.7c10.5,0,18.2-4,18.2-12.7s-6.1-11.1-11.5-13c-7-2.4-12.6-3.3-20.7-5.7-10.1-3-17.6-11.6-17.6-23.6s9.2-25.2,28.2-25.2,22.5,2.4,32.5,13.3l-7.6,7.7c-9-8.7-20.2-10.2-25.5-10.2-10.2,0-16.4,6.6-16.4,13.9s3.5,11.4,11.9,13.8c4.3,1.2,11,3.2,20.3,6,13.9,4.2,17.6,12.7,17.6,22.9s-11.8,23.6-29.3,23.6-25.5-4.6-33.2-15.3l9.2-6.9c6.3,8.2,14.4,11.4,23.9,11.4h0Z"/>
|
||||
<polygon class="cls-1" points="205.7 421.8 205.7 507.6 212 507.6 212 431.7 236.6 431.7 236.6 507.6 248.7 507.6 248.7 431.7 274.1 431.7 274.1 507.6 289.3 507.6 289.3 421.8 205.7 421.8"/>
|
||||
<polygon class="cls-1" points="102.3 507.9 54.6 507.9 54.6 487.3 32.2 487.3 32.2 436.2 54.9 436.2 54.9 421.5 80.4 421.5 80.4 431.5 65 431.5 65 446.3 42.3 446.3 42.3 477.2 64.6 477.2 64.6 497.8 102.3 497.8 102.3 507.9"/>
|
||||
<path class="cls-1" d="M435.7,369.1c-14.4,10-26.5,22.2-35.8,35.5h13.3c8.1-10.2,18-19.3,29-27v-12.8c-2.2,1.4-4.4,2.8-6.6,4.4h0Z"/>
|
||||
<path class="cls-1" d="M431.2,350.9c3.6,2.7,7.3,5.1,11.1,7.4v-12.6c-1.7-1.1-3.3-2.2-4.8-3.4-9.5-7-17.6-15-24.5-23.8h-13.1c8.3,12.4,18.9,23.2,31.3,32.4h0Z"/>
|
||||
<path class="cls-1" d="M393.8,318.5h-13.1c-8.2,10.9-18.4,20.2-30,27.8v12.5c17.4-10.1,32.2-23.8,43.1-40.3Z"/>
|
||||
<path class="cls-1" d="M363.7,373.4c-4.2-3.2-8.6-6.1-13.1-8.8v12.6c2.2,1.5,4.4,3.1,6.6,4.7,8.7,6.7,16.4,14.2,23.1,22.7h13.2c-8.1-11.8-18.1-22.3-29.8-31.2h0Z"/>
|
||||
<g>
|
||||
<path class="cls-1" d="M56.7,579.5c0,6-4.8,10.9-10.9,10.9s-10.9-4.8-10.9-10.9,4.9-10.9,10.9-10.9,10.9,4.9,10.9,10.9Z"/>
|
||||
<path class="cls-1" d="M78.5,579.5c0,6-4.8,10.9-10.9,10.9s-10.9-4.8-10.9-10.9,4.9-10.9,10.9-10.9,10.9,4.8,10.9,10.9Z"/>
|
||||
<path class="cls-1" d="M56.7,601.4c0,6-4.9,10.9-10.9,10.9s-10.9-4.8-10.9-10.9,4.8-10.9,10.9-10.9,10.9,4.8,10.9,10.9Z"/>
|
||||
<circle class="cls-1" cx="67.6" cy="601.4" r="10.9"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="cls-1" d="M160.5,585.8c0,15.5-11.2,25.4-27.2,25.1h-5.3c0-.1-37.4-.1-37.4-.1v-86h41.3c16.1.7,23,10.8,23,22.8s-2.3,12.4-5.4,16c6.3,4.3,11.1,12.3,11.1,22.4h0ZM101.2,559.6h30.6c8.7,0,12.1-5.1,12.1-12s-3.3-12.1-14.3-12.1h-28.4v24.2h0ZM149.7,584.9c0-8-4.3-14.5-14.7-14.5h-33.8v29.6h32.5c11.6,0,16-6.2,16-15.1h0Z"/>
|
||||
<path class="cls-1" d="M182,535.4v24.2h45.6v10.8h-45.6v29.6h50.7v10.8h-61.5v-86h61.5v10.8h-50.7Z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="cls-1" d="M402,556.2c0,41.1-10,57.5-31.4,57.5s-23.3-6.1-28.2-15.2l8.3-6c3.9,7.2,10.1,10.6,20.4,10.6s19.1-7.3,20.4-26.2c-5.3,4.7-12.5,7.7-20.5,7.7-18.7,0-30.9-14.2-30.9-28.5s12.3-33.6,30.9-33.6,31,14.3,31,33.6h0ZM392.5,554.3c0-13.7-10.4-20.3-21.4-20.3s-20.5,6.6-20.5,20.3,8.7,19.7,20.5,19.7,21.4-8,21.4-19.7Z"/>
|
||||
<path class="cls-1" d="M470.4,600.2v10.9h-54.7v-10.9c33.9-25.2,42.4-35.9,42.4-49.5s-6.7-17.1-18.7-17.1-19.5,6.7-15.8,23.2l-10.1,4.7c-5.4-17.9,2.8-39,27-39s28,10.8,28,26-12.4,35.2-37.2,51.8h39.3Z"/>
|
||||
<path class="cls-1" d="M489.4,598.1v13h-13v-13h13Z"/>
|
||||
<path class="cls-1" d="M520.6,525.1h10.9v86.2h-10.9v-72.5l-23.1,22.4v-13.4l23.1-22.6Z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<path class="cls-1" d="M1157.8,206.6v9.8h-55.5v-78.5h9.8v68.7h45.7Z"/>
|
||||
<path class="cls-1" d="M1005.1,193.6c0,14.2-10.2,23.1-24.8,22.8h-4.8c0-.1-34.1-.1-34.1-.1v-78.3h37.5c14.6.6,21,9.8,21,20.7s-2.1,11.3-5,14.5c5.8,3.9,10.1,11.2,10.1,20.4h0ZM951.2,169.7h27.9c7.9,0,11.1-4.6,11.1-10.9s-3-11.1-13-11.1h-25.9v22h0ZM995.3,192.8c0-7.3-3.9-13.2-13.4-13.2h-30.8v26.9h29.6c10.6,0,14.5-5.6,14.5-13.7h.1Z"/>
|
||||
<circle class="cls-1" cx="1021.8" cy="147.9" r="9.9" transform="translate(642.9 1108.3) rotate(-76.7)"/>
|
||||
<circle class="cls-1" cx="1080.7" cy="147.7" r="9.9"/>
|
||||
<circle class="cls-1" cx="1041.3" cy="167.3" r="9.9"/>
|
||||
<path class="cls-1" d="M1070.8,167.3c0,5.4-4.4,9.9-9.8,9.9s-9.9-4.4-9.9-9.8,4.4-9.9,9.8-9.9,9.9,4.4,9.9,9.8Z"/>
|
||||
<circle class="cls-1" cx="1041.3" cy="187" r="9.9"/>
|
||||
<circle class="cls-1" cx="1061" cy="187" r="9.9"/>
|
||||
<circle class="cls-1" cx="1021.7" cy="207" r="9.9" transform="translate(585.3 1153.7) rotate(-76.7)"/>
|
||||
<circle class="cls-1" cx="1080.7" cy="206.8" r="9.9"/>
|
||||
<path class="cls-1" d="M574.6,189.6h-35.7l-10.5,25.9h-10.4l31.4-78.3h14.4l31.4,78.3h-10.4l-10.4-25.9h.2ZM570.7,179.8l-12.2-30.4-1.7-4.4-1.7,4.4-12.2,30.4h27.9,0Z"/>
|
||||
<path class="cls-1" d="M740.7,137.3c13.2.1,22,8.6,22,21.3s-8.4,23.1-21,23.1h-32.2v33.8h-10.1v-78.3h41.3ZM709.5,172h32.1c7.1-.1,11.6-5.2,11.6-12.8s-4.5-12-11.6-12.1h-32.1v24.9h0Z"/>
|
||||
<path class="cls-1" d="M832.9,192.5c0,16-11.1,25.4-29.5,25.4s-31.1-9.8-31.1-24.4v-56.2h10.2v54.9c0,10.1,7.6,15.7,20.3,15.7s19.7-5.5,19.8-15.7v-54.9h10.2v55.1h0Z"/>
|
||||
<path class="cls-1" d="M875.9,208.1c9.6,0,16.6-3.7,16.6-11.5s-5.5-10.1-10.5-11.9c-6.3-2.2-11.5-3-18.9-5.2-9.2-2.8-16-10.6-16-21.5s8.4-22.9,25.7-22.9,20.5,2.2,29.6,12.1l-6.9,7c-8.2-7.9-18.4-9.3-23.3-9.3-9.3,0-15,6-15,12.7s3.2,10.4,10.8,12.5c3.9,1.2,10,2.9,18.5,5.4,12.7,3.8,16,11.5,16,20.8s-10.7,21.5-26.7,21.5-23.3-4.1-30.2-13.9l8.4-6.2c5.8,7.5,13.1,10.4,21.8,10.4h.1Z"/>
|
||||
<polygon class="cls-1" points="512.3 215.6 468.8 215.6 468.8 196.8 448.4 196.8 448.4 150.4 469.1 150.4 469.1 136.9 492.3 136.9 492.3 146 478.2 146 478.2 159.5 457.6 159.5 457.6 187.6 477.9 187.6 477.9 206.4 512.3 206.4 512.3 215.6"/>
|
||||
<path class="cls-1" d="M73.2,137.2c13.2.1,22,8.6,22,21.3s-8.4,23.1-21,23.1h-15.3l31.8,33.9h-13.6l-30.6-33.9h-6.8v33.8h-10.1v-78.3h43.6ZM39.7,171.9h34.4c7.1-.1,11.6-5.2,11.6-12.8s-4.5-12-11.6-12.1h-34.4v24.9h0Z"/>
|
||||
<path class="cls-1" d="M156.4,189.6h-35.7l-10.5,25.9h-10.4l31.4-78.3h14.4l31.4,78.3h-10.4l-10.4-25.9h.2ZM152.5,179.8l-12.2-30.4-1.7-4.4-1.7,4.4-12.2,30.4h27.9-.1Z"/>
|
||||
<path class="cls-1" d="M220.7,137.2c19.8.1,32.3,16.2,32.3,38.1s-10.2,40.2-33,40.2h-32.6v-78.3h33.3ZM197.5,205.7h24.5c13.7,0,21.2-11.9,21.2-29.8s-8.6-28.8-21.6-28.9h-24.1v58.7h0Z"/>
|
||||
<path class="cls-1" d="M310.7,205.9v9.6h-50.6v-9.6h20.7v-59.2h-17.3v-9.6h43.7v9.6h-16.9v59.2h20.4,0Z"/>
|
||||
<polygon class="cls-1" points="612 215.7 612 146.2 634.5 146.2 634.5 215.7 645.5 215.7 645.5 146.2 668.6 146.2 668.6 215.7 682.4 215.7 682.4 136.7 606.3 136.7 606.3 215.7 612 215.7"/>
|
||||
<path class="cls-1" d="M319.6,162.4v11.4c15.8-9.2,29.1-21.6,39.1-36.5h-11.9c-7.5,9.8-16.6,18.2-27.1,25.1h-.1Z"/>
|
||||
<path class="cls-1" d="M403,191v-11.7c-2,1.3-4,2.6-5.9,3.9-13.1,9.2-24.2,20.2-32.6,32.4h12.1c7.4-9.3,16.4-17.6,26.5-24.7h-.1Z"/>
|
||||
<path class="cls-1" d="M319.6,190.6c2,1.4,4,2.8,6,4.3,8,6.1,15,13,21,20.7h12c-7.4-10.8-16.5-20.3-27.1-28.4-3.8-2.9-7.8-5.6-11.9-8v11.4h0Z"/>
|
||||
<path class="cls-1" d="M403,161.9c-1.5-1-2.9-2-4.3-3-8.5-6.3-15.9-13.5-22.2-21.5h-12c7.6,11.1,17.1,21,28.4,29.3,3.2,2.4,6.6,4.6,10.1,6.7v-11.5h0Z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 7.9 KiB |
|
@ -1,108 +1,574 @@
|
|||
:root {
|
||||
--heading-font-family: "campus_heading";
|
||||
--nav-bg: #6c7ed2;
|
||||
--nav-secondary-bg: #F7F7F6;
|
||||
--nav-hv-bg: unset;
|
||||
--nav-active-bg: unset;
|
||||
--a-player-bar-bg: #F7F7F6; /*linear-gradient(rgba(126, 159, 244, 0.9), rgba(126, 159, 244, 1)) 0% 0% / cover;*/
|
||||
--a-player-bar-bg: #738EF2;
|
||||
--a-player-bar-fg: #4897c7;
|
||||
--a-player-url-fg: white;
|
||||
--a-playlist-header-bg: #F6ED80;;
|
||||
--a-playlist-header-fg: #222;
|
||||
--a-player-panel-bg: #738ef2;
|
||||
--a-player-panel-fg: white;
|
||||
--a-sound-hv-bg: #f6ed80;
|
||||
--a-sound-hv-fg: #444;
|
||||
--a-sound-bg: #f6ed80;
|
||||
--body-bg: unset;
|
||||
--text-color: #eee;
|
||||
--main-color-light: #F4F881;
|
||||
--button-bg: #F4F88D;
|
||||
--button-fg: #555;
|
||||
--break-color: transparent;
|
||||
--button-bg: #e9e9ed;
|
||||
--button-fg: #222;
|
||||
--button-hv-bg: #F4F88D;
|
||||
--button-hv-fg: #1d3cab;
|
||||
--link-hv-fg: #879ef4;
|
||||
--a-playlist-header-bg: #4acca2;
|
||||
--a-playlist-header-fg: #fff;
|
||||
--a-sound-hv-bg: #FFF89E; //#ffe453;
|
||||
--a-sound-hv-fg: #222;
|
||||
--a-player-panel-bg: #F7F7F6;
|
||||
--heading-link-hv-fg: #95a9f3;
|
||||
--break-color: transparent;
|
||||
--button-active-fg: white;
|
||||
--button-active-bg: #738ef2;
|
||||
--cover-small-h: 10rem;
|
||||
--cover-small-w: 10rem;
|
||||
--heading-font-family: "campus_grotesk";
|
||||
--header-height: 320px;
|
||||
--heading-link-hv-fg: #aa217b;
|
||||
--heading-hg-fg: #fff;
|
||||
--link-fg: #3b47ff;
|
||||
--link-hv-fg: #c40c85;
|
||||
--main-color-light: #F4F881;
|
||||
--nav-bg: transparent;
|
||||
--nav-fg: #222;
|
||||
--nav-secondary-bg: transparent;
|
||||
--nav-hv-bg: unset;
|
||||
--nav-active-bg: unset;
|
||||
--nav-active-fg: white;
|
||||
--preview-title-sz: 21px;
|
||||
--text-color: #75124e;
|
||||
--text-color-light: #eee;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'campus_heading';
|
||||
src: url("/static/radiocampus/fonts/CampusGroteskv23-Regular.otf");
|
||||
font-family: "campus_grotesk";
|
||||
src:
|
||||
local("campus_grotesk"),
|
||||
url("/static/radiocampus/fonts/campus_grotesk/CampusGroteskv24-Regular.woff2") format("woff2"),
|
||||
url("/static/radiocampus/fonts/campus_grotesk/CampusGroteskv24-Regular.woff") format("woff"),
|
||||
url("/static/radiocampus/fonts/campus_grotesk/CampusGroteskv24-Regular.otf") format("opentype") tech(color-COLRv1);
|
||||
}
|
||||
|
||||
body {
|
||||
color: #222;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
|
||||
body.home, body.home .preview .headings a, body.home .page a {
|
||||
color: #fff;
|
||||
}
|
||||
body.home .preview .headings a:hover {
|
||||
color: #f4f88d !important;
|
||||
}
|
||||
body.home .nav.primary {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
body.yellow {
|
||||
background: url(/static/radiocampus/backgrounds/degrade-jaune.jpg) repeat-x top fixed;
|
||||
}
|
||||
body.yellow :root {
|
||||
--nav-active-fg: #f4f88d;
|
||||
}
|
||||
body.yellow.home {
|
||||
background: url(/static/radiocampus/backgrounds/photo-degrade-02.jpg) no-repeat center/cover;
|
||||
background-attachment: fixed;
|
||||
}
|
||||
body.blue {
|
||||
background: url(/static/radiocampus/backgrounds/degrade-bleu.jpg) repeat-x top fixed;
|
||||
}
|
||||
body.blue.home {
|
||||
background: url(/static/radiocampus/backgrounds/photo-degrade-01.jpg) no-repeat center/cover;
|
||||
background-attachment: fixed;
|
||||
}
|
||||
body.blue #grandlogo img {
|
||||
content: url('/static/radiocampus/logos/logo-RC-blanc1.png');
|
||||
}
|
||||
body.yellow #grandlogo img {
|
||||
content: url('/static/radiocampus/logos/logo-RC-bleu1.png');
|
||||
}
|
||||
body.blue.home #grandlogo img {
|
||||
content: url('/static/radiocampus/logos/logo-RC-blanc2.png');
|
||||
}
|
||||
body.yellow.home #grandlogo img {
|
||||
content: url('/static/radiocampus/logos/logo-RC-bleu2.png');
|
||||
}
|
||||
body.yellow .nav .nav-item.active {
|
||||
color: #738EF2 !important;
|
||||
text-shadow: -3px 3px 17px rgb(0, 48, 111);
|
||||
}
|
||||
body.blue #grandlogo img, body.yellow #grandlogo img {
|
||||
width: 120px;
|
||||
margin: 12px 0 0 48px;
|
||||
}
|
||||
body.blue.home #grandlogo, body.yellow.home #grandlogo {
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
body.blue.home #grandlogo img , body.yellow.home #grandlogo img {
|
||||
margin: 12px auto 0 auto;
|
||||
width: 100%;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.a-player-bar {
|
||||
border-top: 1px solid #555;
|
||||
}
|
||||
.a-player .button, .a-player-bar-content {
|
||||
color: white;
|
||||
}
|
||||
#player .a-sound-item .label {
|
||||
color: white !important;
|
||||
}
|
||||
.a-switch-nav span {
|
||||
color: white;
|
||||
}
|
||||
.a-switch-nav span:hover {
|
||||
color: #333;
|
||||
}
|
||||
a.heading.title {
|
||||
color: black;
|
||||
}
|
||||
|
||||
a.heading.title:hover {
|
||||
/*color: var(--link-hv-fg); */
|
||||
color: #738ef2;
|
||||
}
|
||||
.a-sound-item .label::before, .a-sound-item.playing .label::before, .a-sound-item.playing .label:hover::before {
|
||||
content: "";
|
||||
|
||||
font-family: "Font Awesome 6 Free";
|
||||
|
||||
margin-right: .6em;
|
||||
|
||||
}
|
||||
.button, a.button, button.button {
|
||||
border: 0;
|
||||
}
|
||||
.header-cover:not(:only-child) {
|
||||
float: left;
|
||||
margin: 0 1.2rem 1.2rem 0;
|
||||
}
|
||||
.header.has-cover {
|
||||
min-height: unset;
|
||||
}
|
||||
.item-section {display:flex; align-items:end}
|
||||
.fifty {
|
||||
width: 55%;
|
||||
}
|
||||
.grid.list-emissions {
|
||||
grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
|
||||
grid-auto-flow: dense;
|
||||
gap: 0.2rem;
|
||||
}
|
||||
.grid.list-emissions .media-content {
|
||||
font-size: 0.84rem;
|
||||
}
|
||||
.today {
|
||||
color: yellow;
|
||||
font-size: 1.4em !important;
|
||||
}
|
||||
.list-grille article {
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
.lagrille .category {
|
||||
color: white;
|
||||
margin-left: 10px;
|
||||
vertical-align: text-bottom;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
.lagrille:not(.homedisplay) .heading.subtitle {
|
||||
color: black;
|
||||
}
|
||||
.mt-3 {
|
||||
margin-top: unset !important;
|
||||
}
|
||||
.nav.primary .nav-brand {
|
||||
display: none;
|
||||
}
|
||||
.nav.secondary .nav-item {
|
||||
color: black !important;
|
||||
}
|
||||
a.nav-item:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||
.nav.primary .nav-item {
|
||||
font-weight: unset;
|
||||
font-size: 1.4em;
|
||||
}
|
||||
.page section.container {
|
||||
margin-top: 0;
|
||||
}
|
||||
.program-list {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.list-home {
|
||||
display: block;
|
||||
}
|
||||
.list-home article div.media {
|
||||
line-height: 1;
|
||||
padding: 0;
|
||||
}
|
||||
.list-home article.active div.media div.media-content a, .list-home article.active div.media div.media-content span {
|
||||
color: yellow;
|
||||
}
|
||||
|
||||
.list-home article.active div.media a:before {
|
||||
content: "\2192";
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
.list-home article div.media a.preview-cover {
|
||||
display: none;
|
||||
}
|
||||
.list-home article div.media div.media-content.flex-column {
|
||||
display: unset;
|
||||
}
|
||||
.list-home article div.media div.media-content section.content {
|
||||
display: none;
|
||||
}
|
||||
.list-home article div.media div.media-content div.episode-date {
|
||||
display: none;
|
||||
}
|
||||
.list-home article div.media div.media-content span.heading.subtitle {
|
||||
float: right;
|
||||
}
|
||||
.schedule {
|
||||
background-color: unset;
|
||||
font-size: 0.9em;
|
||||
margin: 0 0.2rem;
|
||||
opacity: 0.6;
|
||||
padding: 0 0.2rem 0.2rem 0.2rem;
|
||||
}
|
||||
|
||||
.schedules {
|
||||
margin-bottom: 0.4rem !important;
|
||||
}
|
||||
.title, .preview .title, .preview .title:not(:last-child) {
|
||||
text-transform: unset;
|
||||
font-weight: unset;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 400px) {
|
||||
body {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
:root {
|
||||
--header-height: 200px;
|
||||
}
|
||||
.page {
|
||||
margin-top: 0;
|
||||
padding-top: var(--nav-primary-height);
|
||||
}
|
||||
.nav.primary .nav-brand {
|
||||
display: inline-block;
|
||||
}
|
||||
.nav.secondary .nav-item {
|
||||
color: white !important;
|
||||
}
|
||||
.dropdown-trigger .icon, .icon.bullet {
|
||||
color: white;
|
||||
}
|
||||
.dropdown.is-right .dropdown-menu {
|
||||
left: 0;
|
||||
}
|
||||
.grid.list-emissions {
|
||||
grid-template-columns: 1fr 1fr 1fr;
|
||||
}
|
||||
#grandlogo {
|
||||
display: none;
|
||||
}
|
||||
.navs, .nav-menu.active {
|
||||
background-color: #7892f1; /*#738ef2;*/
|
||||
}
|
||||
.nav .nav-item {
|
||||
color: white !important;
|
||||
}
|
||||
.nav .nav-item.active {
|
||||
color: white !important;
|
||||
}
|
||||
.navs .nav + .nav {
|
||||
flex-grow: 1 !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1408px) {
|
||||
.container:not(.is-max-desktop):not(.is-max-widescreen) {
|
||||
max-width: unset;
|
||||
margin: 10px 64px;
|
||||
}
|
||||
body.home .container:not(.is-max-desktop):not(.is-max-widescreen) {
|
||||
max-width: 1400px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1216px) {
|
||||
.container:not(.is-max-desktop):not(.is-max-widescreen) {
|
||||
max-width: unset;
|
||||
margin: 0 64px;
|
||||
}
|
||||
body.home .container:not(.is-max-desktop):not(.is-max-widescreen) {
|
||||
max-width: 1152px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 900px) {
|
||||
.grid.list-emissions {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
.list-item .headings {
|
||||
margin-bottom: .2rem !important;
|
||||
}
|
||||
|
||||
.list-item:nth-child(3n+1):not(.wide) .media {
|
||||
border-color: transparent !important;
|
||||
}
|
||||
|
||||
.list-item:nth-child(3n):not(.wide) .media {
|
||||
border-color: transparent !important;
|
||||
}
|
||||
|
||||
.list-item:not(.wide) .media {
|
||||
padding: 0.2rem;
|
||||
}
|
||||
|
||||
.media-content .content p, .episode-date {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
/*
|
||||
.nav-urls .urls a, .nav-urls .urls span {
|
||||
color: white;
|
||||
background-color: #444;
|
||||
border-radius: 5px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
#background {
|
||||
background-size: cover;
|
||||
padding: 80px 0 80px 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
.button:hover, a.button:hover, button.button:hover {
|
||||
opacity: 0.9 !important;
|
||||
}
|
||||
|
||||
.container {
|
||||
background: whitesmoke;
|
||||
padding: 24px;
|
||||
border-radius: 5px;
|
||||
max-width: 960px;
|
||||
border: 1px solid #929293;
|
||||
}
|
||||
|
||||
.container.breadcrumbs, .container.header {
|
||||
background: transparent;
|
||||
border-radius: 0;
|
||||
padding: 0 24px 0 24px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.container.breadcrumbs a {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.grid .list-item .headings .heading {
|
||||
padding-top: 10px;
|
||||
padding-left: 12px;
|
||||
}
|
||||
|
||||
.nav.secondary {
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.nav.secondary .nav-item{
|
||||
color: #1d3cab !important;
|
||||
}
|
||||
.nav .nav-item {
|
||||
border: 1px solid transparent;
|
||||
border-radius: 30px;
|
||||
olor: #1d3cab !important;
|
||||
color: #8c827e !important;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.nav .nav-item:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.preview-card {
|
||||
background-color: unset !important;
|
||||
.navs {
|
||||
border-bottom: 1px solid #4d4545;
|
||||
}
|
||||
|
||||
.page {
|
||||
min-height: 500px;
|
||||
}
|
||||
|
||||
.preview-cover {
|
||||
border-radius: 5px;
|
||||
opacity: 0.92;
|
||||
border: 1px solid #fff;
|
||||
}
|
||||
|
||||
.a-carousel .preview-cover {
|
||||
border: 1px solid #ccc;
|
||||
order: none;
|
||||
}
|
||||
|
||||
.preview-card .headings .heading {
|
||||
opacity: 0.85;
|
||||
padding: 10px;
|
||||
padding: 12px;
|
||||
background-color: #242121;
|
||||
}
|
||||
|
||||
.list-item .headings .heading {
|
||||
padding: 20px 0 8px 20px;
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
display: block
|
||||
.preview-card .headings a {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.list-item .headings {
|
||||
margin-bottom: 0 !important
|
||||
.grid .preview .headings a {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.preview .headings a {
|
||||
color: rgb(115, 142, 242);
|
||||
}
|
||||
|
||||
/*
|
||||
.preview .title, .preview .title:not(:last-child) {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
.nav .nav-menu {
|
||||
background-color: #6C7ED2;
|
||||
}
|
||||
|
||||
.page {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#background {
|
||||
padding: 100px 0 50px 0;
|
||||
}
|
||||
|
||||
.container, .page .container {
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
.a-player-bar {
|
||||
border-top: none;
|
||||
|
||||
|
||||
/* fred fixes */
|
||||
.grid.list-emissions:not(.list-home) {display: flex !important;flex-wrap: wrap !important; gap: 20px 1rem;}
|
||||
|
||||
.grid.list-emissions:not(.list-home) > .list-item {width: calc(20% - 2rem) !important ;}
|
||||
|
||||
.grid.list-emissions:not(.list-home) > .list-item .preview-cover {max-width: 100% !important;
|
||||
display: block;
|
||||
width: 100% !important;
|
||||
min-width: auto;
|
||||
aspect-ratio: 1 / 1;
|
||||
height: fit-content;
|
||||
background-size: contain;
|
||||
background-position: center;
|
||||
background-color: white;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.header.preview-header,.page section.container, .page section.container > .title {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
padding-top: 0.6em;
|
||||
.grid.list-emissions:not(.list-home) .media-content {margin-top: 0;}
|
||||
|
||||
.grid.list-emissions:not(.list-home) > .list-item .media .media-content > br, .grid.listfive > .list-item .media .media-content .episode-date > br {display: none;}
|
||||
|
||||
.grid.list-emissions:not(.list-home) .list-item .subtitle {text-align: left !important;font-size: 0.8rem !important;}
|
||||
|
||||
|
||||
.grid.list-emissions:not(.list-home) .preview.active .heading:not(:empty) {
|
||||
color: #738EF2 !important;
|
||||
}
|
||||
|
||||
.media {
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
.grid.list-podcasts {display: flex !important;flex-wrap: wrap !important; gap: 20px 1rem;}
|
||||
|
||||
.grid.list-podcasts > .list-item {width: calc(50% - 2rem) !important ;}
|
||||
|
||||
.grid.list-podcasts > .list-item .preview-cover {max-width: 100% !important;
|
||||
display: block;
|
||||
width: 50% !important;
|
||||
min-width: auto;
|
||||
aspect-ratio: 1 / 1;
|
||||
height: fit-content;
|
||||
background-size: contain;
|
||||
background-position: center;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.button, a.button, button.button {
|
||||
border: #bbb 1px solid;
|
||||
border-radius: 20px;
|
||||
.grid.list-podcasts .media-content {margin-top: 0;}
|
||||
|
||||
.grid.list-podcasts .media .media-left {width: 25% !important;}
|
||||
.grid.list-podcasts .media .media-content {width: 75%;}
|
||||
|
||||
.grid.list-podcasts > .list-item .media .media-content > br, .grid.list-emissions > .list-item .media .media-content .episode-date > br {display: none;}
|
||||
|
||||
.grid.list-podcasts .list-item .subtitle {text-align: left !important;font-size: 0.8rem !important;}
|
||||
|
||||
|
||||
.grid.list-podcasts .preview.active .heading:not(:empty) {
|
||||
color: #738EF2 !important;
|
||||
}
|
||||
|
||||
.list-item:nth-child(3n):not(.wide) .media, .list-item:nth-child(3n+1):not(.wide) .media {
|
||||
border: 1px solid var(--break-color) !important;
|
||||
.withmargin {
|
||||
margin-bottom: 5px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1224px) {
|
||||
.grid.list-emissions:not(.list-home) > .list-item {width: calc(33% - 2rem) !important;;}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 924px) {
|
||||
.grid.list-emissions:not(.list-home) > .list-item {width: calc(50% - 2rem) !important;}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
.grid.list-emissions > .list-item {width: 100% !important;}
|
||||
.program-list {flex-direction: column;}
|
||||
.grid.list-podcasts > .list-item {width: 100% !important ;}
|
||||
}
|
||||
|
||||
.list-item .subtitle:not(:empty) {
|
||||
min-width: auto !important;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 924px) {
|
||||
.a-player-bar-content {overflow: hidden;}
|
||||
.a-player-bar-content .title {
|
||||
display: inline-block;
|
||||
padding-right: 2em;
|
||||
padding-left: 100%;
|
||||
white-space: nowrap;
|
||||
animation: defilement-rtl 55s infinite linear;
|
||||
overflow: visible;}
|
||||
|
||||
@keyframes defilement-rtl {
|
||||
0% {
|
||||
transform: translate3d(0,0,0); /* position initiale à droite */
|
||||
}
|
||||
100% {
|
||||
transform: translate3d(-100%,0,0); /* position finale à gauche */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 540px) {
|
||||
.media {
|
||||
flex-direction: column;
|
||||
}
|
||||
.grid.list-podcasts .media .media-content {width:100%}
|
||||
|
||||
.grid.list-emissions:not(.list-home) > .list-item {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
|
||||
.list-item .media-content {height:auto;}
|
||||
|
|
|
@ -7,8 +7,19 @@
|
|||
<script src="{% static "radiocampus/backgroundLoad.js" %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block nav %}
|
||||
<div id="grandlogo" class="container"><a href="/"><img /></a></div>
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
||||
|
||||
{% block header-container %}
|
||||
{% if not page.attach_to %}
|
||||
{{ block.super }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block header-cover %}
|
||||
{% if cover %}
|
||||
<img src="{{ cover }}" ref="cover" class="cover">
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
42
radiocampus/templates/aircox/episode_list.html
Normal file
|
@ -0,0 +1,42 @@
|
|||
{% extends "aircox/basepage_list.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block filters %}
|
||||
{{ block.super }}
|
||||
<div class="field is-horizontal">
|
||||
<div class="field-label">
|
||||
<label class="label">{% translate "Podcasts" %}</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" class="checkbox" name="podcast" value="True"
|
||||
{% if filterset_data.podcast %}checked{% endif %} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block list-container %}
|
||||
{% with list_class="list-podcasts" %}
|
||||
{{ block.super }}
|
||||
{% endwith %}
|
||||
{% endblock %}
|
||||
|
||||
{% block secondary-nav %}
|
||||
{% if not parent and categories %}
|
||||
<nav class="nav secondary">
|
||||
<div class="nav-menu nav-categories">
|
||||
{% for cat in categories %}
|
||||
<a class="nav-item{% if cat == category %} active{% endif %}"
|
||||
href="{% url request.resolver_match.url_name category_slug=cat.slug %}">
|
||||
{{ cat.title }}
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<a-switch class="button burger"
|
||||
el=".nav-categories" group="nav" icon="fas fa-tags"
|
||||
aria-label="{% translate "Categories" %}">
|
||||
</a-switch>
|
||||
</nav>
|
||||
{% endif %}
|
||||
{% endblock %}
|
107
radiocampus/templates/aircox/home.html
Normal file
|
@ -0,0 +1,107 @@
|
|||
{% extends "aircox/page_list.html" %}
|
||||
{% comment %}List of diffusions as a timetable{% endcomment %}
|
||||
{% load i18n aircox humanize %}
|
||||
|
||||
{% block subtitle %}{{ date|date:"l d F Y" }}{% endblock %}
|
||||
|
||||
{% block secondary-nav %}
|
||||
<nav class="nav secondary">
|
||||
<div class="nav-menu nav-categories">
|
||||
<a class="nav-item" id="recent-link"
|
||||
href="#" onclick="javascript:display('recentdisplay');">
|
||||
Derniers titres diffusés
|
||||
</a>
|
||||
<a class="nav-item active" id="home-link"
|
||||
href="#" onclick="javascript:display('homedisplay');">
|
||||
Aujourd'hui
|
||||
</a>
|
||||
</div>
|
||||
<a-switch class="button burger"
|
||||
el=".nav-categories" group="nav" icon="fas fa-tags"
|
||||
aria-label="{% translate "Categories" %}">
|
||||
</a-switch>
|
||||
</nav>
|
||||
|
||||
<script>
|
||||
function display(id) {
|
||||
|
||||
var h = document.getElementsByClassName('homedisplay');
|
||||
var r = document.getElementsByClassName('recentdisplay');
|
||||
|
||||
if (id == "homedisplay") {
|
||||
for(var i = 0; i < h.length; i++) { h[i].setAttribute('style', 'display:inline !important'); }
|
||||
for(var i = 0; i < r.length; i++) { r[i].setAttribute('style', 'display:none !important'); }
|
||||
document.getElementById('recent-link').classList.remove('active');
|
||||
document.getElementById('home-link').classList.add('active');
|
||||
} else {
|
||||
for(var i = 0; i < h.length; i++) { h[i].setAttribute('style', 'display:none !important'); }
|
||||
for(var i = 0; i < r.length; i++) { r[i].setAttribute('style', 'display:inline !important'); }
|
||||
document.getElementById('recent-link').classList.add('active');
|
||||
document.getElementById('home-link').classList.remove('active');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block breadcrumbs %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block list-container %}
|
||||
<br />
|
||||
<div class="lagrille homedisplay">
|
||||
<section class="container" style="display:flex;justify-content:flex-end;min-height:600px">
|
||||
<div>
|
||||
<!-- <a href="{% url "timetable-list" date=date %}">{{ date|date:"l d F Y" }}</a> -->
|
||||
<section class="clear-both list grid radiocampus-grid" role="list">
|
||||
</section>
|
||||
{% with list_class="list-home" %}
|
||||
{{ block.super }}
|
||||
{% endwith %}
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<br />
|
||||
<div class="recentdisplay" style="display:none">
|
||||
<section class="container" style="min-height:600px">
|
||||
<div>
|
||||
<!-- <a href="{% url "timetable-list" date=date %}">{{ date|date:"l d F Y" }}</a> -->
|
||||
<section class="clear-both list grid radiocampus-grid" role="list">
|
||||
</section>
|
||||
{% with list_class="list-home" %}
|
||||
{{ block.super }}
|
||||
{% endwith %}
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block list %}
|
||||
{% with object_list=object_list timetable=True %}
|
||||
{% with widget|default:"item" as widget %}
|
||||
|
||||
{% for object in object_list %}
|
||||
{% if object.episode %}
|
||||
<div class="homedisplay">
|
||||
{% page_widget widget object.episode diffusion=object timetable=True %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="preview list-item logs">
|
||||
<div class="media d-block content recentdisplay" style="display:none !important;">
|
||||
{% for obj in object %}
|
||||
{% include "aircox/widgets/track_item.html" with object=obj.track log=obj timetable=True %}
|
||||
<br />
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% endwith %}
|
||||
{% endwith %}
|
||||
{% endblock %}
|
98
radiocampus/templates/aircox/page_detail.html
Normal file
|
@ -0,0 +1,98 @@
|
|||
{% extends "aircox/public.html" %}
|
||||
{% load static i18n humanize honeypot aircox %}
|
||||
{% comment %}
|
||||
Base template used to display a Page
|
||||
|
||||
Context:
|
||||
- page: page
|
||||
- parent: parent page
|
||||
- related_objects: list of object to display as related publications
|
||||
- related_url: url to the full list of related_objects
|
||||
{% endcomment %}
|
||||
|
||||
{% block breadcrumbs %}
|
||||
{% if parent %}
|
||||
{% include "./widgets/breadcrumbs.html" with page=parent %}
|
||||
{% if page %}
|
||||
<a href="{% url page.list_url_name parent_slug=parent.slug %}">
|
||||
{{ page|verbose_name:True }}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% elif page %}
|
||||
{% include "./widgets/breadcrumbs.html" with page=page no_title=True %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block title-container %}
|
||||
{{ block.super }}
|
||||
{% block page-actions %}
|
||||
{% include "aircox/widgets/page_actions.html" %}
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
{{ block.super }}
|
||||
|
||||
{% block episodes %}
|
||||
{% endblock %}
|
||||
|
||||
{% block related %}
|
||||
{% if related_objects %}
|
||||
<section class="container">
|
||||
{% with models=object|verbose_name:True %}
|
||||
<h2 class="title is-2">{% blocktranslate %}Related {{models}}{% endblocktranslate %}</h2>
|
||||
|
||||
{% include "./widgets/carousel.html" with objects=related_objects url_name=object.list_url_name url_category=object.category %}
|
||||
{% endwith %}
|
||||
</section>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block comments %}
|
||||
{% if comments %}
|
||||
<section class="container">
|
||||
<h2 class="title is-2">{% translate "Comments" %}</h2>
|
||||
|
||||
{% for object in comments %}
|
||||
{% page_widget "item" object %}
|
||||
{% endfor %}
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
{% if comment_form %}
|
||||
<section class="container">
|
||||
<h2 class="title is-2">{% translate "Post a comment" %}</h2>
|
||||
<form method="POST">
|
||||
{% csrf_token %}
|
||||
{% render_honeypot_field "website" %}
|
||||
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
{{ comment_form.content }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% for field in comment_form %}
|
||||
{% if field.name != "content" %}
|
||||
<div class="field is-horizontal">
|
||||
<label class="label">{{ field.label }}</label>
|
||||
<div class="control">{{ field }}</div>
|
||||
</div>
|
||||
{% if field.errors %}
|
||||
<p class="help is-danger">{{ field.errors }}</p>
|
||||
{% endif %}
|
||||
{% if field.help_text %}
|
||||
<p class="help">{{ field.help_text|safe }}</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<div class="has-text-right">
|
||||
<button type="submit" class="button">{% translate "Post comment" %}</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
82
radiocampus/templates/aircox/page_list.html
Normal file
|
@ -0,0 +1,82 @@
|
|||
{% extends "aircox/basepage_list.html" %}
|
||||
{% comment %}Display a list of Pages{% endcomment %}
|
||||
{% load i18n aircox %}
|
||||
|
||||
{% block secondary-nav %}
|
||||
{% if not parent and categories %}
|
||||
<nav class="nav secondary">
|
||||
<div class="nav-menu nav-categories">
|
||||
{% for cat in categories %}
|
||||
<a class="nav-item{% if cat == category %} active{% endif %}"
|
||||
href="{% url request.resolver_match.url_name category_slug=cat.slug %}">
|
||||
{{ cat.title }}
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<a-switch class="button burger"
|
||||
el=".nav-categories" group="nav" icon="fas fa-tags"
|
||||
aria-label="{% translate "Categories" %}">
|
||||
</a-switch>
|
||||
</nav>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}
|
||||
{% if parent %}{{ parent.title }}
|
||||
{% else %}{{ block.super }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block header %}
|
||||
{% if page and not object %}
|
||||
{% with page as object %}
|
||||
{{ block.super }}
|
||||
{% endwith %}
|
||||
{% else %}
|
||||
{{ block.super }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}
|
||||
{% if parent and model.list_url_name %}
|
||||
{% include "./widgets/breadcrumbs.html" with page=parent %}
|
||||
<a href="{% url model.list_url_name %}">{{ model|verbose_name:True }}</a>
|
||||
{% elif page and model.list_url_name %}
|
||||
<a href="{% url model.list_url_name %}">{{ page.title }}</a>
|
||||
{% if category %}
|
||||
<a href="{% url request.resolver_match.url_name category_slug=category.slug %}">
|
||||
{{ category.title }}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<a href="{% url request.resolver_match.url_name %}">{{ model|verbose_name:True }}</a>
|
||||
{% if category %}
|
||||
<a href="{% url request.resolver_match.url_name category_slug=category.slug %}">
|
||||
{{ category.title }}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content-container %}{% endblock %}
|
||||
|
||||
{% block list-pagination %}
|
||||
{% include "./widgets/page_pagination.html" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block list-container %}
|
||||
<section class="container clear-both list grid {{ list_class|default:"" }} list-emissions" role="list">
|
||||
{% block list %}
|
||||
{% with has_headline=True %}
|
||||
{% for object in object_list %}
|
||||
{% block list_object %}
|
||||
{% page_widget item_widget|default:"program" object %}
|
||||
{% endblock %}
|
||||
{% empty %}
|
||||
{% blocktranslate %}There is nothing published here...{% endblocktranslate %}
|
||||
{% endfor %}
|
||||
{% endwith %}
|
||||
{% endblock %}
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
62
radiocampus/templates/aircox/podcast_list.html
Normal file
|
@ -0,0 +1,62 @@
|
|||
{% extends "aircox/basepage_list.html" %}
|
||||
{% comment %}Display a list of Pages{% endcomment %}
|
||||
{% load i18n aircox %}
|
||||
|
||||
{% block secondary-nav %}
|
||||
{% if not parent and categories %}
|
||||
<nav class="nav secondary">
|
||||
<div class="nav-menu nav-categories">
|
||||
{% for cat in categories %}
|
||||
<a class="nav-item{% if cat == category %} active{% endif %}"
|
||||
href="{% url request.resolver_match.url_name category_slug=cat.slug %}">
|
||||
{{ cat.title }}
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<a-switch class="button burger"
|
||||
el=".nav-categories" group="nav" icon="fas fa-tags"
|
||||
aria-label="{% translate "Categories" %}">
|
||||
</a-switch>
|
||||
</nav>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}
|
||||
{% if parent %}{{ parent.title }}
|
||||
{% else %}{{ block.super }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block header %}
|
||||
{% if page and not object %}
|
||||
{% with page as object %}
|
||||
{{ block.super }}
|
||||
{% endwith %}
|
||||
{% else %}
|
||||
{{ block.super }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}
|
||||
{% if parent and model.list_url_name %}
|
||||
{% include "./widgets/breadcrumbs.html" with page=parent %}
|
||||
<a href="{% url model.list_url_name %}">{{ model|verbose_name:True }}</a>
|
||||
{% elif page.title == "Podcasts" and not category %}
|
||||
{% elif page and model.list_url_name %}
|
||||
<a href="{% url model.list_url_name %}">{{ page.title }}</a>
|
||||
{% if category %}
|
||||
<a href="{% url request.resolver_match.url_name category_slug=category.slug %}">
|
||||
{{ category.title }}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<a href="{% url request.resolver_match.url_name %}">{{ model|verbose_name:True }}</a>
|
||||
{% if category %}
|
||||
<a href="{% url request.resolver_match.url_name category_slug=category.slug %}">
|
||||
{{ category.title }}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content-container %}{% endblock %}
|
61
radiocampus/templates/aircox/program_detail.html
Normal file
|
@ -0,0 +1,61 @@
|
|||
{% extends "aircox/page_detail.html" %}
|
||||
{% comment %}Detail page of a show{% endcomment %}
|
||||
{% load i18n aircox %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% with schedules=object.schedule_set.all %}
|
||||
{% if object.active and schedules %}
|
||||
<header class="schedules mt-3">
|
||||
{% for schedule in schedules %}
|
||||
<div class="schedule">
|
||||
<div class="heading">
|
||||
<span class="day">{{ schedule.get_frequency_display }}</span>
|
||||
{% with schedule.start|date:"H:i" as start %}
|
||||
{% with schedule.end|date:"H:i" as end %}
|
||||
<time datetime="{{ start }}">{{ start }}</time>
|
||||
—
|
||||
<time datetime="{{ end }}">{{ end }}</time>
|
||||
{% endwith %}
|
||||
{% endwith %}
|
||||
<small>
|
||||
{% if schedule.is_rerun %}
|
||||
{% with schedule.initial.date as date %}
|
||||
<span title="{% blocktranslate %}Rerun of {{ date }}{% endblocktranslate %}">
|
||||
({% translate "Rerun" %})
|
||||
</span>
|
||||
{% endwith %}
|
||||
{% endif %}
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</header>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
|
||||
{{ block.super }}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block episodes %}
|
||||
{% if episodes %}
|
||||
<section class="container">
|
||||
<h2 class="title is-2">{% translate "Last Episodes" %}</h2>
|
||||
{% include "./widgets/carousel.html" with objects=episodes url_name="episode-list" url_parent=object url_label=_("All episodes") %}
|
||||
</section>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
{{ block.super }}
|
||||
|
||||
{% if articles %}
|
||||
<section class="container">
|
||||
<h2 class="title is-2">{% translate "Last Articles" %}</h2>
|
||||
{% include "./widgets/carousel.html" with objects=articles url_name="article-list" url_parent=object url_label=_("All articles") %}
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
32
radiocampus/templates/aircox/public.html
Normal file
|
@ -0,0 +1,32 @@
|
|||
{% extends "./base.html" %}
|
||||
{% load aircox %}
|
||||
|
||||
|
||||
{% comment %}
|
||||
Override is a trick here: it allows to change title at two different different
|
||||
places inside the page: inside `<title>` tag, and inside the page
|
||||
content.
|
||||
{% endcomment %}
|
||||
|
||||
{% block head-title %}
|
||||
{% block title %}
|
||||
{% if page and page.title %}{{ page.title }}{% endif %}
|
||||
{% endblock %}
|
||||
{% if page and page.title %}—{% endif %}
|
||||
{{ station.name }}
|
||||
{% endblock %}
|
||||
|
||||
{% block header %}{% if page %}{{ block.super }}{% endif %}{% endblock %}
|
||||
|
||||
{% block secondary-nav %}
|
||||
{% if '/pages/' in request.path %}
|
||||
<nav class="nav secondary">
|
||||
<div class="nav-menu nav-categories">
|
||||
{% nav_items "secondary" css_class="nav-item" active_class="active" as items %}
|
||||
{% for item, render in items %}
|
||||
{{ render }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</nav>
|
||||
{% endif %}
|
||||
{% endblock %}
|
95
radiocampus/templates/aircox/timetable_list.html
Normal file
|
@ -0,0 +1,95 @@
|
|||
{% extends "aircox/basepage_list.html" %}
|
||||
{% comment %}List of diffusions as a timetable{% endcomment %}
|
||||
{% load i18n aircox humanize %}
|
||||
|
||||
{% block subtitle %}{{ date|date:"l d F Y" }}{% endblock %}
|
||||
|
||||
{% block secondary-nav %}
|
||||
<nav class="nav secondary">
|
||||
{% include "./widgets/dates_menu.html" with url_name=view.redirect_date_url %}
|
||||
</nav>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block breadcrumbs %}
|
||||
{% if page and model.list_url_name %}
|
||||
<a href="{% url model.list_url_name %}">{{ page.title }}</a>
|
||||
{% if category %}
|
||||
<a href="{% url request.resolver_match.url_name category_slug=category.slug %}">
|
||||
{{ category.title }}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<a href="{% url "timetable-list" date=date %}">{{ date|date:"l d F Y" }}</a>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block list-container %}
|
||||
{% with list_class="grid" %}
|
||||
<section class="container clear-both list grid list-grille list-home list-emissions" role="list">
|
||||
<section class="container" style="display:flex;justify-content:flex-end;min-height:600px">
|
||||
<div class="fifty">
|
||||
{% block list %}
|
||||
{% with object_list=object_list timetable=True %}
|
||||
{% with widget|default:"item" as widget %}
|
||||
|
||||
{% for object in object_list %}
|
||||
{% if object.episode %}
|
||||
<div class="lagrille">
|
||||
{% page_widget widget object.episode diffusion=object timetable=True %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="preview list-item logs">
|
||||
<div class="media d-block content recentdisplay" style="display:none !important;">
|
||||
{% for obj in object %}
|
||||
{% include "aircox/widgets/track_item.html" with object=obj.track log=obj timetable=True %}
|
||||
<br />
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% endwith %}
|
||||
{% endwith %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
{% endwith %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
||||
{% block title %}
|
||||
{% if parent %}{{ parent.title }}
|
||||
{% else %}{{ block.super }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{% block header %}
|
||||
{% if page and not object %}
|
||||
{% with page as object %}
|
||||
{{ block.super }}
|
||||
{% endwith %}
|
||||
{% else %}
|
||||
{{ block.super }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{% block content-container %}{% endblock %}
|
||||
|
||||
|
||||
|
||||
{% block list-pagination %}
|
||||
{% include "./widgets/page_pagination.html" %}
|
||||
{% endblock %}
|