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:
parent
c0c3d2a5d6
commit
dd7e454401
|
@ -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 %}
|
||||
|
|
|
@ -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 %}
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
106
ietf/templates/meeting/floor-plan.html
Normal file
106
ietf/templates/meeting/floor-plan.html
Normal 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 %}
|
|
@ -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 »</a></li>
|
||||
</ul>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 %}
|
||||
|
|
Loading…
Reference in a new issue