]> git.0d.be Git - panikweb-esperanzah.git/commitdiff
templates: remove usage of {{ STATIC_URL }} main
authorFrédéric Péters <fpeters@0d.be>
Mon, 30 Oct 2023 17:07:47 +0000 (18:07 +0100)
committerFrédéric Péters <fpeters@0d.be>
Mon, 30 Oct 2023 17:07:47 +0000 (18:07 +0100)
63 files changed:
.pre-commit-config.yaml
panikweb_esperanzah/espe_settings.py
panikweb_esperanzah/esperanzah_db_settings.py
panikweb_esperanzah/static/css/_general.scss [deleted file]
panikweb_esperanzah/static/css/_specifics.scss [deleted file]
panikweb_esperanzah/static/css/_type.scss [deleted file]
panikweb_esperanzah/static/css/style.scss
panikweb_esperanzah/static/fonts/EurostileExtended-Black.woff2 [new file with mode: 0644]
panikweb_esperanzah/static/fonts/neuemontreal-regular-webfont.woff2 [new file with mode: 0644]
panikweb_esperanzah/static/img/appicon.png
panikweb_esperanzah/static/img/bloc-hover-2023-1.svg [new file with mode: 0644]
panikweb_esperanzah/static/img/bloc-hover-2023-2.svg [new file with mode: 0644]
panikweb_esperanzah/static/img/bloc-hover-2023-3.svg [new file with mode: 0644]
panikweb_esperanzah/static/img/favicon-2023-solid.png [new file with mode: 0644]
panikweb_esperanzah/static/img/favicon-2023.png [new file with mode: 0644]
panikweb_esperanzah/static/img/logo-esperanzah-yellow-2023.svg [new file with mode: 0644]
panikweb_esperanzah/static/js/audioPlayer.js
panikweb_esperanzah/static/js/specifics.js
panikweb_esperanzah/templates/agenda.html [deleted file]
panikweb_esperanzah/templates/archives.html
panikweb_esperanzah/templates/base.html
panikweb_esperanzah/templates/combo/cells/topik/link-cell.html
panikweb_esperanzah/templates/combo/gallery.html
panikweb_esperanzah/templates/combo/page_template.html [new file with mode: 0644]
panikweb_esperanzah/templates/combo/page_template_full_width.html
panikweb_esperanzah/templates/combo/page_template_sidebar.html
panikweb_esperanzah/templates/combo/topik_menu_item.html
panikweb_esperanzah/templates/emissions.html
panikweb_esperanzah/templates/emissions/emission_detail.html
panikweb_esperanzah/templates/emissions/episode_detail.html
panikweb_esperanzah/templates/emissions/episodes.html
panikweb_esperanzah/templates/emissions/newsitem_detail.html [deleted file]
panikweb_esperanzah/templates/emissions/resume.html
panikweb_esperanzah/templates/episodes/resume.html
panikweb_esperanzah/templates/feed/soundfile.html
panikweb_esperanzah/templates/grid.html
panikweb_esperanzah/templates/home.html
panikweb_esperanzah/templates/includes/audio.html
panikweb_esperanzah/templates/includes/detour-vers-le-footer.html
panikweb_esperanzah/templates/includes/metaNav.html
panikweb_esperanzah/templates/includes/page-tile.html [new file with mode: 0644]
panikweb_esperanzah/templates/includes/piwik.html
panikweb_esperanzah/templates/includes/player.html
panikweb_esperanzah/templates/includes/related.html
panikweb_esperanzah/templates/includes/topik.html
panikweb_esperanzah/templates/listen.html [deleted file]
panikweb_esperanzah/templates/listen/archives.html [deleted file]
panikweb_esperanzah/templates/news.html [deleted file]
panikweb_esperanzah/templates/news/inline.html
panikweb_esperanzah/templates/news/roll.html
panikweb_esperanzah/templates/newsletter/done.html
panikweb_esperanzah/templates/newsletter/subscriber_form.html
panikweb_esperanzah/templates/newsletter/thanks.html
panikweb_esperanzah/templates/nonstop_playlist.html
panikweb_esperanzah/templates/panikombo/audio.html
panikweb_esperanzah/templates/panikombo/episode.html
panikweb_esperanzah/templates/panikombo/episode_auto_selection.html
panikweb_esperanzah/templates/panikombo/topik-cell.html
panikweb_esperanzah/templates/search/search.html [deleted file]
panikweb_esperanzah/templates/soundfiles/embed.html
panikweb_esperanzah/templates/soundfiles/resume.html
panikweb_esperanzah/urls.py
panikweb_esperanzah/views.py

index 61848399b22d3ef75aca08b1eb99ee943c486261..5f6e56de46f5931901a1b0ebf6235f665bf8428a 100644 (file)
@@ -2,22 +2,27 @@
 # See https://pre-commit.com/hooks.html for more hooks
 repos:
   - repo: https://github.com/asottile/pyupgrade
-    rev: v2.26.0
+    rev: v3.3.1
     hooks:
       - id: pyupgrade
-        args: ['--keep-percent-format', '--py37-plus']
+        args: ['--keep-percent-format', '--py39-plus']
   - repo: https://github.com/adamchainz/django-upgrade
-    rev: 1.2.0
+    rev: 1.10.0
     hooks:
       - id: django-upgrade
-        args: [--target-version, "2.2"]
+        args: [--target-version, "3.2"]
   - repo: https://github.com/psf/black
-    rev: 22.3.0
+    rev: 23.1.0
     hooks:
       - id: black
-        args: ['--target-version', 'py37', '--skip-string-normalization', '--line-length', '110']
+        args: ['--target-version', 'py39', '--skip-string-normalization', '--line-length', '110']
   - repo: https://github.com/PyCQA/isort
-    rev: 5.7.0
+    rev: 5.12.0
     hooks:
       - id: isort
         args: ['--profile', 'black', '--line-length', '110']
+  - repo: https://github.com/rtts/djhtml
+    rev: '3.0.5'
+    hooks:
+      - id: djhtml
+        args: ['--tabwidth', '2']
index e97c7177a20828480f3d1f8901cb29294a15c5b8..88172b708d44f88ec2df0a43b5bddee6679067c1 100644 (file)
@@ -3,20 +3,13 @@ import os
 DEFAULT_FROM_EMAIL = 'radio@esperanzah.be'
 RADIO_NAME = 'Radio Esperanzah!'
 RADIO_LONG_NAME = 'Radio Esperanzah! - 106.2 FM'
+RADIO_META_DESCRIPTION = 'La radio éphémère du festival Esperanzah!'
 WEBSITE_BASE_URL = 'https://radio.esperanzah.be/'
 PODCASTS_DEFAULT_IMAGE_PATH = '/static/img/appicon.png'
 
 DEFAULT_AGENDA_SLUG = None
 
-
-INSTALLED_APPS = list(INSTALLED_APPS) + ['panikweb_esperanzah']
-
-TEMPLATES[0]['DIRS'].insert(0, os.path.join(os.path.dirname(local_settings_file), 'templates'))
-
-STATICFILES_DIRS = [
-    os.path.join(os.path.dirname(local_settings_file), 'static'),
-] + list(STATICFILES_DIRS)
-
+INSTALLED_APPS = ['panikweb_esperanzah'] + list(INSTALLED_APPS)
 
 # share user model with panikdb
 AUTH_USER_MODEL = 'aa.User'
@@ -24,6 +17,28 @@ INSTALLED_APPS += ('panikdb.aa',)
 
 PODCAST_FILE_FORMATS = 'mp3'
 
+COMBO_PUBLIC_TEMPLATES = {
+    'standard': {
+        'name': 'Page',
+        'template': 'combo/page_template.html',
+        'placeholders': {
+            'content': {
+                'name': 'Contenu',
+            },
+        },
+    },
+    'fullwidth': {
+        'name': 'Page (pleine largeur)',
+        'template': 'combo/page_template_full_width.html',
+        'placeholders': {
+            'content': {
+                'name': 'Contenu',
+            },
+        },
+    },
+}
+
+
 extra_local_settings_file = os.environ.get(
     'PANIKWEB_ESPERANZAH_SETTINGS_FILE', os.path.join(os.path.dirname(__file__), 'local_settings.py')
 )
index 2eaae6148185cd8a8d4bdaa2c053352406ecb44e..8b7aacbf3bc7b47894c3d4d12f30d3f55301048f 100644 (file)
@@ -15,11 +15,16 @@ COMBO_PUBLIC_TEMPLATES = {
         'template': 'combo/page_template.html',
         'placeholders': {
             'content': {
-                'name': 'Content',
+                'name': 'Contenu',
             },
-            'footer': {
-                'name': 'Footer',
-                'optional': True,
+        },
+    },
+    'fullwidth': {
+        'name': 'Page (pleine largeur)',
+        'template': 'combo/page_template.html',  # existing template so it can be selected
+        'placeholders': {
+            'content': {
+                'name': 'Contenu',
             },
         },
     },
diff --git a/panikweb_esperanzah/static/css/_general.scss b/panikweb_esperanzah/static/css/_general.scss
deleted file mode 100644 (file)
index cc77f4d..0000000
+++ /dev/null
@@ -1,489 +0,0 @@
-/******************/
-/*HTML TAG DISPLAYS */
-/******************/
-body {
-       font-family: Cervo, sans-serif;
-       line-height: normal;
-       text-align: left;
-       margin:0 auto 0 auto;
-       /*padding: 0px 10px;*/
-       clear: both;
-       font-size: 22px;
-}
-code,pre{
-       display:block;
-       overflow:auto;
-       padding:0.5em;
-       background:black !important;
-       color:white !important;
-       font-family:monospace;
-}
-audio { 
-       display:block;
-       width: 90%; 
-       margin:0.5em auto 1em auto;
-}
-
-a {
-       color:inherit;
-       text-decoration: none;
-}
-.userContent a:hover {
-    text-decoration: underline;
-}
-a.block:hover,nav a:hover{
-    text-decoration: none;
-}
-button, .button{
-       margin:0 0 0 0;
-       padding: 0 0 0 0;
-       cursor:pointer ;
-       background:none;
-}
-img {max-height: 100%;}
-
-header{
-       padding:0 0 2em 0;
-}
-h1, h2, h3, h4, h5{
-       line-height:1em;
-       padding:0.2em 0 0.2em 0;
-}
-h1, h2, h3, h4{
-       text-transform: uppercase;
-}
-h1 {   font-size: 6em;}
-h2 {   font-size: 40px;}
-h3 {   font-size: 3em;}
-h4 {   font-size: 1.8em;}
-h5 {   font-size: 1.1em;}
-
-/*Specific rules for text writen by final users */
-.userContent h1 {      font-size: 2em;}
-.userContent h2  {     font-size: 1.9em;}
-h1, h2, h3, h4, .squashed{
-    }
-
-nav{
-       padding:0em;
-       text-transform: uppercase;
-}
-hr {
-       height: 0;
-       margin:0.5em 0 0.5em 0;
-       padding:0;
-       border-style:solid;
-       border-width:2px 0 0 0 ;
-       border-color:black;
-}
-table{
-       margin:auto;
-       table-layout:fixed;
-}
-table,td,tr  {
-       padding:0;
-       margin:0;
-       word-wrap: break-word;
-       text-overflow: ellipsis;
-        text-align: center;
-        vertical-align: middle;
-        border: 1px solid #D0D0D0;
-       border-collapse:collapse;
-}
-th {
-       white-space: nowrap;
-       text-transform: uppercase;
-}
-tr{
-}
-p {
-    /*line-height: 1.2;*/
-    margin-bottom: 1em;
-}
-p  a {
-       text-decoration: underline
-}
-    
-em {
-    font-weight: bold;
-}
-strong{
-       text-transform: uppercase;}
-blockquote {
-       padding: 1em;
-       font-style:italic;
-}
-
-dl{}
-dt, dd{        
-       letter-spacing:1px;
-       line-height: 150%;
-}
-dt {
-       float:left;
-       margin-right: 0.3em; 
-}
-dd {
-}
-
-dt:after {
-    content: ":";
-}
-
-dl.metadata dt {
-       clear: none;
-       margin: 0;
-}
-
-dl.metadata dd {
-       margin-right: 4px;
-    }
-
-button {display:inline-block;}
-button {
-       text-transform: uppercase;
-}
-ul, ol, dl {
-       margin: 0;
-       padding: 0 0 0 2em;
-}
-nav ul, ul.inline, ul.custom, ul.custom li{
-       list-style: none;
-       margin: 0;
-       padding: 0;
-}
-nav ul li, ul.inline li{
-       display:inline;
-}
-ul.list{
-       list-style-type:square; /*Not working but why?*/
-       list-style-position:inside;
-}
-ul.list > li{
-       padding:0.5em 0 0.5em 0;
-       border-bottom:1px solid #ccc;
-}
-
-/******************/
-/*USEFULL CLASSES */
-/******************/
-
-.sr-only {
-       position: absolute !important;
-       width: 1px !important;
-       height: 1px !important;
-       padding: 0 !important;
-       margin: -1px !important;
-       overflow: hidden !important;
-       clip: rect(0, 0, 0, 0) !important;
-       white-space: nowrap !important;
-       border: 0 !important;
-}
-
-ul.distributed{
-       display:table;
-       width:100%;
-       text-align:center;
-       margin:0;
-       padding:0;
-       border-collapse:collapse;
-}
-ul.distributed li{
-       display:table-cell;
-       text-align:center;
-}
-ul.distributed.by2 li{
-       width:50%;
-}
-ul.distributed.by3 li{
-       width:33%;
-}
-ul.distributed.by4 li{
-       width:25%;
-}
-ul.distributed.by5 li{
-       width:20%;
-}
-ul.distributed.by6 li{
-       width:16.6666%;
-}
-ul.distributed.by7 li{
-       width:14.285%;
-}
-
-a.active, button.active{
-       font-weight:bold;
-       text-decoration:none;
-       border-bottom: 2px solid;
-}
-.active *{
-       font-weight:inherit;
-}
-
-.todo:hover, .todo *:hover{
-       text-decoration: line-through;
-       color:red !important;
-} 
-
-
-.focusFade {
-    -webkit-transition-property: color;
-    -webkit-transition-duration: 0.2s;
-    -webkit-transition-timing-function: ease;
-    }
-
-.extra-margin {
-    margin-bottom: 16px;
-}
-.ellipsis{
-   white-space: nowrap;
-   text-overflow: ellipsis;
-   overflow: hidden;
-}
-.block {display:block;}
-.inBlock{display:inline-block;}
-.right{float:right;margin-left:1em;}
-.left{float:left;margin-right:1em;}
-.userContent .right, .userContent .left{
-       margin-bottom:1.5em;
-}
-img.right, img.left{max-width:50%;}
-.smooth{opacity:0.5;}
-.hidden{display:none;}
-.invisible{visibility:hidden;}
-.padded{padding:1.5em;}
-.marged{margin:1.5em 0 1.5em 0;}
-    
-.small{        font-size: 80%;}
-.big{  font-size: 150%;}   
-.huge{ font-size: 200%;}
-
-.absolute{
-       position:absolute;
-}
-.relative{
-       position:relative;
-}
-.nowrap {
-       white-space: nowrap;
-}
-.center{
-       text-align:center;
-       margin-left:auto;
-       margin-right:auto;
-}
-
-.loading{
-   -webkit-animation: loading 1s infinite linear;
-   -moz-animation: loading 1s infinite linear;
-   -o-animation: loading 1s infinite linear;
-   animation: loading 1s infinite linear;
-}
-@-webkit-keyframes loading {0%{opacity:1 !important;}50%{opacity:0 !important;}100%{opacity:1 !important;}}
-@-moz-keyframes loading {0%{opacity:1 !important;}50%{opacity:0 !important;}100%{opacity:1 !important;}}
-@-o-keyframes loading {0%{opacity:1 !important;}50%{opacity:0 !important;}100%{opacity:1 !important;}}
-@keyframes loading {0%{opacity:1 !important;}50%{opacity:0 !important;}100%{opacity:1 !important;}}
-
-.spinning {
-   position:relative;
-   /*
-   -webkit-animation: rotation 10s infinite linear;
-   -moz-animation: rotation 10s infinite linear;
-   -o-animation: rotation 10s infinite linear;
-   animation: rotation 10s infinite linear;
-   */
-}
-@-webkit-keyframes rotation {
-   from {-webkit-transform: rotate(0deg);}
-   to {-webkit-transform: rotate(359deg);}
-}
-@-moz-keyframes rotation {
-   from {-moz-transform: rotate(0deg);}
-   to {-moz-transform: rotate(359deg);}
-}
-@-o-keyframes rotation {
-   from {-o-transform: rotate(0deg);}
-   to {-o-transform: rotate(359deg);}
-}
-@keyframes rotation {
-   from {transform: rotate(0deg);}
-   to {transform: rotate(359deg);}
-}
-.vertical {
-        -webkit-transform: rotate(-90deg);
-        -moz-transform: rotate(-90deg);
-        -ms-transform: rotate(-90deg);
-        -o-transform: rotate(-90deg);
-        filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
-}
-.columns{column-gap: 0;        -webkit-column-gap: 0;  -moz-column-gap: 0;}
-.columns.padded{column-gap: 2em;       -webkit-column-gap: 2em;        -moz-column-gap: 2em;}
-.columns li{
-       display:inline-block;
-       width:100%;
-       column-break-inside: avoid;
-       -moz-column-break-inside: avoid;
-       -webkit-column-break-inside: avoid;
-       break-inside: avoid-column;
-       -webkit-break-inside: avoid-column;
-       -moz-break-inside: avoid-column;
-}
-@media only screen and (min-width: 600px) {
-       .columns{column-count: 2;       -webkit-column-count: 2;        -moz-column-count: 2;}  
-}
-.columns.by3{column-count: 3;  -webkit-column-count: 3;        -moz-column-count: 3;}
-
-/* And the rest is Eric & Seb, AGPLv3*/
-
-label, select, input, button, textarea{
-       font-size:inherit;
-}
-label {
-       margin-right:1em;
-       height: 1.2em;
-       display: inline-block;
-       text-transform: uppercase;
-}
-
-select {
-    height: 1.2em;
-    -webkit-appearance: none;
-    -moz-appearance: window;
-}
-
-select[multiple],
-select[size] {
-    height: auto;
-    background-image: inherit;
-}
-
-input[type=date] {
-    -webkit-appearance: none;
-    -moz-appearance: window;
-}
-
-select, select option {
-    height: 1.2em;
-    text-transform: none;
-}
-
-input, select {
-    height: 1.2em;
-    background: #fff;
-    border: 1px inset #aaa;
-}
-
-
-input[type=text], textarea{
-       width: 100%; 
-       max-width:10em;
-       display: inline-block;
-       border:2px solid black;
-       border-radius:0.2em;
-       -moz-border-radius:0.2em;
-       -webkit-border-radius:0.2em;
-}
-
-input[type=submit] {
-    text-align: left;
-    border: none;
-}
-
-/**
- * For modern browsers
- * 1. The space content is one way to avoid an Opera bug when the
- *    contenteditable attribute is included anywhere else in the document.
- *    Otherwise it causes space to appear at the top and bottom of elements
- *    that are clearfixed.
- * 2. The use of `table` rather than `block` is only necessary if using
- *    `:before` to contain the top-margins of child elements.
- */
-.cf:before, .cf:after {
-    content: " "; /* 1 */
-    display: table; /* 2 */
-}
-
-.cf:after {
-    clear: both;
-}
-
-/**
- * For IE 6/7 only
- * Include this rule to trigger hasLayout and contain floats.
- */
-.cf {
-    *zoom: 1;
-}
-
-/* icons */
-
-@font-face {
-        font-family: 'FontAwesome';
-        src: url('/static/xstatic/fonts/fontawesome-webfont.eot');
-        src: url('/static/xstatic/fonts/fontawesome-webfont.eot?#iefix') format('embedded-opentype'), url('/static/xstatic/fonts/fontawesome-webfont.woff') format('woff'), url('/static/xstatic/fonts/fontawesome-webfont.ttf') format('truetype'), url('/static/xstatic/fonts/fontawesome-webfont.svg#fontawesomeregular') format('svg');
-        font-weight: normal;
-        font-style: normal;
-}
-
-/* FONT AWESOME CORE
- * -------------------------- */
-[class^="icon-"],
-[class*=" icon-"] {
-  font-family: FontAwesome;
-  font-weight: normal;
-  font-style: normal;
-  text-decoration: inherit;
-  -webkit-font-smoothing: antialiased;
-  *margin-right: .3em;
-}
-[class^="icon-"]:before,
-[class*=" icon-"]:before {
-  text-decoration: inherit;
-  display: inline-block;
-  speak: none;
-}
-/* makes sure icons active on rollover in links */
-a [class^="icon-"],
-a [class*=" icon-"] {
-  display: inline;
-}
-
-/* reglo symbols variants */
-[class^="icon-"].resymbol,
-[class*=" icon-"].resymbol {
-  font-family: Symbols;
-}
-
-/* specific icon classes */
-.icon-archive:before { content: "\f187"; }
-.icon-bolt:before { content: "\f0e7"; }
-.icon-bullhorn:before { content: "\f0a1"; }
-.icon-calendar:before { content: "\f073"; }
-.icon-check:before { content: "\f046"; }
-.icon-check-empty:before { content: "\f096"; }
-.icon-chevron-sign-left:before { content: "\f137"; }
-.icon-chevron-sign-right:before { content: "\f138"; }
-.icon-comments:before { content: "\f086"; }
-.icon-double-angle-left:before { content: "\f100"; }
-.icon-download:before { content: "\f01a"; }
-.icon-envelope:before { content: "\f0e0"; }
-.icon-file:before { content: "\f15b"; }
-.icon-globe:before { content: "\f0ac"; }
-.icon-headphones:before { content: "\f025"; }
-.icon-home:before { content: "\f015"; }
-.icon-info-sign:before { content: "\f05a"; }
-.icon-microphone:before { content: "\f130"; }
-.icon-pause:before { content: "\f04c"; }
-.icon-play:before { content: "\f04b"; }
-.icon-play-sign:before { content: "\f144"; }
-.icon-plus-sign:before { content: "\f055"; }
-.icon-question-sign:before { content: "\f059"; }
-.icon-remove:before { content: "\f00d"; }
-.icon-rss:before { content: "\f09e"; }
-.icon-search:before { content: "\f002"; }
-.icon-share:before { content: "\f045"; }
-.icon-step-backward:before { content: "\f048"; }
-.icon-step-forward:before { content: "\f051"; }
-.icon-stop:before { content: "\f04d"; }
-.icon-trash:before { content: "\f014"; }
-.icon-volume-up:before { content: "\f028"; }
diff --git a/panikweb_esperanzah/static/css/_specifics.scss b/panikweb_esperanzah/static/css/_specifics.scss
deleted file mode 100644 (file)
index 93cd944..0000000
+++ /dev/null
@@ -1,2387 +0,0 @@
-/* COLORS */
-
-$black: #000000;
-$white: #FFFFFF;
-$darkmauve: #231644;
-$blue: #9499FF;
-$red: #f64600;
-$primary: $blue;
-$secondary: $red;
-
-
-%text {
-       font-family: Cervo, sans-serif;
-       font-size: 18px;
-       color: $blue;
-       text-align: justify;
-       line-height: 1.4;
-}
-
-%image-bordure {
-       position: relative;
-       padding-bottom: 0;
-       background: $red;
-       .img {
-               display: inline-block;
-               height: 100%;
-               width: 100%;
-               transition: transform ease 0.2s;
-       }
-}
-
-button {
-       border: 0;
-}
-
-/****************************************************/
-/* FONTS */
-
-
-.resymbol:hover,.control:hover{    opacity:0.5;    }
-.date, .dateBloc {
-       text-transform: uppercase;
-}
-.inline .date, .resume .date{
-       text-align: center;
-}
-.dateBloc{width:4em;
-       text-align: center;}
-.dateBloc{display:inline-block;}
-.dateBloc *{line-height: 100%;}
-.dateBloc  .day {font-size: 1.8em;}
-.dateBloc .number {font-size: 1.8em;}
-.dateBloc  .month {font-size: 0.8em;}
-.dateBloc .time {font-size: 1.2em;margin: 0.2em 0;}
-
-.dateBloc.small{
-       font-size: 80%;
-}
-
-.date.smooth {
-       text-transform: none;
-       font-size: 100%;
-}
-
-.tabs .ui-tabs-nav {
-    text-transform: uppercase;
-}
-.legend{
-       font-size:1.2em;
-       border-bottom:3px solid black;
-       padding: 0.2em 0 0.2em 0;
-       margin: 0.2em 0 0.2em 0;
-}
-#Main .sectionLabel{
-       margin-bottom:1em;
-}
-
-h5.focus-title {
-       color: $secondary;
-}
-
-.rightPart #search-form {
-       text-align: right;
-       margin-bottom: 2em;
-}
-
-.label.relative{
-    background-color:black;
-    position: absolute;
-    left:10px;
-    top:-5px;
-    color:white;
-    padding:5px 7px 0px 7px;
-}
-
-/****************************************************/
-/* WRAPPER */
-/****************************************************/
-.wrapper {max-width: 1560px; padding:0 1%;}
-.wrapper.text {max-width: 780px; margin:auto;}
-.wrapper .rightPart{margin-top:1em;}
-
-@media screen and (min-width: $size_m) {
-       #player-container.fixed {
-               position: fixed;
-               top: 60px;
-               width: calc(0% + 235px);
-       }
-       .wrapper .rightPart{
-        margin-top:0;
-       }
-       .wrapper.sided .leftPart,
-       .wrapper.sided .rightPart{
-               width:45%;
-       }
-       .wrapper.navigation .leftPart{
-               width:60%;
-       }
-       .wrapper.navigation .rightPart{
-               width:35%;
-       }
-       .wrapper .leftPart{
-               float:left;
-       }
-       .wrapper .rightPart{
-               float:right;
-       }
-       #specialHome {
-               padding-left: 0;
-       }
-    /*
-       #specialHome .leftPart,
-       #specialHome .rightPart {
-               width: 100%;
-       }
-    */
-       p.intro {
-               padding-top: 0px;
-               padding-bottom: 40px;
-       }
-}
-
-button {
-       padding: 0;
-}
-
-
-button.control, button.symbol{background:transparent;border:none;margin:0;padding:0;}
-nav.menu{
-       width:100%;
-       text-align: justify;
-       text-justify: distribute-all-lines;
-}
-nav.menu li{
-       display: inline-block;
-       margin-right:2em;
-}
-
-button.tag, a.tag{
-       font-size:0.9em;
-       background:white;
-       text-transform: uppercase;
-       display:inline-block;
-       border: 1px solid #CCC !important;
-       color:#342E2E;
-       margin: 0.2em;
-       padding: 0.3em;
-       border-radius: 0.7em;
-       -moz-border-radius: 0.7em;
-       -webkit-border-radius: 0.7em;
-}
-button.check, a.check {
-       font-size:0.9em;
-       text-transform: none;
-       display:inline-block;
-       margin: 0.2em;
-       padding: 0.3em;
-}
-
-.category{
-       text-transform: uppercase;
-}
-button.check:before, a.check:before {
-       display:inline-block;
-       width:1.5em;
-}
-.box{
-       padding:0.2em 0.5em 0.2em 0.5em;
-       border-radius: 0.2em;
-       -moz-border-radius: 0.2em;
-       -webkit-border-radius: 0.2em;
-       background:#222;
-       color:#fff;
-}
-.ui-tooltip {
-       border:1px solid white;
-       position:absolute;
-       margin:0;       
-       padding: 0.5em;
-       background:#222;
-       color: white;
-       z-index: 9999;
-       max-width: 50%;
-       background: white;
-       color: #222;
-       border-color: #222;
-}
-/****************************************************/
-/**** BODY ****/
-/****************************************************/
-body{
-       background: $darkmauve;
-       color: $white;
-}
-/****************************************************/
-/**** metaNAV ****/
-/****************************************************/
-
-#metaNav {
-       color: #e8e8e8;
-       background-color: #3a3a3a;
-       position:fixed;
-       z-index:1000;
-       top:0px;
-       width:100%;
-       font-size: 90%;
-}
-#metaNav ul{
-}
-#metaNav ul li{
-       float: left;
-       padding: 0 1em;
-       white-space: nowrap;
-       text-overflow: ellipsis;
-       overflow:hidden;
-}
-
-#metaNav ul li#nav-search {
-       float: right;
-}
-
-#metaNav ul li a{
-       height: 3em;
-       line-height: 3em;
-       display:block;
-}
-
-#metaNav ul li#nav-language span {
-       cursor: pointer;
-       height: 3em;
-       line-height: 3em;
-       display: inline-block;
-}
-
-#metaNav ul li#nav-language span.lang-on {
-       color: white;
-}
-
-#metaNav ul li a span{
-       display:inline-block;
-}
-
-#metaNav ul li a span.nav-icon {
-}
-
-#metaNav a:focus, #metaNav a:hover{
-    opacity:0.8;
-}
-#metaNav ul li.active, #metaNav ul li.active a{
-       color: white;
-}
-
-#metaNav ul li.active span.iconLabel {
-}
-
-#metaNav li#nav-search a {
-       display: inline;
-}
-
-#metaNav form {
-       display: inline-block;
-       padding-top: 0.2em;
-}
-
-#metaNav input {
-       border: 1px solid #ececec;
-       width: 10em;
-}
-
-.icon-rss {
-       color: orange;
-}
-
-@media screen and (max-width:$size_m){
-       #bg-title { display: none; }
-       #metaNav .iconLabel {display:none;}
-       #metaNav ul li a span.nav-icon { display: inline-block; }
-       #metaNav ul li {
-               padding: 0;
-       }
-       #metaNav ul li a {
-               padding: 0 1em;
-       }
-       #metaNav form {
-               display: none;
-       }
-       #metaNav ul li#nav-language {
-               padding: 0.2em 0 0 1em;
-       }
-}
-
-/****************************************************/
-/**** Commons ****/
-/****************************************************/
-
-.audio button, .audio a {color:$primary;}
-
-.audio button {
-       background: transparent;
-       border: none;
-}
-
-/****************************************************/
-/**** HEADER ****/
-/****************************************************/
-
-/* PANIK LOGO */
-#Commons{
-       position: relative;
-       z-index: 5;
-       height: 230px;
-       @media screen and (max-width: $size_m) {
-               height: 200px;
-       }
-}
-#Commons .wrapper{
-}
-#mainHeader {
-       display: inline-block;
-       background: url(../img/logo-esperanzah-sun-2022-home-desktop.png) bottom center no-repeat;
-       background-size: contain;
-       height: 252px;
-       width: 643px;
-       @media screen and (max-width: $size_m) {
-               max-width: 90%;
-               max-width: 90vw;
-               height: 187px;
-               background-size: contain;
-       }
-       position: relative;
-       &::before {
-               content: none;
-               background: url(../img/petite.png) no-repeat;
-               width: 155px;
-               height: 80px;
-               position: absolute;
-               top: 60px;
-               left: 100px;
-               @media screen and (max-width: $size_s) {
-                       transform: scale(0.8);
-               }
-               @media screen and (max-width: $size_m) {
-                       left: 40px;
-                       top: 10px;
-               }
-       }
-}
-#Player {
-       display: inline-block;
-}
-
-#mainHeader *{color:black !important;line-height:1em;}
-
-#Panik img{display:block;margin:auto;max-height:200px;}
-#mainHeader h1{
-       padding-left:75px;
-}
-#player-container #player{
-    padding:0 0 0 0;
-    //min-width: 240px;
-}
-
-#Changing h1.top a:hover {
-       opacity: 1.0;
-}
-
-@media screen and (min-width: $size_m) {
-       #Commons {
-               box-sizing: border-box;
-               padding: 0 20px;
-       }
-       #Changing {
-               box-sizing: border-box;
-               padding: 0;
-       }
-       #All h1.top {
-               text-transform: uppercase;
-               padding-left: 0;
-               padding-top: 20px;
-               padding-bottom: 20px;
-               text-align: center;
-       }
-
-       #metaNav {
-               padding-top: 2px;
-       }
-       #metaNav .nav-icon {
-               display: none !important;
-       }
-
-       ul#ticker {
-               margin-bottom: 10px;
-       }
-
-       #News div.mainSub,
-       #About div.mainSub,
-       #Emissions div.mainSub {
-               position: absolute;
-               top: 50px;
-               left: 320px;
-               width: 60%;
-               width: calc(98% - 320px);
-       }
-
-       #News div.mainSub ul,
-       #About div.mainSub ul,
-       #Emissions div.mainSub ul {
-               padding: 0;
-               font-weight: normal;
-       }
-
-       #News div.mainSub ul li,
-       #About div.mainSub ul li,
-       #Emissions div.mainSub ul li {
-       }
-
-       #News .news.wrapper {
-               padding: 0;
-       }
-
-       #News .news.wrapper li a {
-               margin-left: 0;
-               padding-left: 0;
-       }
-
-       #Nav header.marged,
-       #Main > .marged {
-               margin: 0;
-       }
-
-       #Related .wrapper,
-       #Main > .wrapper,
-       #Main > .soundfiles > .wrapper,
-       #Main > .news > .wrapper,
-       #Nav > .wrapper {
-               padding-left: 0;
-       }
-
-       #All #Nav nav ul {
-               margin-top: 0;
-       }
-
-       #Related .padded,
-       div.program.padded {
-               padding-top: 0;
-               padding-left: 0;
-       }
-
-       div.program.padded {
-               padding-top: 1.5em;
-       }
-
-       #fiber-content h2.title {
-               margin-top: 0;
-               padding-top: 0;
-       }
-
-}
-
-#backgroundBox {
-       background: transparent;
-       text-align: center;
-}
-
-#All #backgroundBox h1.top {
-       font-size: 20px;
-       padding-left: 10px;
-       width: 350px;
-}
-
-#backgroundBox h1 {
-       color: $primary !important;
-}
-
-#All h1.top#radiopanik {
-       padding-top: 36px;
-       background: $red;
-}
-
-#All #backgroundBox h1 {
-       visibility: hidden;
-}
-
-
-#specialHome div.rightPart h1,
-div.focus {
-       color: $secondary;
-}
-
-h1.top#frequence {
-       color: $primary;
-}
-
-/****************************************************/
-/****  SCREEN NAV ****/
-#Nav nav{padding:0.1em;}
-
-#Nav input{color:#333;}
-#Nav ul li button,
-#Nav ul li a {
-       border-width:0 0 2px 0;
-       border-style: solid;
-       border-color: transparent;
-}
-
-#Nav .current,
-#Nav .active,#Nav .icon-check,#Nav .active *{
-       font-weight: normal;
-}
-
-#Nav .selected a,
-#Nav ul li.current a, #Nav ul a.active, #Nav button.active {
-       border-color: #333;
-}
-
-#Nav nav{
-       margin:0;
-}
-
-#specialHome h2,
-#Nav h2{
-       margin:0;
-       padding:0;
-}
-#Nav nav ul{
-       margin:1em 0 1em 0;
-}
-
-#Nav li {
-       padding-right: 1em;
-}
-
-#Nav li a{
-       display: inline-block;
-}
-#Nav nav ul.distributed li {padding: 0;}
-
-#fiber-nav{
-    font-size:150%;
-       border-width:0 0 2px 0;border-style:solid;
-}
-#fiber-nav li, #fiber-nav li a{
-       display:block;
-}
-#fiber-nav ul{
-       padding:0.5em;
-}
-#fiber-nav li a{
-       padding:0.5em;
-}
-#fiber-nav .selected > a,
-#fiber-nav .current {
-    font-weight:bold;
-}
-
-/****************************************************/
-/**** PLAYER ****/
-/****************************************************/
-/*#Home #player{   float: left; } */
-
-#player-container .metas, #player-container img{border-color:#fff;}
-#player-container .padded{padding:0.3em;}
-
-#player-container button,#player-container a{
-}
-#player-container .metas{
-    float:right;
-}
-#DirectStreamPanikControler {
-}
-#DirectStreamPanikControler div.label {
-       margin-top: -10px;
-       @media screen and (max-width: $size_m) {
-               margin-top: 0;
-       }
-}
-
-#chatSymbol,
-#streamSymbol{
-       font-size:3em;
-       float:left;
-       margin-right:15px;
-       position: relative;
-       z-index: 10;
-       top: -6px;
-}
-#CurrentlyPlaying{
-       display: none;
-       color: $red;
-       font-weight: bold;
-       padding: 0 0 0 0;
-       @media screen and (max-width: $size_m) {
-               padding: 0.6em 0 0 0;
-               margin-top: -5px;
-       }
-}
-
-#Player {
-       position: absolute;
-       top: 180px;
-       left: calc(50% - 25px);
-       width: 50px;
-       text-align: left;
-       @media screen and (max-width: $size_m) {
-               top: 130px;
-       }
-}
-
-#Player.withPlaylist {
-       #audioPlayer {
-               display: none;
-       }
-}
-
-#player-container #myPlaylist a {
-       white-space: normal;
-}
-
-#player-container.minimized{
-       width:auto;
-       border-width:0px 2px 2px 0 !important;
-       border-bottom-right-radius:1em;
-       -moz-border-bottom-right-radius:1em;
-       -webkit-border-bottom-right-radius:1em;
-}
-#player-container.minimized #player{
-       padding:0;
-}
-
-/*Playlist*/
-
-#Playlist {
-       padding-top: 2px;
-}
-
-#Playlist #playlistLabel{
-       float:right;
-
-}
-#Playlist .playListControls{   
-}
-#Playlist .playListControls button{    
-       margin-right:0.5em;
-       display:inline-block;
-}
-#Playlist .playListControls .playPause{
-       font-size:3em;
-       margin-right:5px;
-       float:left;
-       position: relative;
-       top: -8px;
-       @media screen and (max-width: $size_m) {
-               top: -2px;
-       }
-}
-
-#Playlist .playing .icon-pause{
-   -webkit-animation: loading 1s infinite linear;
-   -moz-animation: loading 1s infinite linear;
-   -o-animation: loading 1s infinite linear;
-   animation: loading 1s infinite linear;
-}
-#Playlist .playlistControls button,#Playlist .playlistControls .button{
-       margin:0 0.1em 0 0.1em;
-}
-#Playlist li{
-       clear:right;
-}
-#Playlist .soundControls button{}
-
-#player-container #Playlist ol li{
-       line-height:1.3em;
-       padding:0;
-       margin:0;
-}
-#Playlist ol li .soundControls{
-       margin-left: 1ex;
-       position: relative;
-       float: right;
-       visibility: hidden;
-}
-#Playlist ol li.active .soundControls {
-       visibility: visible;
-}
-#Playlist ol li .title{
-       display:inline-block;
-       white-space: nowrap;
-       text-overflow: ellipsis;
-       overflow: hidden;
-}
-
-/****************************************************/
-/**** #Changing #Footer ... ****/
-/****************************************************/
-#Changing{
-       display: flex;
-       flex-direction: column;
-       min-height: 84vh;
-}
-
-#Main{
-       margin: 0 auto;
-       width: 1010px;
-       flex-grow: 1;
-       position: relative;
-       z-index: 10;
-       @media screen and (max-width: $size_m) {
-               z-index: 1;
-               width: auto;
-               margin: 0 1rem;
-       }
-}
-#Main >.wrapper{
-       padding-bottom:2em;
-}
-#Home #Main{
-       min-height:0;
-}
-#Changing a:hover,#Changing button:hover {
-       text-decoration:none;
-}
-/* GLOBAL SITE NAV */
-#userLog{
-       z-index:2000;
-       position: fixed;
-       bottom: 0px;
-       right: 0px;
-}
-#userLog .log{
-       margin:0.3em;
-       -moz-box-shadow: 0px 0px 3px #000;
-       -webkit-box-shadow: 0px 0px 3px #000;
-       box-shadow: 0px 0px 3px #000;
-       border-radius:0.5em;-moz-border-radius:0.5em;-webkit-border-radius:0.5em;
-       text-align:center;
-       padding: 0.3em;
-       font-size:0.9em;
-       color:black;
-       background-color:$primary;
-       border: 2px solid black;
-       background-image: linear-gradient(135deg, rgba(0, 0, 0, 0.04) 25%, transparent 25%, transparent 50%, rgba(0, 0, 0, 0.04) 50%, rgba(0, 0, 0, 0.04) 75%, transparent 75%, transparent);
-}
-#userLog .log.info{
-       background-color:grey;
-       color:white;
-}
-#userLog .log.ok{
-       background-color:green;
-       border-color:black;
-       color:white;
-}
-#userLog .log.error{
-       background-color:$primary;
-       border-color:yellow;
-}
-#main {}
-#mainLegend{
-       width:30%;
-       text-align:right;
-       float:right;
-       padding:1em;
-}
-
-#Footer {
-       padding-top: 120px;
-       font-weight: bold;
-       position: relative;
-       z-index: 3;
-       font-size: 16px;
-
-       a {
-               color: $red;
-               text-decoration: none;
-       }
-
-       p {
-               margin: 0 1em 1em 0;
-               text-align: center;
-       }
-
-       @media screen and (max-width: $size_m) {
-               padding-bottom: 30px;
-       }
-}
-
-
-/****************************************************/
-.inline .link{display:block;padding:1em;}
-/**** Liste   ****/
-/**** EMISSIONS ****/
-
-
-/**** EPISODE ****/
-/**** Detail  ****/
-
-.episode .tag{
-}
-.episode.resume, .episode.inline{
-       padding:1em 0.5em 1em;
-}
-.episode.inline .dateBloc, .episode.resume .dateBloc{
-       float:left;
-}
-.episode.resume img {
-       border: 2px solid black;
-}
-
-.episode.resume .title{
-       margin-bottom:0.5em;
-}
-.episode.resume .logo{
-       float: right;
-}
-.topik-link .logo,
-.episode.inline .logo {
-       min-height: 50px;
-       float: left;
-       margin-right: 1em;
-}
-.episode.resume .sound{
-       float:right;
-       margin:0 0 0.5em 0.5em;
-}
-.episode.inline .sound.right{
-       text-align:center;
-       font-size:70%;
-       position: relative;
-       z-index: 10;
-}
-.episode.inline .sound.right button{
-    font-size:1.5em;
-       display:inline;
-       text-align:center;
-       padding-bottom:0.05em;
-}
-.episode.resume .sound.right .icon-download{
-       text-align:center;
-}
-.episode.resume .sound.right .icon-download{
-       display:block;
-}
-
-.big.icon-pause,
-.big.icon-stop,
-.big.icon-share {
-       display: inline-block;
-       vertical-align: middle;
-}
-
-.episode.detail .logo.right{
-       max-width:50%;
-}
-
-.episode.resume .date .day, .emission-detail .date .day {
-}
-
-.episode.resume .content {
-       padding-left: 5em;
-}
-.episode.resume .content .title {
-}
-
-.episode.resume .logo {
-       margin:0 0 1em;
-       max-width:20%;
-}
-.episode.inline .date{
-       font-size:80%;
-}
-
-#Emission-tabs-menu .emissions-newsitems {
-       margin-bottom: 2em;
-}
-
-#Emission-tabs-menu .emissions-newsitems ul.list li {
-       border: 0;
-}
-
-#Emission-tabs-menu .futur-episodes h5,
-#Emission-tabs-menu .recent-episodes h5 {
-       font-size: 1.2em;
-}
-
-#Emission-tabs-menu #search-form {
-       margin-bottom: 1em;
-}
-
-div.extra-soundfiles h3 {
-       margin-top: 1em;
-       font-size: 2.5em;
-}
-
-div.extra-soundfiles ul li {
-       position: relative;
-}
-
-div.extra-soundfiles ul li div.audio {
-       display: inline;
-       top: 5px;
-       right: 0;
-       position: absolute;
-       font-size: 60%;
-}
-
-div.extra-soundfiles ul strong {
-       padding-right: 3em;
-}
-
-/****************************************************/
-/**** News ****/
-
-#newsRoll {
-       max-width: 500px;
-}
-
-#newsRoll li {
-       background: white;
-}
-
-.newsRoll .title{
-       background:black;
-       color:white;
-       bottom:0px;
-       opacity:0.9;
-    width:100%;
-       text-align: left;
-       position: absolute;
-       left: 0;
-}
-.newsRoll .title div{
-       padding: 1em;
-}
-.newsRoll a, .newsRoll button img{
-    border:3px solid $secondary;
-}
-
-.newsRoll .by3 button {
-       width: 100%;
-}
-
-.soundfiles .special a,
-.news .special a {
-       position: relative;
-}
-
-.special .labels .item,
-.newsRoll .labels .item{
-       display:block;
-       background: $secondary;
-       color:white;
-       margin:0.1em;
-       font-size:0.9em;
-       padding:0.3em;
-}
-.newsList .current a{
-    opacity:0.5;
-}
-/****************************************************/
-.list.news li {
-}
-
-.soundfiles ul.custom li a,
-.news ul.custom li a { max-width: 98%; }
-.news li.item a {padding:1em;}
-
-.logo img{
-       display:block;
-       border-style:solid;
-       border-width:3px;
-}
-ul.newsSpecial{
-       border-bottom:3px solid #ccc;
-}
-
-/****************************************************/
-/**** Home & ****/
-/****************************************************/
-
-#Home #Nav .wrapper{
-       max-width:auto !important;
-       width:auto !important;
-}
-
-/****************************************************/
-/**** PROGRAM ****/
-/****************************************************/
-
-.program.tabs nav ul li{
-       display:table-cell;
-       width:14%;
-       text-align:center;
-}
-
-.program.tabs nav ul li.week-arrow {
-       width: 1%;
-       padding-bottom: 5px;
-}
-
-.program ul .dateBloc {
-       float:left;
-       padding-top:1em;
-}
-.program ul .schedule {
-       margin-left:5em;
-}
-.program .nonstop {
-       text-align:left;
-}
-.program-week .programDate{
-       float:left;
-       width:3em;
-}
-.program-week .programCell{
-       margin-left:3.5em;
-}
-.program-week .nonStop .programDate{
-       visibility:hidden;
-}
-.program-week .nonStop .programCell{
-       font-size:0.9em;
-       padding-left:50%;
-       text-align:right;
-}
-.program-week a.nonstop{
-       font-size:0.9em;
-       margin:0.1em;
-}
-.program-week .inline,.program-week .resume{padding:0;}
-.program-week .description{}
-
-.program-week .title {
-       color: black;
-       display: inline;
-}
-
-.program-week .smooth {
-       color: #666;
-       opacity: 1.0;
-       font-size: 80%;
-       padding-bottom: 8px;
-}
-
-.program-week .emission h5,
-.program-week .smooth .title {
-       color: #333;
-       text-transform: uppercase;
-}
-
-.program-week .description {
-       color: black;
-       font-size: 90%;
-}
-
-.program-week .programCell:hover {
-       opacity: 0.5;
-}
-
-#Changing .program-week .programCell a {
-       opacity: 1.0;
-}
-
-#Changing .program-week .programCell .smooth a {
-       opacity: 0.5;
-}
-
-#Changing .program-week .programCell .smooth h5 a {
-       opacity: 1.0;
-}
-
-
-/****************************************************/
-/**** SEARCH ****/
-/****************************************************/
-
-.search li.previous-page {
-  margin-bottom: 2ex;
-  text-align: left;
-  margin-left: 0ex;
-  font-style: italic;
-}
-
-.search li.next-page {
-  margin-top: 2ex;
-  text-align: right;
-  margin-right: 0;
-  font-style: italic;
-}
-
-.search-filters {
-  text-align: justify;
-}
-
-
-/****************************************************/
-/**** GRILLE ****/
-/****************************************************/
-
-#grid #Main {}
-#grid th{
-       color:#000;
-}
-#grid .heure {
-       height:50px !important;
-}
-#grid .heure.vertical {
-       padding:1.5em 0;
-}
-#grid .day {
-       padding:1em 0 1em 0;
-}
-#grid .nonstop {
-}
-#grid .item{
-       padding:0.5em 0.2em 0.5em 0.2em;
-}
-#grid .cell hr {
-       border:1px dotted #ddd;
-       margin:0.3em;
-}
-#grid .time-label{
-       margin-top:0.5em;
-}
-
-#grid .highlighted,#grid .highlighted  *{
-       background:#333 !important;
-       color:white !important;
-}
-
-#grid .highlighted,#grid .highlighted  *{
-       background:#333 !important;
-       color:white !important;
-}
-#Emissions li.item.normal{
-       display:none;
-}
-#Emissions li.item.hightlighted{
-       display:block !important;
-}
-
-#gridNav span.category {
-       text-transform: none;
-}
-
-
-/**** Navigation for static pages ****/
-
-#fiber-nav {
-       font-size: 150%;
-}
-#fiber-nav li, #fiber-nav li a {
-       display: block;
-}
-#fiber-nav ul{
-       padding: 0.5em;
-}
-#fiber-nav li a{
-       padding:0.5em;
-}
-
-#fiber-content a {
-       text-decoration: underline;
-}
-
-#fiber-content .episode a,
-#fiber-content ul.list a {
-       text-decoration: none;
-}
-
-#fiber-content a:hover {
-       text-decoration: none;
-}
-
-.intro,
-.userContent,
-#fiber-content,
-.content,
-.content h5 {
-       line-height: 120%;
-}
-
-.userContent strong,
-#fiber-content strong {
-       text-transform: none;
-       font-style: normal;
-}
-
-.userContent em,
-#fiber-content em {
-       font-family: inherit;
-       font-style: italic;
-}
-
-/**** SCREEN SIZE ADAPTATIONS ****/
-    html #main{ font-size: 70%; }
-body { font-size: 18px;}
-@media (max-width: 300px){
-    body #All{ font-size: 80%; }
-}
-
-@media (min-width: 300px) and (max-width:800px){
-    body #All{ font-size: 85%; }
-}
-
-@media (min-width: 800px) and (max-width:$size_m){
-    body #All{ font-size: 90%; }
-}
-
-@media (min-width: $size_m) {
-    body #All{ font-size: 100%; }
-}
-
-#subscribe-form {
-  position: relative;
-  margin-bottom: 2em;
-  padding-bottom: 2em;
-}
-
-#Home #subscribe-form {
-  margin-bottom: 0;
-}
-
-#subscribe-form ul.errorlist {
-  position: absolute;
-  bottom: -2em;
-  text-align: center;
-  display: block;
-  width: 100%;
-  padding: 0;
-  list-style: none;
-  color: #800;
-}
-
-#subscribe-form input {
-       width: 15em;
-       max-width: none;
-}
-
-#Nav div.search form {
-  padding: 1em 0;
-}
-
-div.episode.resume div.title {
-       white-space: normal;
-}
-
-#Home div.program.tabs {
-       margin: 1em 0;
-}
-
-nav#program li {
-       display: block;
-       margin: 0;
-}
-
-#recent-emissions,
-#recent-news,
-#recent-sounds {
-       margin-top: 2em;
-}
-
-#recent-emissions h3,
-#recent-news h3,
-#recent-sounds h3 {
-       font-size: 140%;
-}
-
-#recent-emissions h3.sectionLabel {
-       margin-bottom: 0;
-}
-
-.episode.soundfile {
-       padding: 0;
-}
-
-.soundfile .smooth {
-       color: #666;
-       opacity: 1.0;
-       font-size: 80%;
-}
-
-
-.soundfile p.date {
-       margin: 0;
-}
-
-.frontpage.soundfile .audio {
-       font-size: 80%;
-       padding-top: 0.5ex;
-       padding-bottom: 1ex;
-}
-
-#panikdb {
-       position: absolute;
-       top: -20px;
-       right: 0px;
-       background: white;
-       color: #888;
-       padding: 5px 10px;
-       border: 1px solid #888;
-       border-width: 1px 1px 0 1px;
-       -webkit-transform-origin: bottom right;
-       -webkit-transform: rotate(270deg);
-       -moz-transform-origin: bottom right;
-       -moz-transform: rotate(270deg);
-       transform-origin: bottom right;
-       transform: rotate(270deg);
-}
-
-img.logo.right {
-       margin-bottom: 1em;
-}
-
-.soundfile .special,
-.newsitem .special {
-       margin-bottom: 2em;
-}
-
-.newsitem .special .smooth {
-       padding-top: 5px;
-}
-
-/* USER CONTENT */
-
-div.userContent ul {
-       margin: 1em 0;
-}
-
-div.userContent h1,
-div.userContent h2,
-div.userContent h3,
-div.userContent h4 {
-       text-transform: none;
-       font-weight: normal;
-}
-
-div.userContent h1 { font-size: 2em; }
-div.userContent h2 { font-size: 1.8em; }
-div.userContent h3 { font-size: 1.5em; }
-div.userContent h4 { font-size: 1.5em; }
-div.userContent a { text-decoration: underline; }
-
-div.userContent a.tag { text-decoration: none; }
-
-div.emission-logo {
-       margin-left: 1em;
-}
-
-div.extra-soundfiles {
-       clear: both;
-}
-
-h3.episode-subtitle {
-       color: $blue;
-       font-size: 24px;
-       padding-top: 0;
-}
-
-.waveform {
-       display: none;
-       position: relative;
-}
-
-.waveform span {
-       background: $red;
-       background: linear-gradient(to top, darken($red, 20%) 0%, $red 40%);
-       display: inline-block;
-       width: 0.50%;
-       cursor: pointer;
-}
-
-.waveform span.done {
-       background: linear-gradient(to top, darken($red, 5%) 0%, darken($red, 10%) 100%);
-}
-
-.waveform span.done.current + span {
-       background: $red;
-}
-
-.waveform i.duration {
-       position: absolute;
-       right: 4px;
-       bottom: 4px;
-       color: white;
-       opacity: 0.5;
-       font-style: normal;
-       font-weight: bold;
-}
-
-span.timestamp {
-       cursor: pointer;
-       border-bottom: 1px dotted #666;
-}
-
-div.fragment-sound {
-       position: relative;
-}
-
-div.soundcell div.logo {
-       vertical-align: top;
-}
-
-div.fragment-sound {
-}
-
-div.extra-soundfiles div.fragment-sound {
-       margin-top: 5px;
-}
-
-div.extra-soundfiles div.fragment-name {
-       font-style: italic;
-       position: relative;
-       top: 1ex;
-       max-width: 70%;
-}
-
-div.extra-soundfiles ul li div.fragment-sound div.waveform {
-}
-div.extra-soundfiles ul li div.fragment-sound div.audio {
-       bottom: 0;
-}
-
-#fiber-content div.extra-soundfiles strong {
-       text-transform: uppercase;
-
-}
-
-.nonstop-track-title, .nonstop-track-artist {
-       font-size: 80%;
-}
-
-.soundfile-info {
-        padding-right: 75px;
-}
-
-#fiber-content div.extra-soundfiles .soundfile-info strong {
-        padding-right: 0;
-}
-
-#fiber-content div.extra-soundfiles .soundfile-info a {
-        text-decoration: none;
-}
-
-#fiber-content div.extra-soundfiles {
-       margin: 1em 0;
-}
-
-div.extra-soundfiles div.logo {
-       display: inline-block;
-}
-
-div#fiber-content div.extra-soundfiles ul.list {
-       display: inline-block;
-       width: 88%;
-       width: calc(100% - 74px);
-}
-
-div.download-links {
-       position: absolute;
-       z-index: 1000;
-       text-align: right;
-}
-
-div.hidden-download-links {
-       display: none !important;
-}
-
-div.episode-detail div.sound div.download-links {
-       display: inline-block;
-       padding-top: 1ex;
-       padding-left: 3em;
-}
-
-div.extra-soundfiles div.download-links {
-       background: white;
-}
-
-h1.top a.dimmed {
-       opacity: 0.7;
-}
-
-div#agenda div.content-inline {
-       margin-bottom: 1em;
-}
-
-div.previous-and-next-months {
-       margin-top: 1em;
-}
-
-div.publication-date.date.smooth {
-       font-size: 80%;
-}
-
-#All h1.top.fullwidth {
-       width: 150%;
-}
-
-div.gallery > div {
-       display: flex;
-       flex-direction: row;
-       flex-wrap: wrap;
-       > span {
-               display: block;
-               width: 20%;
-               position: relative;
-               @media screen and (max-width: $size_s) {
-                       width: 50%;
-               }
-               img {
-                       width: 100%;
-                       height: 100%;
-                       cursor: pointer;
-               }
-               span.title {
-                       position: absolute;
-                       top: 0;
-                       left: 10px;
-                       background: $secondary;
-                       color: white;
-                       padding: 0.5ex 1ex;
-                       border-bottom: 3px solid $red;
-               }
-       }
-}
-
-div.gallery img {
-       background: white;
-}
-
-div#dialog-background,
-div.gallery div.first {
-       position: fixed;
-       top: 0;
-       left: 0;
-       width: 100%;
-       height: 100%;
-       background: rgba(0, 0, 0, 0.9);
-       z-index: 1000;
-       text-align: center;
-}
-
-div.gallery div.first img {
-       padding: 5px;
-       padding-bottom: 25px;
-       margin-top: -300px;
-       margin-left: -500px;
-       position: absolute;
-       top: 50%;
-       left: 50%;
-       transition: all 0.5s ease;
-       transform-origin: bottom left;
-}
-
-div.portrait div.gallery div.first img {
-       margin-top: -320px;
-       margin-left: -240px;
-}
-
-div.gallery {
-}
-
-div.gallery span.gallery-legend {
-       display: inline-block;
-       position: absolute;
-       top: 50%;
-       margin-top: 304px;
-       left: 0%;
-       width: 100%;
-       color: #000;
-       z-index: 1000;
-}
-
-div.portrait div.gallery span.gallery-legend {
-       margin-top: 330px;
-}
-
-@media screen and (max-width: $size_m) {
-       div.portrait div.gallery div.first img,
-       div.gallery div.first img {
-               max-width: 80vw;
-               margin: 0;
-               max-height: 80vh;
-               left: 10vw;
-               top: 10vh;
-               display: inline-block;
-       }
-}
-
-ul.tags {
-       padding-top: 1em;
-       clear: both;
-}
-
-a.topik-link {
-       clear: both;
-       display: block;
-       margin-top: 1em;
-}
-
-#fiber-content div.topikcellcontent a {
-       text-decoration: none;
-       height: 500px;
-}
-
-#fiber-content div.topikcell .topik-large a {
-       height: auto;
-}
-
-div.topikcellcontent h5 {
-       padding-top: 1ex;
-}
-
-div.topikcellcontent.topik-large a {
-       width: 100%;
-       float: none;
-       display: inline-block;
-       text-align: left;
-}
-
-div.topikcellcontent.topik-large img {
-       width: 100%;
-       display: block;
-}
-
-div.topikcellcontent.topik-large a div {
-       @media screen and (min-width: 760px) {
-               display: flex;
-       }
-       margin-top: 1ex;
-       h2 {
-               margin-top: 0;
-               white-space: nowrap;
-               margin-right: 1ex;
-               @media screen and (max-width: 760px) {
-                       padding-bottom: 0;
-               }
-       }
-}
-
-div.topikcellcontent a {
-       margin-bottom: 2em;
-       display: inline-block;
-       text-align: left;
-       width: 50%;
-       box-sizing: border-box;
-       padding-right: 2em;
-       float: left;
-}
-
-div.topikcellcontent img {
-}
-
-div.topikcellcontent h2 {
-       font-size: 3.5em;
-}
-
-.program-week img.smooth {
-       padding-bottom: 0;
-}
-
-div#dialog-background {
-       display: flex;
-}
-div#dialog-embed {
-       position: relative;
-       background: white;
-       width: 50%;
-       margin: auto;
-       text-align: left;
-       padding: 1ex;
-       color: black;
-}
-
-div#dialog-embed textarea {
-       width: 100%;
-       max-width: none;
-}
-
-div#dialog-embed #close-button {
-       position: absolute;
-       right: 1ex;
-}
-
-body#embed {
-       min-height: auto !important;
-       margin: 0;
-       background: white;
-       div.soundfile-info {
-               height: 36px;
-       }
-}
-
-body#embed #Main {
-       background: transparent;
-}
-
-body#embed #Commons,
-body#embed #metaNav,
-body#embed #Footer,
-body#embed #userLog,
-body#embed #panikdb,
-body#embed #Player {
-       display: none;
-}
-
-body#embed #Changing {
-       float: none;
-       width: auto;
-}
-
-body#embed #Main > .wrapper {
-       padding: 0;
-}
-
-body#embed .logo {
-       padding: 0;
-       img {
-               border: 0;
-       }
-}
-
-body#embed ul.custom {
-       display: inline-block;
-       width: calc(100% - 110px);
-}
-
-body#embed ul.custom .soundfile-info {
-       padding: 0;
-}
-
-body#embed span.fragment-title {
-       font-weight: normal;
-}
-
-table.playlist {
-       width: 90%;
-}
-
-table.playlist td {
-       padding: 0.5ex;
-       text-align: left;
-}
-
-table.playlist td.tracktime {
-       width: 6ex;
-       text-align: center;
-}
-
-p.playlist-disclaimer {
-       margin-top: 2em;
-       max-width: 60ex;
-       font-style: italic;
-}
-
-
-#main-topiks #fiber-nav li ul {
-    padding-top: 0;
-    padding-left: 2em;
-}
-#main-topiks #fiber-nav li ul li {
-    padding-left: 0;
-    font-size: 80%;
-}
-
-#main-topiks #fiber-nav li ul li a {
-    padding-left: 0;
-}
-
-div.commands {
-       display: flex;
-       width: 90vw;
-}
-
-@media screen and (min-width:$size_m){
-       div.commands {
-               width: calc(90vw - 240px);
-       }
-}
-
-input#msg {
-       flex-grow: 1;
-}
-
-div.chat-area {
-       max-width: 60em;
-}
-
-#chat {
-       margin-top: 1ex;
-}
-
-#chat div.msg {
-        position: relative;
-        margin-bottom: 1ex;
-        transition: opacity 1s ease;
-}
-
-#chat div.msg.new {
-        opacity: 0;
-}
-
-#chat div.msg.msg-out span.content {
-        font-size: 90%;
-        color: #444;
-}
-
-#chat span.from {
-   display: inline-block;
-   width: 10rem;
-   overflow: hidden;
-   text-overflow: ellipsis;
-   color: #888;
-   position: absolute;
-}
-#chat span.content {
-  display: inline-block;
-  padding-left: 11rem;
-}
-
-#chat div.msg.info span.content {
-       padding-left: 1rem;
-       font-style: italic;
-       color: #666;
-}
-
-@media screen and (max-width: $size_m) {
-    #chat span.from {
-        display: block;
-        position: static;
-        width: auto;
-    }
-    #chat span.content {
-        display: block;
-        padding-left: 2rem;
-    }
-}
-
-h1.top > span.chat.with-logo {
-       position: relative;
-       left: 140px;
-       display: inline-block;
-       max-width: calc(100% - 140px);
-}
-
-div.top-logo {
-       position: absolute;
-       top: 30px;
-}
-
-div.top-logo img {
-       border: 2px solid black;
-}
-
-@media screen and (max-width:$size_m){
-       div.top-logo {
-               display: none;
-       }
-       h1.top > span.chat.with-logo {
-               position: static;
-               max-width: none;
-       }
-       div.topikcellcontent a {
-               width: auto;
-       }
-       #fiber-content div.topikcell a {
-               height: auto;
-       }
-}
-
-div#CurrentlyChatting {
-       cursor: pointer;
-       margin-top: 1em;
-}
-
-div.description-emission-chat {
-       margin-bottom: 2em;
-}
-
-div.chatPart h3 {
-       padding-top: 0;
-}
-
-div#chat.moderation .msg-in span.from {
-       cursor: pointer;
-}
-
-div#chat.moderation .msg-in span.from:hover::after {
-       padding-left: 1ex;
-       font-family: FontAwesome;
-       content: "\f056";
-       font-size: 80%;
-}
-
-div.programCell a.playlist {
-       font-size: 80%;
-}
-
-#bg-title {
-       display: none;
-       color: lighten($primary, 20);
-       text-transform: uppercase;
-       line-height: 100%;
-       font-size: 250px;
-       font-size: 25vh;
-       position: absolute;
-       left: -260px;
-       top: 48vh;
-       z-index: 0;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
-       user-select: none;
-       cursor: default;
-}
-
-img {
-       box-sizing: border-box;
-       transition: all ease 0.5s;
-}
-
-div.emission-tile {
-       position: relative;
-       box-sizing: border-box;
-       width: 25%;
-       padding-bottom: 20px;
-       float: left;
-       height: 310px;
-       @media screen and (max-width: $size_s) {
-               width: 100%;
-               height: 325px;
-       }
-       overflow: hidden;
-       div.image {
-               border: none;
-               height: 230px;
-               width: 230px;
-               text-align: center;
-               @extend %image-bordure;
-               @media screen and (max-width: $size_s) {
-                       height: 260px;
-               }
-       }
-       div.name {
-               margin-top: 10px;
-               text-transform: uppercase;
-               text-align: left;
-               color: $white;
-               font-weight: bold;
-               span {
-                       transition: all ease 0.5s;
-               }
-       }
-       div.tags {
-               @extend %text;
-               font-size: 12px;
-               text-transform: lowercase;
-               min-height: 20px;
-               span {
-                       margin-right: 1ex;
-               }
-       }
-}
-
-div.emission-detail {
-       div.emission-tile {
-               width: 25%;
-               height: 25vw;
-       }
-}
-
-#www-esperanzah {
-       position: absolute;
-       top: 58px;
-       left: 20px;
-       color: $red;
-       border-radius: 3px;
-       width: 40px;
-       text-align: center;
-       padding: 2px 10px;
-       transition: all .2s;
-       &:hover {
-               background-color: $red;
-               color: white;
-       }
-       @media screen and (max-width: $size_s) {
-               top: 0;
-               left: 0;
-               br {
-                       display: none;
-               }
-       }
-}
-
-#instagram,
-#twitter,
-#facebook {
-       transition: all .2s;
-       display: block;
-       position: absolute;
-       right: 0;
-       top: 5px;
-       height: 35px;
-       width: 35px;
-       background: $red url($data_uri_facebook) center center no-repeat;
-       z-index: 100;
-       &:hover {
-               background-color: $red;
-       }
-}
-
-#twitter {
-       top: 45px;
-       background: $red url($data_uri_twitter) center center no-repeat;
-}
-
-#instagram {
-       top: 85px;
-       background: $red url($data_uri_instagram) center center no-repeat;
-}
-
-#streamSymbol {
-       background-repeat: no-repeat;
-       width: 50px;
-       height: 50px;
-}
-div.player-start {
-       background: url($data_uri_start), url($data_uri_pause);
-       background-position: 0 0, -50px 0;
-}
-
-div.player-pause {
-       background: url($data_uri_pause);
-       background-position: 0 0;
-}
-
-div.player-stop {
-       background: url($data_uri_stop);
-       background-position: 0 0;
-}
-
-div.playListControls {
-       button.action-stop {
-               background-repeat: no-repeat;
-               width: 50px;
-               height: 50px;
-               background: url($data_uri_stop);
-       }
-       button.action-pause {
-               background-repeat: no-repeat;
-               width: 50px;
-               height: 50px;
-               background: url($data_uri_pause);
-       }
-
-       button.action-play {
-               background-repeat: no-repeat;
-               width: 50px;
-               height: 50px;
-               background: url($data_uri_play);
-       }
-}
-
-div#actu {
-       padding-bottom: 14px;
-       h2 {
-               padding-right: 10px;
-               font-size: 40px;
-               padding-bottom: 10px;
-       }
-       div {
-               @extend %text;
-       }
-       @media screen and (max-width: $size_m) {
-               display: block;
-               > h2 {
-                       text-align: center;
-               }
-               > h2, > div {
-                       width: auto;
-               }
-       }
-}
-
-div.emission-detail {
-       h2 {
-               margin-top: 0;
-               margin-bottom: 0;
-               font-weight: bold;
-       }
-       .schedule {
-               color: $blue;
-               text-transform: none;
-       }
-       div.episode-info,
-       div.emission-info {
-               div.image {
-                       float: left;
-                       margin-right: 1rem;
-                       height: 450px;
-                       width: 450px;
-                       @extend %image-bordure;
-                       @media screen and (max-width: $size_s) {
-                               float: none;
-                               max-width: 100%;
-                               overflow: hidden;
-                               height: 260px;
-                               width: 260px;
-                               margin: auto;
-                       }
-               }
-               padding-top: 2rem;
-               box-sizing: border-box;
-               div.emission-text {
-                       @extend %text;
-                       a {
-                               border-bottom: solid 1px #ff8b57;
-                               text-decoration: none;
-                               &:hover {
-                                       background: #ff8b57;
-                                       color: #fff;
-                               }
-                       }
-               }
-       }
-       div.episode-info {
-               position: relative;
-               div.episode-text {
-                       display: flex;
-                       flex-direction: column;
-                       min-height: 450px;
-                       justify-content: space-between,
-               }
-               div.sound {
-                       position: relative;
-                       align-self: flex-end;
-                       width: 100%;
-                       @media screen and (max-width: $size_s) {
-                               order: -1;
-                       }
-                       @media screen and (max-width: $size_m) {
-                               position: static;
-                               width: 100%;
-                       }
-                       button.action-play {
-                               font-weight: bold;
-                       }
-                       button.action-share {
-                               text-transform: none;
-                       }
-                       button.icon-play-sign {
-                               display: none;
-                       }
-                       button.icon-pause {
-                               display: none;
-                               position: absolute;
-                               bottom: 8px;
-                               background: transparent;
-                               left: 2px;
-                               z-index: 100;
-                       }
-                       &.playing button.icon-pause {
-                               display: block;
-                       }
-               }
-               div.more-text {
-                       @extend %text;
-                       max-width: 50em;
-                       margin: 2em auto;
-               }
-       }
-}
-
-div.emission-episodes {
-       clear: both;
-       padding-top: 2rem;
-       ul, li {
-               margin: 0;
-               padding: 0;
-               list-style: none;
-       }
-       a {
-               height: 310px;
-               box-sizing: border-box;
-               position: relative;
-               width: 240px;
-               margin-right: 10px;
-               display: inline-block;
-               margin-bottom: 1rem;
-               float: left;
-               div.image {
-                       height: 240px;
-                       @extend %image-bordure;
-               }
-               div.time {
-                       @extend %text;
-               }
-               div.name {
-                       color: $blue;
-                       font-weight: bold;
-               }
-       }
-
-       &.archives {
-               width: 100%;
-               a {
-               }
-               a div.image {
-                       width: 240px;
-               }
-       }
-}
-
-h3.archives {
-       clear: both;
-       font-size: 30px;
-}
-
-div.emission-episodes.archive::after {
-       content: "";
-       display: block;
-}
-
-p.archives-sorry {
-       clear: both;
-       padding: 3rem;
-       text-align: center;
-}
-
-div#Playlist {
-       position: relative;
-       div.label {
-               position: absolute;
-               left: 66px;
-               top: -10px;
-               @media screen and (max-width: $size_m) {
-                       top: 0;
-               }
-               display: none;
-       }
-       ol {
-               display: none;
-               padding-top: 12px;
-               margin-left: 29px;
-               list-style: none;
-               @media screen and (max-width: $size_m) {
-                       margin-left: 36px;
-               }
-       }
-}
-
-#back-home {
-       text-transform: lowercase;
-       display: block;
-       text-align: left;
-       color: $red;
-       font-size: 16px;
-       &::before {
-               content: "<";
-               padding-right: 10px;
-               transition: padding 0.2s;
-       }
-       &:hover::before {
-               padding-right: 4px;
-       }
-}
-
-.playing button.no-icon-remove::after {
-       content: "\0025fc";
-}
-
-div#grid table {
-       max-width: 1000px;
-       margin: 0 auto;
-}
-
-div#loading-page {
-       position: fixed;
-       top: 0;
-       left: 0;
-       right: 0;
-       height: 5px;
-       background: $secondary;
-       z-index: 1100;
-       animation-name: load_animation;
-       animation-duration: 6000ms;
-       animation-timing-function: ease-out;
-       transition: opacity 200ms linear;
-       &.fade {
-               opacity: 0;
-       }
-}
-
-@keyframes load_animation {
-       0% { right: 100%; }
-       100% { right: 0%; }
-}
-
-div#header_date {
-        text-transform: uppercase;
-        position: absolute;
-        text-align: right;
-        color: $white;
-       font-weight: normal;
-       font-size: 120%;
-        top: 63px;
-        right: 55px;
-       @media screen and (max-width:$size_m){
-               display: none;
-       }
-}
-
-h2.top {
-       padding-bottom: 2rem;
-}
-
-.episode-auto-selection-cell.hide-emission-titles {
-       .emission-title, .soundfile-info .sep {
-               display: none;
-       }
-}
-
-#detour-vers-le-footer {
-       margin: 0 auto;
-       padding-top: 2em;
-       text-align: center;
-       max-width: 50em;
-       clear: both;
-       .logos img {
-               margin: 0 1ex;
-       }
-}
-
-.emission-text {
-       display: flex;
-       flex-direction: column;
-       justify-content: space-between;
-       min-height: 450px;
-       @media screen and (max-width:$size_m){
-               min-height: auto;
-       }
-       #subscribe-links {
-               ul, li {
-                       margin: 0;
-                       padding: 0;
-                       list-style: none;
-               }
-               ul {
-                       display: flex;
-                       flex-wrap: wrap;
-                       @media screen and (max-width:$size_m){
-                               justify-content: center;
-                       }
-               }
-               li {
-                       margin-right: 1em;
-                       margin-bottom: 1em;
-                       a {
-                               padding: 0.3em 0.6em;
-                               background: $red;
-                               color: white;
-                               border-radius: 10px;
-                               &:hover {
-                                       background: darken($red, 20%);
-                               }
-                       }
-               }
-       }
-}
diff --git a/panikweb_esperanzah/static/css/_type.scss b/panikweb_esperanzah/static/css/_type.scss
deleted file mode 100644 (file)
index 1388023..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-$font-path: '../fonts/Cervo' !default;
-
-@mixin cervo-font($type, $weight, $style: normal) {
-    @font-face {
-        font-family: 'Cervo';
-        src: url('#{$font-path}/typoforge_studio_-_cervoneue-#{$type}neue-webfont.woff') format('woff2'),
-            url('#{$font-path}/typoforge_studio_-_cervoneue-#{$type}neue-webfont.woff') format('woff');
-        font-weight: $weight;
-        font-style: $style;
-    }
-}
-
-@include cervo-font('regular', 400);
-@include cervo-font('bold', 700);
-
-[class^="icon-"],
-[class*=" icon-"]{
-       /*font-size:1.3em;*/
-}
-.resymbol{
-       vertical-align: middle;
-       display: inline-block;
-       font-family: 'Symbols';
-}
-.resymbol.big, .icons.big{
-       font-size:2em;
-}
-.resymbol.huge, .icons.huge{
-       font-size:3em;
-}
-.info:before,.warning:before,.error:before{
-       font-family: FontAwesome;
-       display:inline-block;
-       margin-right:0.2em;
-}
-.info:before {
-       content: "\f05a";
-}
-.warning:before {
-       content: "\f071";
-}
-.error:before {
-       content: "\f056 ";
-}
-.checked:before {
-       content: "\f056 ";
-}
-                       
-.icon-communautaire:before {
-  content: "▲"; /* &#9652; */
-}                      
-.icon-musique:before {
-  content: "△"; /* &#9653; */
-}              
-.icon-creation:before {
-  content: "○"; /* &#9675; */
-}                      
-.icon-agenda-culturel:before {
-  content: "●"; /*  &#9679; */
-}
-.icon-infodebats:before {
-  content: "■"; /*  &#9632; */
-  /*content: "□ ";   &#9633; */
-}
-
index 55dd9c4c1269a54105cd2682010da57487e6af9b..cb3284c82355aa4b870fbae95e9b5da3e28631ce 100644 (file)
+@import 'data_uris';
+
 $size_m: 1000px;
 $size_s: 600px;
 
 $very-small-limit: 400px;
 $mobile-limit: 760px;
 
-@import 'data_uris';
-//@import 'reset';
-@import 'type';
-@import 'general';
-//@import 'grid';
-@import 'specifics';
+$black: #000000;
+$white: #FFFFFF;
+$orange: #ff5321;
+$yellow: #e3fb00;
+$green: #389400;
+$blue: #1332ff;
+$primary: $yellow;
+$secondary: $orange;
+
+$text-font: montreal, sans-serif;
+$title-font: euro, sans-serif;
+
+@font-face {
+       font-family: "montreal";
+       src: url('../fonts/neuemontreal-regular-webfont.woff2') format('woff2');
+       font-style: normal;
+       font-weight: normal;
+}
+
+@font-face {
+       font-family: "euro";
+       src: url('../fonts/EurostileExtended-Black.woff2') format('woff2');
+       font-style: normal;
+       font-weight: bold;
+}
+
+@font-face {
+       font-family: 'FontAwesome';
+       src: url('/static/xstatic/fonts/fontawesome-webfont.eot');
+       src: url('/static/xstatic/fonts/fontawesome-webfont.eot?#iefix') format('embedded-opentype'), url('/static/xstatic/fonts/fontawesome-webfont.woff') format('woff'), url('/static/xstatic/fonts/fontawesome-webfont.ttf') format('truetype'), url('/static/xstatic/fonts/fontawesome-webfont.svg#fontawesomeregular') format('svg');
+       font-weight: normal;
+       font-style: normal;
+}
+
+* {
+       box-sizing: border-box;
+}
+
+body {
+       font-family: $text-font;
+       line-height: normal;
+       text-align: left;
+       margin: 0 auto 0 auto;
+       clear: both;
+       font-size: 22px;
+       background: $orange;
+       color: $white;
+}
+
+a {
+       color:inherit;
+       text-decoration: none;
+}
+.userContent a:hover {
+    text-decoration: underline;
+}
+a.block:hover,nav a:hover{
+    text-decoration: none;
+}
+button, .button{
+       margin:0 0 0 0;
+       padding: 0 0 0 0;
+       cursor:pointer ;
+       background:none;
+}
+img {max-height: 100%;}
+
+h1, h2, h3, h4, h5{
+       line-height:1em;
+       padding:0.2em 0 0.2em 0;
+}
+h1, h2, h3, h4{
+       text-transform: uppercase;
+}
+h1 {   font-size: 6em;}
+h2 {   font-size: 40px;}
+h3 {   font-size: 3em;}
+h4 {   font-size: 1.8em;}
+h5 {   font-size: 1.1em;}
+
+/*Specific rules for text writen by final users */
+.userContent h1 {      font-size: 2em;}
+.userContent h2  {     font-size: 1.9em;}
+
+nav{
+       padding:0em;
+       text-transform: uppercase;
+}
+hr {
+       height: 0;
+       margin:0.5em 0 0.5em 0;
+       padding:0;
+       border-style:solid;
+       border-width:2px 0 0 0 ;
+       border-color:black;
+}
+table{
+       margin:auto;
+       table-layout:fixed;
+}
+table,td,tr  {
+       padding:0;
+       margin:0;
+       word-wrap: break-word;
+       text-overflow: ellipsis;
+        text-align: center;
+        vertical-align: middle;
+        border: 1px solid #D0D0D0;
+       border-collapse:collapse;
+}
+th {
+       white-space: nowrap;
+       text-transform: uppercase;
+}
+tr{
+}
+p {
+    /*line-height: 1.2;*/
+    margin-bottom: 1em;
+}
+p  a {
+       text-decoration: underline
+}
+    
+em {
+    font-weight: bold;
+}
+strong{
+       text-transform: uppercase;}
+blockquote {
+       padding: 1em;
+       font-style:italic;
+}
+
+.sr-only {
+       position: absolute !important;
+       width: 1px !important;
+       height: 1px !important;
+       padding: 0 !important;
+       margin: -1px !important;
+       overflow: hidden !important;
+       clip: rect(0, 0, 0, 0) !important;
+       white-space: nowrap !important;
+       border: 0 !important;
+}
+
+.hidden{display:none;}
+.invisible{visibility:hidden;}
+
+label, select, input, button, textarea{
+       font-size:inherit;
+}
+
+/* FONT AWESOME CORE
+ * -------------------------- */
+[class^="icon-"],
+[class*=" icon-"] {
+  font-family: FontAwesome;
+  font-weight: normal;
+  font-style: normal;
+  text-decoration: inherit;
+  -webkit-font-smoothing: antialiased;
+  *margin-right: .3em;
+}
+[class^="icon-"]:before,
+[class*=" icon-"]:before {
+  text-decoration: inherit;
+  display: inline-block;
+  speak: none;
+}
+/* makes sure icons active on rollover in links */
+a [class^="icon-"],
+a [class*=" icon-"] {
+  display: inline;
+}
+
+/* reglo symbols variants */
+[class^="icon-"].resymbol,
+[class*=" icon-"].resymbol {
+  font-family: Symbols;
+}
+
+/* specific icon classes */
+.icon-archive:before { content: "\f187"; }
+.icon-bolt:before { content: "\f0e7"; }
+.icon-bullhorn:before { content: "\f0a1"; }
+.icon-calendar:before { content: "\f073"; }
+.icon-check:before { content: "\f046"; }
+.icon-check-empty:before { content: "\f096"; }
+.icon-chevron-sign-left:before { content: "\f137"; }
+.icon-chevron-sign-right:before { content: "\f138"; }
+.icon-comments:before { content: "\f086"; }
+.icon-double-angle-left:before { content: "\f100"; }
+.icon-download:before { content: "\f01a"; }
+.icon-envelope:before { content: "\f0e0"; }
+.icon-file:before { content: "\f15b"; }
+.icon-globe:before { content: "\f0ac"; }
+.icon-headphones:before { content: "\f025"; }
+.icon-home:before { content: "\f015"; }
+.icon-info-sign:before { content: "\f05a"; }
+.icon-microphone:before { content: "\f130"; }
+.icon-pause:before { content: "\f04c"; }
+.icon-play:before { content: "\f04b"; }
+.icon-play-sign:before { content: "\f144"; }
+.icon-plus-sign:before { content: "\f055"; }
+.icon-question-sign:before { content: "\f059"; }
+.icon-remove:before { content: "\f00d"; }
+.icon-rss:before { content: "\f09e"; }
+.icon-search:before { content: "\f002"; }
+.icon-share:before { content: "\f045"; }
+.icon-step-backward:before { content: "\f048"; }
+.icon-step-forward:before { content: "\f051"; }
+.icon-stop:before { content: "\f04d"; }
+.icon-trash:before { content: "\f014"; }
+.icon-volume-up:before { content: "\f028"; }
+
+%text {
+       font-family: $text-font;
+       font-size: 18px;
+       color: white;
+       text-align: justify;
+       line-height: 1.4;
+}
+
+%image-bordure {
+       position: relative;
+       padding-bottom: 0;
+       background: $orange;
+       overflow: hidden;
+       .img {
+               display: inline-block;
+               height: 100%;
+               width: 100%;
+               transition: transform ease 0.2s;
+               img {
+                       background: $yellow;
+                       width: 100%;
+                       &.empty {
+                               height: 100%;
+                       }
+               }
+               &:hover {
+                       transform: scale(110%);
+               }
+       }
+       &::before {
+               content: "";
+               z-index: 100;
+               pointer-events: none;
+               position: absolute;
+               background-position: center center;
+               background-size: 6000px 6000px;
+               top: 0px;
+               left: 0px;
+               bottom: 0px;
+               right: 0px;
+               transition: all .2s;
+               background-image: url(../img/bloc-hover-2023-1.svg);
+       }
+       &:hover::before {
+               background-size: 110% 110%;
+       }
+       &.style2::before {
+               background-image: url(../img/bloc-hover-2023-2.svg);
+       }
+       &.style3::before {
+               background-image: url(../img/bloc-hover-2023-3.svg);
+       }
+
+}
+
+button {
+       border: 0;
+}
+
+/****************************************************/
+/* FONTS */
+
+
+.resymbol:hover,.control:hover{    opacity:0.5;    }
+.date, .dateBloc {
+       text-transform: uppercase;
+}
+.inline .date, .resume .date{
+       text-align: center;
+}
+.dateBloc{width:4em;
+       text-align: center;}
+.dateBloc{display:inline-block;}
+.dateBloc *{line-height: 100%;}
+.dateBloc  .day {font-size: 1.8em;}
+.dateBloc .number {font-size: 1.8em;}
+.dateBloc  .month {font-size: 0.8em;}
+.dateBloc .time {font-size: 1.2em;margin: 0.2em 0;}
+
+.dateBloc.small{
+       font-size: 80%;
+}
+
+.date.smooth {
+       text-transform: none;
+       font-size: 100%;
+}
+
+.tabs .ui-tabs-nav {
+    text-transform: uppercase;
+}
+.legend{
+       font-size:1.2em;
+       border-bottom:3px solid black;
+       padding: 0.2em 0 0.2em 0;
+       margin: 0.2em 0 0.2em 0;
+}
+#Main .sectionLabel{
+       margin-bottom:1em;
+}
+
+h5.focus-title {
+       color: $secondary;
+}
+
+.rightPart #search-form {
+       text-align: right;
+       margin-bottom: 2em;
+}
+
+.label.relative{
+    background-color:black;
+    position: absolute;
+    left:10px;
+    top:-5px;
+    color:white;
+    padding:5px 7px 0px 7px;
+}
+
+/****************************************************/
+/* WRAPPER */
+/****************************************************/
+.wrapper {max-width: 1560px; padding:0 1%;}
+.wrapper.text {max-width: 780px; margin:auto;}
+.wrapper .rightPart{margin-top:1em;}
+
+button {
+       padding: 0;
+}
+
+
+button.control, button.symbol{background:transparent;border:none;margin:0;padding:0;}
+nav.menu{
+       width:100%;
+       text-align: justify;
+       text-justify: distribute-all-lines;
+}
+nav.menu li{
+       display: inline-block;
+       margin-right:2em;
+}
+
+button.tag, a.tag{
+       font-size:0.9em;
+       background:white;
+       text-transform: uppercase;
+       display:inline-block;
+       border: 1px solid #CCC !important;
+       color:#342E2E;
+       margin: 0.2em;
+       padding: 0.3em;
+       border-radius: 0.7em;
+       -moz-border-radius: 0.7em;
+       -webkit-border-radius: 0.7em;
+}
+button.check, a.check {
+       font-size:0.9em;
+       text-transform: none;
+       display:inline-block;
+       margin: 0.2em;
+       padding: 0.3em;
+}
+
+.category{
+       text-transform: uppercase;
+}
+button.check:before, a.check:before {
+       display:inline-block;
+       width:1.5em;
+}
+.box{
+       padding:0.2em 0.5em 0.2em 0.5em;
+       border-radius: 0.2em;
+       -moz-border-radius: 0.2em;
+       -webkit-border-radius: 0.2em;
+       background:#222;
+       color:#fff;
+}
+.ui-tooltip {
+       border:1px solid white;
+       position:absolute;
+       margin:0;       
+       padding: 0.5em;
+       background:#222;
+       color: white;
+       z-index: 9999;
+       max-width: 50%;
+       background: white;
+       color: #222;
+       border-color: #222;
+}
+
+.icon-rss {
+       color: orange;
+}
+
+/****************************************************/
+/**** Commons ****/
+/****************************************************/
+
+.audio button, .audio a {color: $primary;}
+
+.audio button {
+       background: transparent;
+       border: none;
+}
+
+.audio button.icon-pause {
+       color: $orange
+}
+
+
+/****************************************************/
+/**** HEADER ****/
+/****************************************************/
+
+/* PANIK LOGO */
+#Commons{
+       position: relative;
+       z-index: 5;
+       height: 230px;
+}
+
+#mainHeader {
+       display: inline-block;
+       background: url(../img/logo-esperanzah-yellow-2023.svg) bottom center no-repeat;
+       background-size: contain;
+       height: 172px;
+       width: 543px;
+       position: relative;
+       @media screen and (max-width: $size_s) {
+               background-position: left 50% top 50px;
+               max-width: 80%;
+               height: 150px;
+       }
+       transition: all ease 0.2s;
+       &:hover {
+               transform: scale(1.1);
+               transform-origin: top center;
+       }
+}
+
+#Player {
+       display: inline-block;
+}
+
+#mainHeader h1{
+       padding-left:75px;
+}
+
+#Changing h1.top a:hover {
+       opacity: 1.0;
+}
+
+#backgroundBox {
+       background: transparent;
+       text-align: center;
+}
+
+#All #backgroundBox h1.top {
+       font-size: 20px;
+       padding-left: 10px;
+       width: 350px;
+       @media screen and (max-width: $size_s) {
+               max-width: 100%;
+       }
+}
+
+#backgroundBox h1 {
+       color: $primary !important;
+}
+
+#All h1.top#radiologo {
+       padding-top: 36px;
+       background: $yellow;
+}
+
+#All #backgroundBox h1 {
+       visibility: hidden;
+}
+
+#Nav {
+       margin-top: 2em;
+}
+
+#specialHome h2 {
+       margin:0;
+       padding:0;
+}
+
+/****************************************************/
+/**** PLAYER ****/
+/****************************************************/
+
+#player-container .metas, #player-container img{border-color:#fff;}
+#player-container .padded{padding:0.3em;}
+
+#player-container button,#player-container a{
+}
+#player-container .metas{
+    float:right;
+}
+#LiveStreamController div.label {
+       margin-top: -10px;
+}
+
+#chatSymbol,
+#streamSymbol{
+       font-size:3em;
+       float:left;
+       margin-right:15px;
+       position: relative;
+       z-index: 10;
+       top: -6px;
+}
+
+#CurrentlyPlaying{
+       color: $yellow;
+       font-weight: bold;
+       padding: 0 0 0 0;
+       width: 300px;
+       margin-left: -125px;
+       margin-top: 0;
+       padding-top: 52px;
+       text-align: center;
+       a {
+               display: block;
+               white-space: pre;
+               overflow: hidden;
+               text-overflow: ellipsis;
+       }
+}
+
+#Player {
+       position: absolute;
+       top: 180px;
+       left: calc(50% - 25px);
+       width: 50px;
+       text-align: left;
+       @media screen and (max-width: $size_s) {
+               top: 150px;
+       }
+}
+
+#Player.withPlaylist {
+       #audioPlayer {
+               display: none;
+       }
+}
+
+#player-container #myPlaylist a {
+       white-space: normal;
+}
+
+#player-container.minimized{
+       width:auto;
+       border-width:0px 2px 2px 0 !important;
+       border-bottom-right-radius:1em;
+       -moz-border-bottom-right-radius:1em;
+       -webkit-border-bottom-right-radius:1em;
+}
+
+/*Playlist*/
+
+#Playlist {
+       padding-top: 2px;
+}
+
+#Playlist #playlistLabel{
+       float:right;
+
+}
+#Playlist .playListControls{   
+}
+#Playlist .playListControls button{    
+       margin-right:0.5em;
+       display:inline-block;
+}
+#Playlist .playListControls .playPause{
+       font-size:3em;
+       margin-right:5px;
+       float:left;
+       position: relative;
+       top: -8px;
+}
+
+#Playlist .playing .icon-pause{
+   -webkit-animation: loading 1s infinite linear;
+   -moz-animation: loading 1s infinite linear;
+   -o-animation: loading 1s infinite linear;
+   animation: loading 1s infinite linear;
+}
+
+
+/****************************************************/
+/**** #Changing #Footer ... ****/
+/****************************************************/
+#Changing{
+       display: flex;
+       flex-direction: column;
+       min-height: 84vh;
+}
+
+#Main{
+       margin: 0 auto;
+       padding: 0 1rem;
+       width: 96%;
+       flex-grow: 1;
+       position: relative;
+       z-index: 10;
+       @media screen and (max-width: $size_m) {
+               z-index: 1;
+               width: 100%;
+       }
+}
+#Main >.wrapper{
+       padding-bottom:2em;
+}
+#Home #Main{
+       min-height:0;
+}
+#Changing a:hover,#Changing button:hover {
+       text-decoration:none;
+}
+
+#Footer {
+       padding-top: 120px;
+       font-weight: bold;
+       position: relative;
+       z-index: 3;
+       font-size: 16px;
+
+       a {
+               color: $white;
+               text-decoration: none;
+               display: inline-block;
+               padding-bottom: 4px;
+               border-bottom: 3px solid $yellow;
+       }
+
+       p {
+               margin: 1em;
+               text-align: center;
+       }
+
+       @media screen and (max-width: $size_m) {
+               padding-bottom: 30px;
+       }
+}
+
+
+/****************************************************/
+.inline .link{display:block;padding:1em;}
+/**** Liste   ****/
+/**** EMISSIONS ****/
+
+
+/**** EPISODE ****/
+/**** Detail  ****/
+
+.episode .tag{
+}
+.episode.resume, .episode.inline{
+       padding:1em 0.5em 1em;
+}
+.episode.inline .dateBloc, .episode.resume .dateBloc{
+       float:left;
+}
+.episode.resume img {
+       border: 2px solid black;
+}
+
+.episode.resume .title{
+       margin-bottom:0.5em;
+}
+.episode.resume .logo{
+       float: right;
+}
+.topik-link .logo,
+.episode.inline .logo {
+       min-height: 50px;
+       float: left;
+       margin-right: 1em;
+}
+.episode.resume .sound{
+       float:right;
+       margin:0 0 0.5em 0.5em;
+}
+.episode.inline .sound.right{
+       text-align:center;
+       font-size:70%;
+       position: relative;
+       z-index: 10;
+}
+.episode.inline .sound.right button{
+    font-size:1.5em;
+       display:inline;
+       text-align:center;
+       padding-bottom:0.05em;
+}
+.episode.resume .sound.right .icon-download{
+       text-align:center;
+}
+.episode.resume .sound.right .icon-download{
+       display:block;
+}
+
+.big.icon-pause,
+.big.icon-stop,
+.big.icon-share {
+       display: inline-block;
+       vertical-align: middle;
+}
+
+.episode.detail .logo.right{
+       max-width:50%;
+}
+
+.episode.resume .content {
+       padding-left: 5em;
+}
+.episode.resume .content .title {
+}
+
+.episode.resume .logo {
+       margin:0 0 1em;
+       max-width:20%;
+}
+.episode.inline .date{
+       font-size:80%;
+}
+
+#Emission-tabs-menu .emissions-newsitems {
+       margin-bottom: 2em;
+}
+
+#Emission-tabs-menu .emissions-newsitems ul.list li {
+       border: 0;
+}
+
+#Emission-tabs-menu .futur-episodes h5,
+#Emission-tabs-menu .recent-episodes h5 {
+       font-size: 1.2em;
+}
+
+#Emission-tabs-menu #search-form {
+       margin-bottom: 1em;
+}
+
+div.extra-soundfiles h3 {
+       margin-top: 1em;
+       font-size: 2.5em;
+}
+
+div.extra-soundfiles ul li {
+       position: relative;
+}
+
+div.extra-soundfiles ul li div.audio {
+       display: inline;
+       top: 5px;
+       right: 0;
+       position: absolute;
+       font-size: 60%;
+}
+
+div.extra-soundfiles ul strong {
+       padding-right: 3em;
+}
+
+/****************************************************/
+/**** News ****/
+
+#newsRoll {
+       max-width: 500px;
+}
+
+#newsRoll li {
+       background: white;
+}
+
+.newsRoll .title{
+       background:black;
+       color:white;
+       bottom:0px;
+       opacity:0.9;
+    width:100%;
+       text-align: left;
+       position: absolute;
+       left: 0;
+}
+.newsRoll .title div{
+       padding: 1em;
+}
+.newsRoll a, .newsRoll button img{
+    border:3px solid $secondary;
+}
+
+.newsRoll .by3 button {
+       width: 100%;
+}
+
+.soundfiles .special a,
+.news .special a {
+       position: relative;
+}
+
+.special .labels .item,
+.newsRoll .labels .item{
+       display:block;
+       background: $secondary;
+       color:white;
+       margin:0.1em;
+       font-size:0.9em;
+       padding:0.3em;
+}
+.newsList .current a{
+    opacity:0.5;
+}
+/****************************************************/
+.list.news li {
+}
+
+.soundfiles ul.custom li a,
+.news ul.custom li a { max-width: 98%; }
+.news li.item a {padding:1em;}
+
+.logo img{
+       display:block;
+       border-style:solid;
+       border-width:3px;
+}
+ul.newsSpecial{
+       border-bottom:3px solid #ccc;
+}
+
+/****************************************************/
+/**** Home & ****/
+/****************************************************/
+
+#Home #Nav .wrapper{
+       max-width:auto !important;
+       width:auto !important;
+}
+
+/****************************************************/
+/**** PROGRAM ****/
+/****************************************************/
+
+.program.tabs nav ul li{
+       display:table-cell;
+       width:14%;
+       text-align:center;
+}
+
+.program.tabs nav ul li.week-arrow {
+       width: 1%;
+       padding-bottom: 5px;
+}
+
+.program ul .dateBloc {
+       float:left;
+       padding-top:1em;
+}
+.program ul .schedule {
+       margin-left:5em;
+}
+.program .nonstop {
+       text-align:left;
+}
+.program-week .programDate{
+       float:left;
+       width:3em;
+}
+.program-week .programCell{
+       margin-left:3.5em;
+}
+.program-week .nonStop .programDate{
+       visibility:hidden;
+}
+.program-week .nonStop .programCell{
+       font-size:0.9em;
+       padding-left:50%;
+       text-align:right;
+}
+.program-week a.nonstop{
+       font-size:0.9em;
+       margin:0.1em;
+}
+.program-week .inline,.program-week .resume{padding:0;}
+.program-week .description{}
+
+.program-week .title {
+       color: black;
+       display: inline;
+}
+
+.program-week .smooth {
+       color: #666;
+       opacity: 1.0;
+       font-size: 80%;
+       padding-bottom: 8px;
+}
+
+.program-week .emission h5,
+.program-week .smooth .title {
+       color: #333;
+       text-transform: uppercase;
+}
+
+.program-week .description {
+       color: black;
+       font-size: 90%;
+}
+
+.program-week .programCell:hover {
+       opacity: 0.5;
+}
+
+#Changing .program-week .programCell a {
+       opacity: 1.0;
+}
+
+#Changing .program-week .programCell .smooth a {
+       opacity: 0.5;
+}
+
+#Changing .program-week .programCell .smooth h5 a {
+       opacity: 1.0;
+}
+
+
+/****************************************************/
+/**** SEARCH ****/
+/****************************************************/
+
+.search li.previous-page {
+  margin-bottom: 2ex;
+  text-align: left;
+  margin-left: 0ex;
+  font-style: italic;
+}
+
+.search li.next-page {
+  margin-top: 2ex;
+  text-align: right;
+  margin-right: 0;
+  font-style: italic;
+}
+
+.search-filters {
+  text-align: justify;
+}
+
+
+/**** SCREEN SIZE ADAPTATIONS ****/
+body { font-size: 18px;}
+@media (max-width: 300px){
+    body #All{ font-size: 80%; }
+}
+
+@media (min-width: 300px) and (max-width:800px){
+    body #All{ font-size: 85%; }
+}
+
+@media (min-width: 800px) and (max-width:$size_m){
+    body #All{ font-size: 90%; }
+}
+
+@media (min-width: $size_m) {
+    body #All{ font-size: 100%; }
+}
+
+div.episode.resume div.title {
+       white-space: normal;
+}
+
+.episode.soundfile {
+       padding: 0;
+}
+
+.soundfile .smooth {
+       color: #666;
+       opacity: 1.0;
+       font-size: 80%;
+}
+
+
+.soundfile p.date {
+       margin: 0;
+}
+
+.frontpage.soundfile .audio {
+       font-size: 80%;
+       padding-top: 0.5ex;
+       padding-bottom: 1ex;
+}
+
+#panikdb {
+       position: absolute;
+       top: -20px;
+       right: 0px;
+       background: white;
+       color: #888;
+       padding: 5px 10px;
+       border: 1px solid #888;
+       border-width: 1px 1px 0 1px;
+       -webkit-transform-origin: bottom right;
+       -webkit-transform: rotate(270deg);
+       -moz-transform-origin: bottom right;
+       -moz-transform: rotate(270deg);
+       transform-origin: bottom right;
+       transform: rotate(270deg);
+}
+
+img.logo.right {
+       margin-bottom: 1em;
+}
+
+.soundfile .special,
+.newsitem .special {
+       margin-bottom: 2em;
+}
+
+.newsitem .special .smooth {
+       padding-top: 5px;
+}
+
+/* USER CONTENT */
+
+div.userContent ul {
+       margin: 1em 0;
+}
+
+div.userContent h1,
+div.userContent h2,
+div.userContent h3,
+div.userContent h4 {
+       text-transform: none;
+       font-weight: normal;
+}
+
+div.userContent h1 { font-size: 2em; }
+div.userContent h2 { font-size: 1.8em; }
+div.userContent h3 { font-size: 1.5em; }
+div.userContent h4 { font-size: 1.5em; }
+div.userContent a { text-decoration: underline; }
+
+div.userContent a.tag { text-decoration: none; }
+
+div.emission-logo {
+       margin-left: 1em;
+}
+
+div.extra-soundfiles {
+       clear: both;
+}
+
+h3.episode-subtitle {
+       color: $white;
+       font-size: 24px;
+       padding-top: 0;
+}
+
+.waveform {
+       display: none;
+       position: relative;
+}
+
+.waveform span {
+       background: $yellow;
+       background: linear-gradient(to top, darken($yellow, 20%) 0%, $yellow 40%);
+       display: inline-block;
+       width: 0.50%;
+       cursor: pointer;
+}
+
+.waveform span.done {
+       background: linear-gradient(to top, darken($yellow, 5%) 0%, darken($yellow, 10%) 100%);
+}
+
+.waveform span.done.current + span {
+       background: $yellow;
+}
+
+.waveform i.duration {
+       position: absolute;
+       right: 4px;
+       bottom: 4px;
+       color: white;
+       opacity: 0.5;
+       font-style: normal;
+       font-weight: bold;
+}
+
+span.timestamp {
+       cursor: pointer;
+       border-bottom: 1px dotted #666;
+}
+
+div.fragment-sound {
+       position: relative;
+}
+
+div.soundcell div.logo {
+       vertical-align: top;
+}
+
+div.fragment-sound {
+}
+
+div.extra-soundfiles div.fragment-sound {
+       margin-top: 5px;
+}
+
+div.extra-soundfiles div.fragment-name {
+       font-style: italic;
+       position: relative;
+       top: 1ex;
+       max-width: 70%;
+}
+
+div.extra-soundfiles ul li div.fragment-sound div.waveform {
+}
+div.extra-soundfiles ul li div.fragment-sound div.audio {
+       bottom: 0;
+}
+
+#fiber-content div.extra-soundfiles strong {
+       text-transform: uppercase;
+
+}
+
+.nonstop-track-title, .nonstop-track-artist {
+       font-size: 80%;
+}
+
+.soundfile-info {
+        padding-right: 75px;
+}
+
+#fiber-content div.extra-soundfiles .soundfile-info strong {
+        padding-right: 0;
+}
+
+#fiber-content div.extra-soundfiles .soundfile-info a {
+        text-decoration: none;
+}
+
+#fiber-content div.extra-soundfiles {
+       margin: 1em 0;
+}
+
+div.extra-soundfiles div.logo {
+       display: inline-block;
+}
+
+div#fiber-content div.extra-soundfiles ul.list {
+       display: inline-block;
+       width: 88%;
+       width: calc(100% - 74px);
+}
+
+div.download-links {
+       position: absolute;
+       z-index: 1000;
+       text-align: right;
+}
+
+div.hidden-download-links {
+       display: none !important;
+}
+
+div.episode-detail div.sound div.download-links {
+       display: inline-block;
+       padding-top: 1ex;
+       padding-left: 3em;
+}
+
+div.extra-soundfiles div.download-links {
+       background: white;
+}
+
+h1.top a.dimmed {
+       opacity: 0.7;
+}
+
+div#agenda div.content-inline {
+       margin-bottom: 1em;
+}
+
+div.previous-and-next-months {
+       margin-top: 1em;
+}
+
+div.publication-date.date.smooth {
+       font-size: 80%;
+}
+
+#All h1.top.fullwidth {
+       width: 150%;
+}
+
+div.gallery > div {
+       display: flex;
+       flex-direction: row;
+       flex-wrap: wrap;
+       > span {
+               display: block;
+               width: 20%;
+               position: relative;
+               @media screen and (max-width: $size_s) {
+                       width: 50%;
+               }
+               img {
+                       width: 100%;
+                       height: 100%;
+                       cursor: pointer;
+               }
+               span.title {
+                       position: absolute;
+                       top: 0;
+                       left: 10px;
+                       background: $secondary;
+                       color: white;
+                       padding: 0.5ex 1ex;
+                       border-bottom: 3px solid $yellow;
+               }
+       }
+}
+
+div.gallery img {
+       background: white;
+}
+
+div#dialog-background,
+div.gallery div.first {
+       position: fixed;
+       top: 0;
+       left: 0;
+       width: 100%;
+       height: 100%;
+       background: rgba(0, 0, 0, 0.9);
+       z-index: 1000;
+       text-align: center;
+}
+
+div.gallery div.first img {
+       padding: 5px;
+       padding-bottom: 25px;
+       margin-top: -300px;
+       margin-left: -500px;
+       position: absolute;
+       top: 50%;
+       left: 50%;
+       transition: all 0.5s ease;
+       transform-origin: bottom left;
+}
+
+div.portrait div.gallery div.first img {
+       margin-top: -320px;
+       margin-left: -240px;
+}
+
+div.gallery {
+}
+
+div.gallery span.gallery-legend {
+       display: inline-block;
+       position: absolute;
+       top: 50%;
+       margin-top: 304px;
+       left: 0%;
+       width: 100%;
+       color: #000;
+       z-index: 1000;
+}
+
+div.portrait div.gallery span.gallery-legend {
+       margin-top: 330px;
+}
+
+@media screen and (max-width: $size_m) {
+       div.portrait div.gallery div.first img,
+       div.gallery div.first img {
+               max-width: 80vw;
+               margin: 0;
+               max-height: 80vh;
+               left: 10vw;
+               top: 10vh;
+               display: inline-block;
+       }
+}
+
+ul.tags {
+       padding-top: 1em;
+       clear: both;
+}
+
+a.topik-link {
+       clear: both;
+       display: block;
+       margin-top: 1em;
+}
+
+#fiber-content div.topikcellcontent a {
+       text-decoration: none;
+       height: 500px;
+}
+
+#fiber-content div.topikcell .topik-large a {
+       height: auto;
+}
+
+div.topikcellcontent h5 {
+       padding-top: 1ex;
+}
+
+div.topikcellcontent.topik-large a {
+       width: 100%;
+       float: none;
+       display: inline-block;
+       text-align: left;
+}
+
+div.topikcellcontent.topik-large img {
+       width: 100%;
+       display: block;
+}
+
+div.topikcellcontent.topik-large a div {
+       @media screen and (min-width: 760px) {
+               display: flex;
+       }
+       margin-top: 1ex;
+       h2 {
+               margin-top: 0;
+               white-space: nowrap;
+               margin-right: 1ex;
+               @media screen and (max-width: 760px) {
+                       padding-bottom: 0;
+               }
+       }
+}
+
+div.topikcellcontent a {
+       margin-bottom: 2em;
+       display: inline-block;
+       text-align: left;
+       width: 50%;
+       padding-right: 2em;
+       float: left;
+}
+
+div.topikcellcontent img {
+}
+
+div.topikcellcontent h2 {
+       font-size: 3.5em;
+}
+
+.program-week img.smooth {
+       padding-bottom: 0;
+}
+
+div#dialog-background {
+       display: flex;
+}
+
+div#dialog-embed {
+       position: relative;
+       background: white;
+       width: 50%;
+       margin: auto;
+       text-align: left;
+       padding: 1ex;
+       color: black;
+       textarea {
+               width: 100%;
+               max-width: none;
+       }
+
+       #close-button {
+               position: absolute;
+               right: 1ex;
+       }
+
+       h2, h3 {
+               margin: 0;
+               font-size: 1.6rem;
+       }
+}
+
+body#embed {
+       min-height: auto !important;
+       margin: 0;
+       background: $orange;
+       #Main {
+               background: transparent;
+               margin: 0;
+               width: 100%;
+       }
+       #Commons,
+       #metaNav,
+       #Footer,
+       #Nav,
+       #userLog,
+       #panikdb,
+       #Player {
+               display: none;
+       }
+
+       #Changing {
+               float: none;
+               width: auto;
+       }
+
+       #Main > .wrapper {
+               padding: 0;
+       }
+
+       .logo {
+               padding: 0;
+               img {
+                       border: 0;
+               }
+       }
+
+       div.soundcell {
+               display: flex;
+               ul.custom {
+                       list-style: none;
+                       display: inline-block;
+                       width: calc(100% - 110px);
+                       margin: 0;
+                       padding: 10px 10px 0 10px;
+                       li div.audio {
+                               display: block;
+                               position: static;
+                               font-size: 16px;
+                       }
+               }
+               button, a {
+                       color: white;
+               }
+               button.icon-play-sign {
+                       display: none;
+               }
+               button.icon-pause {
+                       position: absolute;
+                       bottom: 8px;
+                       background: transparent;
+                       left: 2px;
+                       z-index: 100;
+               }
+               &.playing button.icon-pause {
+                       display: block;
+               }
+
+               .waveform span {
+                       max-height: 42px;
+               }
+       }
+
+       ul.custom .soundfile-info {
+               padding: 0;
+       }
+
+       span.fragment-title {
+               font-weight: normal;
+       }
+}
+
+#bg-title {
+       display: none;
+       color: lighten($primary, 20);
+       text-transform: uppercase;
+       line-height: 100%;
+       font-size: 250px;
+       font-size: 25vh;
+       position: absolute;
+       left: -260px;
+       top: 48vh;
+       z-index: 0;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+       cursor: default;
+}
+
+img {
+       transition: all ease 0.5s;
+}
+
+div.emission-tile {
+       position: relative;
+       width: calc(24vw - 0.5vw - 0.25rem);
+       padding-bottom: 20px;
+       float: left;
+       height: 27vw;
+       overflow: hidden;
+       margin-bottom: 2em;
+       @media screen and (max-width: $size_m) {
+               width: 46vw;
+               height: 46vw;
+       }
+       @media screen and (max-width: $size_s) {
+               width: 96vw;
+               height: 100vw;
+               float: none;
+       }
+       div.image {
+               border: none;
+               height: 22vw;
+               width: calc(100% - 16px);
+               text-align: center;
+               @extend %image-bordure;
+               @media screen and (max-width: $size_m) {
+                       height: 40vw;
+               }
+               @media screen and (max-width: $size_s) {
+                       height: 90vw;
+               }
+       }
+       div.name {
+               margin-top: 10px;
+               text-transform: uppercase;
+               text-align: left;
+               color: $white;
+               font-weight: bold;
+               font-family: $title-font;
+               font-size: 1rem;
+               span {
+                       transition: all ease 0.5s;
+               }
+       }
+       div.tags {
+               @extend %text;
+               font-size: 12px;
+               text-transform: lowercase;
+               min-height: 20px;
+               span {
+                       margin-right: 1ex;
+               }
+       }
+}
+
+#www-esperanzah {
+       position: absolute;
+       top: 58px;
+       left: 20px;
+       color: white;
+       border-radius: 3px;
+       width: 40px;
+       text-align: center;
+       padding: 2px 10px;
+       transition: all .2s;
+       &:hover {
+               background-color: $yellow;
+               color: $white;
+       }
+       @media screen and (max-width: $size_s) {
+               top: 0;
+               left: 0;
+       }
+}
+
+#instagram,
+#facebook {
+       transition: all .2s;
+       display: block;
+       position: absolute;
+       right: 0;
+       top: 0px;
+       height: 35px;
+       width: 35px;
+       background: $blue url($data_uri_facebook) center center no-repeat;
+       z-index: 100;
+       &:hover {
+               background-color: $yellow;
+       }
+}
+
+#instagram {
+       top: 35px;
+       background: $blue url($data_uri_instagram) center center no-repeat;
+}
+
+#streamSymbol {
+       background-repeat: no-repeat;
+       width: 50px;
+       height: 50px;
+}
+div.player-start {
+       background: url($data_uri_start), url($data_uri_pause);
+       background-position: 0 0, -50px 0;
+}
+
+div.player-pause {
+       background: url($data_uri_pause);
+       background-position: 0 0;
+}
+
+div.player-stop {
+       background: url($data_uri_stop);
+       background-position: 0 0;
+}
+
+#streamSymbol {
+       &::after {
+               content: "";
+               border: 2px solid transparent;
+               border-radius: 100%;
+               position: absolute;
+               top: -2px;
+               left: -2px;
+               right: -2px;
+               bottom: -2px;
+       }
+       &.player-stop::after {
+               animation: rotating-border 2s 1;
+       }
+}
+
+@keyframes rotating-border {
+       0%  {border-left-color: darken($yellow, 10%); transform: rotate(0deg);}
+       99% {border-left-color: darken($yellow, 10%); transform: rotate(360deg);}
+       100% {border-left-color: transparent;}
+}
+
+div.playListControls {
+       button.action-stop {
+               background-repeat: no-repeat;
+               width: 50px;
+               height: 50px;
+               background: url($data_uri_stop);
+       }
+       button.action-pause {
+               background-repeat: no-repeat;
+               width: 50px;
+               height: 50px;
+               background: url($data_uri_pause);
+       }
+
+       button.action-play {
+               background-repeat: no-repeat;
+               width: 50px;
+               height: 50px;
+               background: url($data_uri_play);
+       }
+}
+
+div#actu {
+       padding-bottom: 14px;
+       h2 {
+               margin-top: 1em;
+               text-align: center;
+               padding-right: 10px;
+               font-family: $title-font;
+               font-weight: bold;
+               font-size: 40px;
+               padding-bottom: 10px;
+       }
+       div {
+               @extend %text;
+               max-width: 50em;
+               margin: 0 auto;
+       }
+       @media screen and (max-width: $size_m) {
+               display: block;
+               > h2 {
+                       text-align: center;
+               }
+               > h2, > div {
+                       width: auto;
+               }
+       }
+}
+
+div.emission-detail {
+       text-align: center;
+       div.emission-tile {
+               width: 25%;
+               height: 25vw;
+       }
+       h2 {
+               margin-top: 0;
+               margin-bottom: 0;
+               font-weight: bold;
+               font-family: $title-font;
+       }
+       .schedule {
+               color: white;
+               text-transform: uppercase;
+               font-style: italic;
+               margin: 0;
+               padding: 0;
+               list-style: none;
+       }
+       div.episode-info,
+       div.emission-info {
+               div.image {
+                       float: left;
+                       margin-right: 1rem;
+                       height: 450px;
+                       width: 450px;
+                       @extend %image-bordure;
+                       @media screen and (max-width: $size_s) {
+                               float: none;
+                               max-width: 100%;
+                               overflow: hidden;
+                               height: 260px;
+                               width: 260px;
+                               margin: auto;
+                       }
+               }
+               padding-top: 2rem;
+               div.emission-text {
+                       @extend %text;
+                       a {
+                               border-bottom: solid 1px #ff8b57;
+                               text-decoration: none;
+                               &:hover {
+                                       background: #ff8b57;
+                                       color: #fff;
+                               }
+                       }
+               }
+       }
+       div.episode-info {
+               position: relative;
+               div.episode-text {
+                       display: flex;
+                       flex-direction: column;
+                       min-height: 450px;
+                       justify-content: space-between,
+               }
+               div.sound {
+                       position: relative;
+                       align-self: flex-end;
+                       width: 100%;
+                       @media screen and (max-width: $size_s) {
+                               order: -1;
+                       }
+                       @media screen and (max-width: $size_m) {
+                               position: static;
+                               width: 100%;
+                       }
+                       button.action-play {
+                               font-weight: bold;
+                       }
+                       button.action-share {
+                               text-transform: none;
+                       }
+                       button.icon-play-sign {
+                               display: none;
+                       }
+                       button.icon-pause {
+                               display: none;
+                               position: absolute;
+                               bottom: 8px;
+                               background: transparent;
+                               left: 2px;
+                               z-index: 100;
+                       }
+                       &.playing button.icon-pause {
+                               display: block;
+                       }
+               }
+               div.more-text {
+                       @extend %text;
+                       max-width: 50em;
+                       margin: 2em auto;
+               }
+       }
+}
+
+div.emission-episodes {
+       clear: both;
+       padding-top: 2rem;
+       ul, li {
+               margin: 0;
+               padding: 0;
+               list-style: none;
+       }
+       @media screen and (max-width: $size_s) {
+               text-align: center;
+       }
+       a {
+               height: 310px;
+               position: relative;
+               width: 240px;
+               margin-right: 10px;
+               display: inline-block;
+               margin-bottom: 1rem;
+               float: left;
+               @media screen and (max-width: $size_s) {
+                       float: none;
+               }
+               div.image {
+                       height: 240px;
+                       @extend %image-bordure;
+               }
+               div.time {
+                       @extend %text;
+               }
+               div.name {
+                       text-align: left;
+                       color: white;
+                       font-family: $title-font;
+                       font-size: 1rem;
+                       text-transform: uppercase;
+                       font-weight: bold;
+               }
+       }
+
+       &.archives {
+               width: 100%;
+               a {
+               }
+               a div.image {
+                       width: 240px;
+               }
+       }
+}
+
+h3.archives {
+       clear: both;
+       text-align: center;
+       font-family: $title-font;
+       font-size: 30px;
+       + p {
+               text-align: center;
+               margin: -1em auto 0 auto;
+               max-width: 50em;
+       }
+}
+
+div.emission-episodes.archive::after {
+       content: "";
+       display: block;
+}
+
+p.archives-sorry {
+       clear: both;
+       padding: 3rem;
+       text-align: center;
+}
+
+div#Playlist {
+       position: relative;
+       div.label {
+               display: none;
+       }
+       ol {
+               color: $yellow;
+               font-weight: bold;
+               width: 300px;
+               margin: 0;
+               padding: 0;
+               padding-top: 50px;
+               margin-left: -125px;
+               color: $yellow;
+               list-style: none;
+               text-align: center;
+               li {
+                       display: none;
+               }
+               li.active {
+                       display: flex;
+                       justify-content: center;
+               }
+               li .soundControls {
+                       width: 25px;
+                       position: relative;
+                       color: $yellow;
+                       button.no-icon-remove::after {
+                               content: "×";
+                               color: $yellow;
+                       }
+               }
+               #Playlist ol li .title{
+                       display:inline-block;
+                       white-space: nowrap;
+                       text-overflow: ellipsis;
+                       overflow: hidden;
+               }
+       }
+}
+
+#back-home {
+       text-transform: lowercase;
+       display: block;
+       text-align: left;
+       color: white;
+       font-size: 16px;
+       span {
+               border-bottom: 2px dashed white;
+               &::before {
+                       content: "<";
+                       padding-right: 10px;
+                       transition: padding 0.2s;
+               }
+               &:hover {
+                       border-bottom: 2px dashed $yellow;
+               }
+       }
+}
+
+.playing button.no-icon-remove::after {
+       content: "\0025fc";
+}
+
+div#grid table {
+       max-width: 1000px;
+       margin: 0 auto;
+}
+
+div#loading-page {
+       position: fixed;
+       top: 0;
+       left: 0;
+       right: 0;
+       height: 5px;
+       background: $yellow;
+       z-index: 1100;
+       animation-name: load_animation;
+       animation-duration: 6000ms;
+       animation-timing-function: ease-out;
+       transition: opacity 200ms linear;
+       &.fade {
+               opacity: 0;
+       }
+}
+
+@keyframes load_animation {
+       0% { right: 100%; }
+       100% { right: 0%; }
+}
+
+div#header_date {
+        text-transform: uppercase;
+        position: absolute;
+        text-align: right;
+       color: $yellow;
+       font-weight: normal;
+       font-style: italic;
+       font-size: 120%;
+        top: 63px;
+        right: 55px;
+       @media screen and (max-width:$size_m){
+               display: none;
+       }
+}
+
+h2.top {
+       text-align: center;
+       padding-bottom: 2rem;
+       font-family: $title-font;
+       font-weight: bold;
+}
+
+.episode-auto-selection-cell.hide-emission-titles {
+       .emission-title, .soundfile-info .sep {
+               display: none;
+       }
+}
+
+#detour-vers-le-footer {
+       margin: 0 auto;
+       padding-top: 2em;
+       text-align: center;
+       max-width: 50em;
+       clear: both;
+       .logos img {
+               margin: 0 1ex;
+       }
+}
+
+.emission-text {
+       display: flex;
+       flex-direction: column;
+       justify-content: space-between;
+       min-height: 450px;
+       @media screen and (max-width:$size_m){
+               min-height: auto;
+       }
+       #subscribe-links {
+               ul, li {
+                       margin: 0;
+                       padding: 0;
+                       list-style: none;
+               }
+               ul {
+                       display: flex;
+                       flex-wrap: wrap;
+                       @media screen and (max-width:$size_m){
+                               justify-content: center;
+                       }
+               }
+               li {
+                       margin-right: 1em;
+                       margin-bottom: 1em;
+                       a {
+                               padding: 0.3em 0.6em;
+                               background: $yellow;
+                               color: white;
+                               border-radius: 10px;
+                               &:hover {
+                                       background: darken($yellow, 20%);
+                               }
+                       }
+               }
+       }
+}
+
+.emission-text,
+.text-part {
+       max-width: 50em;
+}
+
+#mainHeader h2 {
+       color: $yellow;
+       font-family: $title-font;
+       margin: 0;
+}
+
+.content-width {
+       max-width: 50em;
+       margin: 0 auto;
+       img {
+               max-width: 100%;
+       }
+}
diff --git a/panikweb_esperanzah/static/fonts/EurostileExtended-Black.woff2 b/panikweb_esperanzah/static/fonts/EurostileExtended-Black.woff2
new file mode 100644 (file)
index 0000000..a442809
Binary files /dev/null and b/panikweb_esperanzah/static/fonts/EurostileExtended-Black.woff2 differ
diff --git a/panikweb_esperanzah/static/fonts/neuemontreal-regular-webfont.woff2 b/panikweb_esperanzah/static/fonts/neuemontreal-regular-webfont.woff2
new file mode 100644 (file)
index 0000000..0dec7c0
Binary files /dev/null and b/panikweb_esperanzah/static/fonts/neuemontreal-regular-webfont.woff2 differ
index ddec23e36a4c8f2ba7f77181ca564d93da399109..f0afda0a79437675d6cf8cf3bc2ed3b501aba322 100644 (file)
Binary files a/panikweb_esperanzah/static/img/appicon.png and b/panikweb_esperanzah/static/img/appicon.png differ
diff --git a/panikweb_esperanzah/static/img/bloc-hover-2023-1.svg b/panikweb_esperanzah/static/img/bloc-hover-2023-1.svg
new file mode 100644 (file)
index 0000000..3a48494
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg id="Calque_2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 850.39 850.39"><defs><style>.cls-1{fill:#ff5321;}</style></defs><g id="Calque_1-2"><g><path class="cls-1" d="M163.29,626.87c27.15-27.67,55.1-55.27,86.42-76.05,58.34-38.7,103.2-91.49,126-167.99,13.85-46.47,16.26-97.11-2.67-150.14-13.87-38.83-39.12-63.37-70.93-69.88-32.11-6.58-60.03,3.2-72.95,40.75-9.89,28.72-20.42,57.04-30.8,85.45-7.49,20.51-13.35,42.46-23.13,60.99-33.86,64.2-100.83,66.68-155.08,6.8-7.42-8.19-14.11-16.68-20.16-25.45V850.39H173.7c-25.07-30.89-42.42-70.25-45.75-113.07-3.58-46.11,9.03-83.63,35.34-110.45Z"/><path class="cls-1" d="M664.4,240.89c-3.14,79.52-34.11,138.13-70.39,193.68-30.52,46.71-62.96,91.41-103.92,126.2-13.71,11.64-24.48,28.84-33.75,46.01-10.53,19.5-3.92,38.65,16.53,48.91,12.72,6.38,26.93,10,39.98,10.43,20.95,.67,42.05-.22,62.13-4.14,97.6-19.02,175.11,46.92,230.15,139.92,9.49,16.04,17.9,32.21,25.34,48.49h19.92V0h-249.49c.67,1.03,1.34,2.05,2,3.08,48.54,75.23,64.86,152.54,61.5,237.81Z"/></g></g></svg>
\ No newline at end of file
diff --git a/panikweb_esperanzah/static/img/bloc-hover-2023-2.svg b/panikweb_esperanzah/static/img/bloc-hover-2023-2.svg
new file mode 100644 (file)
index 0000000..eb7f67b
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg id="Calque_2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 850.39 850.39"><defs><style>.cls-1{fill:#1332ff;}</style></defs><g id="Calque_1-2"><g><path class="cls-1" d="M580.01,613.92c-51.47-21.55-101.3-45.36-142.93-79.35-13.93-11.37-32.8-18.85-51.36-24.86-21.09-6.83-38.72,3.14-45.11,25.12-3.98,13.67-4.96,28.29-3.02,41.21,3.13,20.73,7.83,41.31,15.32,60.36,30.18,76.79,.33,150.57-57.27,214.01H850.39v-216.68c-21.58,6.32-43.93,11.02-67.16,14.36-78.78,11.31-142.03-8.54-203.23-34.15Z"/><path class="cls-1" d="M90.92,675.82c35.54-54.23,42.26-107.69,16.98-156.37-12.29-23.69-25.81-46.76-40.14-69.28-52.13-81.91,16.93-209.72,130.11-239.8,44.7-11.88,83.88-6.26,115.02,14.76,32.12,21.7,64.33,44.18,90.44,71.22,48.62,50.37,108.67,84.92,188.03,93.5,48.21,5.21,98.45-1.59,147.17-29.81,35.67-20.67,55.24-49.95,55.88-82.41,.66-32.77-14.01-58.46-53.28-64.37-30.04-4.53-59.8-9.75-89.61-14.82-21.52-3.65-44.17-5.44-64.17-11.7-69.27-21.67-83.83-87.09-34.77-151.28,10.12-13.24,21.22-25.01,33.16-35.47H0V746.25c12.3-4.52,24.08-10.11,34.95-16.69,21.79-13.19,42.75-33.57,55.97-53.74Z"/></g></g></svg>
\ No newline at end of file
diff --git a/panikweb_esperanzah/static/img/bloc-hover-2023-3.svg b/panikweb_esperanzah/static/img/bloc-hover-2023-3.svg
new file mode 100644 (file)
index 0000000..536b115
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg id="Calque_2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 850.39 850.39"><defs><style>.cls-1{fill:#e3fb00;}</style></defs><g id="Calque_1-2"><g><path class="cls-1" d="M579.67,219.4c-12.41,22.24-20.53,50.34-22.03,74.4-4.03,64.71,16.58,114.49,62.65,144.27,22.4,14.5,45.57,27.85,69.17,40.32,85.85,45.36,89.11,190.6,5.66,272.76-32.96,32.44-69.78,46.97-107.24,44.12-38.65-2.95-77.77-6.54-113.84-17.11-67.18-19.69-136.46-20-209.66,11.84-31.42,13.66-60.74,33.05-85.25,60.39H850.39V212.57c-10.55-13.54-20.53-27.69-29.84-42.34-64.14-100.95-192.13-38.24-240.88,49.17Z"/><path class="cls-1" d="M326.8,587.89c17.73,2.99,37.83,.15,56.94-3.82,21.7-4.51,32.09-21.9,26.76-44.15-3.31-13.84-9.69-27.04-17.78-37.29-12.98-16.46-27.26-32.02-43.19-44.86-77.42-62.41-76.91-164.17-41.23-266.17C334.82,115.81,375.91,53.79,426.21,0H0V639.84c53.34-32.36,107.96-43.39,163.33-50.15,55.39-6.75,110.47-10.73,163.47-1.81Z"/></g></g></svg>
\ No newline at end of file
diff --git a/panikweb_esperanzah/static/img/favicon-2023-solid.png b/panikweb_esperanzah/static/img/favicon-2023-solid.png
new file mode 100644 (file)
index 0000000..f1d1c63
Binary files /dev/null and b/panikweb_esperanzah/static/img/favicon-2023-solid.png differ
diff --git a/panikweb_esperanzah/static/img/favicon-2023.png b/panikweb_esperanzah/static/img/favicon-2023.png
new file mode 100644 (file)
index 0000000..ac6a77c
Binary files /dev/null and b/panikweb_esperanzah/static/img/favicon-2023.png differ
diff --git a/panikweb_esperanzah/static/img/logo-esperanzah-yellow-2023.svg b/panikweb_esperanzah/static/img/logo-esperanzah-yellow-2023.svg
new file mode 100644 (file)
index 0000000..a43eba9
--- /dev/null
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 27.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        viewBox="0 0 708.7 170.1" style="enable-background:new 0 0 708.7 170.1;" xml:space="preserve">
+<style type="text/css">
+       .st0{fill:#e3fb00;}
+</style>
+<g>
+       <path class="st0" d="M551.8,24.6c-2-7.3-6.8-11.3-13.9-12.9c-1.2-0.3-2.4-0.8-3.6-0.9c-1.4-0.2-4.7,0.5-5.9,0.9
+               c-3.1,1-4.2,1.6-7,3.3c-5.9,3.6-10.2,8.9-14.1,14.3c-5.4,7.5-9.4,15.9-11.9,24.9c-1.2,4.4-2.4,8.9-1.6,13.6c0.8,5,4.6,7,8.9,4.6
+               c1-0.6,2.1-1.3,2.8-2.2c2.7-3.7,5.3-7.5,7.8-11.3c2.9-4.5,5.1-9.4,9.2-13c1.4-1.3,3.2-2.6,5.2-1.9c2.1,0.7,3.2,2.4,3.3,4.6
+               c0.1,1.3,0.2,2.7,0.1,4c-0.5,5.2-2.7,9.8-5.5,14.1c-5.7,8.8-13.9,14.6-23.4,18.6c-2.7,1.2-5.4,2.4-8,3.8
+               c-5.3,2.8-8.8,7.4-11.6,12.5c-3.5,6.4-5.3,13.3-6.8,20.4c-1.4,6.5-2.6,13.1-2.5,19.9c0.2,7.2,4,11.7,11.7,11
+               c5-0.4,9.7-1.8,14.3-3.7c6.2-2.5,10.7-7,13.8-12.5c4.8-8.4,9.2-17.1,13.4-25.8c7-14.3,13.8-28.7,20.7-43.1
+               c4.2-8.8,6.8-18.1,6.6-28.5C554,34.5,553.1,29.5,551.8,24.6z M504.3,119c-2,3.5-4.5,6.7-8.4,8.2c-0.9,0.3-2.1,0.7-2.8,0.3
+               c-0.6-0.3-0.9-1.7-0.9-2.6c0.2-3.6,1.8-6.7,3.7-9.6c2.5-3.8,6-6.6,9.5-9.3c1.1-0.8,2.1-1.7,3.2-2.5c0.1,0.1,0.3,0.2,0.4,0.3
+               C508.3,109.1,507,114.2,504.3,119z"/>
+       <path class="st0" d="M335.4,25.4c-0.9-3.5-2.5-6.9-5.2-9.5c-3.7-3.5-10-5.9-16.9-4.7c-2.8,0.5-5.4,1.6-8,2.5
+               c-2.2,0.7-4.2,1.7-6.4,2.5c-2.7,1-5.4,2.2-8.1,3c-1.6,0.5-2.6,2-2.4,3.6c0.3,2.9,0.5,5.8,0.8,8.7c-0.3,9.6-1.5,19.1-3.4,28.4
+               c-3,14.3-7.2,28.3-11.6,42.3c-3.4,11.1-6.8,22.2-9.9,33.4c-1.1,4.2-1.8,8.6-1.9,12.9c-0.1,5.1,2.8,8,8.2,7.6
+               c4.5-0.3,7.3-3.2,8.9-6.9c2.1-5,3.9-10.2,5.3-15.4c2.6-9.7,4.9-19.6,7.3-29.4c0.8-3.2,1-5.4,1.8-8.6c0,0,0-0.1,0-0.1
+               c0.5-2,3.4-1.3,3.1,0.7c0,0.2-0.1,0.5-0.1,0.8c-0.3,3.6-0.4,5.4-1.2,9c-1.8,8.6-4,17.2-5.8,25.8c-0.6,3-0.8,6.2-0.6,9.2
+               c0.3,3.4,3.2,6,6.6,5.5c1.5-0.2,3-0.9,4.5-1.5c4.9-1.9,8-5.6,9.4-10.7c2.5-8.7,3.1-17.8,3.9-26.8c0.5-6.2,0.6-12.5,0.9-18.7
+               c0.2-6,2.4-11.3,5.8-16.2c4.1-6,8.5-11.8,11.8-18.4C337.2,45.2,338,35.5,335.4,25.4z M314.6,54.3c-2.9,4.6-7.1,7.6-11.9,9.7
+               c0,0,0,0,0,0c-1.9,0.8-3.9-0.7-3.7-2.8c0.8-6.5,2.6-12.4,6.9-17.4c1.8-2,4-3.4,6.9-3.1c2,0.2,3.6,1.8,4,3.8
+               C317.5,48.1,316.5,51.3,314.6,54.3z"/>
+       <path class="st0" d="M615.5,43.8c-0.3,7-2.3,13.5-4.6,19.9c-4.2,11.4-8.3,23-13,34.2c-4.5,10.7-9.5,21.2-14.6,31.6
+               c-1.9,3.8-4.6,7.3-7.1,10.8c-2.3,3.1-6.7,4.1-9.3,2.2c-3.5-2.7-5.6-6.2-5.4-10.8c0.2-3.9,1.7-7.3,3.3-10.7c3.4-7.1,6.7-14.3,8.6-22
+               c0.8-3.2,1.2-6.5,1.7-9.8c0.1-0.7,0.2-1.6-0.1-2.2c-0.5-1.1-1.1-2.6-2-2.9c-1.1-0.3-2.8,0.1-3.8,0.8c-4,2.7-6.1,7-7.9,11.2
+               c-3.4,7.9-6.7,15.9-10,23.8c-2.4,5.8-5.6,11-10.4,15c-3.1,2.6-6.6,3.7-10.7,0.6c-1.7-1.3-2.3-3.4-2.5-5.5
+               c-0.4-3.8,0.8-7.3,2.2-10.6c4.9-11.9,10-23.7,14.7-35.6c4.7-11.6,9.6-23.2,13.4-35.2c3.2-9.9,4.9-20.3,7.3-30.4
+               c0.4-1.6,0.8-3.2,1.4-4.8c0.5-1.5,1.8-1.7,3.1-1.7c2.9-0.1,5.3,1.3,7.5,2.9c5.3,4,5.5,9.8,4.7,15.6c-0.7,5.1-2.4,10-3.3,15.1
+               c-0.6,3.2-0.9,6.6-0.6,9.8c0.5,4.8,3.9,6.3,8.3,3.5c4.8-3.1,7.5-7.7,10.2-12.5c2.1-3.8,4.2-7.7,6.6-11.3c1.4-2.1,3.4-3.6,6.3-2.9
+               c2.7,0.6,3.8,2.8,4.6,5C615,39,615.1,41.4,615.5,43.8z"/>
+       <path class="st0" d="M387,37.6c-2.4-3.8-5.1-7.3-8.6-10.2c-3.3-2.8-6.8-5-11-6c-3.3-0.8-6.6-0.5-9.9,0.7c-4,1.4-6.8,4-9.2,7.1
+               c-4,5.3-6.6,11.4-8.4,17.7c-1.3,4.6-1.8,9.2,0,13.9c1.7,4.3,5,6.1,9,4.5c1.4-0.6,2.8-1.6,3.9-2.7c3.1-3.1,6-6.5,9.2-9.5
+               c1.4-1.3,3.4-2.7,5.6-1.8c1.8,0.7,3,2.1,3.7,3.9c2.2,5.4,1.8,10.7-1.8,15.3c-3.5,4.6-8.6,6-14.3,5.4c-3.6-0.4-7.2-1.1-10.9-1.5
+               c-3.1-0.4-6.2-0.4-9,1c-4.9,2.4-8.2,6.5-10.6,11.3c-5,9.9-7,20.6-7.5,32.1c0.1,1.2,0.1,2.8,0.3,4.4c0.7,6.2,4,10.8,9.3,13.7
+               c5.7,3.1,12,2.3,18.2,1.7c3.2-0.3,6.7-0.8,9.8-0.1c3,0.7,5.3-0.2,7.1-1.8c2.3-2.1,4.2-4.9,5.9-7.5c3.6-5.6,5.8-11.9,8.1-18.2
+               c4.7-12.7,9.4-25.4,14-38.2C396.9,53.3,387.6,38.6,387,37.6z M356.2,102.1c0,0.1,0,0.3-0.1,0.4c0,0.4-0.1,0.8-0.2,1.2
+               c0,0.2-0.1,0.4-0.1,0.6c-0.2,0.9-0.5,1.8-0.9,2.6c-2.1,5.7-8.9,11.4-14.9,11c-3.9-0.2-5.5-2.8-3.8-6.4c1.7-3.5,4.1-6.1,7.7-7.8
+               c3-1.4,6-2.9,9.1-4.3c0.1,0,0.2-0.1,0.3-0.1c0.1,0,0.2-0.1,0.3-0.1c0.7-0.2,1.5,0.1,2,0.6c0.1,0.1,0.2,0.2,0.3,0.3c0,0,0,0.1,0,0.1
+               c0.1,0.1,0.1,0.2,0.2,0.3c0,0.1,0.1,0.1,0.1,0.2c0,0.1,0.1,0.2,0.1,0.3c0,0.2,0,0.3,0,0.5C356.3,101.7,356.3,101.9,356.2,102.1z"/>
+       <path class="st0" d="M450,131.4c3-2.6,5.9-5.5,8.9-8.2c0.9-0.8,1.9-1.5,3-2c4.7-2.3,8.2-0.6,9.3,4.1c0.9,4,0.1,7.8-1.2,11.5
+               c-2.2,6.1-4.6,12.1-7.4,17.9c-1.9,4-5.1,6.5-9.7,7.3c-7.1,1.2-14.3,1.5-21.4,1.6c-2.5,0-4.9-0.5-7-1.9c-1.8-1.1-2.6-2.9-3.1-4.8
+               c-0.9-3.6,0.1-6.9,1.6-10.1c4.7-9.7,9.2-19.4,14.3-28.8c4.4-8,9.5-15.5,14.4-23.2c3.9-6.1,8-12.1,11.8-18.2c1.6-2.5,2.6-5.4,4-8
+               c-1.5,1-3.2,1.9-4.7,3c-2.9,2-6,3.9-9.2,5.6c-1.6,0.9-3.5,1.5-5.5,1.5c-1.8,0-2.9-1.5-3.2-3.2c-0.5-4.3-0.4-8.5-0.8-12.6
+               c-0.4-3.9,0.2-8,1.2-11.8c1.7-6.3,13.5-10.9,16-11.9c3.8-1.5,7.6-3.1,11.3-4.7c2.8-1.2,5.5-2.7,8.3-3.9c2.6-1.1,5.3-2.1,7.9-3.2
+               c1.4-0.5,4.6,0.8,5.8,2.2c2.7,3.3,3.2,7.3,2.2,11.2c-1.2,4.5-2.6,9-4.6,13.2c-2.9,6.2-6.3,12.2-9.7,18.1c-3.4,5.9-7,11.8-10.8,17.5
+               c-5.8,8.7-11.9,17.3-17.8,26c-2.8,4-5.7,8-7.2,12.7c-0.1,0.3-0.2,0.7-0.3,1C445.8,131.4,448.4,132.9,450,131.4L450,131.4z"/>
+       <path class="st0" d="M437.5,82.1c-4.6,13.5-9.4,26.9-13.7,40.5c-2.8,8.8-5,17.8-7.5,26.6c-0.5,1.9-1.1,3.8-1.9,5.6
+               c-1.5,3.5-3.5,6.2-8.1,3.4c-4.5-2.8-7.5-6.3-7.1-11.9c0.2-2.3,0.6-4.8,1.4-7c3-8.1,6.3-16.2,9.5-24.2c3.9-10.1,8-20.2,9.6-31
+               c0.5-3.3,0.2-6.8,0.2-10.2c0-0.3-0.1-0.7-0.2-1c-0.4-1.5-1.3-3-2.7-3c-1.1,0-2.4,1.1-3.3,2.1c-3.3,3.6-4.4,8.2-5.8,12.6
+               c-4.5,14.8-8.8,29.6-13.5,44.3c-1.9,6-4.7,11.8-8.9,16.7c-3.3,3.8-7.4,3.5-10.9,0.1c-4.1-4-4.2-8.8-2.5-13.7
+               c3.5-10,7-19.9,10.9-29.7c6.4-16.1,12.3-32.3,15.3-49.4c0.8-4.8,0.8-9.8,1.2-14.8c0-0.6,0-4,0.5-4.3c0.6-0.4,1.9-0.1,2.6,0.4
+               c1.7,1.2,3.3,2.5,4.7,4c3.8,3.8,7.8,7,13.5,7.3c1.6,0.1,3.3,0.6,4.9,0.7c6.7,0.5,10.8,4.6,13.2,10.5
+               C442.8,63.7,439.2,77.2,437.5,82.1z"/>
+       <path class="st0" d="M201.7,38.2c-3.4-1.2-7.1-1.8-10.7-2.4c-4.4-0.6-8.1-2.5-11.8-4.7c-2.2-1.2-4.5-1.6-6.8-0.6
+               c-2.2,1-2.1,3.2-1.9,5.3c0.4,5.6,0.8,11.1,1.3,16.7c-0.1,0-0.2,3.6-0.3,5.4c-1.3,16.8-6,32.7-12.1,48.2c-2.3,6-4.5,12-6.3,18.2
+               c-1.4,4.7-1.5,9.6,1.4,14c3.1,4.7,7.7,5.2,12.1,1.6c3.5-2.8,5.2-6.8,6.5-11c1.5-4.8,2.6-9.8,4.2-14.5c1.8-5.4,4.9-9.6,10.9-10.9
+               c3.2-0.7,6.3-1.5,9.4-2.6c2.9-1,5.7-2.3,8.3-3.9c4.8-2.9,8.1-7.2,10.6-12.2c3.1-6.2,4.8-12.9,4.8-19.8
+               C221.2,50,213.6,42.2,201.7,38.2z M195.4,78.2c-1.1,0.5-2.3,1-3.5,1.2c-2.5,0.3-4-1.1-3.7-3.7c0-5.6,3.7-9.1,4.9-10.2
+               c0.7-0.6,1.4-1.2,2.2-1.6c3.6-1.8,6.9,0.4,6.8,4.5C202.1,72.6,198.7,76.7,195.4,78.2z"/>
+       <path class="st0" d="M109.3,111.8c-0.1-3.7,0.4-7.4,2.9-10.3c0.7-0.8,1.5-1.5,2.4-2.1c2.6-1.8,6.5-1.3,8.7,1
+               c0.2,0.2,0.4,0.4,0.6,0.6c4,3.6,8.6,1.9,9.9-3.5c1-4-0.1-7.9-1.6-11.6c-4.5-10.8-7.3-21.9-7.6-33.6c-0.2-7.2,0.1-14.3,3.3-21
+               c2.3-4.9,5.9-8.5,10.8-10.8c3.5-1.7,7.1-3,11-2.6c3.2,0.3,6.1,1.5,8.3,3.7c7.3,7,9.6,16,8.6,25.8c-0.2,2.4-1.3,4.4-3,6.1
+               c-1.5,1.5-5.4,1.4-7-0.3c-2.2-2.3-4.1-4.9-6.3-7.3c-1.6-1.9-3.4-3.7-6.2-3.2c-2.2,0.4-3,1.4-3.3,3.8c-0.4,3.6,0.9,6.7,2.9,9.6
+               c2.5,3.6,5.2,7,7.7,10.6c3.3,4.9,5,10.5,5.6,16.3c1.2,11.6-0.7,22.8-5.1,33.4c-2.7,6.6-7,12.1-12.9,16.2c-3.3,2.3-6.8,4-10.7,4.1
+               c-4.6,0.1-8.6-2-11.8-5.4C111.4,125.8,109.4,119.2,109.3,111.8z"/>
+       <path class="st0" d="M645.5,57.7c-3.2,9-6.4,18-9.8,26.9c-3.4,8.8-7.6,17.1-13.4,24.4c-2.2,2.8-5,5.2-7.8,7.4
+               c-2.1,1.6-4.9,2-7.6,1.3c-2.6-0.6-3.5-2.8-4.1-5.1c-1.2-5,0.2-9.6,2.7-13.8c5.8-9.9,10.8-20.1,14.9-30.8
+               c4.5-11.6,8.3-23.3,10.8-35.5c1-4.9,5.3-7.9,8.6-7.5c3.8,0.5,6.2,2.9,7.5,6.3C648.4,34.3,647.4,52.2,645.5,57.7z"/>
+       <path class="st0" d="M605.6,137.4c-0.3,3.8-1.2,8.2-4.7,11.6c-4.7,4.5-11.2,2.7-13.3-3.2c-1-2.7-1.1-5.3,0-8.7
+               c0.9-2.4,1.7-3.7,2.6-5.6c1.5-3,3.9-5.2,7.1-6c2-0.5,3.8,0.5,5.2,2C604.9,130,605.7,132.5,605.6,137.4z"/>
+       <g>
+               <path class="st0" d="M70.2,147.9c-5.2-1-9.2-3.6-12.4-7.7c-6-7.5-8.3-17.1-8.7-27.9c-0.2-7.1,1.8-13.1,5.5-18.7
+                       c3.5-5.3,8-8,12.7-10.4c4-1.9,8-3.7,12.2-4.4c1.4-0.2,2.8-1,4.2-1.8c1.5-0.9,1.8-2.5,0.9-4c-0.6-1-1.4-1.8-2.3-2.3
+                       c-1.4-0.9-2.9-1.7-4.4-2.2c-7.4-2.7-10-10.3-10-18.9c0-10.3,3.8-18.9,9.1-26.9c3.7-5.5,8.3-9.1,13.1-12.6c6.6-4.7,13.3-4.5,20-3.4
+                       c4.8,0.8,8,4.4,9.6,10.3c1.1,4.5,1.9,8.9,1.5,13.8c-0.6,7-4.8,10.4-9.7,7.7c-2-1.1-3.9-2.4-5.7-3.8c-7.4-5.9-15.4,2.1-16.8,10
+                       c-0.4,2-0.2,4.3,0.3,6.2c1.4,5,4.2,8.2,8.5,9.2c2.1,0.5,4.1,0.9,6.2,1.2c7.6,1.2,11.6,12,7.5,20.3c-1.6,3.3-4,5.3-6.9,6.1
+                       c-3,0.8-6,1.5-9,1.7c-5.6,0.3-10.8,2-15.4,6.3c-2.8,2.6-5.1,6-5.9,10.4c-0.6,3.2,0.1,5.9,2,7.7c1.9,1.8,4.2,2.2,6.6,0.2
+                       c1.8-1.6,3.7-3.1,5.6-4.6c1.3-1.1,2.6-2.4,4.1-3.2c4.9-3,9.6-0.4,10.9,5.8c1.1,5.3-0.2,10.3-2.6,15c-3.1,5.9-7.2,10.6-12.1,14.2
+                       c-3.1,2.3-6.5,4.1-9.8,5.9C75.7,148.7,72.7,148.9,70.2,147.9z"/>
+       </g>
+       <g>
+               <path class="st0" d="M221.9,152.9c-5.4-1.1-9.4-3.6-12.5-7.4c-5.8-6.9-7.6-15.7-7.2-25.4c0.2-6.4,2.8-11.7,7-16.6
+                       c4-4.6,8.9-6.9,14-8.8c4.3-1.6,8.7-3,13.1-3.5c1.5-0.2,3.1-0.8,4.5-1.4c1.7-0.8,2.1-2.2,1.2-3.6c-0.6-0.9-1.4-1.7-2.3-2.2
+                       c-1.4-0.9-2.9-1.6-4.5-2.2c-7.6-2.7-9.9-9.7-9.2-17.4c0.7-9.2,5.3-16.8,11.4-23.8c4.2-4.8,9.3-7.9,14.6-10.8
+                       c7.3-3.9,14.3-3.5,21.2-2.3c5,0.9,8.2,4.2,9.4,9.6c0.9,4,1.4,8.1,0.7,12.4c-1.1,6.3-5.8,9.2-10.8,6.5c-2-1.1-3.9-2.3-5.7-3.7
+                       c-7.4-5.6-16.4,1.3-18.3,8.3c-0.5,1.8-0.5,3.9-0.1,5.5c1.1,4.5,3.9,7.5,8.3,8.6c2.1,0.5,4.3,1,6.5,1.3c7.9,1.3,11.4,11.2,6.5,18.6
+                       c-1.9,2.9-4.6,4.7-7.7,5.2c-3.2,0.6-6.4,1.2-9.6,1.2c-5.9,0-11.5,1.4-16.7,5.1c-3.2,2.2-5.7,5.2-6.9,9.1c-0.9,2.9-0.3,5.3,1.6,7
+                       c1.9,1.7,4.3,2.2,7,0.4c2-1.3,4.1-2.6,6.2-3.9c1.5-0.9,2.9-2,4.5-2.7c5.4-2.5,10.1,0,11,5.7c0.8,4.8-0.9,9.3-3.8,13.4
+                       c-3.7,5.2-8.3,9.3-13.6,12.3c-3.5,1.9-7.1,3.4-10.7,5C227.7,153.8,224.5,153.9,221.9,152.9z"/>
+       </g>
+</g>
+</svg>
index 729998d27817f13dd75b2ed57a24a88a4ddcedf3..3c7091b634d1542dc1790ed3a106f28313ba9757 100644 (file)
                                }
                        }});
                        controls.append(playpause).append(stop).append(remove);
-                       var title = $('<a>',{title:"More information",href:sound.url,'class':"button title",html:sound.title});
+                       var title = $('<a>',{href: sound.url, 'class': 'button title', html:sound.title});
                        container.append(controls).append(title).append(audio);
                        if(sound.focus){thePlaylist.setFocus(container);}
                        return container;
index c663a556152e47dd0c7c6d916729ac8f5b329cbe..5d61acb9615df7c4ca19be53e1fa9c82cc567d8a 100644 (file)
@@ -120,6 +120,19 @@ $(function() {
                        return;
                }
                this.each(function() {
+                       if ($(this).parents('.leaflet-control').length) {
+                               // don't touch leaflet control links
+                               return;
+                       }
+                       var href = $(this).attr("href");
+                       if (!href || href.match('\.(ogg|mp3|pdf|odt|ods|doc|xls|docx|xlsx|rtf|zip|rss|atom)$')) {
+                               // don't touch empty <a> or links to downloadable files
+                               return;
+                       }
+                       if ($(this).attr('target')) {
+                               // don't touch links with an explicit target
+                               return;
+                       }
                        $(this).unbind('click');
                        $(this).bind('click',function(e){
                                var href = $(this).attr("href");
@@ -127,11 +140,6 @@ $(function() {
                                        window.open(href, '_blank');
                                        return false;
                                }
-                               if (href.match('\.(ogg|mp3|pdf|odt|ods|doc|xls|docx|xlsx|rtf|zip|rss|atom)$')) {
-                                       /* open files */
-                                       window.location = href;
-                                       return false;
-                               }
                                $(this).addClass('loading');
                                /* this checks the link points to a local document, be
                                 * it because it's just a path, or because the server
@@ -143,7 +151,11 @@ $(function() {
                                }else if (!$(this).attr('target') && (
                                                href.indexOf(document.domain) > -1 ||href.indexOf(':') === -1 || href.indexOf(':') > 5
                                        )) {
-                                       loadPage(href);
+                                       if ($(this).data('replace')) {
+                                               loadPage(href, false, $(this).data('replace'));
+                                       } else {
+                                               loadPage(href);
+                                       }
                                        return false;
                                }else{
                                        $(this).attr('target','_blank');
@@ -165,6 +177,7 @@ $(function() {
                $.getJSON('/onair.json', function(onair) {
                        var onairContainer = $('<span>');
                        if(onair.data.episode || onair.data.emission) {
+                               $('body').removeClass('nothing-playing');
                                if(onair.data.emission){
                                        $('<a>',{href:onair.data.emission.url,html:onair.data.emission.title}).appendTo(onairContainer).ajaxifyClick();
                                }
@@ -173,6 +186,7 @@ $(function() {
                                        $('<a>',{href:onair.data.episode.url,html:onair.data.episode.title}).appendTo(onairContainer).ajaxifyClick();
                                }
                        } else if (onair.data.nonstop) {
+                               $('body').removeClass('nothing-playing');
                                if (onair.data.nonstop.url) {
                                        onairContainer = $('<a href="' + onair.data.nonstop.url + '">' + onair.data.nonstop.title + '</a>');
                                } else {
@@ -188,6 +202,7 @@ $(function() {
                                }
                        }
                        else {
+                               $('body').addClass('nothing-playing');
                                onairContainer = $('<span>Toute la musique du festival</span>');
                        }
                        if (onair.data.emission && onair.data.emission.chat) {
@@ -203,21 +218,32 @@ $(function() {
                                WhatsOnAir.empty().append(onairContainer);
                                WhatsOnAir.fadeIn();
                        }
+                       // update grid
+                       var cell_slug = (onair.data.emission && onair.data.emission.slug) || (
+                               onair.data.nonstop && onair.data.nonstop.slug);
+                       var $current_cell = $('.program li.current');
+                       if ($current_cell.data('program-slug') !== cell_slug &&
+                           $current_cell.next().data('program-slug') === cell_slug) {
+                               $current_cell.removeClass('current').addClass('past');
+                               $current_cell.next().removeClass('future').addClass('current');
+                       }
                });
        });
         $('#WhatsOnAir').trigger('load');
        var refresh_onair_interval = 25000;
        setInterval("$('#WhatsOnAir').trigger('load');", refresh_onair_interval);
-       $("#DirectStreamPanikControler").on('click',function(e) {
+       $('#streamSymbol').on('click keypress',function(e) {
+               if (e.type === 'keypress' && !(e.key === ' ' || e.key === 'Enter'))
+                       return;
                e.preventDefault();
-               var stream = $('#DirectStreamPanik').get(0);
+               var stream = $('#LiveStream').get(0);
                if (stream.paused == false){
                        if ($(this).find('.player-stop')) {
-                               $('#DirectStreamPanik').trigger('pause');  // icon change
+                               $('#LiveStream').trigger('pause');  // icon change
                                stream.pause();
-                               var par = $('#DirectStreamPanik').parent()
-                               var dup = $('#DirectStreamPanik').clone();
-                               $('#DirectStreamPanik').remove();
+                               var par = $('#LiveStream').parent()
+                               var dup = $('#LiveStream').clone();
+                               $('#LiveStream').remove();
                                $(dup).appendTo($(par));
                                add_stream_handlers();
                        } else {
@@ -233,11 +259,11 @@ $(function() {
        });
 
        function add_stream_handlers() {
-         $('#DirectStreamPanik').on('play',function(){
-               $('audio:not(#DirectStreamPanik)').each(function(){this.pause();});
+         $('#LiveStream').on('play',function(){
+               $('audio:not(#LiveStream)').each(function(){this.pause();});
                $('#streamSymbol').removeClass('player-start').addClass('player-stop');
          }).on('pause',function(){
-               //$('audio:not(#DirectStreamPanik)').each(function(){this.pause();});
+               //$('audio:not(#LiveStream)').each(function(){this.pause();});
                $('#streamSymbol').addClass('player-start').removeClass('player-pause').removeClass('player-stop');
          });
        }
@@ -260,7 +286,7 @@ $(function() {
                        self.controlButtons['playpause'].addClass('resymbol');
                },
                onPlay:function(self){
-                       $('#DirectStreamPanik')[0].pause();
+                       $('#LiveStream')[0].pause();
                },
                onAdd:function(self){
                        //self.isLastAdd[0].scrollIntoView();
@@ -294,24 +320,53 @@ $(function() {
                        $(this).addClass('loading');
                        loadPage($(this).attr('action') + '?' + $(this).serialize());
                });
+               // custom loading behaviour for week on homepage
+               // (studioneau-only for now)
+               $('#week .week-arrow a').unbind('click').on('click', function(event) {
+                       $.ajax({
+                               url: $(this).attr('href'),
+                               dataType: 'html',
+                               success: function(html, textStatus, jqXhr) {
+                                       var $new_week = $(html);
+                                       var $new_program_tabs = $new_week.find('.program.tabs');
+                                       var $new_program_content = $new_week.find($new_program_tabs.attr('data-tab-about'));
+                                       var $old_program_content = $($('.program.tabs').attr('data-tab-about'));
+                                       $('.program.tabs').replaceWith($new_program_tabs);
+                                       $old_program_content.replaceWith($new_program_content);
+                                       init();
+                                       $(document).trigger('panikweb:week-change');
+                               }
+                       });
+                       return false;
+               });
                $(".tabs").each(function() {
                        var self = $(this);
-                       var about= $($(this).attr("data-tab-about"));
+                       var about = $($(this).attr("data-tab-about"));
                        var current = $(this).find("[data-tab].active")[0];
                        var dftShowSelector = current?".active":":first";
                        var activeTab = $(this).find("[data-tab]"+dftShowSelector+"").addClass("active");
                        $(this).find("[data-tab]").each(function() {
-                           $(this).on('click load',function (e) {  
+                           $(this).on('click load',function (e) {
                                e.preventDefault();
-                               self.find(".active").removeClass("active");  
-                               $(this).addClass("active");  
-                               about.find("[data-tabbed]").hide();  
-                               $($(this).attr("data-tab")).fadeIn();  
-               
-                           });  
+                               self.find(".active").removeClass("active");
+                               $(this).addClass("active");
+                               var new_active = $($(this).attr("data-tab"));
+                               if (! new_active.is(':visible')) {
+                                 about.find("[data-tabbed]").hide();
+                                 $($(this).attr("data-tab")).show();
+                               }
+                           });
                        });  
                        activeTab.trigger('load');
                });
+               // disable week tab buttons if there's nothing (but nonstop) on the day
+               // (studioneau-only for now)
+               $('.program div[data-tabbed]').each(function(idx, elem) {
+                       if ($(elem).find('a[href]').length == 0) {
+                               // nothing this day
+                               $('button[data-tab="#' + $(elem).attr('id') + '"]').attr('disabled', 'disabled');
+                       }
+               });
                $('[data-player-action]').on('click',function(){
                        var audio = $('#'+$(this).attr('data-player-audio'));
                        var sound_id = audio.data('sound-id');
@@ -549,14 +604,13 @@ $(function() {
                });
 
                 /* CHAT */
-                if ($('#chat').length) {
+                if ($('#chat').length && ! $('#player.on-chat-page').length) {
                     $('#player').addClass('on-chat-page');
-                    var moderator = ($('#panikdb').length > 0);
                     var $msg = $('input#msg');
                     var $send = $('button#send');
                     var chat_roster = Object();
 
-                    if (moderator) {
+                    function enable_moderation() {
                       $('#chat').addClass('moderation');
                       $('#chat').on('click', 'span.from', function() {
                         var name = $(this).text();
@@ -585,7 +639,7 @@ $(function() {
                     $('.nick button').on('click', function() {
                       window.localStorage['pa-nick'] = $('.nick input').val();
                       var nick = window.localStorage['pa-nick'];
-                      $('.commands .prompt').text(nick + '>');
+                      $('.commands .prompt').text(nick);
 
                       connection = new Strophe.Connection("/http-bind");
                       connection.connect('im.panik', null, function(status, error) {
@@ -613,6 +667,7 @@ $(function() {
                             var muc = $('div#chat').data('chatroom');
                             connection.muc.join(muc + '@conf.panik', jid,
                                     function(msg) {
+                                        if (! msg.textContent) return true;
                                         var from = msg.attributes.from.value.replace(/.*\//, '');
                                         var klass = '';
                                         if (from == jid) {
@@ -629,24 +684,35 @@ $(function() {
                                     function(pres) {
                                             var nick = $('.nick input').val()
                                             var muc = $('div#chat').data('chatroom');
-                                            if (pres.getElementsByTagName('status').length == 1 &&
+                                            if (pres.getElementsByTagName('status').length &&
                                                 pres.getElementsByTagName('status')[0].attributes &&
                                                 pres.getElementsByTagName('status')[0].attributes.code &&
                                                 pres.getElementsByTagName('status')[0].attributes.code.value == '307') {
                                               /* kicked */
-                                              var kicked = pres.getElementsByTagName('item')[0].attributes.nick.value;
-                                              var new_msg = $('<div class="msg info new"><span class="content">' + kicked + ' a été mis dehors.</span></div>').prependTo($('#chat'));
-                                              new_msg[0].offsetHeight; /* trigger reflow */
-                                              new_msg.removeClass('new');
+                                              try {
+                                                var kicked = pres.getElementsByTagName('item')[0].attributes.nick.value;
+                                              } catch (error) {
+                                                var kicked = pres.attributes.from.value.split('/')[1];
+                                              }
                                               if (kicked == nick) {
                                                 connection.disconnect();
                                                 $('div.nick').css('visibility', 'hidden');
+                                                var new_msg = $('<div class="msg info new"><span class="content">You have been kicked out.</span></div>').prependTo($('#chat'));
+                                              } else {
+                                                var new_msg = $('<div class="msg info new"><span class="content">' + kicked + ' a été mis dehors.</span></div>').prependTo($('#chat'));
                                               }
+                                              new_msg[0].offsetHeight; /* trigger reflow */
+                                              new_msg.removeClass('new');
                                             }
                                             if (pres.getElementsByTagName('conflict').length == 1) {
                                               $('.nick input').val(nick + '_');
                                               connection.disconnect();
-                                              $('.nick button').trigger('click');
+                                              if (nic.indexOf('__') == -1) {
+                                                // auto reconnect unless nick
+                                                // has already been altered
+                                                // after conflicts.
+                                                $('.nick button').trigger('click');
+                                              }
                                             }
                                             return true;
                                     },
@@ -654,7 +720,7 @@ $(function() {
                                             if (chat_roster[nick] == true) {
                                                 for (contact in roster) {
                                                         if (chat_roster[contact] !== true) {
-                                                                var new_msg = $('<div class="msg info new"><span class="content">' + contact + ' est dans la place.</span></div>').prependTo($('#chat'));
+                                                                var new_msg = $('<div class="msg info new joined"><span class="content">' + contact + ' est dans la place.</span></div>').prependTo($('#chat'));
                                                                 new_msg[0].offsetHeight; /* trigger reflow */
                                                                 new_msg.removeClass('new');
                                                         }
@@ -674,7 +740,24 @@ $(function() {
 
                     function send() {
                         var text = $msg.val();
+                        if (! text) {
+                            $msg.focus();
+                            return true;
+                        }
                         var muc = $('div#chat').data('chatroom');
+                        if (text.startsWith('/auth')) {
+                            $msg.val('');
+                            /* ideally it would trigger some code on the server
+                             * to check the password and elevate priviledges in
+                             * prosody. It doesn't, this is security theater.
+                             */
+                            $.getJSON('/media/chat.json', function(chat_info) {
+                              if (text.split(' ')[1] == chat_info.secret) {
+                                enable_moderation();
+                              }
+                            });
+                            return true;
+                        }
                         connection.muc.message(muc + '@conf.panik', null, text);
                         $msg.val('');
                         return true;
@@ -690,14 +773,16 @@ $(function() {
 
                     if (window.localStorage['pa-nick'] !== undefined) {
                       $('.nick input').val(window.localStorage['pa-nick']);
-                      $('.nick button').click();
+                      if ($('#chat[data-global]').length == 0) {
+                        $('.nick button').click();
+                      }
                     }
 
                     $(window).on('beforeunload', function() {
-                        if (connection) { connection.disconnect(); }
+                        if (connection && $('#chat[data-global]').length == 0) { connection.disconnect(); }
                     });
 
-                } else {
+                } else if ($('#chat').length == 0) {
                     $('#player').removeClass('on-chat-page');
                 }
        }
diff --git a/panikweb_esperanzah/templates/agenda.html b/panikweb_esperanzah/templates/agenda.html
deleted file mode 100644 (file)
index a4b1e67..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-{% extends "base.html"%}
-{% load paniktags i18n %}
-{% block title %}{% trans 'News' %}{% endblock %}
-{% block toptitle %}
-<h1 class="top"><a class="dimmed" href="{% url 'news' %}">{% trans 'News' %}</a>
- / <a href="{% url 'agenda' %}">Agenda</a>
-</h1>
-{% endblock %}
-{% block nav %}
-       {% news_nav %}
-{% endblock %}
-{% block main %}
-
-<div class="detail marged news cf">
-       <div class="wrapper navigation">
-{% if month %}
-<h2>{{month|date:"E Y"}}</h2>
-{% else %}
-<p class="intro leftPart">
-Sur les ondes comme dans la ville, une quantité d'événements Panik et proches…
-</p>
-{% endif %}
-
-               <div class="leftPart">
-            <div id="agenda" class="news">
-               {% regroup agenda|dictsort:'event_date' by event_date as agenda_list %}
-                 {% for date in agenda_list %}
-                 <h3>{{ date.grouper|date:"l d E"|lower }}</h3>
-                 {% for content in date.list %}
-                   {% news_inline %}
-                 {% endfor %}
-               {% endfor %}
-               {% if not agenda %}
-                       <div class="big error center">Misère, c'est l'hiver ?!</div>
-               {% endif %}
-
-    <div class="previous-and-next-months">
-<h4>
-    {% if previous_month %}
-        <a href="{% url 'agenda_by_month' year=previous_month.year month=previous_month.month %}"
-           >&lt; {{previous_month|date:'E Y'}}</a>
-    {% endif %}
-    {% if previous_month and next_month %}—{% endif %}
-    {% if next_month %}
-        <a href="{% url 'agenda_by_month' year=next_month.year month=next_month.month %}"
-           >{{next_month|date:'E Y'}} &gt;</a>
-    {% endif %}
-</h4>
-    </div>
-
-            </div>
-               </div>
-               <div class="rightPart">
-                               <div class="sub">
-                                       <h5 class="sectionLabel right">
-                        <a href="{% url 'newsArchives' %}">
-                                           <span class="iconLabel">Toutes</span>
-                                   </a>
-                    </h5>
-                                       <h5 class="sectionLabel">
-                            <span class="iconLabel">{% trans 'Latest News'%}</span>
-                            <a class="button icon-rss inBlock" href="{% url 'rss-feed' %}"></a>
-                    </h5>
-
-
-       <form action="{% url 'newsArchives' %}" id="search-form">
-               <input id="id_q" name="q" type="text" {% if search_query %}value="{{ search_query }}"{% endif %}>
-                <button class="icon-search"><span class="sr-only">{% trans "Search" %}</span></button>
-       </form>
-
-                                               <ul class="custom list newsList">
-                                               {% for content in news|slice:":20" %}
-                                                       <li class="{% if content == newsitem %}current{% endif %}">{% news_inline %}</li>
-                                               {% endfor %}
-                                               </ul>
-                               </div>
-               </div>
-       </div>
-</div>
-{% endblock %}
-{% block links %}
-<div class="wrapper">
-       <div class="padded ">
-               <ul class="news columns padded list custom">
-               {% for NewsItem in newsAll %}
-                       <li class="item ellipsis small  ">
-                       <a href="{% url 'newsitem-view' slug=NewsItem.slug %}">
-                               <span class="title"><strong>{{ NewsItem.date|date:"D d/M" }}</strong>&nbsp;-&nbsp;{{ NewsItem.title }}</span>
-                       </a>
-                       </li>
-               {% endfor %}
-               </ul>
-       </div>
-    </div>
-</div>
-{% endblock %}
index 58afe78605a21fd8b9c7603dc2b8c26bbfc1ec52..5fc89f552c9f0689b60c7cb7d479167f74a0995a 100644 (file)
@@ -7,43 +7,58 @@
 {% endblock %}
 
 {% block main %}
-<h2 class="top">Archives de la radio</h1>
-
-{% regroup diffusions by datetime|date:"Y" as diffusions_by_year %}
-{% for diffusion_group in diffusions_by_year %}
-<h3 class="archives" id="archive-{{diffusion_group.grouper}}">
-        {% if diffusion_group.grouper == "2019" %}2019 c’était super !
-        {% elif diffusion_group.grouper == "2018" %}L'énergie de 2018 !
-        {% elif diffusion_group.grouper == "2017" %}Réécoutez 2017 !
-        {% elif diffusion_group.grouper == "2016" %}Revivez 2016 !
-        {% elif diffusion_group.grouper == "2015" %}Retournez en 2015 !
-        {% elif diffusion_group.grouper == "2014" %}Redécouvrez 2014 !
-        {% elif diffusion_group.grouper == "2013" %}Plongez en 2013 !
-        {% elif diffusion_group.grouper == "2012" %}Rappelez-vous 2012 !
-        {% elif diffusion_group.grouper == "2011" %}Rejouez 2011 !
-        {% elif diffusion_group.grouper == "2010" %}Sautez vers 2010 !
-        {% else %}{{ diffusion_group.grouper }}{% endif %}</h2>
-       <div class="archives emission-episodes">
-{% for diffusion in diffusion_group.list %}
-       <a href="{% url 'episode-view' emission_slug=diffusion.episode.emission.slug slug=diffusion.episode.slug %}">
-               <div class="image">
-                        <div class="img">
-                       {% thumbnail diffusion.episode.image "400x400" crop="50% 50%" as im %}
-                       <img loading="lazy" src="{{im.url}}">
-                        {% empty %}
-                        <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8nez3HwAGugKtHMIYIwAAAABJRU5ErkJggg==" height="200" width="200">
-                       {% endthumbnail %}
-                        </div>
-               </div>
-               <div class="name"><span>{{ diffusion.episode.title }}</span></div>
-       </a>
-{% endfor %}
-       </div>
-{% endfor %}
-
-<p class="archives-sorry">
-Nos archives se terminent ici, les premières années de radio Esperanzah!
-sont dans nos cœurs… 💕
-</p>
+  <h2 class="top">Archives de la radio</h2>
+
+  {% regroup diffusions by datetime|date:"Y" as diffusions_by_year %}
+  {% for diffusion_group in diffusions_by_year %}
+    <h3 class="archives" id="archive-{{diffusion_group.grouper}}">
+      {% if diffusion_group.grouper == "2023" %}2023 depuis le village des possibles !
+      {% elif diffusion_group.grouper == "2022" %}2022 chaude ambiance !
+      {% elif diffusion_group.grouper == "2021" %}2021 petit Esperanzah en podcasts !
+      {% elif diffusion_group.grouper == "2019" %}2019 c’était super !
+      {% elif diffusion_group.grouper == "2018" %}L'énergie de 2018 !
+      {% elif diffusion_group.grouper == "2017" %}Réécoutez 2017 !
+      {% elif diffusion_group.grouper == "2016" %}Revivez 2016 !
+      {% elif diffusion_group.grouper == "2015" %}Retournez en 2015 !
+      {% elif diffusion_group.grouper == "2014" %}Redécouvrez 2014 !
+      {% elif diffusion_group.grouper == "2013" %}Plongez en 2013 !
+      {% elif diffusion_group.grouper == "2012" %}Rappelez-vous 2012 !
+      {% elif diffusion_group.grouper == "2011" %}Rejouez 2011 !
+      {% elif diffusion_group.grouper == "2010" %}Sautez vers 2010 !
+      {% else %}{{ diffusion_group.grouper }}{% endif %}</h3>
+
+    {% if diffusion_group.grouper == "2021" %}
+      <p>
+        Détour vers le futur, une série de podcasts réalisés au
+        printemps; avant la joie qu’un petit festival ait lieu.
+      </p>
+    {% endif %}
+
+    <div class="archives emission-episodes">
+      {% for diffusion in diffusion_group.list|dictsort:"datetime" %}
+        <a href="{% url 'episode-view' emission_slug=diffusion.episode.emission.slug slug=diffusion.episode.slug %}">
+          <div class="image  {% cycle 'style1' 'style2' 'style3' %}">
+            <div class="img">
+              {% thumbnail diffusion.episode.image "400x400" crop="50% 50%" as im %}
+                <img alt="" loading="lazy" src="{{im.url}}">
+              {% empty %}
+                <img alt="" class="empty" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8nez3HwAGugKtHMIYIwAAAABJRU5ErkJggg==" height="200" width="200">
+              {% endthumbnail %}
+            </div>
+          </div>
+          <div class="name"><span>{% if diffusion.episode.emission.slug == "detour-vers-le-futur" %}Détour vers le futur - {% endif %}{{ diffusion.episode.title }}</span></div>
+        </a>
+      {% endfor %}
+    </div>
+    {% if diffusion_group.grouper == "2021" %}
+      <h3 class="archives">2020, édition annulée</h3>
+      <p><a href="https://www.esperanzah.be/annulation/">Un été sans festival comme un vide abyssal.</a></p>
+    {% endif %}
+  {% endfor %}
+
+  <p class="archives-sorry">
+    Nos archives se terminent ici, les premières années de radio Esperanzah!
+    sont dans nos cœurs… 💕
+  </p>
 
 {% endblock %}
index 5238d204c88d1559e49d9d5e44fc1e087c16c59f..aa29f217b9fcdbeb61e45294ab8fce5cbd957cde 100644 (file)
@@ -1,93 +1,96 @@
-{% load gadjo paniktags staticfiles %}<!DOCTYPE html>
+{% load gadjo paniktags static %}<!DOCTYPE html>
 <html lang="fr-fr">
-<head>
+  <head>
     <meta charset="UTF-8" />
-    <title>{{ radio_name }} - {% block title %}{% endblock %}</title>
+    <title>{% block htmltitle %}{% block title %}{% endblock %} - {{ radio_name }}{% endblock %}</title>
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <link rel="icon" href="{{ STATIC_URL }}img/favicon-2022.png" type="image/png">
-    <link rel="apple-touch-icon" href="{{ STATIC_URL}}img/favicon-300x300-2022.png">
+    <link rel="icon" href="/static/img/favicon-2023.png" type="image/png">
+    <link rel="apple-touch-icon" href="/static/img/favicon-2023.png">
     <link rel="canonical" href="{{ request.build_absolute_uri }}" />
 
     <meta name="og:site_name" content="{{ radio_name }}"/>
     <meta name="twitter:site" content="@radioesperanzah" />
 
     {% block head %}
-    <meta property="og:title" content="{{ radio_long_name }}" />
-    <meta property="og:image" content="{{ site_url }}{% static 'img/favicon-300x300-2022.png' %}" />
+      <meta property="og:title" content="{{ radio_long_name }}" />
+      <meta property="og:image" content="{{ site_url }}{% static 'img/favicon-2023.png' %}" />
 
-    <meta name="twitter:card" content="summary" />
-    <meta name="twitter:title" content="{{ radio_long_name }}" />
-    <meta name="twitter:description" content="La radio du festival Esperanzah!, 28 - 29 - 30 &amp; 31 juillet 2022 à Floreffe" />
-    <meta name="twitter:image" content="{{ site_url }}{% static 'img/favicon-300x300-2022-solid.png' %}" />
+      <meta name="twitter:card" content="summary" />
+      <meta name="twitter:title" content="{{ radio_long_name }}" />
+      <meta name="twitter:description" content="La radio du festival Esperanzah!, 27 - 30 juillet 2023 à Floreffe" />
+      <meta name="twitter:image" content="{{ site_url }}{% static 'img/favicon-2023-solid.png' %}" />
     {% endblock %}
 
-{% block podcasts-feed %}
-<link rel="alternate" type="application/rss+xml"  href="{% url 'podcasts-feed' %}" title="{{ radio_name }} Podcasts">
-{% endblock %}
+    {% block podcasts-feed %}
+      <link rel="alternate" type="application/rss+xml"  href="{% url 'podcasts-feed' %}" title="{{ radio_name }} Podcasts">
+    {% endblock %}
 
-    <link rel="stylesheet" href="{{ STATIC_URL }}css/style.css?{% start_timestamp %}" type="text/css" />
+    <link rel="stylesheet" href="/static/css/style.css?{% start_timestamp %}" type="text/css" />
 
     <script src="{% xstatic 'jquery' 'jquery.min.js' %}"></script>
     <script src="{% xstatic 'jquery-ui' 'jquery-ui.min.js' %}"></script>
-    <script type="text/javascript" src="{{ STATIC_URL }}js/audioPlayer.js?{% start_timestamp %}"></script>
-    <script type="text/javascript" src="{{ STATIC_URL }}js/specifics.js?{% start_timestamp %}"></script>
+    <script type="text/javascript" src="/static/js/audioPlayer.js?{% start_timestamp %}"></script>
+    <script type="text/javascript" src="/static/js/specifics.js?{% start_timestamp %}"></script>
 
     {% block extrascripts %}{% endblock %}
-</head>
+  </head>
 
-<body {% block bodyattr %}id="{{sectionName}}" class="section-{{sectionName}}"{% endblock %}>
-       <div id="All">
-               <div id="Commons" >
-            <div class="sided" >
-                <div id="backgroundBox">
-                        <div id="header_date">28 - 29 - 30 &amp; 31 juillet 2022<br>Abbaye de Floreffe</div>
-                               <a href="{% url 'home' %}" id="mainHeader"><div>
-                                       <h1 class="top" id="radiopanik">{{ radio_long_name }}</h1>
-                               </div></a>
-                               <div id="Player" class="withoutPlaylist">
-                                       {% block listen %}{% player %}{% endblock %}
-                               </div>
-                       </div>
-                   </div>
-                   <a target="_blank" id="www-esperanzah" href="https://www.esperanzah.be">←<br>site</a>
-                   <a target="_blank" id="facebook" href="https://www.facebook.com/RadioEsperanzah"></a>
-                   <a target="_blank" id="twitter" href="https://twitter.com/radioesperanzah"></a>
-               </div>
-               <div id="Changing" data-section="{{ sectionName }}">
-                       {% block toptitle %}{% endblock %}
-                       <div id="Nav">
-                               {% block nav %}{% endblock %}
-                       </div>
-                       <div id="Main">
-                               {% block main %}{% endblock %}
-                       </div>
-                       <div id="Related">
-                               {% block related %}{% endblock %}
-                       </div>
-               <div id="Footer">
-                       <p>
-                       Radio Esperanzah!, avec les énergies de
-                       <a href="http://www.48fm.be">48FM</a>,
-                       <a href="http://www.radiocampus.be">Radio Campus</a>,
-                       <a href="http://www.radiopanik.org">Radio Panik</a>,
-                       <a href="https://www.rqc.be/">RQC</a>,
-                       <a href="http://www.run.be">RUN</a>,
-                       <a href="http://youfm.be/">YouFM</a>,
-                       du <a href="http://www.esperanzah.be">festival</a>
-                       et des festivalier·es.
-                       </p>
-                       <p><a href="{% url 'podcasts-feed' %}">🎧 S'abonner aux podcasts 🎧</a></p>
-                       <p>
-                       <a href="{% url 'espe-archives' %}">Archives des éditions précédentes</a>
-                       </p>
-                       <p>
-                       <a href="mailto:radio@esperanzah.be">Contact</a>
-                       </p>
-               </div>
-               </div>
-               <div id="userLog"></div>
-       </div>
-{% piwik %}
+  <body {% block bodyattr %}id="{{sectionName}}" class="section-{{sectionName}}"{% endblock %}>
+    <div id="All">
+      <div id="Commons" >
+        <div class="sided" >
+          <div id="backgroundBox">
+            <div id="header_date">27.07.23 — 30.07.23<br>Abbaye de Floreffe</div>
+            <a href="{% url 'home' %}" id="mainHeader"><div>
+              <h2>Radio</h2>
+              <h1 class="top" id="radiologo">{{ radio_long_name }}</h1>
+            </div></a>
+            <div id="Player" class="withoutPlaylist">
+              {% block listen %}{% player %}{% endblock %}
+            </div>
+          </div>
+        </div>
+        <a target="_blank" id="www-esperanzah" href="https://www.esperanzah.be">←<br>site</a>
+        <a target="_blank" id="facebook" href="https://www.facebook.com/RadioEsperanzah"></a>
+        <a target="_blank" id="instagram" href="https://www.instagram.com/radio.esperanzah/"></a>
+      </div>
+      <div id="Changing" data-section="{{ sectionName }}">
+        {% block toptitle %}{% endblock %}
+        <div id="Nav">
+          {% block nav %}{% endblock %}
+        </div>
+        <div id="Main">
+          {% block main %}{% endblock %}
+        </div>
+        <div id="Related">
+          {% block related %}{% endblock %}
+        </div>
+        <div id="Footer">
+          <p>
+            Radio Esperanzah!, avec les énergies de
+            <a href="https://www.48fm.com/emission-kult/">Kult</a>,
+            <a href="https://www.radiopanik.org">Radio Panik</a>,
+            <a href="https://radiovacarme.com/">Radio Vacarme</a>,
+            <a href="http://www.run.be">RUN</a>,
+            <a href="https://www.48fm.be">48FM</a>,
+            <a href="https://www.radiocampus.be">Radio Campus</a>,
+            <a href="https://www.rqc.be/">RQC</a>,
+            <a href="https://youfm.be/">YouFM</a>,
+            du <a href="https://www.esperanzah.be">festival</a>
+            et des festivalier·es.
+          </p>
+          <p><a href="{% url 'podcasts-feed' %}">🎧 S'abonner aux podcasts 🎧</a></p>
+          <p>
+            <a href="{% url 'espe-archives' %}">Archives des éditions précédentes</a>
+          </p>
+          <p>
+            <a href="mailto:radio@esperanzah.be">Contact</a>
+          </p>
+        </div>
+      </div>
+      <div id="userLog"></div>
+    </div>
+    {% piwik %}
 
-</body>
+  </body>
 </html>
index 886a49075a96015859a168518bfcf8e8bb8dda3f..581cc7f0f6cc9527e829707d39db3dbb771a0c00 100644 (file)
@@ -1,18 +1,18 @@
 {% load thumbnail %}
 <div class="topikcellcontent topik-{{cell.link_page.slug}}">
-<a class="block cf" href="{{url}}">
-<span class="logo">
-{% thumbnail cell.link_page.picture "480x320" crop="50% 25%" as im %}
-<div class="logo">
-<img class="normal" src="{{im.url}}"/>
-</div>
-{% endthumbnail %}
-</span>
-<div>
-  <h5>{{title}}</h5>
-  <div class="description">
-    {{cell.link_page.description|safe|striptags|truncatewords:75}}
-  </div>
-</div>
-</a>
+  <a class="block cf" href="{{url}}">
+    <span class="logo">
+      {% thumbnail cell.link_page.picture "480x320" crop="50% 25%" as im %}
+        <div class="logo">
+          <img alt="" class="normal" src="{{im.url}}"/>
+        </div>
+      {% endthumbnail %}
+    </span>
+    <div>
+      <h5>{{title}}</h5>
+      <div class="description">
+        {{cell.link_page.description|safe|striptags|truncatewords:75}}
+      </div>
+    </div>
+  </a>
 </div>
index 346e90985751ff1511d174116ca89e16e4b7a63e..f11aa5cc586393aae3d4af6e83b0b25b18be3e3c 100644 (file)
@@ -1,22 +1,22 @@
 {% load thumbnail %}
 {% if cell.title %}<h3>{{ cell.title }}</h3>{% endif %}
 <div class="gallery" id="gallery-{{cell.id}}">
-{% for image in cell.image_set.all %}
-  {% if forloop.first %}
-<div class="first" style="display: none;">
-<img src="#"/>
-<span class="gallery-legend"></span>
-</div>
-<div>
-  {% endif %}
-{% thumbnail image.image "400x400" crop="50% 50%" as im %}
-{% thumbnail image.image "1000x600" crop="50% 25%" as im_large %}
-<span class="image" data-image-large="{{ im_large.url }}"><img src="{{ im.url }}"
-  {% if image.title %}title="{{image.title}}"{% endif %}>
-  {% if image.title %}<span class="title">{{image.title}}</span>{% endif %}</span>
-</span>
-{% endthumbnail %}
-{% endthumbnail %}
-{% endfor %}
+  {% for image in cell.image_set.all %}
+    {% if forloop.first %}
+      <div class="first" style="display: none;">
+        <img src="#"/>
+        <span class="gallery-legend"></span>
+      </div>
+      <div>
+    {% endif %}
+    {% thumbnail image.image "400x400" crop="50% 50%" as im %}
+      {% thumbnail image.image "1000x600" crop="50% 25%" as im_large %}
+        <span class="image" data-image-large="{{ im_large.url }}"><img src="{{ im.url }}"
+                                                                       {% if image.title %}title="{{image.title}}"{% endif %}>
+          {% if image.title %}<span class="title">{{image.title}}</span>{% endif %}</span>
+        </span>
+      {% endthumbnail %}
+    {% endthumbnail %}
+  {% endfor %}
 </div>
 </div>
diff --git a/panikweb_esperanzah/templates/combo/page_template.html b/panikweb_esperanzah/templates/combo/page_template.html
new file mode 100644 (file)
index 0000000..4d3b016
--- /dev/null
@@ -0,0 +1,14 @@
+{% extends "base.html" %}
+{% load combo %}
+
+{% block title %}{{ page.title }}{% endblock %}
+
+{% block toptitle %}
+{% endblock %}
+
+{% block main %}
+  <h2 class="top">{{ page.title }}</h2>
+  <div class="content-width">
+    {% placeholder "content" %}
+  </div>
+{% endblock %}
index 343f1ab37f24b59b39f7f1408a9b7f9c6d49972d..662dae075f9ed26791aadea1146a71cda57a1c97 100644 (file)
@@ -7,6 +7,6 @@
 {% endblock %}
 
 {% block main %}
-<h2 class="top">{{ page.title }}</h2>
-{% placeholder "content" %}
+  <h2 class="top">{{ page.title }}</h2>
+  {% placeholder "content" %}
 {% endblock %}
index 03ceb9821bdd43ea391455e85459735d7e82e2ff..b321904fb23476ec633b8cc735aae05796a4f92c 100644 (file)
@@ -4,7 +4,7 @@
 {% block title %}{{ page.title }}{% endblock %}
 
 {% block toptitle %}
-<h1 class="top bg-title"><a href="{{ page.get_parents_and_self.0.get_online_url }}">{{ page.get_parents_and_self.0.title }}</a></h1>
+  <h1 class="top bg-title"><a href="{{ page.get_parents_and_self.0.get_online_url }}">{{ page.get_parents_and_self.0.title }}</a></h1>
 {% endblock %}
 
 {% block nav %}
 
 {% block main %}
 
-<div class="wrapper navigation" id="main-{{page.get_parents_and_self.0.slug}}" >
-       <div id="fiber-content" class="leftPart">
-               {% if page.get_parents_and_self.0.title != page.title %}
-               <h1>{{ page.title }}</h1>
-               {% endif %}
-               <div class="text">{% placeholder "content" %}</div>
-       </div>
-       <div class="sub rightPart custom marged">
-               {% placeholder "sidebar" %}
-               <ul class="custom list">
-               {% for page in page.get_parents_and_self.0.get_children %}
-                 {% if page.public and not page.exclude_from_navigation %}
-                   {% if page.has_children and page.slug != "35-ans" %}
-                     {% for subpage in page.get_children %}
-                       {% include "combo/topik_menu_item.html" with page=subpage category=page.title only %}
-                     {% endfor %}
-                   {% else %}
-                     {% include "combo/topik_menu_item.html" with page=page category="Topik" only %}
-                   {% endif %}
-                 {% endif %}
-               {% endfor %}
-               </ul>
-       </div>
-</div>
+  <div class="wrapper navigation" id="main-{{page.get_parents_and_self.0.slug}}" >
+    <div id="fiber-content" class="leftPart">
+      {% if page.get_parents_and_self.0.title != page.title %}
+        <h1>{{ page.title }}</h1>
+      {% endif %}
+      <div class="text">{% placeholder "content" %}</div>
+    </div>
+    <div class="sub rightPart custom marged">
+      {% placeholder "sidebar" %}
+      <ul class="custom list">
+        {% for page in page.get_parents_and_self.0.get_children %}
+          {% if page.public and not page.exclude_from_navigation %}
+            {% if page.has_children and page.slug != "35-ans" %}
+              {% for subpage in page.get_children %}
+                {% include "combo/topik_menu_item.html" with page=subpage category=page.title only %}
+              {% endfor %}
+            {% else %}
+              {% include "combo/topik_menu_item.html" with page=page category="Topik" only %}
+            {% endif %}
+          {% endif %}
+        {% endfor %}
+      </ul>
+    </div>
+  </div>
 
 {% endblock %}
index 9519bd15f60c57645e4b89a9fa317d31b35a6aba..bd4cf67dd2c189a65a1a89a0e350c58d604262cf 100644 (file)
@@ -2,29 +2,29 @@
 <li class="item">
   <div class="topik inline cf">
     <a class="block cf topik-link" href="{{page.get_online_url}}">
-    <div class="logo">
-      {% with page|image_file as logo %}
-        {% if logo %}
-          {% thumbnail logo "60x60" crop="50% 25%" as im %}
-          <img width="60" height="60" src="{{im.url}}"/>
-          {% endthumbnail %}
-        {% elif page.picture %}
-          {% thumbnail page.picture "60x60" crop="50% 25%" as im %}
-          <img width="60" height="60" src="{{im.url}}"/>
-          {% endthumbnail %}
-        {% else %}
-          <img src="/static/img/sound.png" width="60" height="60">
-        {% endif %}
-      {% endwith %}
-    </div>
-    <div class="content">
-      <div class="title">
-        <h5 class="title">{{page.title}}</h5>
+      <div class="logo">
+        {% with page|image_file as logo %}
+          {% if logo %}
+            {% thumbnail logo "60x60" crop="50% 25%" as im %}
+              <img width="60" height="60" src="{{im.url}}"/>
+            {% endthumbnail %}
+          {% elif page.picture %}
+            {% thumbnail page.picture "60x60" crop="50% 25%" as im %}
+              <img width="60" height="60" src="{{im.url}}"/>
+            {% endthumbnail %}
+          {% else %}
+            <img src="/static/img/sound.png" width="60" height="60">
+          {% endif %}
+        {% endwith %}
       </div>
-      <div class="smooth metas">
-        <span class="categories">{{category}}</span>
+      <div class="content">
+        <div class="title">
+          <h5 class="title">{{page.title}}</h5>
+        </div>
+        <div class="smooth metas">
+          <span class="categories">{{category}}</span>
+        </div>
       </div>
-    </div>
     </a>
   </div>
 </li>
index 21e9d09a90dc6d084d37e51c6d0077e5fad9a7b9..e78075126abbc4c6abbf12190e1baac879539efb 100644 (file)
@@ -3,22 +3,22 @@
 {% block bodyID %}Emissions{% endblock %}
 {% block title %}Émissions{% endblock %}
 {% block toptitle %}
-<h1 class="top"><a href="{% url 'grid' %}">{% trans 'Program' %}</a></h1>
+  <h1 class="top"><a href="{% url 'grid' %}">{% trans 'Program' %}</a></h1>
 {% endblock %}
 {% block nav %}
-       {% emission_nav with klass="emissions" %}
-       <span class="bg-title" style="display: none"><a>{% trans 'Emissions' %}</a></span>
+  {% emission_nav with klass="emissions" %}
+  <span class="bg-title" style="display: none"><a>{% trans 'Emissions' %}</a></span>
 {% endblock %}
 {% block main %}
-<div class="emissions">
+  <div class="emissions">
 
-       <div class="wrapper">
-               <ul class="custom list columns padded">
-               {% for emission in emissions %}
-                       <li class="item {% for category in emission.categories.all %} {{ category|slugify }}{% endfor %}{% if emission.archived %} archived{% endif %}"
-                       >{% emission_resume %}</li>
-               {% endfor %}
-               </ul>
-       </div>
-</div>
+    <div class="wrapper">
+      <ul class="custom list columns padded">
+        {% for emission in emissions %}
+          <li class="item {% for category in emission.categories.all %} {{ category|slugify }}{% endfor %}{% if emission.archived %} archived{% endif %}"
+          >{% emission_resume %}</li>
+        {% endfor %}
+      </ul>
+    </div>
+  </div>
 {% endblock %}
index 259eaf70fc60b775233d0dce0f5be15eb956704f..f836627abcde8bdd586379f8ef504f648b5f4a40 100644 (file)
 {% extends "base.html" %}
-{% load paniktags staticfiles i18n thumbnail %}
+{% load paniktags static i18n thumbnail %}
 {% block bodyID %}Emissions{% endblock %}
 {% block title %}{{ emission.title }}{% endblock %}
 
 {% block head %}
-<meta property="og:title" content="{{ emission.title }}" />
-<meta name="twitter:title" content="{{ emission.title }}" />
-{% if emission.image %}
-<meta name="twitter:card" content="summary_large_image">
-<meta property="og:image" content="{{ site_url }}{{ emission.image.url }}" />
-<meta name="twitter:image" content="{{ site_url }}{{ emission.image.url }}" />
-{% else %}
-<meta name="twitter:card" content="summary">
-<meta property="og:image" content="{{ site_url }}{% static 'img/favicon-300x300-2020-solid.png' %}" />
-<meta name="twitter:image" content="{{ site_url }}{% static 'img/favicon-300x300-2020-solid.png' %}" />
-{% endif %}
-{% if emission.subtitle %}
-<meta property="og:description" content="{{ emission.subtitle }}" />
-<meta name="twitter:description" content="{{ emission.subtitle }}" />
-{% else %}
-<meta property="og:description" content="{{ emission.text|safe|striptags|truncatewords:75 }}"/>
-<meta name="twitter:description" content="{{ emission.text|safe|striptags|truncatewords:75 }}"/>
-{% endif %}
+  <meta property="og:title" content="{{ emission.title }}" />
+  <meta name="twitter:title" content="{{ emission.title }}" />
+  {% if emission.image %}
+    <meta name="twitter:card" content="summary_large_image">
+    <meta property="og:image" content="{{ site_url }}{{ emission.image.url }}" />
+    <meta name="twitter:image" content="{{ site_url }}{{ emission.image.url }}" />
+  {% else %}
+    <meta name="twitter:card" content="summary">
+    <meta property="og:image" content="{{ site_url }}{% static 'img/favicon-300x300-2020-solid.png' %}" />
+    <meta name="twitter:image" content="{{ site_url }}{% static 'img/favicon-300x300-2020-solid.png' %}" />
+  {% endif %}
+  {% if emission.subtitle %}
+    <meta property="og:description" content="{{ emission.subtitle }}" />
+    <meta name="twitter:description" content="{{ emission.subtitle }}" />
+  {% else %}
+    <meta property="og:description" content="{{ emission.text|safe|striptags|truncatewords:75 }}"/>
+    <meta name="twitter:description" content="{{ emission.text|safe|striptags|truncatewords:75 }}"/>
+  {% endif %}
 {% endblock %}
 
 {% block podcasts-feed %}
-<link rel="alternate" type="application/rss+xml" href="{% url 'emission-podcasts' slug=emission.slug %}" title="{{ emission.title }} Podcasts">
+  <link rel="alternate" type="application/rss+xml" href="{% url 'emission-podcasts' slug=emission.slug %}" title="{{ emission.title }} Podcasts">
 {% endblock %}
 
 {% block toptitle %}
 {% endblock %}
 
 {% block main %}
-<div class="emission emission-detail">
-        <div class="name"><h2>{{emission.title}}</h2></div>
-               {% if schedules %}
-                       <ul class="schedule custom">
-                               {% for schedule in schedules %}
-                               <li>
-                                       <span class="label">{{ schedule.datetime|date:"l G:i" }}</span>
-                                       {% if schedule.weeks_string %}
-                                       <span class="weekdiff">({{ schedule.weeks_string }})</span>
-                                       {% endif %}
-                                       {% if schedule.rerun %} <span class="smooth">(rediff)</span> {% endif %}
-                                       {% if emission.archived %} ({{ emission.creation_timestamp|date:"Y" }}){% endif %}
-                               </li>
-                               {% endfor %}
-                       </ul>
-               {% endif %}
-       <div class="emission-info">
-                <div class="image">
-                        <div class="img">
-                       {% thumbnail emission.image "450x450" crop="50% 50%" as im %}
-                        <img src="{{im.url}}">
-                        {% empty %}
-                        <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8nez3HwAGugKtHMIYIwAAAABJRU5ErkJggg==" height="450" width="450">
-                       {% endthumbnail %}
-                        </div>
-               </div>
+  <div class="emission emission-detail">
+    <a id="back-home" href="/"><span>Accueil</span></a>
+    <div class="name"><h2>{{emission.title}}</h2></div>
+    {% if schedules %}
+      <ul class="schedule custom">
+        {% for schedule in schedules %}
+          <li>
+            <span class="label">{{ schedule.datetime|date:"l G:i" }}</span>
+            {% if schedule.weeks_string %}
+              <span class="weekdiff">({{ schedule.weeks_string }})</span>
+            {% endif %}
+            {% if schedule.rerun %} <span class="smooth">(rediff)</span> {% endif %}
+            {% if emission.archived %} ({{ emission.creation_timestamp|date:"Y" }}){% endif %}
+          </li>
+        {% endfor %}
+      </ul>
+    {% endif %}
+    <div class="emission-info episode-info">
+      <div class="image">
+        <div class="img">
+          {% thumbnail emission.image "450x450" crop="50% 50%" as im %}
+            <img alt="" src="{{im.url}}">
+          {% empty %}
+            <img alt="" class="empty" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8nez3HwAGugKtHMIYIwAAAABJRU5ErkJggg==" height="450" width="450">
+          {% endthumbnail %}
+        </div>
+      </div>
 
-               <div class="emission-text">
-                 <div>{{ emission.text|safe}}</div>
-                  {% if emission.slug == 'detour-vers-le-futur' %}
-                  <div id="subscribe-links">
-                    <ul>
-                      <li><a href="{{site_url}}{% url 'emission-podcasts' slug=emission.slug %}" class="rss">RSS</a></li>
-                      <li><a href="https://open.spotify.com/show/0AdCIyg24wKklByW4abBKg">Spotify</a></li>
-                      <li><a href="https://www.deezer.com/fr/show/2835952">Deezer</a></li>
-                      <li><a href="https://pca.st/eht3df8c">Pocket Casts</a></li>
-                      <li><a href="{{site_url|as_itpc}}{% url 'emission-podcasts' slug=emission.slug %}" class="itunes">iTunes</a></li>
-                    </ul>
-                  </div>
-                  {% endif %}
-                </div>
-       </div>
-       <div class="emission-episodes">
-               {% for episode in all_episodes %}
-               <a href="{% url 'episode-view' emission_slug=episode.emission.slug slug=episode.slug %}">
-                       <div class="image">
-                                <div class="img">
-                               {% thumbnail episode.image "240x240" crop="50% 50%" as im %}
-                               <img loading="lazy" src="{{im.url}}">
-                                {% empty %}
-                                <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8nez3HwAGugKtHMIYIwAAAABJRU5ErkJggg==" height="240" width="240">
-                               {% endthumbnail %}
-                                </div>
-                       </div>
-                       <div class="name"><span>{{ episode.title }}</span></div>
-                       <div class="time"><span>
-                                       {{ episode.first_diffusion|date:"l" }}
-                                       {{ episode.first_diffusion|date:"d/m" }}</span></div>
-               </a>
-               {% endfor %}
-       </div>
+      <div class="emission-text">
+        <div>{{ emission.text|safe}}</div>
+        {% if emission.slug == 'detour-vers-le-futur' %}
+          <div id="subscribe-links">
+            <ul>
+              <li><a href="{{site_url}}{% url 'emission-podcasts' slug=emission.slug %}" class="rss">RSS</a></li>
+              <li><a href="https://open.spotify.com/show/0AdCIyg24wKklByW4abBKg">Spotify</a></li>
+              <li><a href="https://www.deezer.com/fr/show/2835952">Deezer</a></li>
+              <li><a href="https://pca.st/eht3df8c">Pocket Casts</a></li>
+              <li><a href="{{site_url|as_itpc}}{% url 'emission-podcasts' slug=emission.slug %}" class="itunes">iTunes</a></li>
+            </ul>
+          </div>
+        {% endif %}
 
-</div>
+        {% for episode in all_episodes %}
+          {% if episode.slug|slice:":9" == "integrale" and episode.main_sound %}
+            <div class="sound">
+              {% audio sound=episode.main_sound %}
+            </div>
+          {% endif %}
+        {% endfor %}
+      </div>
 
-{% if emission.slug == 'detour-vers-le-futur' %}
-{% include "includes/detour-vers-le-footer.html" %}
-{% endif %}
+    </div>
+    <div class="emission-episodes">
+      {% for episode in all_episodes %}
+        {% if episode.slug|slice:":9" != "integrale" %}
+          <a href="{% url 'episode-view' emission_slug=episode.emission.slug slug=episode.slug %}">
+            <div class="image  {% cycle 'style1' 'style2' 'style3' %}">
+              <div class="img">
+                {% thumbnail episode.image "240x240" crop="50% 50%" as im %}
+                  <img alt="" loading="lazy" src="{{im.url}}">
+                {% empty %}
+                  <img alt="" class="empty" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8nez3HwAGugKtHMIYIwAAAABJRU5ErkJggg==" height="240" width="240">
+                {% endthumbnail %}
+              </div>
+            </div>
+            <div class="name"><span>{{ episode.title }}</span></div>
+            <div class="time"><span>
+              {{ episode.first_diffusion|date:"l" }}
+              {{ episode.first_diffusion|date:"d/m" }}</span></div>
+          </a>
+        {% endif %}
+      {% endfor %}
+    </div>
+
+  </div>
+
+  {% if emission.slug == 'detour-vers-le-futur' %}
+    {% include "includes/detour-vers-le-footer.html" %}
+  {% endif %}
 
 {% endblock %}
index 31c2146d4ec5f561eb501e6c5bde329d866eb7a4..1960a4831c437ebccab0f5656a0c44aa972c2de5 100644 (file)
@@ -1,92 +1,92 @@
 {% extends "base.html" %}
-{% load paniktags staticfiles soundfiles thumbnail %}
+{% load paniktags static soundfiles thumbnail %}
 {% block title %}{{ episode.title }} - {{ episode.emission.title }} {% endblock %}
 
 {% block head %}
-<meta property="og:title" content="{{ episode.emission.title }} - {{ episode.title }}" />
-<meta name="twitter:title" content="{{ episode.emission.title }} - {{ episode.title }}" />
-{% if episode.image %}
-<meta name="twitter:card" content="summary_large_image">
-<meta property="og:image" content="{{ site_url }}{{ episode.image.url }}" />
-<meta name="twitter:image" content="{{ site_url }}{{ episode.image.url }}" />
-{% elif episode.emission.image %}
-<meta name="twitter:card" content="summary_large_image">
-<meta property="og:image" content="{{ site_url }}{{ episode.emission.image.url }}" />
-<meta name="twitter:image" content="{{ site_url }}{{ episode.emission.image.url }}" />
-{% else %}
-<meta name="twitter:card" content="summary">
-<meta property="og:image" content="{{ site_url }}{% static 'img/favicon-300x300-2020-solid.png' %}" />
-<meta name="twitter:image" content="{{ site_url }}{% static 'img/favicon-300x300-2020-solid.png' %}" />
-{% endif %}
-{% if episode.subtitle %}
-<meta property="og:description" content="{{ episode.subtitle }}" />
-<meta name="twitter:description" content="{{ episode.subtitle }}" />
-{% else %}
-<meta property="og:description" content="{{ episode.text|safe|striptags|truncatewords:75 }}"/>
-<meta name="twitter:description" content="{{ episode.text|safe|striptags|truncatewords:75 }}"/>
-{% endif %}
-{% if episode.main_sound %}
-  {% if episode.main_sound|is_format_available:'ogg' %}
-    <meta property="og:audio" content="{{ site_url }}{{ episode.main_sound|format_url:'ogg' }}"/>
-    <meta property="og:audio:type" content="audio/ogg"/>
-  {% elif episode.main_sound|is_format_available:'mp3' %}
-    <meta property="og:audio" content="{{ site_url }}{{ episode.main_sound|format_url:'mp3' }}"/>
-    <meta property="og:audio:type" content="audio/mpeg"/>
+  <meta property="og:title" content="{{ episode.emission.title }} - {{ episode.title }}" />
+  <meta name="twitter:title" content="{{ episode.emission.title }} - {{ episode.title }}" />
+  {% if episode.image %}
+    <meta name="twitter:card" content="summary_large_image">
+    <meta property="og:image" content="{{ site_url }}{{ episode.image.url }}" />
+    <meta name="twitter:image" content="{{ site_url }}{{ episode.image.url }}" />
+  {% elif episode.emission.image %}
+    <meta name="twitter:card" content="summary_large_image">
+    <meta property="og:image" content="{{ site_url }}{{ episode.emission.image.url }}" />
+    <meta name="twitter:image" content="{{ site_url }}{{ episode.emission.image.url }}" />
+  {% else %}
+    <meta name="twitter:card" content="summary">
+    <meta property="og:image" content="{{ site_url }}{% static 'img/favicon-300x300-2020-solid.png' %}" />
+    <meta name="twitter:image" content="{{ site_url }}{% static 'img/favicon-300x300-2020-solid.png' %}" />
+  {% endif %}
+  {% if episode.subtitle %}
+    <meta property="og:description" content="{{ episode.subtitle }}" />
+    <meta name="twitter:description" content="{{ episode.subtitle }}" />
+  {% else %}
+    <meta property="og:description" content="{{ episode.text|safe|striptags|truncatewords:75 }}"/>
+    <meta name="twitter:description" content="{{ episode.text|safe|striptags|truncatewords:75 }}"/>
+  {% endif %}
+  {% if episode.main_sound %}
+    {% if episode.main_sound|is_format_available:'ogg' %}
+      <meta property="og:audio" content="{{ site_url }}{{ episode.main_sound|format_url:'ogg' }}"/>
+      <meta property="og:audio:type" content="audio/ogg"/>
+    {% elif episode.main_sound|is_format_available:'mp3' %}
+      <meta property="og:audio" content="{{ site_url }}{{ episode.main_sound|format_url:'mp3' }}"/>
+      <meta property="og:audio:type" content="audio/mpeg"/>
+    {% endif %}
   {% endif %}
-{% endif %}
 {% endblock %}
 
 {% block main %}
-<div class="emission emission-detail emission-episode">
-        <a id="back-home" href="{% url 'emission-view' slug=episode.emission.slug %}">{{episode.emission.title}}</a>
-        <div class="name"><h2>{{episode.title}}</h2></div>
-        {% if diffusions %}
-               <ul class="schedule custom">
-                       {% for schedule in diffusions %}
-                               <li><span>{{ schedule.datetime|date:"l d F Y à H:i" }}</span></li>
-                       {% endfor %}
-               </ul>
-        {% endif %}
+  <div class="emission emission-detail emission-episode">
+    <a id="back-home" href="{% url 'emission-view' slug=episode.emission.slug %}"><span>{{episode.emission.title}}</span></a>
+    <div class="name"><h2>{{episode.title}}</h2></div>
+    {% if diffusions %}
+      <ul class="schedule custom">
+        {% for schedule in diffusions %}
+          <li><span>{{ schedule.datetime|date:"l d F Y à H:i" }}</span></li>
+        {% endfor %}
+      </ul>
+    {% endif %}
 
 
-       <div class="episode-info">
-               <div class="image">
-                        <div class="img">
-                       {% thumbnail episode.image "450x450" crop="50% 50%" as im %}
-                        <img src="{{im.url}}">
-                        {% empty %}
-                        <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8nez3HwAGugKtHMIYIwAAAABJRU5ErkJggg==" height="450" width="450">
-                       {% endthumbnail %}
-                        </div>
-               </div>
-                {% with parts=episode.text|safe|hr_split %}
-                <div class="emission-text episode-text">
-                <div class="text-part">
-               {% if episode.subtitle %}
-               <h3 class="episode-subtitle">{{ episode.subtitle }}</h3>
-               {% endif %}
-               {{ parts|first|safe}}
-                </div>
+    <div class="episode-info">
+      <div class="image">
+        <div class="img">
+          {% thumbnail episode.image "450x450" crop="50% 50%" as im %}
+            <img alt="" src="{{im.url}}">
+          {% empty %}
+            <img alt="" class="empty" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8nez3HwAGugKtHMIYIwAAAABJRU5ErkJggg==" height="450" width="450">
+          {% endthumbnail %}
+        </div>
+      </div>
+      {% with parts=episode.text|safe|hr_split %}
+        <div class="emission-text episode-text">
+          <div class="text-part">
+            {% if episode.subtitle %}
+              <h3 class="episode-subtitle">{{ episode.subtitle }}</h3>
+            {% endif %}
+            {{ parts|first|safe}}
+          </div>
 
-                {% if episode.main_sound %}
-                        <div class="sound">
-                                {% audio sound=episode.main_sound %}
-                        </div>
-                {% endif %}
-                </div>
+          {% if episode.main_sound %}
+            <div class="sound">
+              {% audio sound=episode.main_sound %}
+            </div>
+          {% endif %}
+        </div>
 
-                {% if parts|length > 1 %}
-                <div class="more-text">
-                  {{ parts|last|safe }}
-                </div>
-                {% endif %}
-                {% endwith %}
-       </div>
+        {% if parts|length > 1 %}
+          <div class="more-text">
+            {{ parts|last|safe }}
+          </div>
+        {% endif %}
+      {% endwith %}
+    </div>
 
-</div>
+  </div>
 
-{% if episode.emission.slug == 'detour-vers-le-futur' %}
-{% include "includes/detour-vers-le-footer.html" %}
-{% endif %}
+  {% if episode.emission.slug == 'detour-vers-le-futur' %}
+    {% include "includes/detour-vers-le-footer.html" %}
+  {% endif %}
 
 {% endblock %}
index 5bcae80dfad86969461e8a3e49b6465cea7973e3..20c693ab41d0f8c5f07578dc1127fa647f6d0f00 100644 (file)
@@ -1,49 +1,49 @@
 {% extends "emissions/emission_detail.html" %}
 {% load paniktags %}
 {% block nav %}
-       {% emission_nav klass "episodes" %}
+  {% emission_nav klass "episodes" %}
 {% endblock %}
 
 {% block main %}
-<div class="wrapper {% if episodes %}sided{% endif %}">
+  <div class="wrapper {% if episodes %}sided{% endif %}">
 
-       {% if search_query and not episodes %}
-                       <div class="big error padded center">Manque de pot, pas de résultats à cette recherche !</div>
-       {% endif %}
+    {% if search_query and not episodes %}
+      <div class="big error padded center">Manque de pot, pas de résultats à cette recherche !</div>
+    {% endif %}
 
-       {% if search_query and episodes or episodes.count <= 24 %}
-               <ul class="custom columns list">
-               {% for episode in episodes %}
-                       <li class="item {% for category in episode.emission.categories.all %} {{ category|slugify }}{% endfor %}">
-                               {% episode_resume model="inline"%}                      
-                       </li>
-               {% endfor %}
-               </ul>
-       {% else %}
-       <div id="Emission-container" class="emission padded">
-               {% if episodes %}
-                       {% with episodes as episodes %}
-                               {% regroup episodes by first_diffusion|date:"F Y"|capfirst as month_list %}
-                               <div>
-                               {% for month in month_list %}
-                                       <div class="monthGroup {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}">
-                                               <div 
-                                                       class="legend button"                                           
-                                                       onclick="$('#{{ month.grouper|slugify }}').toggle();"
-                                               >&gt; {{ month.grouper }}</div>
-                                               <ul class="custom list" id="{{ month.grouper|slugify }}" 
-                                                       {% if forloop.counter >= 3 %}style="display:none;"{% endif %}
-                                               >
-                                               {% for episode in month.list %}
-                                                       <li>{% episode_resume model="inline" date="daytime" %}</li>
-                                               {% endfor %}
-                                               </ul>
-                                       </div>
-                               {% endfor %}
-                               </div>
-                       {% endwith %}
-               {% endif %}
-       </div>
-       {% endif %}
-</div>
+    {% if search_query and episodes or episodes.count <= 24 %}
+      <ul class="custom columns list">
+        {% for episode in episodes %}
+          <li class="item {% for category in episode.emission.categories.all %} {{ category|slugify }}{% endfor %}">
+            {% episode_resume model="inline"%}
+          </li>
+        {% endfor %}
+      </ul>
+    {% else %}
+      <div id="Emission-container" class="emission padded">
+        {% if episodes %}
+          {% with episodes as episodes %}
+            {% regroup episodes by first_diffusion|date:"F Y"|capfirst as month_list %}
+            <div>
+              {% for month in month_list %}
+                <div class="monthGroup {% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}">
+                  <div
+                    class="legend button"
+                    onclick="$('#{{ month.grouper|slugify }}').toggle();"
+                  >&gt; {{ month.grouper }}</div>
+                  <ul class="custom list" id="{{ month.grouper|slugify }}"
+                      {% if forloop.counter >= 3 %}style="display:none;"{% endif %}
+                  >
+                    {% for episode in month.list %}
+                      <li>{% episode_resume model="inline" date="daytime" %}</li>
+                    {% endfor %}
+                  </ul>
+                </div>
+              {% endfor %}
+            </div>
+          {% endwith %}
+        {% endif %}
+      </div>
+    {% endif %}
+  </div>
 {% endblock %}
diff --git a/panikweb_esperanzah/templates/emissions/newsitem_detail.html b/panikweb_esperanzah/templates/emissions/newsitem_detail.html
deleted file mode 100644 (file)
index a482ef5..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-{% extends "news.html" %}
-{% load i18n staticfiles paniktags %}
-{% block title %}{{ newsitem.title }}{% endblock %}
-
-{% block toptitle %}
-<h1 class="top"><a href="{% url 'news' %}">{% trans 'News' %}</a></h1>
-{% endblock %}
-
-{% block head %}
-<meta property="og:title" content="{{ newsitem.title }}" />
-<meta name="twitter:title" content="{{ newsitem.title }}" />
-<meta property="og:description" content="{{ newsitem.text|safe|striptags|truncatewords:75 }}"/>
-<meta name="twitter:description" content="{{ newsitem.text|safe|striptags|truncatewords:75 }}"/>
-{% if newsitem.image %}
-<meta name="twitter:card" content="summary_large_image">
-<meta property="og:image" content="{{ site_url }}{{ newsitem.image.url }}" />
-<meta name="twitter:image" content="{{ site_url }}{{ newsitem.image.url }}" />
-{% else %}
-<meta name="twitter:card" content="summary">
-<meta property="og:image" content="{{ site_url }}{% static 'img/favicon-300x300-2020-solid.png' %}" />
-<meta name="twitter:image" content="{{ site_url }}{% static 'img/favicon-300x300-2020-solid.png' %}" />
-{% endif %}
-{% endblock %}
-
-
-{% block main %}
-<div class="detail news cf">
-       <div class="wrapper navigation">
-               <div class="leftPart">
-                       <header>
-                               <h2 class="squashed title">
-                                       {{ newsitem.title }}
-                               </h2>
-{% if newsitem.event_date %}
-<div class="date cf label">{{ newsitem.event_date|date:'D d M Y'|lower }}</div>
-{% endif %}
-                               {% if newsitem.date %}
-                                       <div class="date cf label smooth publication-date">Publiée le {{ newsitem.date|date:"D d M Y"|lower }}</div>
-                               {% endif %}
-                       </header>
-                       {% if newsitem.image %}
-                               <img class="logo right button" onclick="$(this).toggleClass('right marged');" src="{{ newsitem.image.url }}"/>
-                       {% endif %}
-                       <div class="userContent description">   
-                               {{ newsitem.text|safe}}
-                       </div>
-
-{% block topik %}
-{% for topik in topiks %}
-  {% topik topik=topik %}
-{% endfor %}
-{% endblock %}
-
-                       {% if newsitem.tags.all %}
-                       <ul class="custom inline tags">
-                               {% for tag in newsitem.tags.all %}
-                               <li><a class="tag" href="{% url 'search' %}?&selected_facets=tags_exact:{{tag|facet_tag}}">{{ tag }}</a></li>
-                               {% endfor %}
-                       </ul>
-                       {% endif %}
-
-               </div>
-               <div class="rightPart">
-                               <div class="sub">
-                       {% if newsitem.emission %}
-                                   <h5 class="sectionLabel">proposé par</h5>
-                                   {% with newsitem.emission as emission %}
-                                           <div class="">{% emission_resume %}</div>
-                                   {% endwith %}
-                       {% endif %}
-                                       <h5 class="sectionLabel right">
-                        <a href="{% url 'newsArchives' %}">
-                                           <span class="iconLabel">Toutes</span>
-                                   </a>
-                    </h5>
-                                       <h5 class="sectionLabel">
-                            <span class="iconLabel">Dernières actus</span>
-                    </h5>
-
-
-       <form action="{% url 'newsArchives' %}" id="search-form">
-               <input id="id_q" name="q" type="text" {% if search_query %}value="{{ search_query }}"{% endif %}>
-                <button class="icon-search"><span class="sr-only">{% trans "Search" %}</span></button>
-       </form>
-
-                                               <ul class="custom list newsList">
-                                               {% for content in news|slice:":10" %}
-                                                       <li class="{% if content == newsitem %}current{% endif %}">{% news_inline %}</li>
-                                               {% endfor %}
-                                               </ul>
-                               </div>
-               </div>
-       </div>
-</div>
-{% endblock %}
-
-{% block related %}
-{% related_objects object=newsitem %}
-{% endblock %}
index 0a1867887796543fa454c5d03ad73f1e4401f8e2..f8f989d4b6d71a9a99e89df832d2a014ff2d8952 100644 (file)
@@ -1,39 +1,39 @@
-{% load thumbnail staticfiles %}
+{% load thumbnail static %}
 <div class="emission emission-resume resume cf">
-       <div class="{% if emission.archived %}archived{% endif %}">
-               <a class="block" href="{% url 'emission-view' slug=emission.slug %}">
-                       <div class="logo left">
-                               {% if emission.image %}
-                                       {% thumbnail emission.image "60x60" crop="50% 25%" as im %}
-                                       <img width="60" height="60" src="{{im.url}}"/>
-                                       {% endthumbnail %}
-                               {% else %}
-                                       <img class="smooth"  style="width:60px;" src="{% static "img/emission.png" %}"/>
-                               {% endif %}
-                       </div>
-                       <div class="title">
-                               <h5>
-                                       {{ emission.title }}
-                               </h5>
-                               <div class="smooth metas">
-                               {% if emission.categories %}
-                                       <span class="categories">
-                                       {% for category in emission.categories.all %}
-                                               {% if forloop.counter > 1 %} - {% endif %}<span class="category">{{category}}</span>
-                                       {% endfor%}
-                                       </span>
-                               {% endif %}
-                               </div>
-                       </div>
-                       {% if emission.subtitle %}
-                               <div class="description">
-                                       {{ emission.subtitle }}
-                               </div>
-                       {% elif emission.text %}
-                               <div class="description">
-                                       {{ emission.text|safe|striptags|truncatewords:20}}
-                               </div>
-                       {% endif %}
-               </a>
-       </div>
+  <div class="{% if emission.archived %}archived{% endif %}">
+    <a class="block" href="{% url 'emission-view' slug=emission.slug %}">
+      <div class="logo left">
+        {% if emission.image %}
+          {% thumbnail emission.image "60x60" crop="50% 25%" as im %}
+            <img width="60" height="60" src="{{im.url}}"/>
+          {% endthumbnail %}
+        {% else %}
+          <img class="smooth"  style="width:60px;" src="{% static "img/emission.png" %}"/>
+        {% endif %}
+      </div>
+      <div class="title">
+        <h5>
+          {{ emission.title }}
+        </h5>
+        <div class="smooth metas">
+          {% if emission.categories %}
+            <span class="categories">
+              {% for category in emission.categories.all %}
+                {% if forloop.counter > 1 %} - {% endif %}<span class="category">{{category}}</span>
+              {% endfor%}
+            </span>
+          {% endif %}
+        </div>
+      </div>
+      {% if emission.subtitle %}
+        <div class="description">
+          {{ emission.subtitle }}
+        </div>
+      {% elif emission.text %}
+        <div class="description">
+          {{ emission.text|safe|striptags|truncatewords:20}}
+        </div>
+      {% endif %}
+    </a>
+  </div>
 </div>
index 1ea8b050e97c954384557a96d2eaa2fdcebb1db7..b863fb5d279742a93a66c3b6c2e339de0a67d3c4 100644 (file)
@@ -1,95 +1,95 @@
-{% load thumbnail paniktags staticfiles %}
+{% load thumbnail paniktags static %}
 <div class="episode {% if model %}{{ model }}{% else %}resume{% endif %} cf {{ class }}">
-       {% if date != False %}
-       <div class="dateBloc">
-               <div class="date">
-                       <div class="day">
-                           {{ episode.first_diffusion|date:"D"|slice:":2"}}
-                       </div>
-                       <div class="number">
-                           {{ episode.first_diffusion|date:"d" }}
-                       </div>
-                       {% if date != "daytime" %}
-                       <div class="month">
-                           {{ episode.first_diffusion|date:"M y" }}
-                       </div>
-                       {% endif %}
-                       <div class="time">
-                           {{ episode.first_diffusion|date:"H:i" }}
-                       </div>
-               </div>
-       </div>
-       {% endif %}
-       <div class="logo">
-               <a href="{% url 'episode-view' emission_slug=episode.emission.slug slug=episode.slug %}">
-               {% if model == "inline" and episode.image %}
-                       {% thumbnail episode.image "60x60" crop="50% 25%" as im %}
-                       <img width="60" height="60" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% elif model == "inline" and episode.emission.image %}
-                       {% thumbnail episode.emission.image "60x60" crop="50% 25%" as im %}
-                       <img width="60" height="60" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% elif model == "inline" %}
-                       <img class="smooth"  style="width:60px;" src="{% static "img/emission.png" %}"/>
-               {% elif episode.image %}
-                       {% thumbnail episode.image "150x150" crop="50% 25%" as im %}
-                       <img width="150" height="150" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% elif episode.emission.image %}
-                       {% thumbnail episode.emission.image "150x150" crop="50% 25%" as im %}
-                       <img width="150" height="150" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% else %}
-                       <img class="smooth" style="width:150px;" src="{% static "img/emission.png" %}"/>
-               {% endif %}
-               </a>
-       </div>
-       <div class="content">
+  {% if date != False %}
+    <div class="dateBloc">
+      <div class="date">
+        <div class="day">
+          {{ episode.first_diffusion|date:"D"|slice:":2"}}
+        </div>
+        <div class="number">
+          {{ episode.first_diffusion|date:"d" }}
+        </div>
+        {% if date != "daytime" %}
+          <div class="month">
+            {{ episode.first_diffusion|date:"M y" }}
+          </div>
+        {% endif %}
+        <div class="time">
+          {{ episode.first_diffusion|date:"H:i" }}
+        </div>
+      </div>
+    </div>
+  {% endif %}
+  <div class="logo">
+    <a href="{% url 'episode-view' emission_slug=episode.emission.slug slug=episode.slug %}">
+      {% if model == "inline" and episode.image %}
+        {% thumbnail episode.image "60x60" crop="50% 25%" as im %}
+          <img width="60" height="60" src="{{im.url}}"/>
+        {% endthumbnail %}
+      {% elif model == "inline" and episode.emission.image %}
+        {% thumbnail episode.emission.image "60x60" crop="50% 25%" as im %}
+          <img width="60" height="60" src="{{im.url}}"/>
+        {% endthumbnail %}
+      {% elif model == "inline" %}
+        <img class="smooth"  style="width:60px;" src="{% static "img/emission.png" %}"/>
+      {% elif episode.image %}
+        {% thumbnail episode.image "150x150" crop="50% 25%" as im %}
+          <img width="150" height="150" src="{{im.url}}"/>
+        {% endthumbnail %}
+      {% elif episode.emission.image %}
+        {% thumbnail episode.emission.image "150x150" crop="50% 25%" as im %}
+          <img width="150" height="150" src="{{im.url}}"/>
+        {% endthumbnail %}
+      {% else %}
+        <img class="smooth" style="width:150px;" src="{% static "img/emission.png" %}"/>
+      {% endif %}
+    </a>
+  </div>
+  <div class="content">
 
-               {% if episode.main_sound %}
-                       <div class="sound right">{% audio sound=episode.main_sound %}</div>
-               {% endif %}
-               <div class="title">
-                       <h5 class=" title">
-                               <a href="{% url 'episode-view' emission_slug=episode.emission.slug slug=episode.slug %}">{{ episode.title }}</a>
-                       </h5>
-                       <div class="smooth metas">
-                       {% if class == "standalone" %}
-                               <h5 class="title inBlock">
-                                       <a href="{% url 'emission-view' slug=episode.emission.slug %}">{{ episode.emission.title }}</a>
-                               </h5>
-                               {% if episode.emission.categories %}
-                                       <span class="categories">
-                                       {% for category in episode.emission.categories.all %}
-                                               {% if forloop.counter > 1 %} - {% endif %}<span class="category">{{category}}</span>
-                                       {% endfor%}
-                                       </span>
-                               {% endif %}
-                       {% endif %}
-                       </div>
-               </div>
+    {% if episode.main_sound %}
+      <div class="sound right">{% audio sound=episode.main_sound %}</div>
+    {% endif %}
+    <div class="title">
+      <h5 class=" title">
+        <a href="{% url 'episode-view' emission_slug=episode.emission.slug slug=episode.slug %}">{{ episode.title }}</a>
+      </h5>
+      <div class="smooth metas">
+        {% if class == "standalone" %}
+          <h5 class="title inBlock">
+            <a href="{% url 'emission-view' slug=episode.emission.slug %}">{{ episode.emission.title }}</a>
+          </h5>
+          {% if episode.emission.categories %}
+            <span class="categories">
+              {% for category in episode.emission.categories.all %}
+                {% if forloop.counter > 1 %} - {% endif %}<span class="category">{{category}}</span>
+              {% endfor%}
+            </span>
+          {% endif %}
+        {% endif %}
+      </div>
+    </div>
 
-               {% if model == "inline" %}
-                       <div class="description">
-                       <a href="{% url 'episode-view' emission_slug=episode.emission.slug slug=episode.slug %}">
-                       {% if episode.subtitle %}
-                               {{ episode.subtitle|truncatewords:20}}
-                       {% elif episode.text %}
-                               {{ episode.text|safe|striptags|truncatewords:20}}
-                       {% endif %}
-                       </a>
-                       </div>
-               {% else %}
-                       {% if episode.subtitle %}
-                       <article class="text userContent">
-                               {{ episode.subtitle|truncatewords:50 }}
-                       </article>
-                       {% elif episode.text %}
-                       <article class="text userContent">
-                               {{ episode.text|safe|truncatewords:50}}
-                       </article>
-                       {% endif %}
-               {% endif %}
-       </div>
+    {% if model == "inline" %}
+      <div class="description">
+        <a href="{% url 'episode-view' emission_slug=episode.emission.slug slug=episode.slug %}">
+          {% if episode.subtitle %}
+            {{ episode.subtitle|truncatewords:20}}
+          {% elif episode.text %}
+            {{ episode.text|safe|striptags|truncatewords:20}}
+          {% endif %}
+        </a>
+      </div>
+    {% else %}
+      {% if episode.subtitle %}
+        <article class="text userContent">
+          {{ episode.subtitle|truncatewords:50 }}
+        </article>
+      {% elif episode.text %}
+        <article class="text userContent">
+          {{ episode.text|safe|truncatewords:50}}
+        </article>
+      {% endif %}
+    {% endif %}
+  </div>
 </div>
index 41a0d78ff683a623d0e667727e09bb1cd5c304bd..0b1e996ae5d795ae7c69d5a2656abc2786d34972 100644 (file)
@@ -1,14 +1,14 @@
 {% load paniktags thumbnail %}
 {% if obj.fragment %}
-{{ obj.title }}
-<hr>
+  {{ obj.title }}
+  <hr>
 {% endif %}
 {% if obj.episode.image %}
-{% thumbnail obj.episode.image "400x400" crop="50% 25%" as im %}
-<img src="{{im.url|as_absolute_url}}"/>
-{% endthumbnail %}
+  {% thumbnail obj.episode.image "400x400" crop="50% 25%" as im %}
+    <img src="{{im.url|as_absolute_url}}"/>
+  {% endthumbnail %}
 {% endif %}
 
 {% autoescape off %}
-{{ obj.episode.text|hr_split|first|xml_illegal_fix|set_absolute_urls }}
+  {{ obj.episode.text|hr_split|first|xml_illegal_fix|set_absolute_urls }}
 {% endautoescape %}
index 9334d39f59fb110671fc6f6e4f412e0046e3eab3..46a4c286b4601f3c4242b91e531580e506af9b2a 100644 (file)
@@ -3,74 +3,74 @@
 {% block bodyID %}Grid{% endblock %}
 {% block title %}{% trans 'Grid' %}{% endblock %}
 {% block toptitle %}
-<h1 class="top bg-title"><a href="{% url 'grid' %}">Grille</a></h1>
+  <h1 class="top bg-title"><a href="{% url 'grid' %}">Grille</a></h1>
 {% endblock %}
 {% block nav %}
 {% endblock %}
 {% block main %}
 
-<div id="grid">
-       <table>
-               <tbody>
-               <tr>
-                         <td style=""><br/></td>
-                         {% for weekday in weekdays %}
-                           <th class="day" width="13%">{{ weekday }}</th>
-                         {% endfor %}
-                         <td style=""><br/></td>
-               </tr>
-               {% for time_header, time_cells in times|zip:grid %}
-               <tr>
-                         <th class="heure">{{ time_header }}</th>
-                         {% for cell in time_cells %}
-                         <td class="small cell {% if cell.schedules|length > 1 %}many {% endif %}{% if cell.schedules %}scheduled{% else %}nonstop musique-en-continu{% endif %}" {% if cell.w > 1 %}colspan="{{cell.w}}"{% endif %}
-                                     {% if cell.h > 1 %}rowspan="{{cell.h}}"{% endif %}>
-                                       {% if cell.time_label %}
-                                               <div class="time-label">{{ cell.time_label }}</div>
-                                       {% endif %}
-                                     {% if cell.schedules %}
-                                       {% for schedule in cell.sorted_schedules %}
-                                       {% if forloop.first == False and cell.schedules|length > 1 %}<hr />{% endif %}
-                                       <div class="item {% for category in schedule.emission.categories.all %} {{ category|slugify }}{% endfor %}">
-                                       
-                                               <strong>
-                                                       <a href="{% url 'emission-view' slug=schedule.emission.slug %}">
-                                                               <span>{{ schedule.emission.title }}</span>                                                                                              
-                                                       </a>
-                                               </strong>
-                                               <br />
-                                               {% if schedule.weeks_string or schedule.time_label %}
-                                               {% spaceless %}
-                                               <span>(</span>
-                                                 {% if schedule.time_label %}
-                                                 <span>{{ schedule.time_label }}</span>
-                                                   {% if schedule.weeks_string %}<span>, </span>{% endif %}
-                                                 {% endif %}
-                                                 {% if schedule.weeks_string %}
-                                                 <span>{{ schedule.weeks_string }}</span>
-                                                 {% endif %}
-                                                 {% if schedule.time_label_extra %}
-                                                 <span>{{ schedule.time_label_extra }}</span>
-                                                 {% endif %}
-                                               <span>)</span>
-                                               {% endspaceless %}
-                                               {% endif %}
-                                               
-                                       </div>
-                                       {% endfor %}
-                                     {% else %}
-                                      <div class="continu"><strong><a
-                                          href="{% if cell.redirect_path %}{{ cell.redirect_path }}{% else %}{% url 'emission-view' slug=cell.nonstop_slug %}{% endif %}">{{ cell }}</a></strong></div>
-                                       {% if cell.w > 1 and cell.h > 1%}<!--<p>la musique en continu</p>-->{% endif %}
-                                     {% endif %}
-                         </td>
-                         {% endfor %}
-                         <th class="heure">{{ time_header }}</th>
-               </tr>
-               {% endfor %}
-               </tbody>
-       </table>
-</div>
+  <div id="grid">
+    <table>
+      <tbody>
+        <tr>
+          <td style=""><br/></td>
+          {% for weekday in weekdays %}
+            <th class="day" width="13%">{{ weekday }}</th>
+          {% endfor %}
+          <td style=""><br/></td>
+        </tr>
+        {% for time_header, time_cells in times|zip:grid %}
+          <tr>
+            <th class="heure">{{ time_header }}</th>
+            {% for cell in time_cells %}
+              <td class="small cell {% if cell.schedules|length > 1 %}many {% endif %}{% if cell.schedules %}scheduled{% else %}nonstop musique-en-continu{% endif %}" {% if cell.w > 1 %}colspan="{{cell.w}}"{% endif %}
+                  {% if cell.h > 1 %}rowspan="{{cell.h}}"{% endif %}>
+                {% if cell.time_label %}
+                  <div class="time-label">{{ cell.time_label }}</div>
+                {% endif %}
+                {% if cell.schedules %}
+                  {% for schedule in cell.sorted_schedules %}
+                    {% if forloop.first == False and cell.schedules|length > 1 %}<hr />{% endif %}
+                    <div class="item {% for category in schedule.emission.categories.all %} {{ category|slugify }}{% endfor %}">
+
+                      <strong>
+                        <a href="{% url 'emission-view' slug=schedule.emission.slug %}">
+                          <span>{{ schedule.emission.title }}</span>
+                        </a>
+                      </strong>
+                      <br />
+                      {% if schedule.weeks_string or schedule.time_label %}
+                        {% spaceless %}
+                          <span>(</span>
+                          {% if schedule.time_label %}
+                            <span>{{ schedule.time_label }}</span>
+                            {% if schedule.weeks_string %}<span>, </span>{% endif %}
+                          {% endif %}
+                          {% if schedule.weeks_string %}
+                            <span>{{ schedule.weeks_string }}</span>
+                          {% endif %}
+                          {% if schedule.time_label_extra %}
+                            <span>{{ schedule.time_label_extra }}</span>
+                          {% endif %}
+                          <span>)</span>
+                        {% endspaceless %}
+                      {% endif %}
+
+                    </div>
+                  {% endfor %}
+                {% else %}
+                  <div class="continu"><strong><a
+                    href="{% if cell.redirect_path %}{{ cell.redirect_path }}{% else %}{% url 'emission-view' slug=cell.nonstop_slug %}{% endif %}">{{ cell }}</a></strong></div>
+                  {% if cell.w > 1 and cell.h > 1%}<!--<p>la musique en continu</p>-->{% endif %}
+                {% endif %}
+              </td>
+            {% endfor %}
+            <th class="heure">{{ time_header }}</th>
+          </tr>
+        {% endfor %}
+      </tbody>
+    </table>
+  </div>
 {% endblock %}
 
 {% block news %}
index e989614cffdc9b78ac91a5cbc6639374d4b19d22..03b67b7a391d8011dc9fa1ea510469235e2d81b5 100644 (file)
@@ -1,83 +1,77 @@
 {% extends "base.html" %}
-{% load paniktags staticfiles i18n thumbnail %}
+{% load paniktags static i18n thumbnail %}
 {% block bodyID %}Home{% endblock %}
-{% block title %}{% trans 'Home' %}{% endblock %}
+{% block htmltitle %}{{ radio_long_name }}{% endblock %}
 
 {% block head %}
-{{ block.super }}
-<script type="application/ld+json">
-{
-  "@context": "http://schema.org",
-  "@type": "Organization",
-  "url": "https://radio.esperanzah.be",
-  "name" : "Radio Esperanzah!"
-}
-</script>
+  {{ block.super }}
+  <script type="application/ld+json">
+    {
+      "@context": "http://schema.org",
+      "@type": "Organization",
+      "url": "https://radio.esperanzah.be",
+      "name" : "Radio Esperanzah!"
+    }
+  </script>
 {% endblock %}
 
 {% block main %}
 
-<div class="" id="specialHome">
+  <div class="" id="specialHome">
     <div>
 
-            {% if newsitems %}
-             <div id="actu">
-                     <h2>{{newsitems.0.title}}</h2>
-                     <div>{{newsitems.0.text|safe}}</div>
-             </div>
-           {% endif %}
+      {% if newsitems %}
+        <div id="actu">
+          <h2>{{newsitems.0.title}}</h2>
+          <div>{{newsitems.0.text|safe}}</div>
+        </div>
+      {% endif %}
 
 
-            <div>
-           {% spaceless %}
-           {% for emission in emissions %}
-           <div class="emission-tile {% if emission.has_focus %}emission-focus{% endif %}">
-             <a href="{% url 'emission-view' slug=emission.slug %}">
-                   <div class="image">
-                            <div class="img">
-                       {% thumbnail emission.image "450x450" crop="50% 50%" as im %}
-                        <img alt="" loading="lazy" src="{{im.url}}">
-                        {% empty %}
-                        <img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8nez3HwAGugKtHMIYIwAAAABJRU5ErkJggg==">
-                       {% endthumbnail %}
-                            </div>
-                   </div>
-             <div class="name"><span>{{emission.title}}</span></div>
-             </a>
+      <div>
+        {% spaceless %}
+
+        <!-- {% cycle 'style1' 'style2' 'style3' as tilestyle %} -->
+
+          {% for page in extra_pages_start %}
+            {% include "includes/page-tile.html" with tilestyle=tilestyle %}
+            <!-- {% cycle tilestyle %} -->
+          {% endfor %}
+
+          {% for emission in emissions %}
+            <div class="emission-tile {% if emission.has_focus %}emission-focus{% endif %}">
+              <a href="{% url 'emission-view' slug=emission.slug %}">
+                <div class="image {{ tilestyle }}">
+                  <div class="img">
+                    {% thumbnail emission.image "450x450" crop="50% 50%" as im %}
+                      <img alt="" loading="lazy" src="{{im.url}}">
+                    {% empty %}
+                      <img alt="" class="empty" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8nez3HwAGugKtHMIYIwAAAABJRU5ErkJggg==">
+                    {% endthumbnail %}
+                  </div>
+                </div>
+                <div class="name"><span>{{emission.title}}</span></div>
+              </a>
               <div class="tags">
-              {% if emission.subtitle %}<span>{{ emission.subtitle }}</span>
-              {% elif emission.has_focus %}<span>#podcast</span>{% endif %}
-              {% for schedule in emission.schedule_set.all %}
-                {% if forloop.first and forloop.last %}#{{schedule.datetime|date:"l"}}{% endif %}
-              {% endfor %}
+                {% if emission.subtitle %}<span>{{ emission.subtitle }}</span>
+                {% elif emission.has_focus %}<span>#podcast</span>{% endif %}
+                {% for schedule in emission.schedule_set.all %}
+                  {% if forloop.first and forloop.last %}#{{schedule.datetime|date:"l"}}{% endif %}
+                {% endfor %}
               <!-- &nbsp;<span>#espe{{emission.creation_timestamp|date:"Y"}}</span> -->
               </div>
-           </div>
-           {% endfor %}
-
-           {% for page in extra_pages %}
-           <div class="emission-tile">
-           <a href="{{page.get_online_url}}">
-                   <div class="image">
-                            <div class="img">
-                       {% thumbnail page.picture "450x450" crop="50% 50%" as im %}
-                        <img alt="" loading="lazy" src="{{im.url}}">
-                        {% empty %}
-                        <img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8nez3HwAGugKtHMIYIwAAAABJRU5ErkJggg==" height="450" width="450">
-                       {% endthumbnail %}
-                            </div>
-                   </div>
-                   <div class="name"><span>{{page.title}}</span></div>
-           </a>
-                      <div class="tags">
-                      {% if page.slug == "interviews" %}<span>#podcast</span>{% endif %}
-                      </div>
-           </div>
-           {% endfor %}
-           {% endspaceless %}
             </div>
+            <!-- {% cycle tilestyle %} -->
+          {% endfor %}
+
+          {% for page in extra_pages_end %}
+            {% include "includes/page-tile.html" %}
+            <!-- {% cycle tilestyle %} -->
+          {% endfor %}
+        {% endspaceless %}
+      </div>
 
     </div>
-</div>
+  </div>
 
 {% endblock %}
index 6ae7dd515fb90430b1a0fcead020fd4195bb806d..8f26bddbbc3626b9a716a6c4caec28042ff3ea3b 100644 (file)
@@ -1,73 +1,68 @@
 {% load soundfiles paniktags i18n %}
 {% if sound|is_format_available:'mp3' or sound|is_format_available:'ogg' %}
-       <div class="audio" data-sound-id="{{ sound.id }}">
-               {% if embed %}
-               <a class="resymbol icon-download big"
-                       title="Download file"
-                       target="_new" rel="noopener" download
-                       {% if sound|is_format_available:'mp3' %}
-                       href="{{ sound|format_url:'mp3' }}"
-                       {% else %}
-                       href="{{ sound|format_url:'ogg' }}"
-                       {% endif %}
-                       ></a>
-               {% endif %}
-               {% if not embed %}
-               <button class="action-play"
-                       data-player-audio="Audio-{{ sound.file.url|slugify }}" 
-                       data-player-action="playAudio" 
-                       >Écouter le podcast</button>
-               {% if sound|is_format_available:'ogg' %}
-               / <a href="{{ sound|format_url:'ogg' }}" download>Télécharger</a>
-               {% elif sound|is_format_available:'mp3' %}
-               / <a href="{{ sound|format_url:'mp3' }}" download>Télécharger</a>
-               {% endif %}
-               {% endif %}
+  <div class="audio" data-sound-id="{{ sound.id }}">
+    <button class="action-play"
+            data-player-audio="Audio-{{ sound.file.url|slugify }}"
+            data-player-action="playAudio"
+    >Écouter le podcast</button>
+    {% if sound|is_format_available:'ogg' %}
+      / <a href="{{ sound|format_url:'ogg' }}" download>Télécharger</a>
+    {% elif sound|is_format_available:'mp3' %}
+      / <a href="{{ sound|format_url:'mp3' }}" download>Télécharger</a>
+    {% endif %}
 
-               <button class="icons icon-pause"
-                       title="{% trans "Pause" %}"
-                       data-player-audio="Audio-{{ sound.file.url|slugify }}" 
-                       data-player-action="pauseSounds"
-                       ></button>
+    {% if not embed %}
+      /
+      <a
+        href=""
+        data-popup-href="{% url 'soundfile-dialog-embed-view' emission_slug=sound.episode.emission.slug episode_slug=sound.episode.slug pk=sound.pk %}"
+      >Intégrer</a>
+    {% endif %}
 
-       </div>
-       {% if display_fragment_name %}
-       <div class="fragment-name">
-               {{ sound.title }}
-       </div>
-       {% endif %}
-       <audio 
-               data-player='true'
-               class='hidden'
-               data-url="{% url 'episode-view' emission_slug=sound.episode.emission.slug slug=sound.episode.slug %}"
-               data-sound-id="{{ sound.id }}"
-               {% if sound.fragment and sound.title %}title="{{ sound.title }}"
-               {% else %}title="{{sound.episode.title}}"{% endif %}
-               id="Audio-{{ sound.file.url|slugify }}" 
-               preload="{% if preload %}{{ preload }}{% else %}none{% endif %}"
-               controls="{% if controls %}{{ controls }}{% else %}controls{% endif%}"
-               >
-               {% if sound|is_format_available:'ogg' %}
-                       <source src="{{ sound|format_url:'ogg' }}" type="audio/ogg">
-               {% endif %}
-               {% if sound|is_format_available:'mp3' %}
-                       <source src="{{ sound|format_url:'mp3' }}" type="audio/mpeg">
-               {% endif %}
-               <div class="alternative padded">
-                       <div class="info smooth">Your browser can't play audio files</div>
-                       <strong>Download: </strong>
-                       {% if sound|is_format_available:'ogg' %}
-                               <a class="icon-headphones" href="{{ sound|format_url:'ogg' }}"> ogg</a>
-                       {% endif %}
-                       {% if sound|is_format_available:'mp3' %}
-                               <a class="icon-headphones" href="{{ sound|format_url:'mp3' }}"> mp3</a>
-                       {% endif %}
-               </div>
-       </audio>
+    <button class="icons icon-play-sign"
+            title="{% trans "Pause" %}"
+            data-player-audio="Audio-{{ sound.file.url|slugify }}"
+            data-player-action="pauseSounds"
+    ></button>
 
-       <div class="waveform" data-sound-id="{{ sound.id }}" data-duration="{{ sound.duration }}"
-               data-duration-string="{{ sound.get_duration_string }}"></div>
+  </div>
+  {% if display_fragment_name %}
+    <div class="fragment-name">
+      {{ sound.title }}
+    </div>
+  {% endif %}
+  <audio
+    data-player='true'
+    class='hidden'
+    data-url="{% url 'episode-view' emission_slug=sound.episode.emission.slug slug=sound.episode.slug %}"
+    data-sound-id="{{ sound.id }}"
+    {% if sound.fragment and sound.title %}title="{{ sound.title }}"
+    {% else %}title="{{sound.episode.title}}"{% endif %}
+    id="Audio-{{ sound.file.url|slugify }}"
+    preload="{% if preload %}{{ preload }}{% else %}none{% endif %}"
+    controls="{% if controls %}{{ controls }}{% else %}controls{% endif%}"
+  >
+    {% if sound|is_format_available:'ogg' %}
+      <source src="{{ sound|format_url:'ogg' }}" type="audio/ogg">
+    {% endif %}
+    {% if sound|is_format_available:'mp3' %}
+      <source src="{{ sound|format_url:'mp3' }}" type="audio/mpeg">
+    {% endif %}
+    <div class="alternative padded">
+      <div class="info smooth">Your browser can't play audio files</div>
+      <strong>Download: </strong>
+      {% if sound|is_format_available:'ogg' %}
+        <a class="icon-headphones" href="{{ sound|format_url:'ogg' }}"> ogg</a>
+      {% endif %}
+      {% if sound|is_format_available:'mp3' %}
+        <a class="icon-headphones" href="{{ sound|format_url:'mp3' }}"> mp3</a>
+      {% endif %}
+    </div>
+  </audio>
+
+  <div class="waveform" data-sound-id="{{ sound.id }}" data-duration="{{ sound.duration }}"
+       data-duration-string="{{ sound.get_duration_string }}"></div>
 {% else %}
 
-       <div class="hidden error">No sound available!</div>
+  <div class="hidden error">No sound available!</div>
 {% endif%}
index 45197fe9fc2874e4c01f6c7fef72c8c98b269e34..31df7306a2f887a50e724d1f66f58033ee90fdf8 100644 (file)
@@ -1,25 +1,25 @@
 <div id="detour-vers-le-footer">
-        <p>
-        Le podcast « Détour vers le futur » a été réalisé par le festival
-        Esperanzah! (Alixe &amp; Malaïka!), avec la fine équipe du village des
-        possibles, enregistré dans les studios de
-        <a href="https://www.radiopanik.org/">Radio Panik</a> (Fred!), monté et
-        mixé par <a href="https://ultravagues.com/">Ultra vagues</a> (Cassi!).
-        </p>
-        <p class="logos">
-        <a href="https://www.radiopanik.org/"><img src="/static/img/logo-radiopanik.png" alt="Radio Panik"></a>
-        <a href="https://ultravagues.com/"><img src="/static/img/logo-ultravagues.png" alt="Ultra vagues"></a>
-        </p>
-        <p>
-        <br>
-        Avec le soutien de la Fédération Wallonie-Bruxelles.
-        </p>
-        <p><img src="/static/img/logo-fwb.png" alt="Fédération Wallonie-Bruxelles"></p>
+  <p>
+    Le podcast « Détour vers le futur » a été réalisé par le festival
+    Esperanzah! (Alixe &amp; Malaïka!), avec la fine équipe du village des
+    possibles, enregistré dans les studios de
+    <a href="https://www.radiopanik.org/">Radio Panik</a> (Fred!), monté et
+    mixé par <a href="https://ultravagues.com/">Ultra vagues</a> (Cassi!).
+  </p>
+  <p class="logos">
+    <a href="https://www.radiopanik.org/"><img src="/static/img/logo-radiopanik.png" alt="Radio Panik"></a>
+    <a href="https://ultravagues.com/"><img src="/static/img/logo-ultravagues.png" alt="Ultra vagues"></a>
+  </p>
+  <p>
+    <br>
+    Avec le soutien de la Fédération Wallonie-Bruxelles.
+  </p>
+  <p><img src="/static/img/logo-fwb.png" alt="Fédération Wallonie-Bruxelles"></p>
 </div>
 <style>
-div.emission-episodes a div.image:hover .img,
-div.emission-detail div.episode-info div.image:hover .img,
-div.emission-detail div.emission-info div.image:hover .img {
-        transform: none;
-}
+  div.emission-episodes a div.image:hover .img,
+  div.emission-detail div.episode-info div.image:hover .img,
+  div.emission-detail div.emission-info div.image:hover .img {
+    transform: none;
+  }
 </style>
index c994323ebce1d5017216c9587a8c0ed04324ac30..0aefa42c164848c53dc3e29c234050585b87b7ce 100644 (file)
@@ -1,40 +1,40 @@
 {% load i18n %}
 <nav class="contextual-menu">
-               <ul>
-                       <li class="{% if sectionName == "Home" %}active{% endif %}"><a href="{% url 'home' %}">
-                               <span class="nav-icon icon-home resymbol"></span>
-                               <span class="iconLabel">{% trans 'Home' %}</span>
-                       </a></li>
-                       <li class="{% if sectionName == "News" %}active{% endif %}"><a title="Actualité des émissions et programmes" href="{% url 'news' %}">
-                               <span class="nav-icon icon-bullhorn resymbol" ></span>
-                               <span class="iconLabel">{% trans 'News' %}</span>
-                       </a></li>
-                       <li class="{% if sectionName == "Listen" %}active{% endif %}"><a title="Derniers contenus écoutables publiés" href="{% url 'listen' %}">
-                               <span class="nav-icon icon-headphones resymbol" ></span>
-                               <span class="iconLabel">{% trans 'Sounds' %}</span>
-                       </a></li>
-                       <li class="{% if sectionName == "Topiks" %}active{% endif %}"><a href="/topiks/">
-                               <span class="nav-icon icon-bolt" ></span>
-                               <span class="iconLabel">Topiks</span>
-                       </a></li>
-                       <li class="{% if sectionName == "Emissions" %}active{% endif %}"><a title="Les émissions, le programme de la semaine, la grille" href="{% url 'grid' %}">
-                               <span class="nav-icon icon-calendar resymbol" ></span>
-                               <span class="iconLabel">{% trans 'Program' %}</span>
-                       </a></li>
-                       <li class="{% if sectionName == "About" %}active{% endif %}"><a title="Qui sommes-nous, les groupes, la charte…" href="/la-radio/">
-                               <span class="nav-icon icon-info-sign" ></span>
-                               <span class="iconLabel">{% trans 'About' %}</span>
-                       </a></li>
-                       <li id="nav-language">
-                       <span data-lang="fr" {% if LANGUAGE_CODE == 'fr' %}class="lang-on"{% endif %}>FR</span></a>
-                       /
-                       <span data-lang="en"{% if LANGUAGE_CODE == 'en' %}class="lang-on"{% endif %}>EN</span>
-                       </li>
-                       <li id="nav-search" class="{% if sectionName == "Search" %}active{% endif %}"><a href="{% url 'search' %}">
-                               <span class="nav-icon icon-search resymbol" ></span>
-                       </a>
-                       <form action="{% url 'search' %}"><input placeholder="{% trans 'Search' %}" name="q" type="search"></input></form>
-                       </li>
-    
-               </ul>
+  <ul>
+    <li class="{% if sectionName == "Home" %}active{% endif %}"><a href="{% url 'home' %}">
+      <span class="nav-icon icon-home resymbol"></span>
+      <span class="iconLabel">{% trans 'Home' %}</span>
+    </a></li>
+    <li class="{% if sectionName == "News" %}active{% endif %}"><a title="Actualité des émissions et programmes" href="{% url 'news' %}">
+      <span class="nav-icon icon-bullhorn resymbol" ></span>
+      <span class="iconLabel">{% trans 'News' %}</span>
+    </a></li>
+    <li class="{% if sectionName == "Listen" %}active{% endif %}"><a title="Derniers contenus écoutables publiés" href="{% url 'listen' %}">
+      <span class="nav-icon icon-headphones resymbol" ></span>
+      <span class="iconLabel">{% trans 'Sounds' %}</span>
+    </a></li>
+    <li class="{% if sectionName == "Topiks" %}active{% endif %}"><a href="/topiks/">
+      <span class="nav-icon icon-bolt" ></span>
+      <span class="iconLabel">Topiks</span>
+    </a></li>
+    <li class="{% if sectionName == "Emissions" %}active{% endif %}"><a title="Les émissions, le programme de la semaine, la grille" href="{% url 'grid' %}">
+      <span class="nav-icon icon-calendar resymbol" ></span>
+      <span class="iconLabel">{% trans 'Program' %}</span>
+    </a></li>
+    <li class="{% if sectionName == "About" %}active{% endif %}"><a title="Qui sommes-nous, les groupes, la charte…" href="/la-radio/">
+      <span class="nav-icon icon-info-sign" ></span>
+      <span class="iconLabel">{% trans 'About' %}</span>
+    </a></li>
+    <li id="nav-language">
+      <span data-lang="fr" {% if LANGUAGE_CODE == 'fr' %}class="lang-on"{% endif %}>FR</span></a>
+    /
+    <span data-lang="en"{% if LANGUAGE_CODE == 'en' %}class="lang-on"{% endif %}>EN</span>
+  </li>
+  <li id="nav-search" class="{% if sectionName == "Search" %}active{% endif %}"><a href="{% url 'search' %}">
+    <span class="nav-icon icon-search resymbol" ></span>
+  </a>
+    <form action="{% url 'search' %}"><input placeholder="{% trans 'Search' %}" name="q" type="search"></input></form>
+  </li>
+
+</ul>
 </nav>
diff --git a/panikweb_esperanzah/templates/includes/page-tile.html b/panikweb_esperanzah/templates/includes/page-tile.html
new file mode 100644 (file)
index 0000000..8713d24
--- /dev/null
@@ -0,0 +1,20 @@
+{% load thumbnail %}
+<div class="emission-tile">
+  <a href="{{page.get_online_url}}">
+    <div class="image {{ tilestyle }}">
+      <div class="img">
+        {% thumbnail page.picture "450x450" crop="50% 50%" as im %}
+          <img alt="" loading="lazy" src="{{im.url}}">
+        {% empty %}
+          <img alt="" class="empty" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8nez3HwAGugKtHMIYIwAAAABJRU5ErkJggg==" height="450" width="450">
+        {% endthumbnail %}
+      </div>
+    </div>
+    <div class="name"><span>{{page.title}}</span></div>
+  </a>
+  <div class="tags">
+    {% for hashtag in page.extra_variables.hashtags.split %}
+      <span>#{{hashtag}}</span>
+    {% endfor %}
+  </div>
+</div>
index fcf24cfd7bd435c8e8f9e32c47b1f7a429e0a4da..662c2cd7596a57a1b893a1e63ff7e36abf620445 100644 (file)
@@ -1,17 +1,17 @@
 {% if enabled %}
 <!-- Piwik -->
-<script type="text/javascript">
-  var _paq = _paq || [];
+  <script type="text/javascript">
+    var _paq = _paq || [];
   /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
-  _paq.push(['trackPageView']);
-  _paq.push(['enableLinkTracking']);
-  (function() {
-    var u="//piwik.entrouvert.org/";
-    _paq.push(['setTrackerUrl', u+'piwik.php']);
-    _paq.push(['setSiteId', '18']);
-    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
-    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
-  })();
-</script>
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="//piwik.entrouvert.org/";
+      _paq.push(['setTrackerUrl', u+'piwik.php']);
+      _paq.push(['setSiteId', '18']);
+      var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+      g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
+    })();
+  </script>
 <!-- End Piwik Code -->
 {% endif %}
index 8c891a630236d75f7f9f47c379a6da1e1c853f7a..7c836cfcc4cc3d80f54925e43d661a67ff00b062 100644 (file)
@@ -1,39 +1,41 @@
 {% load i18n paniktags %}
 <div id="player-container" class="normal cf">
-       <button id="togglePlayer" class="hidden left huge no-icon-double-angle-left "></button>
-       <div id="player" class="cf">
-               <div id="audioPlayer" class="cf">
-                       <div id="Live" class="cf">
-                               <span class="button" id="DirectStreamPanikControler">
-                                       <div id="streamSymbol" class="player-start"></div>
-                               <div id="CurrentlyPlaying">
-                                       <span id="WhatsOnAir"></span>
-                               </div>
-                               </span>
-                               <div id="CurrentlyChatting" style="display: none;">
-                                        <a href=""><div id="chatSymbol" class="no-icon-comments control"></div>
-                                                <div class="label">CHAT</div></a>
-                                        <span>La radio est ouverte</span>
-                               </div>
-                               <audio 
-                                       id="DirectStreamPanik" 
-                                       preload="none" 
-                                       class="hidden" 
-                                       tabindex="0" 
-                                       controls="controls">
+  <button id="togglePlayer" class="hidden left huge no-icon-double-angle-left "></button>
+  <div id="player" class="cf">
+    <div id="audioPlayer" class="cf">
+      <div id="Live" class="cf">
+        <span class="button" id="LiveStreamController">
+          <div id="streamSymbol" tabindex="0"
+               role="button" class="player-start"
+               aria-label="{% trans "Listen to the radio" %}"></div>
+          <div id="CurrentlyPlaying">
+            <span id="WhatsOnAir"></span>
+          </div>
+        </span>
+        <div id="CurrentlyChatting" style="display: none;">
+          <a href=""><div id="chatSymbol" class="no-icon-comments control"></div>
+            <div class="label">CHAT</div></a>
+          <span>La radio est ouverte</span>
+        </div>
+        <audio
+          id="LiveStream"
+          preload="none"
+          class="hidden"
+          tabindex="0"
+          controls="controls">
+                                       <!--
                                        <source src="/media/jingle-ou-pas.ogg" type="audio/ogg"/>
                                        <source src="/media/jingle-ou-pas.mp3" type="audio/mpeg"/>
-                                       <!--
-                                       <source src="http://hertz.run.be:8000/espe.mp3" type="audio/mpeg"/>
                                        -->
-                               </audio>
-                       </div>
-               </div>
-               <div id="Playlist" class="cf">
-                       <div id="localList" class="" style="display: none;">
-                         <div class="label">Podcast</div>
-                       </div>
-           </div>
-       </div>
+          <source src="https://radio.esperanzah.be/streams/espe.aac" type="audio/aac"/>
+        </audio>
+      </div>
+    </div>
+    <div id="Playlist" class="cf">
+      <div id="localList" class="" style="display: none;">
+        <div class="label">Podcast</div>
+      </div>
+    </div>
+  </div>
 
 </div>
index 40eed4ba7a6973d96ab4a7d8fbb65d4424006f42..ef6e57a1efad34f9902a40a27556409d17732976 100644 (file)
@@ -1,20 +1,20 @@
 {% load paniktags %}
 <div class="padded">
-       <div class="wrapper">
-               <h2>Suggestions</h2>
+  <div class="wrapper">
+    <h2>Suggestions</h2>
 
-               <ul id="search-results" class="list columns padded cf">
+    <ul id="search-results" class="list columns padded cf">
 
-               {% for result in more_like_this %}
-                       {% if result.title %}
-                       <li class="ellipsis">
-                               {% search_result_template result %}
-                       </li>
-                       {% endif %}
-               {% endfor %}
+      {% for result in more_like_this %}
+        {% if result.title %}
+          <li class="ellipsis">
+            {% search_result_template result %}
+          </li>
+        {% endif %}
+      {% endfor %}
 
 
-               </ul>
+    </ul>
 
-       </div>
+  </div>
 </div>
index b59ec450702fe9c76eba54ad5e333762a2b5675c..59799e42bbb4141e0452ccd999580f6783375d3a 100644 (file)
@@ -1,17 +1,17 @@
-{% load thumbnail paniktags staticfiles %}
+{% load thumbnail paniktags static %}
 <a href="{{ topik.page.get_online_url }}" class="topik-link">
-<div>
-  <div class="logo">
-    {% thumbnail topik.image "60x60" crop="50% 25%" as im %}
-    <img src="{{im.url}}"/>
-    {% endthumbnail %}
-  </div>
-  <div class="content">
-    <div class="title">
-     <h5 class="title">{{ topik.page.title }}</h5>
+  <div>
+    <div class="logo">
+      {% thumbnail topik.image "60x60" crop="50% 25%" as im %}
+        <img src="{{im.url}}"/>
+      {% endthumbnail %}
     </div>
-    <div class="description ellipsis">
+    <div class="content">
+      <div class="title">
+        <h5 class="title">{{ topik.page.title }}</h5>
+      </div>
+      <div class="description ellipsis">
+      </div>
     </div>
   </div>
-</div>
 </a>
diff --git a/panikweb_esperanzah/templates/listen.html b/panikweb_esperanzah/templates/listen.html
deleted file mode 100644 (file)
index c7153df..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-{% extends "base.html" %}
-{% load paniktags staticfiles thumbnail i18n %}
-{% block title %}{% trans 'Sounds' %}{% endblock %}
-{% block toptitle %}
-<h1 class="top bg-title"><a href="{% url 'listen' %}">{% trans 'Sounds' %}</a></h1>
-{% endblock %}
-{% block nav %}
-{% endblock %}
-{% block main %}
-
-<div class="detail marged soundfiles cf">
-  <div class="wrapper navigation">
-
-<p class="intro leftPart">
-Émissions et fragments sonores à (ré-)écouter, à partager et à télécharger.
-</p>
-
-    <div class="leftPart">
-      <div class="soundfiles">
-        <h5 class="sectionLabel focus-title">{% trans 'Focus' %}</h5>
-
-        <ul class="custom columns cf padded">
-        {% for soundfile in focus %}
-          <li class="soundfile frontpage">
-            <div class="content content-inline cf special">
-              <a class="block cf" href="{% url 'episode-view' emission_slug=soundfile.episode.emission.slug slug=soundfile.episode.slug %}">
-                <div class="label labels absolute">
-                  <span class="item inBlock">{{ soundfile.format.title }}</span>
-                </div>
-                <div class="logo">
-                  {% if soundfile.episode.image %}
-                  {% thumbnail soundfile.episode.image "480x320" crop="50% 25%" as im %}
-                  <img class="normal" src="{{im.url}}"/>
-                  {% endthumbnail %}
-                  {% elif soundfile.episode.emission.image %}
-                  {% thumbnail soundfile.episode.emission.image "480x320" crop="50% 25%" as im %}
-                  <img class="normal" src="{{im.url}}"/>
-                  {% endthumbnail %}
-                  {% else %}
-                  <img class="normal" src="{% static "img/sound.png" %}"/>
-                  {% endif %}
-                </div>
-                <div class="content">
-                  {% if soundfile.fragment and soundfile.title %}
-                  <h5 class="title">{{ soundfile.title }}</h5>
-                  {% endif %}
-                  <h5 class="title">{{ soundfile.episode.title }}</h5>
-                  <h5 class="title">{{ soundfile.episode.emission.title }}</h5>
-                  <div class="description">
-                    {{ soundfile.episode.text|safe|striptags|truncatewords:75}}
-                  </div>
-                  {% if soundfile.first_diffusion %}
-                    <div class="smooth">{{ soundfile.first_diffusion|date:"d/m/Y" }}</div>
-                  {% endif %}
-                </div>
-              </a>
-              {% audio sound=soundfile %}
-            </div>
-          </li>
-        {% endfor %}
-        </ul>
-      </div>
-    </div>
-    <div class="rightPart">
-      <div class="sub">
-        <h5 class="sectionLabel right">
-          <a href="{% url 'listenArchives' %}"><span class="iconLabel">Tous</span></a>
-        </h5>
-        <h5 class="sectionLabel">{% trans 'Latest Sounds' %}&nbsp;<a
-                        class="button icon-rss inBlock" href="{% url 'podcasts-feed' %}"></a></h5>
-
-       <form action="{% url 'listenArchives' %}" id="search-form">
-               <input id="id_q" name="q" type="text" {% if search_query %}value="{{ search_query }}"{% endif %}>
-                <button class="icon-search"><span class="sr-only">{% trans "Search" %}</span></button>
-       </form>
-
-        <ul class="custom list soundfilesList">
-          {% for soundfile in soundfiles|slice:":20" %}
-            <li class="item">
-              {% soundfile_resume soundfile=soundfile date=soundfile.first_diffusion %}
-            </li>
-          {% endfor %}
-        </ul>
-      </div>
-    </div>
-  </div>
-</div>
-{% endblock %}
diff --git a/panikweb_esperanzah/templates/listen/archives.html b/panikweb_esperanzah/templates/listen/archives.html
deleted file mode 100644 (file)
index c801890..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-{% extends "listen.html" %}
-{% load paniktags i18n %}
-{% block title %}Sons - Archives{% endblock %}
-{% block nav %}
-       <div class="search-filters">
-               {% if facets.fields.format %}
-               <nav>
-                   <ul class="custom padded">
-                               <li><span class="mainLabel">Format :</span></li>
-                               {% for format in facets.fields.format %} <li>
-                                         {% if format.0 in selected_format %}
-                                               <a class="check icon-check" href="{{ request.get_full_path|remove_format_facet:format.0 }}">
-                                                       {{ format.0 }} <span class="smooth">| {{ format.1 }}</span>
-                                               </a>
-                                         {% else %}
-                                                 <a class="check icon-check-empty" href="{{ request.get_full_path|append_format_facet:format.0 }}">{{ format.0 }} <span class="smooth">| {{ format.1 }}</span></a></span>
-                                         {% endif %}
-                               </li>
-                               {% endfor %}
-                   </ul>
-               </nav>
-               {% endif %}
-
-               {% if facets.fields.tags %}
-               <nav>
-                   <ul class="tag-facets custom padded">
-                       <li><span class="mainLabel">Mots-clés :</span></li>
-                       {% for tag in facets.fields.tags|slice:":20" %} {# Provide only the top 20 tags #}
-                       <li>
-                         {% if tag.0 in selected_tags %}
-                               <a class="check icon-check" href="{{ request.get_full_path|remove_tag_facet:tag.0 }}">
-                                       {{ tag.0 }} <span class="smooth">| {{ tag.1 }}</span>
-                               </a>
-                         {% else %}
-                               <a class="check icon-check-empty" href="{{ request.get_full_path|append_tag_facet:tag.0 }}">{{ tag.0 }} <span class="smooth">| {{ tag.1 }}</span></a> 
-                         {% endif %}
-                       </li>
-                       {% endfor %}
-                   </ul>
-               </nav>
-               {% endif %}
-       </div> <!-- .search-filters -->
-
-{% endblock %}
-
-{% block main %}
-    <form method="get" action="." class="padded center" id="search-form">
-      <div class="big">
-            {% for category in selected_categories %}
-            <input type="hidden" name="selected_facets" value="categories_exact:{{category}}"/>
-            {% endfor %}
-            {% for tag in selected_tags %}
-            <input type="hidden" name="selected_facets" value="tags_exact:{{tag}}"/>
-            {% endfor %}
-            {{ form.as_table }}
-            <button class="icon-search"><span class="sr-only">{% trans "Search" %}</span></button>
-      </div>
-    </form>
-
-<div class="wrapper">
-
-{% if not page.object_list %}
-       <div class="big error padded center">Manque de pot, pas de résultats à cette recherche !</div>
-{% else %}
-
-{% if page.has_previous %}
-       <div class="previous-page cf">
-               <a class="button big left" href="?q={{ query }}&amp;page={{ page.previous_page_number }}{{ facets_qs }}">&laquo; Résultats précédénts</a>
-       </div>
-{% endif %}
-
-       <ul class="padded custom columns list">
-               {% for result in page.object_list %}
-               <li>{% soundfile_resume soundfile=result.object date=result.date %}</li>
-               {% endfor %}
-       </ul>
-
-{% if page.has_next %}
-       <div class="next-page cf">
-               <a class="button big right" href="?q={{ query }}&amp;page={{ page.next_page_number }}{{ facets_qs }}">Résultats suivants &raquo;</a>
-       </div>
-{% endif %}
-
-{% endif %}
-
-</div>
-
-{% endblock %}
diff --git a/panikweb_esperanzah/templates/news.html b/panikweb_esperanzah/templates/news.html
deleted file mode 100644 (file)
index 5e3ed5f..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-{% extends "base.html"%}
-{% load paniktags i18n %}
-{% block title %}{% trans 'News' %}{% endblock %}
-{% block toptitle %}
-<h1 class="top bg-title"><a href="{% url 'news' %}">{% trans 'News' %}</a>
- / <a class="dimmed" href="{% url 'agenda' %}">Agenda</a>
-</h1>
-{% endblock %}
-{% block nav %}
-       {% news_nav %}
-{% endblock %}
-{% block main %}
-
-<div class="detail marged news cf">
-       <div class="wrapper navigation">
-<p class="intro leftPart">
-Tous les jours, il s'en passe des choses que Panik fomente, fait résonner et
-vous fait savoir.
-</p>
-
-               <div class="leftPart">
-            <div class="news">
-                                   <h5 class="sectionLabel focus-title">{% trans 'Focus' %}</h5>
-
-                   {% with focus as news %}
-                           <ul class="custom columns cf padded">
-                           {% for content in news %}
-                                   <li class="newsitem">
-                                           {% news_inline klass="special"%}
-                                   </li>
-                           {% endfor %}
-                           </ul>
-                   {% endwith %}
-            </div>
-               </div>
-               <div class="rightPart">
-                               <div class="sub">
-                                       <h5 class="sectionLabel right">
-                        <a href="{% url 'newsArchives' %}">
-                                           <span class="iconLabel">Toutes</span>
-                                   </a>
-                    </h5>
-                                       <h5 class="sectionLabel">
-                            <span class="iconLabel">{% trans 'Latest News' %}</span>
-                            <a class="button icon-rss inBlock" href="{% url 'rss-feed' %}"></a>
-                    </h5>
-
-
-       <form action="{% url 'newsArchives' %}" id="search-form">
-               <input id="id_q" name="q" type="text" {% if search_query %}value="{{ search_query }}"{% endif %}>
-                <button class="icon-search"><span class="sr-only">{% trans "Search" %}</span></button>
-       </form>
-
-                                               <ul class="custom list newsList">
-                                               {% for content in news|slice:":20" %}
-                                                       <li class="{% if content == newsitem %}current{% endif %}">{% news_inline %}</li>
-                                               {% endfor %}
-                                               </ul>
-                               </div>
-               </div>
-       </div>
-</div>
-{% endblock %}
-{% block links %}
-<div class="wrapper">
-       <div class="padded ">
-               <ul class="news columns padded list custom">
-               {% for NewsItem in newsAll %}
-                       <li class="item ellipsis small  ">
-                       <a href="{% url 'newsitem-view' slug=NewsItem.slug %}">
-                               <span class="title"><strong>{{ NewsItem.date|date:"D d/M" }}</strong>&nbsp;-&nbsp;{{ NewsItem.title }}</span>
-                       </a>
-                       </li>
-               {% endfor %}
-               </ul>
-       </div>
-    </div>
-</div>
-{% endblock %}
index 677a43b933532adc8b65dd20f87f77b7e813ee04..0e6c2dcc2e19ff3815538e50d95e8f6dd75d9cb9 100644 (file)
@@ -1,40 +1,40 @@
-{% load thumbnail staticfiles %}
+{% load thumbnail static %}
 <div class="content content-inline {% if class != "special" %}inline{% endif %} cf {{ class }}">
-       <a class="block cf" href="{% url 'newsitem-view' slug=content.slug %}">
-               {% if class == "special" and content.category %}
-                       <div class="label labels absolute">
-                               <span class="item inBlock">{{ content.category.title }}</span>
-                       </div>
-               {% endif %}
+  <a class="block cf" href="{% url 'newsitem-view' slug=content.slug %}">
+    {% if class == "special" and content.category %}
+      <div class="label labels absolute">
+        <span class="item inBlock">{{ content.category.title }}</span>
+      </div>
+    {% endif %}
 
-               <div class="logo">
-               {% if class == "special" and content.image %}
-                       {% thumbnail content.image "480x320" crop="50% 25%" as im %}
-                       <img class="normal" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% elif content.image %}
-                       {% thumbnail content.image "60x60" crop="50% 25%" as im %}
-                       <img class="left" width="60" height="60" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% elif content.emission.image %}
-                       {% thumbnail content.emission.image "60x60" crop="50% 25%" as im %}
-                       <img class="left" width="60" height="60" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% else %}
-                       <img class="left" width="60" height="60" src="{% static "img/actu.png" %}"/>
-               {% endif %}
-               </div>
-               <div class="content">
-                       <h5 class="title">{{ content.title }}</h5>
-                       {% if class == "special" %}
-                       <div class="description">
-                               {{ content.text|safe|striptags|truncatewords:75}}
-                       </div>
-                       {% endif %}
-               </div>
-               {% if content.date %}
-                       <div class="smooth">Publiée le {{ content.date|date:"d/m/Y" }}</div>
-               {% endif %}
+    <div class="logo">
+      {% if class == "special" and content.image %}
+        {% thumbnail content.image "480x320" crop="50% 25%" as im %}
+          <img class="normal" src="{{im.url}}"/>
+        {% endthumbnail %}
+      {% elif content.image %}
+        {% thumbnail content.image "60x60" crop="50% 25%" as im %}
+          <img class="left" width="60" height="60" src="{{im.url}}"/>
+        {% endthumbnail %}
+      {% elif content.emission.image %}
+        {% thumbnail content.emission.image "60x60" crop="50% 25%" as im %}
+          <img class="left" width="60" height="60" src="{{im.url}}"/>
+        {% endthumbnail %}
+      {% else %}
+        <img class="left" width="60" height="60" src="{% static "img/actu.png" %}"/>
+      {% endif %}
+    </div>
+    <div class="content">
+      <h5 class="title">{{ content.title }}</h5>
+      {% if class == "special" %}
+        <div class="description">
+          {{ content.text|safe|striptags|truncatewords:75}}
+        </div>
+      {% endif %}
+    </div>
+    {% if content.date %}
+      <div class="smooth">Publiée le {{ content.date|date:"d/m/Y" }}</div>
+    {% endif %}
 
-       </a>
+  </a>
 </div>
index dde2a92e918c38833746381df76916d5e03d453d..1f29eaa1279ad08515dc6060be81f84dcb1c246f 100644 (file)
@@ -1,40 +1,40 @@
 {% load thumbnail i18n paniktags %}
 <div id="newsRoll">
-       <div class="newsRoll center cf">
-               <ul id="ticker" class="custom bigNews marged" style="height:300px;overflow:hidden;">
-                       {% for focus in news %}
-                               <li 
-                    id="newsRollId-{{ focus.id }}"
-                    class="">
-                                       <a 
-                   {% thumbnail focus.content_image "500x375" crop="50% 25%" as im %}
-                        style="max-width:100%;height:300px;background: no-repeat 50% 50% url('{{im.url}}');"
-                       {% endthumbnail %}
-                        class="block news relative"
-                       href="{{ focus|get_focus_url }}">
-                                               {% if focus.content_category_title %}
-                                                       <div class="label labels absolute">
-                                                               <span class="item inBlock">{{ focus.content_category_title }}</span>
-                                                       </div>  
-                                               {% endif %}
+  <div class="newsRoll center cf">
+    <ul id="ticker" class="custom bigNews marged" style="height:300px;overflow:hidden;">
+      {% for focus in news %}
+        <li
+          id="newsRollId-{{ focus.id }}"
+          class="">
+          <a
+            {% thumbnail focus.content_image "500x375" crop="50% 25%" as im %}
+              style="max-width:100%;height:300px;background: no-repeat 50% 50% url('{{im.url}}');"
+            {% endthumbnail %}
+            class="block news relative"
+            href="{{ focus|get_focus_url }}">
+            {% if focus.content_category_title %}
+              <div class="label labels absolute">
+                <span class="item inBlock">{{ focus.content_category_title }}</span>
+              </div>
+            {% endif %}
 
-                                               <div class="title"><div>{{ focus.focus_title }}</div></div>
-                                       </a>
-                               </li>
-                       {% endfor %}
-               </ul>
-        <div class="marged">
-                   <ul class="custom distributed by3 padded" id="roller">
-                           {% for focus in news %}
-                                   <li style="width:30%;" class="num-{{ forloop.counter }} padded">
-                                           <button class="inBlock" data-about="#newsRollId-{{ focus.id }}">
-                                                   {% thumbnail focus.content_image "160x120" crop="50% 25%" as im %}
-                                                   <img style="width:95%;" src="{{im.url}}" />
-                                                   {% endthumbnail %}
-                                           </button>
-                                   </li>
-                           {% endfor %}
-                   </ul>
-        </div>
-       </div>
+            <div class="title"><div>{{ focus.focus_title }}</div></div>
+          </a>
+        </li>
+      {% endfor %}
+    </ul>
+    <div class="marged">
+      <ul class="custom distributed by3 padded" id="roller">
+        {% for focus in news %}
+          <li style="width:30%;" class="num-{{ forloop.counter }} padded">
+            <button class="inBlock" data-about="#newsRollId-{{ focus.id }}">
+              {% thumbnail focus.content_image "160x120" crop="50% 25%" as im %}
+                <img style="width:95%;" src="{{im.url}}" />
+              {% endthumbnail %}
+            </button>
+          </li>
+        {% endfor %}
+      </ul>
+    </div>
+  </div>
 </div>
index 2c47b34071dc0a1d568ef4b8f36031cca6ab607d..0e0ac0a90e433dd966652da74d4dd837f40123a7 100644 (file)
@@ -3,10 +3,10 @@
 {% block title %}Newsletter{% endblock %}
 
 {% block main %}
-<div class="padded">
-  <p>
-    Et voilà, c'est fait.
- </p>
-</div>
+  <div class="padded">
+    <p>
+      Et voilà, c'est fait.
   </p>
+  </div>
 {% endblock %}
 
index 7bf9da901a4677970fb92b59b735bc040ee52fd3..1002a6d0918ab777bfce7e55cce29bd05c35717b 100644 (file)
@@ -3,16 +3,16 @@
 {% block title %}Newsletter{% endblock %}
 
 {% block main %}
-<div class="padded">
-  <form method="post" class="big center" id="subscribe-form">
-    <p>
-      Tous les lundis, l'actualité de Radio Panik.
-    </p>
+  <div class="padded">
+    <form method="post" class="big center" id="subscribe-form">
+      <p>
+        Tous les lundis, l'actualité de Radio Panik.
+      </p>
 
-    {% csrf_token %}
-    {{ form.as_table }}
-    <button>S'abonner</button>
-  </form>
-</div>
+      {% csrf_token %}
+      {{ form.as_table }}
+      <button>S'abonner</button>
+    </form>
+  </div>
 {% endblock %}
 
index 649a0a6ef0753191444cb7c558b5af418de48328..082d4b03f37ab9ba2dc653b3a6e4d9a558f6cbec 100644 (file)
@@ -3,11 +3,11 @@
 {% block title %}Newsletter{% endblock %}
 
 {% block main %}
-<div class="padded">
-  <p>
-    Un courriel de confirmation vous a été envoyé; suivez l'adresse qui y
-   est contenue pour valider votre abonnement.
- </p>
-</div>
+  <div class="padded">
+    <p>
+      Un courriel de confirmation vous a été envoyé; suivez l'adresse qui y
+      est contenue pour valider votre abonnement.
   </p>
+  </div>
 {% endblock %}
 
index 61f046479bcc440f2e874b0ca8e10e71a0ad5c58..71a2270585180941628331d76ed9b64cde2474e6 100644 (file)
@@ -1,47 +1,47 @@
 {% extends "emissions.html" %}
-{% load paniktags staticfiles i18n thumbnail %}
+{% load paniktags static i18n thumbnail %}
 {% block bodyID %}Emissions{% endblock %}
 {% block title %}{{ emission.title }}{% endblock %}
 
 {% block toptitle %}
-<h1 class="top"><a href="{% url 'grid' %}">{% trans 'Program' %}</a></h1>
+  <h1 class="top"><a href="{% url 'grid' %}">{% trans 'Program' %}</a></h1>
 {% endblock %}
 {% block nav %}
-       {% emission_nav %}
+  {% emission_nav %}
 {% endblock %}
 {% block main %}
-<div class="wrapper navigation cf">
-       <div id="Emission-container" class="emission">
-               <header>
-                       <h3>{% trans 'Playlist' %} - {{date|date:'l d F Y'|lower}}</h3>
-               </header>
+  <div class="wrapper navigation cf">
+    <div id="Emission-container" class="emission">
+      <header>
+        <h3>{% trans 'Playlist' %} - {{date|date:'l d F Y'|lower}}</h3>
+      </header>
 
-               <table class="playlist">
-               {% for track in tracks %}
-               {% if track.filepath.track.title %}
-               <tr>
-                       <td class="tracktime">{{track.play_timestamp|date:'H:i'}}</td>
-                       <td class="tracktitle">{{track.filepath.track.title }}</td>
-                       <td class="trackartist">{{track.filepath.track.artist.name }}</td>
-               </tr>
-               {% endif %}
-               {% endfor %}
-               </table>
+      <table class="playlist">
+        {% for track in tracks %}
+          {% if track.filepath.track.title %}
+            <tr>
+              <td class="tracktime">{{track.play_timestamp|date:'H:i'}}</td>
+              <td class="tracktitle">{{track.filepath.track.title }}</td>
+              <td class="trackartist">{{track.filepath.track.artist.name }}</td>
+            </tr>
+          {% endif %}
+        {% endfor %}
+      </table>
 
-               {% if not tracks|length %}
-               <p>
-               {% if future %}Pas encore de playlist connue, à plus tard ?{% else %}Pas de playlist connue.{% endif %}
-               </p>
-               {% endif %}
+      {% if not tracks|length %}
+        <p>
+          {% if future %}Pas encore de playlist connue, à plus tard ?{% else %}Pas de playlist connue.{% endif %}
+        </p>
+      {% endif %}
 
-               <p class="playlist-disclaimer">
-                       N.B. Débordements d'émissions et autres manifestations
-                       radiophoniques spontanées peuvent amener cette liste à ne pas être
-                       totalement correcte.
-               </p>
+      <p class="playlist-disclaimer">
+        N.B. Débordements d'émissions et autres manifestations
+        radiophoniques spontanées peuvent amener cette liste à ne pas être
+        totalement correcte.
+      </p>
 
-       </div>
-</div>
+    </div>
+  </div>
 {% endblock %}
 
 {% block links %}
index 5b82b9f80b21662bed627a6593219ae26f5a1650..7f74683f6fe9f107a1f9df955352b636a70d81a2 100644 (file)
@@ -1,27 +1,27 @@
-{% load paniktags thumbnail staticfiles %}
+{% load paniktags thumbnail static %}
 {% if soundfile %}
-<div class="wrapper extra-soundfiles">
-       <div class="logo">
-               {% if soundfile.episode.image %}
-                       {% thumbnail soundfile.episode.image "60x60" crop="50% 25%" as im %}
-                       <img width="60" height="60" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% elif soundfile.episode.emission.image %}
-                       {% thumbnail soundfile.episode.emission.image "60x60" crop="50% 25%" as im %}
-                       <img width="60" height="60" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% else %}
-                       <img class="smooth"  style="width:60px;" src="{% static "img/emission.png" %}"/>
-               {% endif %}
-       </div>
-<ul class="padded custom list">
-<li>
-  <div class="soundfile-info"><strong>
-    <a href="{% url 'emission-view' slug=soundfile.episode.emission.slug%}">{{ soundfile.episode.emission.title }}</a> -
-    <a href="{% url 'episode-view' emission_slug=soundfile.episode.emission.slug slug=soundfile.episode.slug %}">{{ soundfile.episode.title }}</a></strong>
+  <div class="wrapper extra-soundfiles">
+    <div class="logo">
+      {% if soundfile.episode.image %}
+        {% thumbnail soundfile.episode.image "60x60" crop="50% 25%" as im %}
+          <img width="60" height="60" src="{{im.url}}"/>
+        {% endthumbnail %}
+      {% elif soundfile.episode.emission.image %}
+        {% thumbnail soundfile.episode.emission.image "60x60" crop="50% 25%" as im %}
+          <img width="60" height="60" src="{{im.url}}"/>
+        {% endthumbnail %}
+      {% else %}
+        <img class="smooth"  style="width:60px;" src="{% static "img/emission.png" %}"/>
+      {% endif %}
+    </div>
+    <ul class="padded custom list">
+      <li>
+        <div class="soundfile-info"><strong>
+          <a href="{% url 'emission-view' slug=soundfile.episode.emission.slug%}">{{ soundfile.episode.emission.title }}</a> -
+          <a href="{% url 'episode-view' emission_slug=soundfile.episode.emission.slug slug=soundfile.episode.slug %}">{{ soundfile.episode.title }}</a></strong>
           {% if soundfile.fragment %}<span> - {{ soundfile.title }}</span>{% endif %}
+        </div>
+        {% audio sound=soundfile %}</li>
+    </ul>
   </div>
-  {% audio sound=soundfile %}</li>
-</ul>
-</div>
 {% endif %}
index 3cb5d91e7bc1cc873b0e06be029b74a029d3c391..dfe244d3c47d1a787c9cae6e039e3eaf09a2daff 100644 (file)
@@ -1,31 +1,31 @@
-{% load paniktags thumbnail staticfiles %}
+{% load paniktags thumbnail static %}
 {% if episode %}
-<div class="wrapper extra-soundfiles">
-       <div class="logo">
-               {% if episode.image %}
-                       {% thumbnail episode.image "60x60" crop="50% 25%" as im %}
-                       <img width="60" height="60" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% elif episode.emission.image %}
-                       {% thumbnail episode.emission.image "60x60" crop="50% 25%" as im %}
-                       <img width="60" height="60" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% else %}
-                       <img class="smooth"  style="width:60px;" src="{% static "img/emission.png" %}"/>
-               {% endif %}
-       </div>
-<ul class="padded custom list">
-<li>
-  <div class="soundfile-info"><strong>
-    <a href="{% url 'emission-view' slug=episode.emission.slug%}">{{ episode.emission.title }}</a> -
-    <a href="{% url 'episode-view' emission_slug=episode.emission.slug slug=episode.slug %}">{{ episode.title }}</a></strong>
+  <div class="wrapper extra-soundfiles">
+    <div class="logo">
+      {% if episode.image %}
+        {% thumbnail episode.image "60x60" crop="50% 25%" as im %}
+          <img width="60" height="60" src="{{im.url}}"/>
+        {% endthumbnail %}
+      {% elif episode.emission.image %}
+        {% thumbnail episode.emission.image "60x60" crop="50% 25%" as im %}
+          <img width="60" height="60" src="{{im.url}}"/>
+        {% endthumbnail %}
+      {% else %}
+        <img class="smooth"  style="width:60px;" src="{% static "img/emission.png" %}"/>
+      {% endif %}
+    </div>
+    <ul class="padded custom list">
+      <li>
+        <div class="soundfile-info"><strong>
+          <a href="{% url 'emission-view' slug=episode.emission.slug%}">{{ episode.emission.title }}</a> -
+          <a href="{% url 'episode-view' emission_slug=episode.emission.slug slug=episode.slug %}">{{ episode.title }}</a></strong>
           {% if soundfile.fragment %}<span> - {{ soundfile.title }}</span>{% endif %}
+        </div>
+        {% for diffusion in episode.diffusions %}
+          <span class="date">→ {{ diffusion.datetime|date:"l d M Y à H:i" }}</span>
+        {% endfor %}
+        {% if soundfile %}{% audio sound=soundfile %}{% endif %}
+      </li>
+    </ul>
   </div>
-  {% for diffusion in episode.diffusions %}
-  <span class="date">→ {{ diffusion.datetime|date:"l d M Y à H:i" }}</span>
-  {% endfor %}
-  {% if soundfile %}{% audio sound=soundfile %}{% endif %}
-</li>
-</ul>
-</div>
 {% endif %}
index 7f14f6ed5d403470a5ffbcb32b723944216c562f..290b84b2208ee9d17dec639ad5c0e774b8299f3e 100644 (file)
@@ -1,20 +1,20 @@
-{% load paniktags thumbnail staticfiles %}
+{% load paniktags thumbnail static %}
 {% if title and episodes %}<h3>{{title}}</h3>{% endif %}
 {% for episode in episodes %}
-{% if episode.creation_timestamp|date:"Y" == "2019" %}
-       <div class="emission-tile">
-                <a href="{% url 'episode-view' emission_slug=episode.emission.slug slug=episode.slug %}">
-               <div class="image">
-                        <div class="img">
-                       {% thumbnail episode.image "240x240" crop="50% 50%" as im %}
-                        <img loading="lazy" src="{{im.url}}">
-                        {% empty %}
-                        <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8nez3HwAGugKtHMIYIwAAAABJRU5ErkJggg==" height="240" width="240">
-                       {% endthumbnail %}
-                        </div>
-               </div>
-                </a>
-               <div class="name"><span>{{episode.title}}</span></div>
-       </div>
-{% endif %}
+  {% if episode.creation_timestamp|date:"Y" == "2019" %}
+    <div class="emission-tile">
+      <a href="{% url 'episode-view' emission_slug=episode.emission.slug slug=episode.slug %}">
+        <div class="image">
+          <div class="img">
+            {% thumbnail episode.image "240x240" crop="50% 50%" as im %}
+              <img loading="lazy" src="{{im.url}}">
+            {% empty %}
+              <img class="empty" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8nez3HwAGugKtHMIYIwAAAABJRU5ErkJggg==" height="240" width="240">
+            {% endthumbnail %}
+          </div>
+        </div>
+      </a>
+      <div class="name"><span>{{episode.title}}</span></div>
+    </div>
+  {% endif %}
 {% endfor %}
index d9ffe248b796add4a4cc96516bffb77b2f4970fb..582965a76fd8fe98ea43acc6d9f79dcb50c28180 100644 (file)
@@ -1,36 +1,36 @@
 {% load thumbnail %}
 {% if cell.topik %}
-<div class="topikcellcontent topik-{{cell.slug}}">
-<a class="block cf" href="{{cell.topik.page.get_online_url}}">
-<span class="logo">
-{% if cell.slug == "large" %}
-{% thumbnail cell.topik.image "800x450" crop="50% 25%" as im %}
-<div class="logo">
-<img class="normal" src="{{im.url}}"/>
-</div>
-{% endthumbnail %}
-{% else %}
-{% thumbnail cell.topik.image "480x320" crop="50% 25%" as im %}
-<div class="logo">
-<img class="normal" src="{{im.url}}"/>
-</div>
-{% endthumbnail %}
-{% endif %}
-</span>
-<div>
-  {% if cell.slug == "large" %}
-  <h2>{{cell.topik.page.title}}</h2>
-  {% else %}
-  <h5>{{cell.topik.page.title}}</h5>
-  {% endif %}
-  <div class="description">
-  {% if cell.slug == "large" %}
-    {{cell.text|safe}}
-  {% else %}
-    {{cell.text|safe|striptags|truncatewords:75}}
-  {% endif %}
+  <div class="topikcellcontent topik-{{cell.slug}}">
+    <a class="block cf" href="{{cell.topik.page.get_online_url}}">
+      <span class="logo">
+        {% if cell.slug == "large" %}
+          {% thumbnail cell.topik.image "800x450" crop="50% 25%" as im %}
+            <div class="logo">
+              <img class="normal" src="{{im.url}}"/>
+            </div>
+          {% endthumbnail %}
+        {% else %}
+          {% thumbnail cell.topik.image "480x320" crop="50% 25%" as im %}
+            <div class="logo">
+              <img class="normal" src="{{im.url}}"/>
+            </div>
+          {% endthumbnail %}
+        {% endif %}
+      </span>
+      <div>
+        {% if cell.slug == "large" %}
+          <h2>{{cell.topik.page.title}}</h2>
+        {% else %}
+          <h5>{{cell.topik.page.title}}</h5>
+        {% endif %}
+        <div class="description">
+          {% if cell.slug == "large" %}
+            {{cell.text|safe}}
+          {% else %}
+            {{cell.text|safe|striptags|truncatewords:75}}
+          {% endif %}
+        </div>
+      </div>
+    </a>
   </div>
-</div>
-</a>
-</div>
 {% endif %}
diff --git a/panikweb_esperanzah/templates/search/search.html b/panikweb_esperanzah/templates/search/search.html
deleted file mode 100644 (file)
index 72475d4..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-{% extends 'panikdb/base.html' %}
-{% load paniktags highlight i18n %}
-{% block bodyID %}Search{% endblock %}
-{% block title %}Recherche{% endblock %}
-{% block nav %}        
-<div class="mainSub">
-    <div class="wrapper">
-        <nav>
-        <form method="get" action="." class="big marged" id="search-form">
-                {{ form.as_table }}
-                <button class="icon-search"><span class="sr-only">{% trans "Search" %}</span></button>
-        </form>
-        </nav>
-    </div>
-</div>
-<div class="wrapper">
-    <div class="search-filters">
-       {% if query or selected_tags %}
-               <nav class="">
-                   {% if facets.fields.categories %}
-                   <ul class="custom padded">
-                               <li><span class="mainLabel">Genre :</span></li>
-                     {# Provide only the top 5 categories #}
-                               {% for category in facets.fields.categories|slice:":5" %}
-                               <li>
-                                         {% if category.0 in selected_categories %}
-                                               <a class="check icon-check" href="{{ request.get_full_path|remove_category_facet:category.0 }}">
-                                                       {{ category.0 }} <span class="smooth">| {{ category.1 }}</span>
-                                               </a>
-                                         {% else %}
-                                               <a class="check icon-check-empty" href="{{ request.get_full_path|append_category_facet:category.0 }}"
-                            >{{ category.0 }} <span class="smooth">| {{ category.1 }}</span></a></span>
-                                         {% endif %}
-                               </li>
-                               {% endfor %}
-                   </ul>
-                   {% endif %}
-               </nav>
-               <nav>
-                   {% if facets.fields.tags %}
-                   <ul class="tag-facets custom padded">
-                               <li><span class="mainLabel">Mots-clés :</span></li>
-                     {# Provide only the top 5 tags #}
-                       {% for tag in facets.fields.tags|slice:":20" %}
-                       <li>
-                         {% if tag.0 in selected_tags %}
-                               <a class="check icon-check" href="{{ request.get_full_path|remove_tag_facet:tag.0 }}">
-                                       {{ tag.0 }} <span class="smooth">| {{ tag.1 }}</span>
-                               </a> 
-                         {% else %}
-                               <a class="check icon-check-empty" href="{{ request.get_full_path|append_tag_facet:tag.0 }}">{{ tag.0 }} <span class="smooth">| {{ tag.1 }}</span></a>
-                         {% endif %}
-                       </li>
-                       {% endfor %}
-                   </ul>
-                   {% endif %}
-
-               </nav>
-       {% endif %}
-    </div>
-</div>
-{% endblock %}
-
-
-{% block main %}
-       {% if query or selected_tags %}
-<div class="wrapper">
-       <div class="marged">
-               {% if not page.object_list %}
-                       <div class="big error center">Manque de pot, pas de résultats à cette recherche !</div>
-               {% endif %}
-               {% if page.has_previous %}
-                       <div class="previous-page cf">
-                               <a class="button big left" href="?q={{ query }}&amp;page={{ page.previous_page_number }}{{ facets_qs }}">&laquo; Résultats précédénts</a>
-                       </div>
-               {% endif %}
-
-               <ul id="search-results" class="custom list columns cf padded">
-
-
-               {% for result in page.object_list %}
-                               {% if result.object.title %}
-                       <li class="ellipsis">
-                                       {% search_result_template result %}
-                       </li>
-                               {% endif %}
-               {% endfor %}
-
-
-               </ul>
-               {% if page.has_next %}
-                       <div class="next-page cf">
-                               <a class="button big right" href="?q={{ query }}&amp;page={{ page.next_page_number }}{{ facets_qs }}">Résultats suivants &raquo;</a>
-                       </div>
-               {% endif %}
-       </div>
-</div>
-       {% endif %}
-{% endblock %}
index d19b29cf6919152fe4844651c46dfe871234a34c..e21bd2dae53591d47a3c7c0dda637bdb0cb7f7e0 100644 (file)
@@ -6,32 +6,32 @@
 
 {% block main %}
 
-<div class="wrapper extra-soundfiles soundcell">
-       <div class="logo">
-               {% if episode.image %}
-                       {% thumbnail episode.image "100x100" crop="50% 25%" as im %}
-                       <img width="100" height="100" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% elif episode.emission.image %}
-                       {% thumbnail episode.emission.image "100x100" crop="50% 25%" as im %}
-                       <img width="100" height="100" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% else %}
-                       <img class="smooth"  style="width:100px;" src="{% static "img/emission.png" %}"/>
-               {% endif %}
-       </div>
-<ul class="custom">
-<li>
-  <div class="soundfile-info"><strong>
-     <a target="_parent" href="{{site_url}}">Radio Esperanzah!</a> -
-    <a target="_parent" href="{% url 'emission-view' slug=episode.emission.slug%}">{{ episode.emission.title }}</a> -
-    <a target="_parent" href="{% url 'episode-view' emission_slug=episode.emission.slug slug=episode.slug %}">{{ episode.title }}</a>
-    {% if object.fragment and object.title %}<span class="fragment-title">- {{ object.title }}</span>{% endif %}
-          </strong>
+  <div class="wrapper extra-soundfiles soundcell">
+    <div class="logo">
+      {% if episode.image %}
+        {% thumbnail episode.image "100x100" crop="50% 25%" as im %}
+          <img width="100" height="100" src="{{im.url}}"/>
+        {% endthumbnail %}
+      {% elif episode.emission.image %}
+        {% thumbnail episode.emission.image "100x100" crop="50% 25%" as im %}
+          <img width="100" height="100" src="{{im.url}}"/>
+        {% endthumbnail %}
+      {% else %}
+        <img class="smooth"  style="width:100px;" src="{% static "img/emission.png" %}"/>
+      {% endif %}
+    </div>
+    <ul class="custom">
+      <li>
+        <div class="soundfile-info"><strong>
+          <a target="_parent" href="{{site_url}}">Radio Esperanzah!</a> -
+          <a target="_parent" href="{% url 'emission-view' slug=episode.emission.slug%}">{{ episode.emission.title }}</a> -
+          <a target="_parent" href="{% url 'episode-view' emission_slug=episode.emission.slug slug=episode.slug %}">{{ episode.title }}</a>
+          {% if object.fragment and object.title %}<span class="fragment-title">- {{ object.title }}</span>{% endif %}
+        </strong>
+        </div>
+        {% audio sound=object embed=True %}
+      </li>
+    </ul>
   </div>
-  {% audio sound=object embed=True %}
-</li>
-</ul>
-</div>
 {% endblock %}
 
index 585317dc119a050a34cc2576d19dbd245b0f8706..90cfba85803224db5a2137965bcd4886b39cd763 100644 (file)
@@ -1,49 +1,49 @@
-{% load thumbnail paniktags staticfiles %}
+{% load thumbnail paniktags static %}
 <div class="episode soundfile inline cf">
-       <div class="logo">
-               {% if soundfile.episode.image %}
-                       {% thumbnail soundfile.episode.image "60x60" crop="50% 25%" as im %}
-                       <img width="60" height="60" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% elif soundfile.episode.emission.image %}
-                       {% thumbnail soundfile.episode.emission.image "60x60" crop="50% 25%" as im %}
-                       <img width="60" height="60" src="{{im.url}}"/>
-                       {% endthumbnail %}
-               {% else %}
-                       <img width="60" height="60" src="{% static "img/sound.png" %}"/>
-               {% endif %}
-               <p class="date">
-               {{date|date:"d/m/y"}}
-               </p>
+  <div class="logo">
+    {% if soundfile.episode.image %}
+      {% thumbnail soundfile.episode.image "60x60" crop="50% 25%" as im %}
+        <img width="60" height="60" src="{{im.url}}"/>
+      {% endthumbnail %}
+    {% elif soundfile.episode.emission.image %}
+      {% thumbnail soundfile.episode.emission.image "60x60" crop="50% 25%" as im %}
+        <img width="60" height="60" src="{{im.url}}"/>
+      {% endthumbnail %}
+    {% else %}
+      <img width="60" height="60" src="{% static "img/sound.png" %}"/>
+    {% endif %}
+    <p class="date">
+      {{date|date:"d/m/y"}}
+    </p>
 
-       </div>
-       <div class="content">
-               <div class="sound right">{% audio sound=soundfile %}</div>
-               <div class="title">
-                       {% if soundfile.fragment %}
-                       <h5 class="title">
-                               <a href="{% url 'episode-view' emission_slug=soundfile.episode.emission.slug slug=soundfile.episode.slug %}">{{ soundfile.title }}</a>
-                       </h5>
-                       {% endif %}
-                       <h5 class="title {% if model == "inline" %}ellipsis{% endif %}">
-                               <a href="{% url 'episode-view' emission_slug=soundfile.episode.emission.slug slug=soundfile.episode.slug %}">{{ soundfile.episode.title }}</a>
-                       </h5>
-                       <div class="smooth metas">
-                               {% if soundfile.format %}
-                                       <span class="categories">
-                                       <span class="category">{{ soundfile.format.title }}</span>
-                                       </span>
-                               {% endif %}
-                               <h5 class="title inBlock">
-                                       <a href="{% url 'emission-view' slug=soundfile.episode.emission.slug %}">{{ soundfile.episode.emission.title }}</a>
-                               </h5>
-                       </div>
-               </div>
+  </div>
+  <div class="content">
+    <div class="sound right">{% audio sound=soundfile %}</div>
+    <div class="title">
+      {% if soundfile.fragment %}
+        <h5 class="title">
+          <a href="{% url 'episode-view' emission_slug=soundfile.episode.emission.slug slug=soundfile.episode.slug %}">{{ soundfile.title }}</a>
+        </h5>
+      {% endif %}
+      <h5 class="title {% if model == "inline" %}ellipsis{% endif %}">
+        <a href="{% url 'episode-view' emission_slug=soundfile.episode.emission.slug slug=soundfile.episode.slug %}">{{ soundfile.episode.title }}</a>
+      </h5>
+      <div class="smooth metas">
+        {% if soundfile.format %}
+          <span class="categories">
+            <span class="category">{{ soundfile.format.title }}</span>
+          </span>
+        {% endif %}
+        <h5 class="title inBlock">
+          <a href="{% url 'emission-view' slug=soundfile.episode.emission.slug %}">{{ soundfile.episode.emission.title }}</a>
+        </h5>
+      </div>
+    </div>
 
-               {% if soundfile.episode.subtitle %}
-               <div class="description ellipsis">
-                       {{ soundfile.episode.subtitle|truncatewords:20}}
-               </div>
-               {% endif %}
-       </div>
+    {% if soundfile.episode.subtitle %}
+      <div class="description ellipsis">
+        {{ soundfile.episode.subtitle|truncatewords:20}}
+      </div>
+    {% endif %}
+  </div>
 </div>
index fcbdda3e2e0671a539402d04efb0e0336b84ccd2..a7eab5945c5d7149cf0423c95b3116a72b16999f 100644 (file)
@@ -1,11 +1,13 @@
-from django.conf.urls import url
+from django.urls import path, re_path
 from django.views.generic import RedirectView
 
 from . import views
 
 urlpatterns = [
-    url(r'^$', views.home, name='home'),
-    url(r'^emissions/(?P<slug>[\w,-]+)/$', views.emission, name='emission-view'),
-    url(r'^archives/$', views.archives, name='espe-archives'),
-    url(r'^actus/.*', RedirectView.as_view(pattern_name='home')),
+    path('', views.home, name='home'),
+    path('emissions/', RedirectView.as_view(pattern_name='home')),
+    re_path(r'^emissions/(?P<slug>[\w,-]+)/$', views.emission, name='emission-view'),
+    path('archives/', views.archives, name='espe-archives'),
+    re_path(r'^actus/.*', RedirectView.as_view(pattern_name='home')),
+    re_path(r'^onair.json$', views.onair),
 ]
index a197228b643ea575863dade56ea33351eff8b375..666c21d2d4b718b36ead654ca7c1603ade752dd1 100644 (file)
@@ -1,18 +1,19 @@
 import datetime
+import os
 
+import panikweb.views
 from combo.data.models import Page
-from django.http import HttpResponseRedirect
+from django.conf import settings
+from django.http import HttpResponseRedirect, JsonResponse
 from django.urls import reverse
 from django.views.generic.base import TemplateView
 from emissions.models import Diffusion, Emission, Episode, NewsItem
 
-import panikweb.views
-
 
 class Home(panikweb.views.Home):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
-        context['emissions'] = list(Emission.objects.filter(archived=False).order_by('title'))
+        context['emissions'] = list(Emission.objects.filter(archived=False).order_by('creation_timestamp'))
         # force detour-vers-le-futur to go first
         detour = [x for x in context['emissions'] if x.slug == 'detour-vers-le-futur']
         context['emissions'] = detour + [x for x in context['emissions'] if x.slug != 'detour-vers-le-futur']
@@ -21,7 +22,11 @@ class Home(panikweb.views.Home):
             .exclude(expiration_date__lt=datetime.date.today())
             .order_by('-date')[:3]
         )
-        context['extra_pages'] = Page.objects.filter(exclude_from_navigation=False)
+        extra_pages = Page.objects.filter(exclude_from_navigation=False)
+        context['extra_pages_start'] = [
+            x for x in extra_pages if x.extra_variables.get('position') == 'start'
+        ]
+        context['extra_pages_end'] = [x for x in extra_pages if x.extra_variables.get('position') != 'start']
         return context
 
     def get(request, *args, **kwargs):
@@ -41,7 +46,7 @@ class EmissionDetailView(panikweb.views.EmissionDetailView):
         if emission.archived:
             current_year = emission.creation_timestamp.replace(month=5, day=1)
         else:
-            current_year = datetime.datetime.now().replace(month=5, day=1).replace(year=2021)
+            current_year = datetime.datetime.now().replace(month=5, day=1).replace(year=2023)
 
         episodes_queryset = Episode.objects.select_related()
         if episode_ids is not None:
@@ -80,9 +85,25 @@ class ArchivesView(TemplateView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context['diffusions'] = (
-            Diffusion.objects.filter(episode__soundfile__isnull=False).distinct().order_by('-datetime')
+            Diffusion.objects.filter(episode__soundfile__isnull=False)
+            .distinct()
+            .order_by('-datetime')
+            .select_related('episode', 'episode__emission')
         )
         return context
 
 
 archives = ArchivesView.as_view()
+
+
+def onair(request):
+    if datetime.date.today() >= datetime.date(2023, 8, 1):
+        return JsonResponse({'data': {'emission': {'title': 'Découvrez les podcasts !', 'url': '/'}}})
+
+    playing_txt = os.path.join(settings.MEDIA_ROOT, 'playing.txt')
+    if os.path.exists(playing_txt):
+        track_title = open(playing_txt).read().strip()
+        if len(track_title) > 4 and 'jingle' not in track_title.lower():
+            return JsonResponse({'data': {'emission': {'title': track_title, 'url': '/'}}})
+
+    return JsonResponse({'data': {'emission': {'title': 'Écoutez la radio !', 'url': '/'}}})