Added consistent navigation tabs for agenda-related pages, and added a floor-plan tab. Tweaked the styling of by-room and by-type meeting tabs to be more consistent with the rest of the site. Factored out page header to the common header include file for some pages.

- Legacy-Id: 11537
This commit is contained in:
Henrik Levkowetz 2016-07-07 12:29:19 +00:00
parent c0c3d2a5d6
commit dd7e454401
7 changed files with 202 additions and 76 deletions

View file

@ -31,33 +31,17 @@
{% origin %}
<div class="row">
<div class="col-md-10">
{% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=updated %}
<p class="noprint h6 text-center panel panel-heading ">
{% if "-utc" in request.path %}
<a href="{% url 'ietf.meeting.views.agenda' num=schedule.meeting.number %}">Agenda in local timezone</a> |
{% else %}
{% comment %}<a href="{% url 'ietf.meeting.views.agenda' base='agenda-utc' %}">Agenda in UTC timezone</a> | {% endcomment %}
<a href="/meeting/agenda-utc">Agenda in UTC timezone</a> |
{% endif %}
<a href="{% url 'ietf.meeting.views.agenda' num=schedule.meeting.number ext='.txt' %}">Plaintext agenda</a> |
<a href="https://tools.ietf.org/agenda/{{schedule.meeting.number}}/">Tools-style agenda</a>
{% if user|has_role:"Secretariat,Area Director,IAB" %}
|
{% if schedule != meeting.agenda %}
<a href="{% url 'ietf.meeting.views.agenda_by_room' num=schedule.meeting.number name=schedule.name owner=schedule.owner.email %}">List by Room</a> |
<a href="{% url 'ietf.meeting.views.agenda_by_type' num=schedule.meeting.number name=schedule.name owner=schedule.owner.email %}">List by Type</a> |
<a href="{% url 'ietf.meeting.views.room_view' num=schedule.meeting.number name=schedule.name owner=schedule.owner.email %}">Room Grid</a>
{% else %}
<a href="{% url 'ietf.meeting.views.agenda_by_room' num=schedule.meeting.number%}">List by Room</a> |
<a href="{% url 'ietf.meeting.views.agenda_by_type' num=schedule.meeting.number%}">List by Type</a> |
<a href="{% url 'ietf.meeting.views.room_view' num=schedule.meeting.number%}">Room Grid</a>
{% endif %}
{% endif %}
</p>
<div class="col-md-12">
{% if "-utc" in request.path %}
{% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=updated selected="agenda-utc" title_extra="(UTC)" %}
{% else %}
{% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=updated selected="agenda" title_extra="" %}
{% endif %}
</div>
</div>
<div class="row">
<div class="col-md-10">
{# cache this part for 5 minutes -- it takes 3-6 seconds to generate #}
{% load cache %}
{% cache 300 ietf_meeting_agenda_utc schedule.meeting.number request.path %}

View file

@ -1,13 +1,13 @@
{% extends "base.html" %}
{% block morecss %}
ul.daylist { list-style:none; padding-left:0; }
li.daylistentry { font-size:162%; font-weight:700; }
li h2 { font-weight: 600; margin-top: 0.5em; }
li h3 { font-weight: 400; margin-top: 0.5em; }
li.even { background-color:#EDF5FF; }
li.odd { background-color:white; }
ul.roomlist {list-style:none; padding-left:0; margin-bottom:20px;}
ul.roomlist {list-style:none; margin-top: 0.5em; }
li.roomlistentry { font-weight: 400; }
ul.sessionlist { list-style:none; padding-left:2em; margin-bottom:10px;}
li.sessionlistentry { font-size:62%; }
.type-lead:after { content: " (DO NOT POST)"; color:red; }
.type-offagenda:after { content:" (not published on agenda)"; }
@ -17,25 +17,26 @@ li.sessionlistentry { font-size:62%; }
{% block title %}Agenda for {{meeting}} by Room{% endblock %}
{% block content %}
{% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=meeting.updated %}
<h1>Agenda for {{meeting}} by Room</h1>
<ul class="daylist">
{% for day,sessions in ss_by_day.items %}
<li class="daylistentry {% cycle 'even' 'odd' %}">{{day|date:'l, j F Y'}}
{% regroup sessions by timeslot.get_functional_location as room_list %}
<ul class="roomlist">
{% for room in room_list %}
<li class="roomlistentry">{{room.grouper|default:"Location Unavailable"}}
<ul class="sessionlist">
{% for ss in room.list %}
<li class="sessionlistentry type-{{ss.timeslot.type.slug}}">{{ss.timeslot.time|date:"H:i"}}-{{ss.timeslot.end_time|date:"H:i"}} {{ss.session.short_name}}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
{% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=meeting.updated selected="by-room" title_extra="by Room" %}
<ul class="daylist">
{% for day,sessions in ss_by_day.items %}
<li class="daylistentry {% cycle 'even' 'odd' %}"><h2>{{day|date:'l, j F Y'}}</h2>
{% regroup sessions by timeslot.get_functional_location as room_list %}
<ul class="roomlist">
{% for room in room_list %}
<li class="roomlistentry"><h3>{{room.grouper|default:"Location Unavailable"}}</h3>
<ul class="sessionlist">
{% for ss in room.list %}
<li class="sessionlistentry type-{{ss.timeslot.type.slug}}">{{ss.timeslot.time|date:"H:i"}}-{{ss.timeslot.end_time|date:"H:i"}} {{ss.session.short_name}}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
{% endblock %}

View file

@ -2,13 +2,15 @@
{% block morecss %}
ul.typelist { list-style:none; padding-left:0; }
li.typelistentry { font-size:162%; font-weight:700; }
li h2 { font-weight: 600; margin-top: 0.5em; }
li h3 { font-weight: 400; margin-top: 0.5em; }
li.even { background-color:#EDF5FF; }
li.odd { background-color:white; }
ul.daylist {list-style:none; padding-left:0; margin-bottom:20px;}
li.daylistentry { margin-left:2em; font-weight: 400; }
.sessiontable {margin-left:2em; font-size:62%;}
.sessiontable {margin-left: 2em; }
.sessiontable td {padding-right: 1em;}
.typelabel { font-size:162%; font-weight:700; }
@ -25,18 +27,18 @@ li.daylistentry { margin-left:2em; font-weight: 400; }
{% block title %}Agenda for {{meeting}} by Session Type{% endblock %}
{% block content %}
{% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=meeting.updated %}
<h1>Agenda for {{meeting}} by Session Type</h1>
{% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=meeting.updated selected="by-type" title_extra="by Session Type" %}
{% regroup assignments by session.type.slug as type_list %}
<ul class="typelist">
{% for type in type_list %}
<li class="typelistentry {% cycle 'even' 'odd' %}">
{{type.grouper}} {% if schedule == meeting.agenda %}<a id="ical-link" class="btn btn-primary" href="{% url "ietf.meeting.views.agenda_by_type_ics" num=meeting.number type=type.grouper %}">Download to Calendar</a>{% endif %}
<h2>{{type.grouper|title}}</h2> {% if schedule == meeting.agenda %}<a id="ical-link" class="btn btn-primary" href="{% url "ietf.meeting.views.agenda_by_type_ics" num=meeting.number type=type.grouper %}">Download to Calendar</a>{% endif %}
<ul class="daylist">
{% regroup type.list by timeslot.time|date:"l Y-M-d" as daylist %}
{% for day in daylist %}
<li class="daylistentry">
{{ day.grouper }}
<h3>{{ day.grouper }}</h3>
<table class="sessiontable">
{% for ss in day.list %}
<tr>

View file

@ -0,0 +1,106 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load ietf_filters %}
{% load staticfiles %}
{% block title %}
IETF {{ schedule.meeting.number }} meeting agenda
{% if "-utc" in request.path %}
(UTC)
{% endif %}
{% endblock %}
{% block morecss %}
.floor-plan {
position: relative;
top: 0;
left: 0;
}
.rooms a {
text-decoration: underline;
}
{% endblock %}
{% block bodyAttrs %}data-spy="scroll" data-target="#affix"{% endblock %}
{% block content %}
{% origin %}
<div class="row">
<div class="col-md-12" >
{% include "meeting/meeting_heading.html" with meeting=schedule.meeting selected="floor-plan" title_extra="Floor Plan" %}
</div>
</div>
<div class="row">
<div class="col-md-10">
{% for floor in floors %}
<div class="anchor-target" id="{{floor.name|slugify}}"></div>
<h3>{{ floor.name }}</h3>
<div class="floor-plan">
<img class="col-md-12" src="{{ floor.image.url }}" >
<!-- We need as many of these as we can have individual rooms combining into one -->
<div id="{{floor.name|slugify}}-arrowdiv" style="position: absolute; left: 0; top: 67.5px; visibility: hidden;"><img id="arrow" src="{% static 'ietf/images/arrow-ani.gif' %}"></div>
<div id="{{floor.name|slugify}}-arrowdiv1" style="position: absolute; left: 0; top: 67.5px; visibility: hidden;"><img id="arrow" src="{% static 'ietf/images/arrow-ani.gif' %}"></div>
<div id="{{floor.name|slugify}}-arrowdiv2" style="position: absolute; left: 0; top: 67.5px; visibility: hidden;"><img id="arrow" src="{% static 'ietf/images/arrow-ani.gif' %}"></div>
<div id="{{floor.name|slugify}}-arrowdiv3" style="position: absolute; left: 0; top: 67.5px; visibility: hidden;"><img id="arrow" src="{% static 'ietf/images/arrow-ani.gif' %}"></div>
</div>
<div class="rooms">
{% for room in floor.room_set.all %}
{#<a href="javascript: setarrow('{{room.name|slugify}}','{{floor.name|slugify}}')">{{ room.name|nbsp }}</a>#}
{{ room.name|nbsp }}
{% endfor %}
</div>
<div class="row"></div>
{% endfor %}
</div>
<div class="col-md-2 hidden-print bs-docs-sidebar" id="affix">
<ul class="nav nav-pills nav-stacked small" data-spy="affix">
{% for floor in floors %}
<li><a href="#{{floor.name|slugify}}">{{ floor.name }}</a></li>
{% endfor %}
</ul>
</div>
</div>
{% endblock %}
{% block js %}
{% with meeting=schedule.meeting %}
<script src="{% static 'ietf/js/room_params.js' %}"></script>
<script>
// These must match the 'arrowdiv' divs above
var arrowsuffixlist = [ '', '1', '2', '3' ];
function roommap(nm)
{
var c = findroom(nm);
if (c) return nm;
var m = suffixmap(nm);
// alert("m=" + m);
return m;
}
function findroom(nm)
{
var left = 0, top = 0, right = 0, bottom = 0;
if (0) { }
{% for room in meeting.room_set.all %}
else if (nm == '{{room.name|slugify}}') { left = {{room.left}}; top = {{room.top}}; right = {{room.right}}; bottom = {{room.bottom}}; }{% endfor %}
{% for room in meeting.room_set.all %}{% if room.functional_display_name %}
else if (nm == '{{room.functional_name|slugify}}') { left = {{room.left}}; top = {{room.top}}; right = {{room.right}}; bottom = {{room.bottom}}; }{% endif %}{% endfor %}
else return null;
// alert("nm=" + nm + ",left=" + left + ",top=" + top + ",r=" + right + ",b=" + bottom);
return [left, top, right, bottom];
}
</script>
{% endwith %}
{% endblock %}

View file

@ -1,24 +1,57 @@
{# Copyright The IETF Trust 2015, All Rights Reserved #}{% load origin %}{% origin %}
{# assumes meeting is in context #}
{% if schedule != meeting.agenda %}
<h3 class="alert alert-danger text-center">
This is schedule {{schedule.owner.email}}/{{ schedule.name }}, not the official schedule.
</h3>
{% endif %}
{% load origin %}
{% load ietf_filters %}
<h1>
IETF {{ meeting.number }} Meeting Agenda
<br>
<small>
{{ meeting.city }}, {{ meeting.date|date:"F j" }} -
{% if meeting.date.month != meeting.end_date.month %}
{{ meeting.end_date|date:"F " }}
{% endif %}
{{ meeting.end_date|date:"j, Y" }}
<span class="pull-right">
Updated {{ updated|date:"Y-m-d \a\t G:i:s (T)" }}
</span>
{% origin %}
</small>
{% if schedule != meeting.agenda %}
<h3 class="alert alert-danger text-center">
This is schedule {{schedule.owner.email}}/{{ schedule.name }}, not the official schedule.
</h3>
{% endif %}
</h1>
<h1>
IETF {{ meeting.number }} Meeting Agenda {{ title_extra }}
<br>
<small>
{{ meeting.city }}, {{ meeting.date|date:"F j" }} -
{% if meeting.date.month != meeting.end_date.month %}
{{ meeting.end_date|date:"F " }}
{% endif %}
{{ meeting.end_date|date:"j, Y" }}
{% if updated %}
<span class="pull-right">
Updated {{ updated|date:"Y-m-d \a\t G:i:s (T)" }}
</span>
{% endif %}
</small>
</h1>
<ul class="nav nav-tabs" role="tablist">
<li {% if selected == "agenda" %}class="active"{% endif %}>
<a href="{% url 'ietf.meeting.views.agenda' num=schedule.meeting.number %}">Agenda</a></li>
<li {% if selected == "agenda-utc" %}class="active"{% endif %}>
<a href="{% url 'ietf.meeting.views.agenda' num=schedule.meeting.number utc='-utc' %}">UTC Agenda</a></li>
{% if user|has_role:"Secretariat,Area Director,IAB" %}
{% if schedule != meeting.agenda %}
<li {% if selected == "by-room" %}class="active"{% endif %}>
<a href="{% url 'ietf.meeting.views.agenda_by_room' num=schedule.meeting.number name=schedule.name owner=schedule.owner.email %}">by Room</a></li>
<li {% if selected == "by-type" %}class="active"{% endif %}>
<a href="{% url 'ietf.meeting.views.agenda_by_type' num=schedule.meeting.number name=schedule.name owner=schedule.owner.email %}">by Type</a></li>
<li {% if selected == "room-view" %}class="active"{% endif %}>
<a href="{% url 'ietf.meeting.views.room_view' num=schedule.meeting.number name=schedule.name owner=schedule.owner.email %}">Room grid</a></li>
{% else %}
<li {% if selected == "by-room" %}class="active"{% endif %}>
<a href="{% url 'ietf.meeting.views.agenda_by_room' num=schedule.meeting.number %}">by Room</a></li>
<li {% if selected == "by-type" %}class="active"{% endif %}>
<a href="{% url 'ietf.meeting.views.agenda_by_type' num=schedule.meeting.number %}">by Type</a></li>
<li {% if selected == "room-view" %}class="active"{% endif %}>
<a href="{% url 'ietf.meeting.views.room_view' num=schedule.meeting.number %}">Room grid</a></li>
{% endif %}
{% endif %}
<li {% if selected == "floor-plan" %}class="active"{% endif %}>
<a href="{% url 'ietf.meeting.views.floor_plan' num=schedule.meeting.number %}">Floor plan</a></li>
<li><a href="{% url 'ietf.meeting.views.agenda' num=schedule.meeting.number ext='.txt' %}">Plaintext</a></li>
<li><a href="https://tools.ietf.org/agenda/{{schedule.meeting.number}}/">Tools-style &raquo;</a></li>
</ul>

View file

@ -6,7 +6,7 @@
{% block content %}
{% origin %}
{% include "meeting/meeting_heading.html" %}
{% include "meeting/meeting_heading.html" with title_extra="" selected="" %}
<div class="jumbotron">
<p>There is no agenda available yet.</p>

View file

@ -582,7 +582,7 @@
</script>
</head>
<body onload="draw_calendar()" onresize="draw_calendar()" id="body">
<div id="mtgheader" style="overflow:auto">{% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=schedule.meeting.updated %}</div>
<div id="mtgheader" style="overflow:auto">{% include "meeting/meeting_heading.html" with meeting=schedule.meeting updated=schedule.meeting.updated selected="room-view" title_extra="Room Grid" %}</div>
<div id="daycontainer" role="tabpanel">
<ul id="daytabs" class="nav nav-tabs" role="tablist">
{% for day in days %}