Use new look for IETF meeting agenda; add color-coding support (like tools has)

- Legacy-Id: 2046
This commit is contained in:
Pasi Eronen 2010-03-04 22:59:12 +00:00
parent 4eb804f4ac
commit 70211dfc5a
4 changed files with 123 additions and 39 deletions
ietf/templates/meeting
static

View file

@ -1,31 +1,53 @@
{% extends "base.html" %}
{% extends "idrfc/base.html" %}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% load humanize %}
{% block title %} Meeting Agenda of the {{ meeting.num|ordinal }} IETF Meeting{% endblock %}
{% block head %}
<link href="http://tools.ietf.org/css/palette.css" rel="stylesheet" type="text/css" />
<script language='javascript' src='http://tools.ietf.org/js/prototype-1.6.0.2.js'></script>
<script language='javascript' src='/js/agenda.js'></script>
{% endblock %}
{% block body_attributes %}onload='set_cookie_colors()'{% endblock %}
{% block title %}IETF {{ meeting.num }} Meeting Agenda{% endblock %}
{% block morecss %}
table#agenda { border: 0; border-collapse:collapse; }
tr.meeting-date td { padding-top:1em; }
#agenda td { padding-right:2em; }
.ietf-agenda-palette { border-collapse:collapse; border:2px solid black; background:white;}
.ietf-agenda-palette td { border:1px solid black; }
.ietf-agenda-palette td { padding: 4px; text-align:center;}
.ietf-agenda-palette td a { text-decoration:none; }
.bgnone {}
.bgaqua, .bgaqua a { background-color: aqua; color: black; }
.bgblue, .bgblue a { background-color: blue; color: black; }
.bgfuchsia, .bgfuchsia a { background-color: fuchsia; color: black; }
.bggray, .bggray a { background-color: gray; color: white; }
.bggreen, .bggreen a { background-color: green; color: white; }
.bglime, .bglime a { background-color: lime; color: black; }
.bgmaroon, .bgmaroon a { background-color: maroon; color: white; }
.bgnavy, .bgnavy a { background-color: navy; color: white; }
.bgolive, .bgolive a { background-color: olive; color: white; }
.bgpurple, .bgpurple a { background-color: purple; color: white; }
.bgred, .bgred a { background-color: red; color: black; }
.bgsilver, .bgsilver a { background-color: silver; color: black; }
.bgteal, .bgteal a { background-color: teal; color: white; }
.bgwhite, .bgwhite a { background-color: white; color: black; }
.bgyellow, .bgyellow a { background-color: yellow; color: black; }
.bgblack, .bgblack a { background-color: black; color: white; }
{% endblock morecss %}
{% block pagehead %}
<script language='javascript' src='/js/agenda2.js'></script>
{% endblock pagehead %}
{% block bodyAttrs %}onload='updateAgendaColors()'{% endblock %}
{% block content %}
<span id='colorpallet'></span>
<p style="text-align: center">
Agenda of the {{ meeting.num|ordinal }} IETF Meeting<br />
{{ meeting.start_date|date:"F j" }}-{% ifnotequal meeting.start_date.month meeting.end_date.month %}{{ meeting.end_date|date:"F " }}{% endifnotequal %}{{ meeting.end_date|date:"j, Y" }}<br />
<h1>IETF {{ meeting.num }} Meeting Agenda</h1>
<p>{{ meeting.city }}, {{ meeting.start_date|date:"F j" }}-{% ifnotequal meeting.start_date.month meeting.end_date.month %}{{ meeting.end_date|date:"F " }}{% endifnotequal %}{{ meeting.end_date|date:"j, Y" }}<br />
Updated {{ update.updated|date:"Y-m-d H:i:s T" }}<br />
(There's also a <a href="/meeting/{{meeting.num}}/agenda.txt">plaintext agenda</a> and a <a href="http://tools.ietf.org/agenda/{{meeting.num}}/">tools-style agenda</a> available)<br />
<br />
IETF agendas are subject to change, up to and during the meeting.<br />
</p>
(There's also a <a href="/meeting/{{meeting.num}}/agenda.txt">plaintext agenda</a> and a <a href="http://tools.ietf.org/agenda/{{meeting.num}}/">tools-style agenda</a> available)</p>
<p><strong>IETF agendas are subject to change, up to and during the meeting.</strong></p>
<table id="agenda">
{% for slot in timeslots %}
{% ifchanged %}
<tr>
<tr class="meeting-date">
<td colspan="4">
<hr />
<h4>{{ slot.meeting_date|date:"l"|upper }}, {{ slot.meeting_date|date:"F j, Y" }}</h4>
<h2 class="ietf-divider">{{ slot.meeting_date|date:"l"|upper }}, {{ slot.meeting_date|date:"F j, Y" }}</h2>
</td>
</tr>
{% if slot.reg_info %}
@ -68,6 +90,7 @@ IETF agendas are subject to change, up to and during the meeting.<br />
<td>{{ session.info.area|upper}}</td>
<td>{% if session.info.isWG %}<a href="http://www.ietf.org/dyn/wg/charter/{{ session.info.acronym|lower }}-charter.html">{{ session.info.acronym|lower }}</a>{% else %}{{ session.info.acronym|lower }}{% endif %}</td>
<td>
<img src="/images/color-palette-4x4.gif" alt="" onclick="pickAgendaColor('{{meeting.num}}-{{slot.meeting_date|date:"D"|lower}}-{{slot.time_desc|slice:":4"}}-{{session.info.acronym|lower}}',this);"/>
{% if session.info.agenda_file %}<a href="http://www3.ietf.org/proceedings/{{ session.info.agenda_file }}">{{ session.info.acronym_name|escape }} {{ session.info.group_type_str }}</a>{% else %}{{ session.info.acronym_name|escape }} {{ session.info.group_type_str }}{% endif %}
{% if session.info.special_agenda_note %}<br/> - {{ session.info.special_agenda_note }}{% endif %}
</td>
@ -85,23 +108,10 @@ IETF agendas are subject to change, up to and during the meeting.<br />
{% endfor %}
{% endif %}
{% endfor %}
<tr><td colspan="4"><hr /></td></tr>
<tr><td colspan="4" style="text-align: center"><b>AREA DIRECTORS</b></td></tr>
<tr><td colspan="4">
<table>
{% regroup ads by area as grouped %}{% for ad in grouped %}
<tr valign="top">
<td>{{ ad.grouper|upper }}</td>
<td>{{ ad.list.0.area.area_acronym.name }}</td>
<td>
{% for ad_person in ad.list %}
{% ifequal forloop.counter 2 %} &amp; {% endifequal %}
{{ ad_person.person }}/{{ ad_person.person.affiliation }}
{% endfor %}
</td>
</tr>
{% endfor %}
</table>
</td></tr>
</table>
{% endblock %}
{% block scripts %}
{% endblock %}

View file

@ -72,9 +72,10 @@ body { margin: 0; }
#search_form_box {width: 99.5%; border: 0px solid #cccccc; background:#edf5ff;margin-top:8px; padding:4px; margin-bottom:1em; padding-left:8px;}
form#search_form { padding-top: 4px; padding-bottom: 4px; }
#search_form input { padding: 0; padding-left: 2px; border: 1px solid #89d;}
#search_form input.radio { padding-left: 0; border: 0; }
#search_form select { border: 1px solid #89d; }
#search_form div.search_field { margin-top:2px; }
#search_form label { width: 130px; float: left; }
#search_form div.search_field { margin-top:2px; clear:both;}
#search_form label { width: 170px; float: left; }
/* checkboxes for document types */
#search_form table#search_types { border-collapse:collapse;}
#search_form #search_types td { padding:0; }

Binary file not shown.

After

(image error) Size: 102 B

73
static/js/agenda2.js Normal file
View file

@ -0,0 +1,73 @@
// Based on agenda.js written by Tony Hansen.
// Portion Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved. Contact: Pasi Eronen <pasi.eronen@nokia.com>
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following
// disclaimer in the documentation and/or other materials provided
// with the distribution.
//
// * Neither the name of the Nokia Corporation and/or its
// subsidiary(-ies) nor the names of its contributors may be used
// to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
function setAgendaColor(color) {
IETF.agendaPalette.hide();
document.getElementById(IETF.agendaRow).className="bg"+color;
if (color == 'none') {
YAHOO.util.Cookie.removeSub("ietf-agenda-colors", IETF.agendaRow);
} else {
var twoMonths = new Date(new Date().getTime() + 60*24*60*60*1000);
YAHOO.util.Cookie.setSub("ietf-agenda-colors", IETF.agendaRow, color, { expires:twoMonths });
}
}
function createPalette() {
IETF.agendaPalette = new YAHOO.widget.Overlay("ietf-agenda-palette", { constraintoviewport:true, visible:false } );
var body = '<table class="ietf-agenda-palette"><tr><td colspan="4">Select a color for this line</td></tr>';
var c = ['aqua', 'blue', 'fuchsia', 'gray', 'green', 'lime',
'maroon', 'navy', 'olive', 'purple', 'red', 'silver',
'teal', 'white', 'yellow', 'black'];
for (var i = 0; i < c.length; i++) {
if ((i%4) == 0) { body += "<tr>" }
body += '<td class="bg'+c[i]+'"><a href=\'javascript:setAgendaColor("'+c[i]+'");\'>'+c[i]+'</a></td>';
if ((i%4) == 3) { body += "</tr>" }
}
body += '<tr><td class="bgnone" colspan="4"><a href="javascript:setAgendaColor(\'none\');">none</a></td></tr></table>';
IETF.agendaPalette.setBody(body);
IETF.agendaPalette.render(document.body);
}
function pickAgendaColor(row, place) {
if (!IETF.agendaPalette) {
createPalette();
}
IETF.agendaRow = row;
IETF.agendaPalette.cfg.setProperty("context", [place, "tl", "tl"]);
IETF.agendaPalette.show();
}
function updateAgendaColors() {
var colors = YAHOO.util.Cookie.getSubs("ietf-agenda-colors");
for (var k in colors) {
document.getElementById(k).className="bg"+colors[k];
}
}