Actus et listes de clubs plus jolies et fonctionnelles, calendriers (beta)

This commit is contained in:
Evarin 2017-08-22 00:58:18 +02:00
parent 53658589f8
commit 09e63bf00c
9 changed files with 230 additions and 18 deletions

View file

@ -109,7 +109,44 @@ class COFActuEventPage(Page):
subpage_types = []
parent_page_types = ['COFActuIndexPage']
@property
def dates(self):
if self.date_end:
if self.date_end.date() == self.date_start.date():
if self.all_day:
return self.date_start.strftime("le %A %w %B %Y")
else:
return "le %s à %s" % \
(self.date_start.strftime("%A %w %B %Y de %Hh%M"),
self.date_end.strftime("%Hh%M"))
else:
tmpl = "%A %w %B %Y"
diff_i = len(tmpl)
if self.date_end.year != self.date_start.year:
diff_i = len(tmpl)
elif self.date_end.month != self.date_start.month:
diff_i = len(tmpl) - 3
elif self.date_end.day != self.date_start.day:
diff_i = len(tmpl) - 6
common = tmpl[diff_i:]
diff = tmpl[:diff_i]
if self.all_day:
return "du %s au %s %s" % (self.date_start.strftime(diff),
self.date_end.strftime(diff),
self.date_end.strftime(common))
else:
return "du %s %s %s au %s %s" % \
(self.date_start.strftime(diff),
self.date_start.strftime(common),
self.date_start.strftime("%Hh%M"),
self.date_end.strftime(diff),
self.date_end.strftime("%Hh%M"))
else:
if self.all_day:
return self.date_start.strftime("le %A %w %B %Y")
else:
return self.date_start.strftime("le %A %w %B %Y à %Hh%M")
class Meta:
verbose_name = "Actu liée à un évènement"
verbose_name_plural = "Actus liées à des évènements"

View file

@ -70,7 +70,7 @@ article, aside, details, figcaption, figure, footer, header, hgroup, main, menu,
/* line 12, ../sass/screen.scss */
*, *:after, *:before {
box-sizing: content-box;
box-sizing: border-box;
}
/* line 16, ../sass/screen.scss */
@ -189,23 +189,82 @@ header nav ul li > *:hover {
.container .content section article + h2 {
margin-top: 15px;
}
/* line 125, ../sass/screen.scss */
.container .content section.directory article.entry {
width: 80%;
max-width: 600px;
max-height: 100%;
position: relative;
padding-right: 120px;
}
/* line 132, ../sass/screen.scss */
.container .content section.directory article.entry .entry-image {
display: block;
position: absolute;
width: 150px;
background: #fff;
box-shadow: -4px 4px 1px rgba(0, 0, 0, 0.2);
padding: 1px;
overflow: hidden;
right: 100px;
transform: translateX(90%);
top: -15px;
}
/* line 144, ../sass/screen.scss */
.container .content section.directory article.entry .entry-image img {
width: auto;
height: auto;
max-width: 100%;
max-height: 100%;
}
/* line 155, ../sass/screen.scss */
.container .content section.actuhome article.actu {
background: none;
box-shadow: none;
max-width: 400px;
}
/* line 160, ../sass/screen.scss */
.container .content section.actuhome article.actu .actu-header {
position: relative;
box-shadow: -4px 5px 1px rgba(0, 0, 0, 0.3);
padding: 0;
margin: 0;
overflow: hidden;
}
/* line 167, ../sass/screen.scss */
.container .content section.actuhome article.actu .actu-header img {
position: absolute;
top: 0;
left: 0;
min-height: 100%;
min-width: 100%;
height: auto;
width: auto;
z-index: -1;
}
/* line 177, ../sass/screen.scss */
.container .content section.actuhome article.actu .actu-header h2 {
width: 100%;
height: 100%;
padding-top: 150px;
}
/* line 128, ../sass/screen.scss */
/* line 194, ../sass/screen.scss */
.calendar td, .calendar th {
text-align: center;
vertical-align: center;
border: 2px solid transparent;
padding: 1px;
}
/* line 135, ../sass/screen.scss */
/* line 201, ../sass/screen.scss */
.calendar th {
font-weight: bold;
}
/* line 140, ../sass/screen.scss */
/* line 206, ../sass/screen.scss */
.calendar td.out {
opacity: 0.3;
}
/* line 143, ../sass/screen.scss */
/* line 209, ../sass/screen.scss */
.calendar td.today {
border-bottom-color: #000;
}

View file

@ -0,0 +1,13 @@
$(function() {
$(".facteur").on("click", function(){
var $this = $(this);
var sticker = $this.attr('data-mref')
.replace('pont', '.')
.replace('arbre', '@')
.replace(/(.)-/g, '$1');
var boite = $("<a>", {href:"ma"+"il"+"to:"+sticker}).text(sticker);
$(this).before(boite)
.remove();
})
});

View file

@ -10,7 +10,7 @@
@import "_colors";
*, *:after, *:before {
box-sizing: content-box;
box-sizing: border-box;
}
body {
@ -120,6 +120,72 @@ header {
article + h2 {
margin-top: 15px;
}
&.directory {
article.entry {
width: 80%;
max-width: 600px;
max-height: 100%;
position: relative;
padding-right: 120px;
.entry-image {
display: block;
position: absolute;
width: 150px;
background: #fff;
box-shadow: -4px 4px 1px rgba(#000, 0.2);
padding: 1px;
overflow: hidden;
right: 100px;
transform: translateX(90%);
top: -15px;
img {
width: auto;
height: auto;
max-width: 100%;
max-height: 100%;
}
}
}
}
&.actuhome {
article.actu {
background: none;
box-shadow: none;
max-width: 400px;
.actu-header {
position: relative;
box-shadow: -4px 5px 1px rgba(#000, 0.3);
padding: 0;
margin: 0;
overflow: hidden;
img {
position: absolute;
top: 0;
left: 0;
min-height: 100%;
min-width: 100%;
height: auto;
width: auto;
z-index: -1;
}
h2 {
width: 100%;
height: 100%;
padding-top: 150px;
}
}
.actu-misc {
}
}
}
}
}
}

View file

@ -6,6 +6,7 @@
<meta charset="utf-8">
<title>{% block title %}Association des élèves de l'ENS Ulm{% endblock %}</title>
<link rel="stylesheet" type="text/css" href="{% static "cofcms/css/screen.css" %}"/>
{% block extra_head %}{% endblock %}
</head>
<body>

View file

@ -1,6 +1,11 @@
{% extends "cofcms/base_aside.html" %}
{% load wagtailimages_tags cofcms_tags %}
{% load wagtailimages_tags cofcms_tags static %}
{% block extra_head %}
{{ block.super }}
<script src="{% static "js/jquery.min.js" %}"></script>
<script src="{% static "cofcms/js/script.js" %}"></script>
{% endblock %}
{% block aside %}
<h2>Accès rapide</h2>
<ul>
@ -19,10 +24,10 @@
<section class="directory">
{% for entry in page.entries %}
<article class="entry" id="{{ entry.slug }}">
<h2>{{ entry.title }}</h2>
{% if entry.image %}
{% image entry.image width-400 class="entry-img" %}
<div class="entry-image">{% image entry.image width-150 class="entry-img" %}</div>
{% endif %}
<h2>{{ entry.title }}</h2>
<div class="desc">{{ entry.body|safe }}</div>
{% if entry.links %}
<ul class="links">
@ -31,7 +36,7 @@
{% if block.block_type == "lien" %}
<a href="{{ block.value.url }}">{{ block.value.texte }}</a>
{% else %}
{{ block.value.texte }} : <button data-mref="{{ block.value.email|obfuscate_mail }}" class="mail-contact">Afficher l'adresse mail</a>
{{ block.value.texte }} : <button data-mref="{{ block.value.email|obfuscate_mail }}" class="facteur">Afficher l'adresse mail</a>
{% endif %}
</li>
{% endfor %}

View file

@ -13,14 +13,19 @@
<section class="actuhome">
{% for actu in page.actus %}
{% if actu.is_event %}
<article class="actu">
<h2>{{ actu.title }}</h2>
<article class="actu">
<div class="actu-header">
{% if actu.image %}
{% image actu.image fill-400x200 class="actu-img" %}
{% endif %}
</article>
{% endif %}
<h2>{{ actu.title }}</h2>
</div>
{% if actu.is_event %}
<div class="actu-misc">
<span class="actu-minical">{% mini_calendar actu %}</span>{{ actu.dates }}
</div>
{% endif %}
</article>
{% endfor %}
</section>
{% endblock %}

View file

@ -0,0 +1,11 @@
<table class="calendar mini">
<tbody>
<tr>
{% for day in days %}
<td class="{{ day.hasevent|yesno:"hasevent ," }}{{ day.today|yesno:"today," }}">
{{ day.day }}
</td>
{% endfor %}
</tr>
</tbody>
</table>

View file

@ -11,7 +11,7 @@ register = template.Library()
@register.filter()
def obfuscate_mail(value):
val = value.replace('', '/').replace('@', 'arbse').replace('.', 'pnt')
val = value.replace('', '-').replace('@', 'arbre').replace('.', 'pont')[1:]
return val
@register.inclusion_tag("cofcms/calendar.html")
@ -20,7 +20,7 @@ def calendar():
month_start = date(now.year, now.month, 1)
next_month = month_start + timedelta(days=32)
next_month = date(next_month.year, next_month.month, 1)
month_prestart = month_start - timedelta(days=(month_start.weekday()+7)%7)
month_prestart = month_start - timedelta(days=month_start.weekday())
month_postend = next_month + timedelta(days=(next_month.weekday()+6)%7)
events = COFActuEventPage.objects.live()\
.filter(date_start__range=[month_prestart,
@ -51,3 +51,18 @@ def calendar():
curday += deltaday
weeks.append(week)
return {"events": events, "weeks": weeks}
@register.inclusion_tag("cofcms/mini_calendar.html")
def mini_calendar(event):
days = []
today = timezone.now().date()
date_start = event.date_start.date()
date_end = event.date_end.date() if event.date_end else date_start
week_start = date_start - timedelta(days=date_start.weekday())
curday = week_start
for i in range(7):
days.append({'day': curday.day,
'hasevent': curday >= date_start and curday <= date_end,
'today': curday == today})
curday += timedelta(days=1)
return {"days": days}