@@ -69,7 +69,7 @@ def main(global_config, **settings): | |||||
config.add_route('action_salle', '/Salles/{action:(\w+)}/{salle_id:(\d+)}') | config.add_route('action_salle', '/Salles/{action:(\w+)}/{salle_id:(\d+)}') | ||||
# HTML Routes - Public | # HTML Routes - Public | ||||
config.add_route('home', '/') | |||||
config.add_route('home', '/{year:(\d+/)?}') | |||||
config.add_route('presse', '/{year:\d+}/dossier-de-presse') | config.add_route('presse', '/{year:\d+}/dossier-de-presse') | ||||
config.add_route('edit_presse', '/{year:\d+}/dossier-de-presse/edit') | config.add_route('edit_presse', '/{year:\d+}/dossier-de-presse/edit') | ||||
config.add_route('programme', '/{year:\d+}/le-programme') | config.add_route('programme', '/{year:\d+}/le-programme') | ||||
@@ -4,7 +4,7 @@ | |||||
<script> | <script> | ||||
var timeline = new VMM.Timeline("timeline", '95%', '500px'); | var timeline = new VMM.Timeline("timeline", '95%', '500px'); | ||||
var c = {language:{ lang:"fr",api:{wikipedia:"fr"},date:{month:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],month_abbr:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","dec."],day:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],day_abbr:["Dim.","Lu.","Ma.","Me.","Jeu.","Vend.","Sam."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm yyyy",time_short:"HH:MM:SS",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'<br/><small>'d mmmm yyyy'</small>'",full_long:"dddd',' d mmm yyyy 'à' HH:MM",full_long_small_date:"HH:MM'<br/><small>'dddd',' d mmm yyyy'</small>'"},messages:{loading_timeline:"Chargement de la frise en cours... ",return_to_title:"Retour à la page d'accueil",expand_timeline:"Elargir la frise",contract_timeline:"Réduire la frise",wikipedia:"Extrait de Wikipedia, l'encyclopédie libre",loading_content:"Chargement",loading:"Chargement",swipe_nav:"Swipe to Navigate"}}}; | var c = {language:{ lang:"fr",api:{wikipedia:"fr"},date:{month:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],month_abbr:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","dec."],day:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],day_abbr:["Dim.","Lu.","Ma.","Me.","Jeu.","Vend.","Sam."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm yyyy",time_short:"HH:MM:SS",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'<br/><small>'d mmmm yyyy'</small>'",full_long:"dddd',' d mmm yyyy 'à' HH:MM",full_long_small_date:"HH:MM'<br/><small>'dddd',' d mmm yyyy'</small>'"},messages:{loading_timeline:"Chargement de la frise en cours... ",return_to_title:"Retour à la page d'accueil",expand_timeline:"Elargir la frise",contract_timeline:"Réduire la frise",wikipedia:"Extrait de Wikipedia, l'encyclopédie libre",loading_content:"Chargement",loading:"Chargement",swipe_nav:"Swipe to Navigate"}}}; | ||||
timeline.init(c, "/2015/timeline-json"); | |||||
timeline.init(c, "/${year}/timeline-json"); | |||||
</script> | </script> | ||||
</%def> | </%def> | ||||
<%def name="cssAddOn()"> | <%def name="cssAddOn()"> | ||||
@@ -20,8 +20,9 @@ | |||||
} | } | ||||
</style> | </style> | ||||
</%def> | </%def> | ||||
<H2 style="text-align: center;" class="shadow">9<sup>ème</sup> édition des JM2L</H2> | |||||
<H2 style="text-align: center;" class="shadow">${edition | n} édition des JM2L</H2> | |||||
<br> | <br> | ||||
% if year=='2015': | |||||
<div class="row-fluid"> | <div class="row-fluid"> | ||||
<div class="span4 offset1"> | <div class="span4 offset1"> | ||||
<blockquote> | <blockquote> | ||||
@@ -31,11 +32,8 @@ | |||||
Le thème de cette année sera « Do It Yourself » ou « Faîtes le vous-même » : | Le thème de cette année sera « Do It Yourself » ou « Faîtes le vous-même » : | ||||
<ul class="enum"> | <ul class="enum"> | ||||
<li>Migration vers les logiciels libres</li> | <li>Migration vers les logiciels libres</li> | ||||
## <li>Libres enfants du numérique : jeux et loisirs pour les juniors.</li> | |||||
## <li>Gérer ses données personnelles</li> | |||||
<li>Do It Yourself (jeux vidéos, fablabs…)</li> | <li>Do It Yourself (jeux vidéos, fablabs…)</li> | ||||
<li>Culture libre</li> | <li>Culture libre</li> | ||||
## <li>Communautés du libre</li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
<div class="span4 offset1"> | <div class="span4 offset1"> | ||||
@@ -50,21 +48,9 @@ | |||||
</p> | </p> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
## Nous vous proposons plusieurs formats de contribution : | |||||
## <ul class="enum"> | |||||
## <li>Stands au sein du village associatif</li> | |||||
## <li>Conférences de 20 à 70 minutes suivies d’un échange</li> | |||||
## <li>Ateliers de 45 minutes ou 1h15</li> | |||||
## <li>Démos de vos matériels, logiciels ou projets libres</li> | |||||
## <li>Animations ouvertes</li> | |||||
## <li>Vous pouvez aussi aider l'équipe à la logistique.</li> | |||||
## </ul> | |||||
## <p> | |||||
## Il sera bien sûr possible de combiner plusieurs formats (par exemple, une démo ou une conférence suivie | |||||
## d’un atelier). | |||||
## </p> | |||||
% else: | |||||
<a href="/${year}/le-programme">La grille du programme</a> | |||||
% endif | |||||
<div class="row-fluid"> | <div class="row-fluid"> | ||||
<div class="span12"> | <div class="span12"> | ||||
@@ -603,7 +603,7 @@ TabJs = {'select':[], 'desc':[]} | |||||
## Wrapper pour les sponsors | ## Wrapper pour les sponsors | ||||
## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | ## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | ||||
<%def name="participants(Year)"> \ | <%def name="participants(Year)"> \ | ||||
<div id='right_panel'> | |||||
<table class="ShowEntities table"> | <table class="ShowEntities table"> | ||||
<thead> | <thead> | ||||
<th colspan="3">Sponsors ${Year}</th> | <th colspan="3">Sponsors ${Year}</th> | ||||
@@ -647,4 +647,5 @@ TabJs = {'select':[], 'desc':[]} | |||||
% endfor | % endfor | ||||
</tr> | </tr> | ||||
</table> | </table> | ||||
</div> | |||||
</%def> \ | </%def> \ |
@@ -37,9 +37,8 @@ ${helpers.uploader_js()} | |||||
<div id="wrap"> | <div id="wrap"> | ||||
<div id="top"> | <div id="top"> | ||||
% if DisplayYear!=2015: | % if DisplayYear!=2015: | ||||
## style="background: url( ${"/img/%s/headerbg.png" % DisplayYear} ) repeat-x scroll 0 top #ffffff;"> | |||||
<div class="align-center"> | |||||
<a href="/"> | |||||
<div class="align-center" style="background: url( ${'/img/%s/headerbg.png' % DisplayYear} ) repeat-x scroll 0 top #ffffff;"> | |||||
<a href="${"/%s/" % DisplayYear}"> | |||||
<div style="height:215px;background: url( ${"/img/%s/logo.png" % DisplayYear} ) no-repeat scroll center center transparent"> | <div style="height:215px;background: url( ${"/img/%s/logo.png" % DisplayYear} ) no-repeat scroll center center transparent"> | ||||
</div> | </div> | ||||
</a> | </a> | ||||
@@ -98,19 +97,18 @@ ${helpers.uploader_js()} | |||||
<div class="navbar"> | <div class="navbar"> | ||||
<div class="navbar-inner"> | <div class="navbar-inner"> | ||||
<div class="container"> | <div class="container"> | ||||
<div class="nav pull-left"> | |||||
<div class="nav pull-right"> | |||||
<div class="btn-group"> | <div class="btn-group"> | ||||
<a class="btn dropdown-toggle" data-toggle="dropdown" href="#"> | <a class="btn dropdown-toggle" data-toggle="dropdown" href="#"> | ||||
<span class="brand" style="padding: 0 10px 0 18px;">JM2L | |||||
<small>${DisplayYear}</small> <span class="caret"></span></span></a> | |||||
Archives <span class="caret"></span></a> | |||||
<ul class="dropdown-menu"> | <ul class="dropdown-menu"> | ||||
% for tmpyear in range(2015, 2005, -1): | |||||
% if tmpyear!=2014: | |||||
% for tmpyear in range(2013, 2005, -1): | |||||
<li><a href="/year/${tmpyear}">${tmpyear}</a></li> | <li><a href="/year/${tmpyear}">${tmpyear}</a></li> | ||||
% endif | |||||
% endfor | % endfor | ||||
</ul> | </ul> | ||||
</div> | </div> | ||||
<div class="btn-group"> | <div class="btn-group"> | ||||
<a class="btn dropdown-toggle" data-toggle="dropdown" href="#"> | <a class="btn dropdown-toggle" data-toggle="dropdown" href="#"> | ||||
% if request.user: | % if request.user: | ||||
@@ -138,18 +136,17 @@ ${helpers.uploader_js()} | |||||
## </li> | ## </li> | ||||
</ul> | </ul> | ||||
</div> | </div> | ||||
</div> | |||||
</div> | |||||
<ul class="nav nav-pills pull-right"> | <ul class="nav nav-pills pull-right"> | ||||
<li class="${accueil or ''}"><a href="/">Accueil</a></li> | |||||
<li class="${programme or ''}"><a href="/${DisplayYear}/le-programme">Programme</a></li> | |||||
<li class="${presse or ''}"><a href="/${DisplayYear}/dossier-de-presse">Presse</a></li> | |||||
<li class="${plan or ''}"><a href="/nous-rejoindre">Contact et Plan</a></li> | |||||
% if request.user: | % if request.user: | ||||
<li class="${participer or ''}"><a href="/MesJM2L">Mes JM2L</a></li> | <li class="${participer or ''}"><a href="/MesJM2L">Mes JM2L</a></li> | ||||
% else: | % else: | ||||
<li class="${participer or ''}"><a href="/participer-l-evenement">Participer</a></li> | <li class="${participer or ''}"><a href="/participer-l-evenement">Participer</a></li> | ||||
% endif | |||||
% endif | |||||
<li class="${programme or ''}"><a href="/${DisplayYear}/le-programme">Programme</a></li> | |||||
<li class="${presse or ''}"><a href="/${DisplayYear}/dossier-de-presse">Presse</a></li> | |||||
<li class="${plan or ''}"><a href="/nous-rejoindre">Contact et Plan</a></li> | |||||
</ul> | </ul> | ||||
</div> | </div> | ||||
@@ -170,9 +170,17 @@ def JSON_TimeLine_Request(request): | |||||
.filter("strftime('%d', start_time) = :dow").params(dow=Day.day)\ | .filter("strftime('%d', start_time) = :dow").params(dow=Day.day)\ | ||||
.order_by(Event.start_time) | .order_by(Event.start_time) | ||||
ListEv = [] | |||||
#ListEv = [] | |||||
for ev in Events: | for ev in Events: | ||||
if ev.event_type: | if ev.event_type: | ||||
CurMedia = ev.video.first() or "" | |||||
if CurMedia: | |||||
Container = """<video controls="controls" preload="metadata">""" | |||||
Container += "<source type=\"" + CurMedia.mime_type + "\"" | |||||
Container += " src=\"" + CurMedia.get_path + "\" />" | |||||
Container += "</video>" | |||||
else: | |||||
Container = "" | |||||
ListEv.append( { | ListEv.append( { | ||||
#"uid":"%d/%d" % ( year, ev.uid ), | #"uid":"%d/%d" % ( year, ev.uid ), | ||||
"headline":ev.name, | "headline":ev.name, | ||||
@@ -182,32 +190,55 @@ def JSON_TimeLine_Request(request): | |||||
"tags":ev.Salle and (ev.Salle.name or "unk") , | "tags":ev.Salle and (ev.Salle.name or "unk") , | ||||
#"status":ev.event_type, | #"status":ev.event_type, | ||||
"asset": { | "asset": { | ||||
"media":"", #http://jm2l.linux-azur.org/sites/jm2l.linux-azur.org/files/videos/2012/2012_Introduction_aux_logiciels_libres__Frederic_Couchet.ogv", | |||||
"media": Container, | |||||
"credit":"", | "credit":"", | ||||
"caption":"" } | "caption":"" } | ||||
} ) | } ) | ||||
break | |||||
DicResult = { | |||||
"lang":"fr", | |||||
"headline":"JM2L 2015", | |||||
"type":"default", | |||||
"startDate":"2015,11,28,10", | |||||
"text":"<i><span class='c1'>9ème Édition</span></i>", | |||||
"asset": | |||||
{ | |||||
"media":"https://www.youtube.com/watch?v=DnfjrxVoLao", | |||||
"credit":"JM2L", | |||||
"caption":"" | |||||
if year=="2015": | |||||
DicResult = { | |||||
"lang":"fr", | |||||
"headline":"JM2L 2015", | |||||
"type":"default", | |||||
"startDate":"2015,11,28,10", | |||||
"text":"<i><span class='c1'>9ème Édition</span></i>", | |||||
"asset": | |||||
{ | |||||
"media":"https://www.youtube.com/watch?v=DnfjrxVoLao", | |||||
"credit":"JM2L", | |||||
"caption":"" | |||||
} | |||||
} | |||||
else: | |||||
DicResult = { | |||||
"lang":"fr", | |||||
"headline":"JM2L %d" % year, | |||||
"type":"default", | |||||
"asset": | |||||
{ | |||||
"media":"", | |||||
"credit":"JM2L", | |||||
"caption":"" | |||||
} | |||||
} | } | ||||
} | |||||
DicResult["date"] = ListEv | DicResult["date"] = ListEv | ||||
return { 'timeline':DicResult } | return { 'timeline':DicResult } | ||||
## =-=- Here, We handle HTTP requests - Public Part -=-= | ## =-=- Here, We handle HTTP requests - Public Part -=-= | ||||
@view_config(route_name='home', renderer="jm2l:templates/NewIndex.mako") | @view_config(route_name='home', renderer="jm2l:templates/NewIndex.mako") | ||||
def index_page(request): | def index_page(request): | ||||
MainTab = {'accueil':'active', "logged_in":request.authenticated_userid } | |||||
return MainTab | |||||
year = request.matchdict.get('year') | |||||
if year: | |||||
year=int(year[:-1]) | |||||
if 2004<year<=CurrentYear: | |||||
if year==2006: | |||||
return {'year': year, 'edition':u"1<sup>ère</sup>" } | |||||
else: | |||||
edition = year - 2005 | |||||
return {'year': year, 'edition':u"%d<sup>ème</sup>" % edition } | |||||
else: | |||||
raise HTTPNotFound() | |||||
return {'year': CurrentYear, 'edition':u"9<sup>ème</sup>"} | |||||
@view_config(route_name='programme', renderer="jm2l:templates/Public/Programme.mako") | @view_config(route_name='programme', renderer="jm2l:templates/Public/Programme.mako") | ||||
def programme(request): | def programme(request): | ||||
@@ -250,7 +281,9 @@ def edit_presse(request): | |||||
return MainTab | return MainTab | ||||
@view_config(route_name='plan', renderer="jm2l:templates/Public/Plan.mako") | @view_config(route_name='plan', renderer="jm2l:templates/Public/Plan.mako") | ||||
def static_plan(request): | |||||
def static_plan(request): | |||||
session = request.session | |||||
session['year'] = 2015 | |||||
MainTab = {'plan':'active', "logged_in":request.authenticated_userid } | MainTab = {'plan':'active', "logged_in":request.authenticated_userid } | ||||
return MainTab | return MainTab | ||||
@@ -850,7 +883,7 @@ def change_year(request): | |||||
session = request.session | session = request.session | ||||
if year>-1: | if year>-1: | ||||
session['year'] = year | session['year'] = year | ||||
return HTTPFound(location='/%s/le-programme' % year) | |||||
return HTTPFound(location='/%s/' % year) | |||||
return HTTPFound(location=request.route_url('home')) | return HTTPFound(location=request.route_url('home')) | ||||
@view_config(route_name='pict_user', renderer="jm2l:templates/Profil/pict_user.mako") | @view_config(route_name='pict_user', renderer="jm2l:templates/Profil/pict_user.mako") | ||||