ci: Also check generated HTML with the "vnu" validator (#3682)

* ci: Also check generated HTML with the "vnu" validator

Because HTML Tidy apparently misses a bunch of errors.

* thead -> tbody

* More fixes

* More fixes

* Start checker in test runner
This commit is contained in:
Lars Eggert 2022-03-21 18:50:23 +01:00 committed by GitHub
parent 6ecd4b40e2
commit eb5423d084
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
110 changed files with 381 additions and 332 deletions

View file

@ -124,6 +124,12 @@ RUN sed -i '/imklog/s/^/#/' /etc/rsyslog.conf
# Colorize the bash shell
RUN sed -i 's/#force_color_prompt=/force_color_prompt=/' /root/.bashrc
# Install the Nu Html Checker (v.Nu)
ADD https://github.com/validator/validator/releases/download/latest/vnu.linux.zip /
RUN unzip -d / /vnu.linux.zip
RUN cp -r /vnu-runtime-image/* /usr/local
RUN rm -rf /vnu.linux.zip /vnu-runtime-image
ADD https://raw.githubusercontent.com/eficode/wait-for/v2.1.3/wait-for /usr/local/bin/
RUN chmod +rx /usr/local/bin/wait-for

View file

@ -1,6 +1,6 @@
<html>
<head>
<style type="text/css">
<style>
p.comment {
background-color: #cfc;
border: solid black 1px;

View file

@ -32,7 +32,7 @@
</dl>
<h2>Edit template content</h2>
<form id="dbtemplate-edit" role="form" method="post">
<form id="dbtemplate-edit" method="post">
{% csrf_token %}
{% bootstrap_form form %}

View file

@ -197,6 +197,7 @@ def urlize_ietf_docs(string, autoescape=None):
string = re.sub(r"(STD\s*?)0{0,3}(\d+)", "<a href=\"/doc/std\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(FYI\s*?)0{0,3}(\d+)", "<a href=\"/doc/fyi\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(draft-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(bofreq-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(conflict-review-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(status-change-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
string = re.sub(r"(charter-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)

View file

@ -25,6 +25,7 @@ from ietf.person.factories import PersonFactory, EmailFactory
from ietf.doc.factories import DocumentFactory
from ietf.group.factories import RoleFactory, ReviewTeamFactory, GroupFactory
from ietf.review.factories import ReviewRequestFactory, ReviewerSettingsFactory, ReviewAssignmentFactory
from django.utils.html import escape
class ReviewTests(TestCase):
def test_review_requests(self):
@ -375,8 +376,8 @@ class ReviewTests(TestCase):
# get
r = self.client.get(unassigned_url)
self.assertEqual(r.status_code, 200)
self.assertContains(r, review_req1.doc.name)
self.assertContains(r, doc_author.name)
self.assertContains(r, escape(review_req1.doc.name))
self.assertContains(r, escape(doc_author.name))
# Test that conflicts are detected
r = self.client.post(unassigned_url, {

View file

@ -162,8 +162,8 @@ class IprTests(TestCase):
r = self.client.get(url + "?submit=holder&holder=%s" % ipr.holder_legal_name)
self.assertContains(r, ipr.title)
# find by patent infoj
r = self.client.get(url + "?submit=patent&patent=%s" % quote(ipr.patent_info))
# find by patent info
r = self.client.get(url + "?submit=patent&patent=%s" % quote(ipr.patent_info.partition("\n")[0]))
self.assertContains(r, ipr.title)
r = self.client.get(url + "?submit=patent&patent=US12345")

View file

@ -18,13 +18,13 @@ class ButtonWidget(Widget):
super(ButtonWidget, self).__init__(*args, **kwargs)
def render(self, name, value, **kwargs):
html = '<span style="display: none" class="showAttachsOn">%s</span>' % conditional_escape(self.show_on)
html += '<span style="display: none" class="attachEnabledLabel">%s</span>' % conditional_escape(self.label)
html = '<span style="display: none;" class="showAttachsOn">%s</span>' % conditional_escape(self.show_on)
html += '<span style="display: none;" class="attachEnabledLabel">%s</span>' % conditional_escape(self.label)
if self.require:
for i in self.require:
html += '<span style="display: none" class="attachRequiredField">%s</span>' % conditional_escape(i)
html += '<span style="display: none;" class="attachRequiredField">%s</span>' % conditional_escape(i)
required_str = 'Please fill in %s to attach a new file' % conditional_escape(self.required_label)
html += '<span style="display: none" class="attachDisabledLabel">%s</span>' % conditional_escape(required_str)
html += '<span style="display: none;" class="attachDisabledLabel">%s</span>' % conditional_escape(required_str)
html += '<input type="button" class="addAttachmentWidget btn btn-primary btn-sm" value="%s">' % conditional_escape(self.label)
return mark_safe(html)
@ -32,7 +32,7 @@ class ButtonWidget(Widget):
class ShowAttachmentsWidget(Widget):
def render(self, name, value, **kwargs):
html = '<div id="id_%s">' % name
html += '<span style="display: none" class="showAttachmentsEmpty form-control widget">No files attached</span>'
html += '<span style="display: none;" class="showAttachmentsEmpty form-control widget">No files attached</span>'
html += '<div class="attachedFiles form-control widget">'
if value and isinstance(value, QuerySet):
for attachment in value:

View file

@ -42,5 +42,4 @@ class ReleasePagesTest(TestCase):
s = q('#frequency-data').text()
self.assertIn("type: 'column',", s)
self.assertIn('"data": [[2007, 7], ', s)
self.assertIn('"data": [[2007, 7], ', s)

View file

@ -11,7 +11,7 @@
<div class="module">
<h2>Announcement</h2>
<form action="" method="post">{% csrf_token %}
<form method="post">{% csrf_token %}
<table class="new-style full-width amstable" id="announce-table">
{% if form.non_field_errors %}{{ form.non_field_errors }}{% endif %}
{% for field in form.visible_fields %}

View file

@ -3,7 +3,7 @@
{% block title %}Areas - People{% endblock %}
{% block extrahead %}{{ block.super }}
<link rel="stylesheet" type="text/css" href="{% static 'ietf/css/jquery-ui.css' %}" />
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}" />
<script src="{% static 'ietf/js/jquery-ui.js' %}"></script>
<script src="{% static 'secr/js/utils.js' %}"></script>
{% endblock %}

View file

@ -16,7 +16,7 @@
<div class="module">
<h2>Area - View</h2>
<table class="full-width">
<col width="150">
<tr><td>Area Acronym:</td><td>{{ area.acronym }}</td></tr>
<tr><td>Area Name:</td><td>{{ area.name }}</td></tr>
<tr><td>Status:</td><td>{{ area.state }}</td></tr>

View file

@ -6,11 +6,13 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static 'secr/css/base.css' %}{% endblock %}" />
<link rel="stylesheet" type="text/css" href="{% static 'secr/css/forms.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'secr/css/custom.css' %}" />
<link rel="stylesheet" href="{% block stylesheet %}{% static 'secr/css/base.css' %}{% endblock %}" />
<link rel="stylesheet" href="{% static 'secr/css/forms.css' %}" />
<link rel="stylesheet" href="{% static 'secr/css/custom.css' %}" />
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}">
{% if not server_mode == "production" %}
<link rel="stylesheet" type="text/css" href="{% static 'secr/css/test.css' %}" />
<link rel="stylesheet" href="{% static 'secr/css/test.css' %}" />
{% endif %}
{% block extrastyle %}{% endblock %}
@ -38,12 +40,12 @@
<!-- Breadcrumbs -->
<div class="breadcrumbs">
<table width="100%">
<table>
<tr>
<td align="left">
<td class="text-start">
{% block breadcrumbs %}<a href="/secr/">Home</a>{% endblock %}
</td>
<td align="right">
<td class="text-end">
{% block instructions %}{% endblock %}
</td>
</tr>

View file

@ -7,11 +7,11 @@
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}"/>
<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static 'secr/css/base.css' %}{% endblock %}" />
<link rel="stylesheet" type="text/css" href="{% static 'secr/css/forms.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'secr/css/custom.css' %}" />
<link rel="stylesheet" href="{% block stylesheet %}{% static 'secr/css/base.css' %}{% endblock %}" />
<link rel="stylesheet" href="{% static 'secr/css/forms.css' %}" />
<link rel="stylesheet" href="{% static 'secr/css/custom.css' %}" />
{% if not server_mode == "production" %}
<link rel="stylesheet" type="text/css" href="{% static 'secr/css/test.css' %}" />
<link rel="stylesheet" href="{% static 'secr/css/test.css' %}" />
{% endif %}
{% block extrastyle %}{% endblock %}
@ -39,12 +39,12 @@
<!-- Breadcrumbs -->
<div class="breadcrumbs">
<table width="100%">
<table>
<tr>
<td align="left">
<td class="text-start">
{% block breadcrumbs %}<a href="/secr/">Home</a>{% endblock %}
</td>
<td align="right">
<td class="text-end">
{% block instructions %}{% endblock %}
</td>
</tr>

View file

@ -6,12 +6,12 @@
{% block title %}{{ title }}{% if user|has_role:"Secretariat" %} Secretariat Dashboard {% else %} IETF Dashboard {% endif %}{% endblock %}
{% block branding %}
<table width="100%">
<table>
<tr>
<td align="left">
<td class="text-start">
<h1 id="site-name">{% if user|has_role:"Secretariat" %} Secretariat Dashboard {% else %} IETF Dashboard {% endif %}</h1>
</td>
<td align="right">
<td class="text-end">
<br>
<span class="login">{% if user|has_role:"Secretariat" %}Secretariat {% endif %}Logged in: <a href="/accounts/profile/">{{ user }}</a> | <a rel="nofollow" href="/accounts/logout/">Log out</a></span>
</td>
@ -31,7 +31,7 @@
</div>
<div id="footer-logo">
<a href="https://www.amsl.com/"><img src="{% static 'secr/images/ams_logo.png' %}" alt="AMS" align="right" border="0" hspace="5" /></a>
<a href="https://www.amsl.com/"><img src="{% static 'secr/images/ams_logo.png' %}" alt="AMS" class="text-end p-3" /></a>
</div>
</div>
{% endblock %}

View file

@ -6,12 +6,12 @@
{% block title %}{{ title }}{% if user|has_role:"Secretariat" %} Secretariat Dashboard {% else %} WG Chair Dashboard {% endif %}{% endblock %}
{% block branding %}
<table width="100%">
<table>
<tr>
<td align="left">
<td class="text-start">
<h1 id="site-name">{% if user|has_role:"Secretariat" %} Secretariat Dashboard {% else %} WG Chair Dashboard {% endif %}</h1>
</td>
<td align="right">
<td class="text-end">
<br>
<span class="login">{% if user|has_role:"Secretariat" %}Secretariat {% endif %}Logged in: <a href="/accounts/profile/">{{ user }}</a> | <a rel="nofollow" href="/accounts/logout/">Log out</a></span>
</td>
@ -31,7 +31,7 @@
</div>
<div id="footer-logo">
<a href="https://www.amsl.com/"><img src="{% static 'secr/images/ams_logo.png' %}" alt="AMS" align="right" border="0" hspace="5" /></a>
<a href="https://www.amsl.com/"><img src="{% static 'secr/images/ams_logo.png' %}" alt="AMS" class="text-end p-3" /></a>
</div>
</div>
{% endblock %}

View file

@ -12,7 +12,7 @@
<p>You are about to cancel: {{ object }}</p>
{% if extra %}<p>{{ extra }}</p>{% endif %}
<form action="" method="post">{% csrf_token %}
<form method="post">{% csrf_token %}
<div>
<p>
<input type="hidden" name="post" value="yes">

View file

@ -12,7 +12,7 @@
<p>You are about to delete: {{ object }}</p>
{% if extra %}<p>{{ extra }}</p>{% endif %}
<form action="" method="post">{% csrf_token %}
<form method="post">{% csrf_token %}
<div>
<p>
<input type="hidden" name="post" value="yes">

View file

@ -4,7 +4,7 @@
{% block title %}Groups - People{% endblock %}
{% block extrahead %}{{ block.super }}
<link rel="stylesheet" type="text/css" href="{% static 'ietf/css/jquery-ui.css' %}" />
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}" />
<script src="{% static 'ietf/js/jquery-ui.js' %}"></script>
<script src="{% static 'secr/js/utils.js' %}"></script>
{% endblock %}
@ -45,7 +45,7 @@
<div class="inline-related">
<!-- <hr><br> -->
<h3>Add Role</h3>
<form id="groups-people" action="" method="post">{% csrf_token %}
<form id="groups-people" method="post">{% csrf_token %}
{{ form.non_field_errors }}
{{ form.group_acronym }}
<table class="full-width">

View file

@ -17,7 +17,7 @@
<div class="module group-container">
<h2>Groups - Search</h2>
<form enctype="multipart/form-data" action="" method="post">{% csrf_token %}
<form enctype="multipart/form-data" method="post">{% csrf_token %}
<table class="full-width amstable">
{{ form.as_table }}
</table>

View file

@ -18,7 +18,7 @@
<div id="groups-view-col1">
<h2>Groups - View</h2>
<table >
<col width="150">
<tr><td>Group Acronym:</td><td>{{ group.acronym }}</td></tr>
<tr><td>Group Name:</td><td>{{ group.name }}</td></tr>
<tr><td>Status:</td><td>{{ group.state }}</td></tr>

View file

@ -4,8 +4,8 @@
{% if form.non_field_errors %}
{{ form.non_field_errors }}
{% endif %}
<table id="sessions-new-table" cellspacing="1" cellpadding="1" border="0">
<col width="150">
<table id="sessions-new-table">
<tr class="bg1"><td>Working Group Name:</td><td>{{ group.name }} ({{ group.acronym }})</td></tr>
<tr class="bg2"><td>Area Name:</td><td>{% if group.parent %}{{ group.parent.name }} ({{ group.parent.acronym }}){% endif %}</td></tr>
<tr class="bg1"><td>Number of Sessions:<span class="required">*</span></td><td>{{ form.num_session.errors }}{{ form.num_session }}</td></tr>
@ -37,25 +37,25 @@
</tr>
{% for cname, cfield, cselector in form.wg_constraint_fields %}
<tr class="bg1">
{% if forloop.first %}<td rowspan="{{ form.wg_constraint_count }}" valign="top" width="220">WG Sessions:<br>You may select multiple WGs within each category</td>{% endif %}
<td width="320">{{ cname|title }}</td>
{% if forloop.first %}<td rowspan="{{ form.wg_constraint_count }}" >WG Sessions:<br>You may select multiple WGs within each category</td>{% endif %}
<td>{{ cname|title }}</td>
<td>{{ cselector }}
<input type="button" id="wg_delete_{{ cname.slug }}" value="Delete the last entry" onClick="ietf_sessions.delete_wg_constraint_clicked('{{ cname.slug }}')"><br>
{{ cfield.errors }}{{ cfield }}
</td>
</tr>
{% empty %}{# shown if there are no constraint fields #}
<tr class="bg1"><td width="220"></td><td colspan="2">No constraints are enabled for this meeting.</td></tr>
<tr class="bg1"><td ></td><td colspan="2">No constraints are enabled for this meeting.</td></tr>
{% endfor %}
{% if form.inactive_wg_constraints %}
{% for cname, value, field in form.inactive_wg_constraints %}
<tr class="bg1">
{% if forloop.first %}
<td rowspan="{{ form.inactive_wg_constraint_count }}" valign="top" width="220">
<td rowspan="{{ form.inactive_wg_constraint_count }}" >
Disabled for this meeting
</td>
{% endif %}
<td width="320">{{ cname|title }}</td>
<td>{{ cname|title }}</td>
<td><input type="text" value="{{ value }}" maxlength="255" class="wg_constraint" disabled><br>{{ field }} {{ field.label }}</td>
</tr>
{% endfor %}
@ -76,11 +76,11 @@
</td>
</tr>
<tr class="bg1">
<td valign="top">Times during which this WG can <strong>not</strong> meet:</td>
<td>Times during which this WG can <strong>not</strong> meet:</td>
<td>{{ form.timeranges.errors }}{{ form.timeranges }}</td>
</tr>
<tr class="bg2">
<td valign="top">
<td>
Plan session adjacent with another WG:<br />
(Immediately before or after another WG, no break in between, in the same room.)
</td>
@ -106,7 +106,7 @@
{% endif %}
<tr class="bg2">
<td valign="top">Special Requests:<br />&nbsp;<br />i.e. restrictions on meeting times / days, etc.<br /> (limit 200 characters)</td>
<td>Special Requests:<br />&nbsp;<br />i.e. restrictions on meeting times / days, etc.<br /> (limit 200 characters)</td>
<td>{{ form.comments.errors }}{{ form.comments }}</td>
</tr>
</table>

View file

@ -1,6 +1,6 @@
{% load ams_filters %}
<table class="full-width">
<col width="200">
<tr class="row1"><td>Working Group Name:</td><td>{{ group.name }} ({{ group.acronym }})</td></tr>
<tr class="row2"><td>Area Name:</td><td>{{ group.parent }}</td></tr>
<tr class="row1"><td>Number of Sessions Requested:</td><td>{% if session.third_session %}3{% else %}{{ session.num_session }}{% endif %}</td></tr>

View file

@ -6,8 +6,8 @@
{% if user|has_role:"Secretariat" %}
<table class="menu" width="100%" cellpadding="5" cellspacing="5" border="0">
<tr valign="top">
<table class="menu">
<tr>
<td>
<h3>IESG</h3>
<ul>
@ -26,7 +26,7 @@
</ul>
</td>
</tr>
<tr valign="top">
<tr>
<td>
<h3>Meetings and Proceedings</h3>
<ul>
@ -47,8 +47,8 @@
{% else %}
<table class="menu" width="100%" cellpadding="5" cellspacing="5" border="0">
<tr valign="top">
<table class="menu">
<tr>
<td>
<h3>Section 1</h3>
<ul>
@ -61,7 +61,7 @@
<h3>Section 2</h3>
</td>
</tr>
<tr valign="top">
<tr>
<td>
<h3>Section 3</h3>
</td>

View file

@ -16,7 +16,7 @@
{% block content %}
<div class="module">
<h2>Proceedings - Add</h2>
<form id="proceedings-add-form" enctype="multipart/form-data" action="" method="post">{% csrf_token %}
<form id="proceedings-add-form" enctype="multipart/form-data" method="post">{% csrf_token %}
<table id="proceedings-add-table">
{{ form.as_table }}
</table>

View file

@ -4,7 +4,7 @@
{% block title %}Meetings{% endblock %}
{% block extrahead %}{{ block.super }}
<link rel="stylesheet" type="text/css" href="{% static 'ietf/css/jquery-ui.css' %}" />
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}" />
<script src="{% static 'ietf/js/jquery-ui.js' %}"></script>
<script src="{% static 'secr/js/utils.js' %}"></script>
<script src="{% static 'secr/js/dynamic_inlines.js' %}"></script>

View file

@ -27,7 +27,7 @@
</p>
<br>
<form action="" method="post">{% csrf_token %}
<form method="post">{% csrf_token %}
<table>
{{ form }}
</table>

View file

@ -54,11 +54,11 @@
<br /><hr />
<div>
<form id="timeslot-form" action="" method="post">{% csrf_token %}
<form id="timeslot-form" method="post">{% csrf_token %}
<table class="full-width amstable">
<col width="150">
{{ form.as_table }}
<tr><td colspan="2" align="center"><input type="submit" name="submit" value="Add" /></td></tr>
<tr><td colspan="2" class="text-center"><input type="submit" name="submit" value="Add" /></td></tr>
</table>
</form>
</div>

View file

@ -17,10 +17,10 @@
<div class="module">
<h2>Edit Session</h2>
<form id="meetings-schedule-form" method="post" action="">{% csrf_token %}
<form id="meetings-schedule-form" method="post">{% csrf_token %}
<div class="inline-related{% if forloop.last %} last-related{% endif %}">
<table class="full-width amstable">
<col width="200">
<tr>
<th>Day:</th>
<td>{% if timeslot %}{{ timeslot.time|date:"l" }}{% endif %}</td>

View file

@ -8,7 +8,7 @@
<div class="inline-group">
<div class="tabular inline-related">
<form id="meetings-meta-rooms" action="" method="post">{% csrf_token %}
<form id="meetings-meta-rooms" method="post">{% csrf_token %}
{{ formset.management_form }}
{{ formset.non_form_errors }}
{% if options_form %}{{ options_form.errors }}{% endif %}
@ -41,7 +41,7 @@
{% endfor %}
</tr>
{% endfor %}
{% if options_form %}{{ options_form }}{% endif %}
{% if options_form %}<tr><td colspan="11">{{ options_form.as_p }}</td></tr>{% endif %}
</tbody>
</table>
</form>

View file

@ -33,7 +33,7 @@
{% endif %}
<br /><hr />
<form action="" method="post">{% csrf_token %}
<form method="post">{% csrf_token %}
{{ form.non_field_errors }}
<table id="timeslot-form" class="full-width">
<tr>

View file

@ -19,8 +19,7 @@
{% if meeting.frozen == 1 %}
<ul class="errorlist"><li> THIS IS A FROZEN PROCEEDING</li></ul>
{% endif %}
<table class="full-width">
<col id="proceedings-view-first-col" />
<table class="full-width" id="proceedings-view-first-col">
<tr><td>Start Date:</td><td> {{ meeting.date }}</td></tr>
<tr><td>City:</td><td> {{ meeting.city }} </td></tr>
<tr><td>Country:</td><td> {{ meeting.country }} </td></tr>
@ -56,24 +55,4 @@
</div> <!-- module -->
{% endblock %}
{% endblock %}

View file

@ -12,17 +12,17 @@
</tr>
{% for meeting in meetings %}
<tr class="{% cycle 'row1' 'row2' %}">
<td align="left" style="white-space: nowrap">{{ meeting.date }}</td>
<td class="text-start" style="white-space: nowrap">{{ meeting.date }}</td>
<td><a href="https://datatracker.ietf.org/wg/{{ meeting.group.acronym }}">{{ meeting.group.acronym }}</a></td>
{% if meeting.schedule %}
<td width="70" align="center"><a href="{{ meeting.schedule.get_absolute_url }}">Agenda</a></td>
<td class="text-center"><a href="{{ meeting.schedule.get_absolute_url }}">Agenda</a></td>
{% else %}
<td width="70" align="center">Agenda</td>
<td class="text-center">Agenda</td>
{% endif %}
{% if meeting.minutes %}
<td width="70" align="center"><a href="{{ meeting.minutes.get_absolute_url }}">Minutes</a></td>
<td class="text-center"><a href="{{ meeting.minutes.get_absolute_url }}">Minutes</a></td>
{% else %}
<td width="70" align="center">Minutes</td>
<td class="text-center">Minutes</td>
{% endif %}
{% if meeting.get_proceedings_url %}
<td><a href="{{ meeting.get_proceedings_url }}">Proceedings</a></td>

View file

@ -4,7 +4,7 @@
{% block title %}Proceedings{% endblock %}
{% block extrastyle %}{{ block.super }}
<link rel="stylesheet" type="text/css" href="{% static 'ietf/css/jquery-ui.css' %}" />
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}" />
<link rel="stylesheet" href="{% static 'ietf/css/select2.css' %}">
{% endblock %}

View file

@ -25,7 +25,7 @@
<div class="module interim-container">
<h2>Recording Metadata for Group: {{ form.instance.group.acronym }} | Session: {{ form.instance.session_set.first.official_scheduledsession.timeslot.time }}</h2>
<p><h3>Edit Recording Metadata:</h3></p>
<form id="recording-form" action="" method="post">{% csrf_token %}
<form id="recording-form" method="post">{% csrf_token %}
<table>
{{ form.as_table }}
</table>

View file

@ -18,8 +18,7 @@
{% if meeting.frozen == 1 %}
<ul class="errorlist"><li> THIS IS A FROZEN PROCEEDING</li></ul>
{% endif %}
<table class="full-width">
<col id="proceedings-view-first-col" />
<table class="full-width" id="proceedings-view-first-col">
<tr><td>Meeting Start Date:</td><td> {{ meeting.date }}</td></tr>
<tr><td>Meeting End Date:</td><td> {{ meeting.end_date }} </td></tr>
<tr><td>Meeting City:</td><td> {{ meeting.city }} </td></tr>
@ -28,8 +27,7 @@
<div class="inline-related">
<h2>Dates</h2>
<table class="full-width">
<col id="proceedings-view-first-col" />
<table class="full-width" id="proceedings-view-first-col">
<tr><td>Submission Start Date:</td><td> {{ meeting.get_submission_start_date }} </td></tr>
<tr><td>Submission Cut Off Date:</td><td> {{ meeting.get_submission_cut_off_date }} </td></tr>
<tr><td>Submission Correction Cut Off Date:</td><td> {{ meeting.get_submission_correction_date }} </td></tr>
@ -54,27 +52,4 @@
</div> <!-- button-group -->
</div> <!-- module -->
{% endblock %}
{% endblock %}

View file

@ -4,7 +4,7 @@
{% block title %}Roles{% endblock %}
{% block extrahead %}{{ block.super }}
<link rel="stylesheet" type="text/css" href="{% static 'ietf/css/jquery-ui.css' %}" />
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}" />
<script src="{% static 'ietf/js/jquery-ui.js' %}"></script>
<script src="{% static 'secr/js/utils.js' %}"></script>
@ -40,7 +40,7 @@
{% block content %}
<div class="module interim-container">
<form id="roles-form" action="" method="post">{% csrf_token %}
<form id="roles-form" method="post">{% csrf_token %}
<h2>Role Tool</h2>
<div class="inline-related">
<h3><b>Select Group</b></h3>

View file

@ -38,9 +38,9 @@
<div class="module">
<h2>Name</h2>
<form id="rolodex-add-form" enctype="multipart/form-data" action="" method="post">{% csrf_token %}
<form id="rolodex-add-form" enctype="multipart/form-data" method="post">{% csrf_token %}
<table class="full-width amstable">
<col width="200">
{{ form.as_table }}
</table>

View file

@ -10,7 +10,7 @@
{% block content %}
<h1>Adding {{ name }}</h1>
<form action="" method="post" id="rolodex-add-form">{% csrf_token %}
<form method="post" id="rolodex-add-form">{% csrf_token %}
<div class="module">
<h2>Rolodex - Add</h2>
<table class="full-width amstable">

View file

@ -22,7 +22,7 @@
{% endfor %}
</ul>
</li></ul>
<form action="" method="post">{% csrf_token %}
<form method="post">{% csrf_token %}
<input type="hidden" name="post" value="yes" />
<input type="submit" value="Yes, I'm sure" />
</form>

View file

@ -14,7 +14,7 @@
{% endblock %}
{% block content %}
<form enctype="multipart/form-data" action="" method="post" id="rolodex-edit-form">{% csrf_token %}
<form enctype="multipart/form-data" method="post" id="rolodex-edit-form">{% csrf_token %}
<div class="module">
<h2>Rolodex - Edit</h2>
<table id="rolodex-edit-table" class="full-width amstable">

View file

@ -16,7 +16,7 @@
<h2>Rolodex - Search <span class="unlocked"><a href="add/" class="addlink">Add</a></span></h2>
<form id="rolodex-search-form" action="." method="post">{% csrf_token %}
<table class="full-width amstable">
<col width="200">
{{ form.as_table }}
</table>

View file

@ -13,7 +13,7 @@
<table id="rolodex-view-table" class="full-width">
<col width="150">
<tr><td>Name:</td><td>{{ person.name }}</td></tr>
<tr><td>Ascii Name:</td><td>{{ person.ascii }}</td></tr>
<tr><td>Short Name:</td><td>{{ person.ascii_short }}</td></tr>

View file

@ -40,7 +40,7 @@
{% endif %}
</li>
{% empty %}
<i>NONE</i>
<li><i>NONE</i></li>
{% endfor %}
</ul>
</div> <!-- inline-related -->
@ -52,7 +52,7 @@
{% for group in scheduled_groups %}
<li><a href="{% url "ietf.secr.sreq.views.view" acronym=group.acronym %}">{{ group.acronym }} - {{ group.status_message }}</a></li>
{% empty %}
<i>NONE</i>
<li><i>NONE</i></li>
{% endfor %}
</ul>
</div> <!-- inline-related -->

View file

@ -17,7 +17,7 @@
<div class="module interim-container">
<h2>Sessions - Status</h2>
<p>Enter the message that you would like displayed to the WG Chair when this tool is locked.</p>
<form action="" method="post">{% csrf_token %}
<form method="post">{% csrf_token %}
<table>
{{ form.as_table }}
</table>

View file

@ -5,7 +5,7 @@
{% block extrahead %}{{ block.super }}
<script src="{% static 'secr/js/utils.js' %}"></script>
<link rel="stylesheet" type="text/css" href="{% static 'secr/css/telechat.css' %}" />
<link rel="stylesheet" href="{% static 'secr/css/telechat.css' %}" />
{% endblock %}
{% block breadcrumbs %}{{ block.super }}

View file

@ -28,7 +28,7 @@
Number of Open Positions: {{ open_positions }}<br />
<br />
<div>
<form action="" method="post">{% csrf_token %}
<form method="post">{% csrf_token %}
{{ formset.management_form }}
<table id="telechat-positions-table">
<tr>
@ -56,7 +56,7 @@
<hr /><br />
<form action="" method="post">{% csrf_token %}
<form method="post">{% csrf_token %}
<table>
{{ state_form.as_table }}
</table>
@ -72,13 +72,13 @@
<br /><hr /><br />
{% endif %}
<a name="writeup"><h2>Ballot Writeup</h2></a>
<h2 id="writeup">Ballot Writeup</h2>
<pre>
{{ writeup }}
</pre>
{% if downrefs %}
<a name="downrefs"><h2>Downward References</h2></a>
<h2 id="downrefs">Downward References</h2>
{% for ref in downrefs %}
<p>Add {{ref.target.document.canonical_name}}
({{ref.target.document.std_level}} - {{ref.target.document.stream.desc}})

View file

@ -1,4 +1,4 @@
<form id="dummy" action="" method="post">{% csrf_token %}
<form id="dummy" method="post">{% csrf_token %}
{% if header.2 == "4.1.1 Proposed for IETF Review" %}
<b>Does anyone have an objection to the creation of this working group being sent for EXTERNAL REVIEW?</b><br><br>
<input type="radio" name="wg_action_status" value="1"> External Review APPROVED; "The Secretariat will send a Working Group Review announcement with a copy to new-work and place it back on the agenda for the next telechat."<br><br>

View file

@ -3,7 +3,7 @@
{% block subsection %}
<div id="telechat-main-DUPLICATE">
<h3>Select a Telechat</h3>
<form action="" method="post">{% csrf_token %}
<form method="post">{% csrf_token %}
{{ form.date.label_tag }} {{ form.date }}&nbsp;&nbsp;<button type="submit" name="submit" value="Select">Select</button>
</form>
<br>

View file

@ -10,7 +10,7 @@
<span class="telechat-warn"><h3>This feature is pending</h3></span>
<h3>Roll Call</h3>
<br />
<form action="" method="post">{% csrf_token %}
<form method="post">{% csrf_token %}
{% for person in people %}
<input type="checkbox" name="attendee" value="{{ person.id }}" checked="checked" /> {{ person.name }}<br />
{% endfor %}

View file

@ -69,8 +69,7 @@ var attachmentWidget = {
html += '</span>';
container.hide();
});
//html += ' <a href="#" class="removeAttach glyphicon glyphicon-remove text-danger"></a>';
html += ' <a href="#" class="removeAttach btn btn-default btn-xs">Delete</a>';
html += ' <a href="#" class="removeAttach btn btn-danger btn-sm">Delete</a>';
html += '</div>';
attachmentWidget.config.showOnDisplay.html(html);
attachmentWidget.count += 1;

View file

@ -667,5 +667,5 @@ class MessageModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(MessageModelForm, self).__init__(*args, **kwargs)
self.fields['frm'].label='From'
self.fields['frm'].widget.attrs['readonly'] = 'True'
self.fields['reply_to'].widget.attrs['readonly'] = 'True'
self.fields['frm'].widget.attrs['readonly'] = True
self.fields['reply_to'].widget.attrs['readonly'] = True

View file

@ -13,7 +13,7 @@
</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
{% comment Halloween %}
<link href='https://fonts.googleapis.com/css?family=IM+Fell+English+SC|IM+Fell+DW+Pica:400,400italic|Nova+Mono|IM+Fell+English:400,400italic&subset=latin-ext,latin' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=IM+Fell+English+SC|IM+Fell+DW+Pica:400,400italic|Nova+Mono|IM+Fell+English:400,400italic&subset=latin-ext,latin' rel='stylesheet'>
{% endcomment %}
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}">
<link rel="stylesheet" href="{% static 'ietf/css/select2.css' %}">

View file

@ -37,7 +37,7 @@
<br>
Which downward references, if any, are to be added to the DOWNREF registry?</b>
</p>
<form action="" method="post">
<form method="post">
{% csrf_token %}
{% bootstrap_form approve_downrefs_form %}
<a class="btn btn-primary"

View file

@ -20,8 +20,7 @@
<button type="submit" class="btn btn-warning" name="regenerate_text" value="Regenerate">Regenerate
</button>
{% if user|has_role:"Secretariat" %}
<a type="submit"
class="btn btn-primary"
<a class="btn btn-primary"
href="{% url 'ietf.doc.views_charter.approve' name=charter.canonical_name %}">
Charter approval page
</a>

View file

@ -155,7 +155,7 @@
{{ doc.name }}-{{ doc.rev }}
</div>
<div class="card-body">
{{ content|linkify|urlize_ietf_docs }}
{{ content|urlize_ietf_docs|linkify }}
</div>
</div>
{% endblock %}

View file

@ -989,8 +989,6 @@
</div>
{% endif %}
</td>
<td>
</td>
</tr>
</tbody>
{% endif %}

View file

@ -73,25 +73,25 @@
name="difftype"
value="--html"
id="html">
<label for="html"class="btn btn-outline-primary">Side-by-side</label>
<label for="html" class="btn btn-outline-primary">Side-by-side</label>
<input type="radio"
class="btn-check"
name="difftype"
value="--abdiff"
id="abdiff">
<label for="abdiff"class="btn btn-outline-primary">Before-after</label>
<label for="abdiff" class="btn btn-outline-primary">Before-after</label>
<input type="radio"
class="btn-check"
name="difftype"
value="--chbars"
id="chbars">
<label for="chbars"class="btn btn-outline-primary">Change bars</label>
<label for="chbars" class="btn btn-outline-primary">Change bars</label>
<input type="radio"
class="btn-check"
name="difftype"
value="--hwdiff"
id="hwdiff">
<label for="hwdiff"class="btn btn-outline-primary">Wdiff</label>
<label for="hwdiff" class="btn btn-outline-primary">Wdiff</label>
</div>
</div>
</div>

View file

@ -6,7 +6,7 @@
{% block content %}
{% origin %}
<h1>Review suggestions for documents that {{ doc }} replaces</h1>
<form name="review-suggested-replaces" role="form" method="post">
<form name="review-suggested-replaces" method="post">
{% csrf_token %}
{% bootstrap_form form %}
<a class="btn btn-secondary float-end" href="{{ doc.get_absolute_url }}">Back</a>

View file

@ -27,11 +27,11 @@
</tr>
</thead>
{% for state, docs in grouped_docs %}
<thead>
<tbody>
<tr class="table-info">
<th colspan="5">{{ state.name }}</th>
</tr>
</thead>
</tbody>
<tbody>
{% for doc in docs %}
<tr>

View file

@ -16,7 +16,7 @@
{% csrf_token %}
{% bootstrap_form form %}
<div class="mb-3">
<label class="form-label" for="role-toolbar">Related people</label>
<label class="form-label">Related people</label>
<div class="btn-toolbar"
role="toolbar"
id="role-toolbar-{{ role_type_label|slugify }}">

View file

@ -1,8 +1,8 @@
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% origin %}
<label class="my-1 fw-bold" for="docrev">Versions:</label>
<nav id="docrev" class="mb-3">
<label class="my-1 fw-bold">Versions:</label>
<nav class="mb-3">
<ul class="pagination pagination-sm">
{% for rev in revisions %}
<li class="page-item {% if rev == doc.rev %}{% if snapshot or doc.get_state_slug != 'rfc' %}active{% endif %}{% endif %}">

View file

@ -40,7 +40,7 @@
{% endif %}
{% regroup docs by search_heading as grouped_docs %}
{% for doc_group in grouped_docs %}
<thead>
<tbody>
<tr class="table-info">
<th></th>
{% if color_ad_position %}
@ -51,7 +51,7 @@
{{ doc_group.grouper|plural:doc_group.list }} ({{ doc_group.list|length }} {{"hit"|plural:doc_group.list }})
</th>
</tr>
</thead>
</tbody>
<tbody>
{% for doc in doc_group.list %}
{% include "doc/search/search_result_row.html" %}

View file

@ -15,7 +15,7 @@
</option>
</select>
<select class="form-select" name="statchg_relation_row_{{ rfc }}">
<option value="" {% if choice_slug == "" %}selected{% endif %}>
<option {% if choice_slug == "" %}selected{% endif %}>
(None)
</option>
{% for rel in relation_slugs %}
@ -38,7 +38,7 @@
data-placeholder="Enter new affected RFC.">
</select>
<select class="form-select" name="statchg_relation_row_">
<option value="" {% if choice_slug == "" %}selected{% endif %}>
<option {% if choice_slug == "" %}selected{% endif %}>
(Select proposed new status.)
</option>
{% for rel in relation_slugs %}

View file

@ -26,11 +26,11 @@
</tr>
</thead>
{% for state in state_groups %}
<thead>
<tbody>
<tr class="table-info">
<th colspan="2">{{ state.grouper }}</th>
</tr>
</thead>
</tbody>
<tbody>
{% for doc in state.list %}
<tr>

View file

@ -2,7 +2,7 @@
{% load origin %}
{% origin %}
<!doctype html>
<html>
<html lang="en">
<head>
<title>
Google Webmaster Tools Verification

View file

@ -17,13 +17,13 @@
</thead>
{% regroup adm by parent as grouped_groups %}
{% for grouptype in grouped_groups %}
<thead>
<tbody>
<tr>
<th colspan="2" class="table-info">
Active {% firstof grouptype.grouper.verbose_name grouptype.grouper.name 'Top-level Administration' %}
</th>
</tr>
</thead>
</tbody>
<tbody>
{% for group in grouptype.list %}
<tr>

View file

@ -19,11 +19,11 @@
{% regroup iabgroups by type as grouped_groups %}
{% for grouptype in grouped_groups %}
<thead>
<tbody>
<tr class="table-info"><th colspan="3">
{% firstof grouptype.grouper.verbose_name grouptype.grouper.name %}{{ grouptype.list|pluralize }}
</th></tr>
</thead>
</tbody>
<tbody>
{% for group in grouptype.list %}
<tr>

View file

@ -27,7 +27,7 @@
<div class="col-md-6 rightpanel">
<div class="h2 text-center bg-info">Markdown rendering</div>
<div class="border-bottom text-center">
<label for="exampleFormControlInput1" class="form-label">Constrain width</label>
<label class="form-label">Constrain width</label>
<input type="checkbox" class="form-check-input" name="widthconstraint">
</div>
<div class="rightcontent">{{ rendered|sanitize|safe }}</div>

View file

@ -26,7 +26,7 @@
name="milestone"
value="{{ milestone.id }}"
{% if not milestone.resolved %}checked{% endif %}>
<label class="form-check-label" for="{{ milestone.id }}">
<label class="form-check-label">
{{ milestone.desc }}
<span class="badge {% if milestone.resolved %}bg-success{% else %}bg-info{% endif %}">
{% if milestone.resolved %}

View file

@ -5,7 +5,7 @@
{% load ietf_filters static django_bootstrap5 %}
{% block content %}
<h1>Set next reviewer in queue<br><small class="text-muted">{{ group.acronym }}</small></h1>
<form class="my-3" role="form" method="post">
<form class="my-3" method="post">
{% csrf_token %}
{% bootstrap_form form %}
<button class="btn btn-primary" type="submit">Save</button>

View file

@ -30,11 +30,11 @@
</tr>
</thead>
{% if unassigned_review_requests %}
<thead>
<tbody>
<tr class="table-info" id="unassigned-review-requests">
<th colspan="7">Unassigned review requests</th>
</tr>
</thead>
</tbody>
<tbody>
{% for r in unassigned_review_requests %}
<tr>
@ -76,11 +76,11 @@
</tbody>
{% endif %}
{% if open_review_assignments %}
<thead>
<tbody>
<tr class="table-info" id="open_review_assignments">
<th colspan="7">Open review requests</th>
</tr>
</thead>
</tbody>
<tbody>
{% for a in open_review_assignments %}
<tr>
@ -153,13 +153,13 @@
</tr>
</thead>
{% if closed_review_requests %}
<thead>
<tbody>
<tr class="table-info">
<th colspan="8">
Closed review requests
</th>
</tr>
</thead>
</tbody>
<tbody>
{% for r in closed_review_requests %}
<tr>
@ -192,13 +192,13 @@
</tbody>
{% endif %}
{% if closed_review_assignments %}
<thead>
<tbody>
<tr class="table-info">
<th colspan="8">
Closed review assignments
</th>
</tr>
</thead>
</tbody>
<tbody>
{% for a in closed_review_assignments %}
<tr>

View file

@ -51,6 +51,7 @@
<th data-sort="status">Status</th>
<th data-sort="ipr">IPR</th>
<th data-sort="ad">AD/Shepherd</th>
<th></th>
</tr>
</thead>
<tbody>

View file

@ -42,7 +42,7 @@ Some parts Copyright (c) 2009 The IETF Trust, all rights reserved.
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Moderator Package for {{ date }} IESG Telechat</title>
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}">
<style type="text/css">
<style>
h3 { page-break-before:always; }
@media print {
html { margin: 0; }

View file

@ -171,7 +171,7 @@
<p>
Add a draft that you would like to review when it becomes available for review:
</p>
<form role="form" method="post" class="form-inline">
<form method="post" class="form-inline">
{% csrf_token %}
{% bootstrap_form review_wish_form %}
<button class="btn btn-primary" type="submit" name="action" value="add_wish">

View file

@ -18,7 +18,7 @@
<p>
Current value of <code>testmailcc</code> cookie: <code>{{ cookie|default:"(Unset)" }}</code>
</p>
<form role="form" method="post">
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}
<button class="btn btn-primary" type="submit">Set cookie</button>

View file

@ -69,7 +69,7 @@
</p>
</li>
</ol>
<form role="form" method="post">
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}
<button class="btn btn-primary" type="submit">Add address to account creation whitelist</button>

View file

@ -2,7 +2,7 @@
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load ietf_filters ipr_filters static person_filters textfilters %}
{% block morecss %}
{% block pagehead %}
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
{% endblock %}
{% block title %}History for IPR - {{ ipr.title }}{% endblock %}

View file

@ -55,13 +55,13 @@
</thead>
{% for doc in docs %}
<thead>
<tbody>
<tr>
<th class="table-info" colspan="3">
Results for {{ doc.name|rfcspace|lstrip:"0"|urlize_ietf_docs }} ("{{ doc.document.title }}"){% if not forloop.first %}{% if doc.related %}, which was {{ doc.relation|lower }} {{ doc.related.source|rfcspace|lstrip:"0"|urlize_ietf_docs }} ("{{ doc.related.source.title }}"){% endif %}{% endif %}
</th>
</tr>
</thead>
</tbody>
<tbody>
{% with doc.iprdocrel_set.all as doc_iprs %}
{% if doc_iprs %}

View file

@ -25,7 +25,7 @@
</tr>
</thead>
{% for alias in docs %}
<thead>
<tbody>
<tr>
<th class="table-info" colspan="3">
IPR that is related to {{ alias.name|lstrip:"0"|rfcnospace|urlize_ietf_docs }} ("{{ alias.document.title }}")
@ -34,7 +34,7 @@
{% endif %}
</th>
</tr>
</thead>
</tbody>
<tbody>
{% if alias.document.ipr %}
{% for ipr in alias.document.ipr %}

View file

@ -35,14 +35,14 @@
{% for ipr in iprs %}
{% if user|has_role:"Secretariat" %}
{% ifchanged %}
<thead>
<tbody>
<tr class="table-warning">
<th colspan="3">{{ ipr.state.name }}</th>
</tr>
</thead>
</tbody>
{% endifchanged %}
{% endif %}
<thead>
<tbody>
<tr class="table-info">
<th colspan="3">
{% block intro_prefix %}IPR that was submitted by "{{ q }}" and{% endblock %}
@ -62,7 +62,7 @@
{% block intro_suffix %}{% endblock %}
</th>
</tr>
</thead>
</tbody>
<tbody>
<tr>
<td>{{ ipr.time|date:"Y-m-d" }}</td>

View file

@ -21,7 +21,7 @@
</tr>
</thead>
{% for alias in docs %}
<thead>
<tbody>
<tr class="table-info">
<th colspan="3">
IPR related to {{ alias.name|rfcspace|lstrip:"0"|urlize_ietf_docs }} ("{{ alias.document.title }}")
@ -32,7 +32,7 @@
:
</th>
</tr>
</thead>
</tbody>
<tbody>
{% if alias.document.ipr %}
{% for ipr in alias.document.ipr %}

View file

@ -42,7 +42,7 @@
<a href="{% url 'liaison-help-fields' %}">field help</a>.
</p>
{% endif %}
<form role="form"
<form
class="liaisons-form form-horizontal show-required"
method="post"
enctype="multipart/form-data"

View file

@ -83,7 +83,7 @@
</span>
{% endif %}
</h2>
<iframe class="w-100 overflow-hidden border border-dark" scrolling="no"></iframe>
<iframe class="w-100 overflow-hidden border border-dark"></iframe>
</div>
<h2 class="mt-3">
{% if personalize %}Personalize{% endif %}

View file

@ -18,8 +18,8 @@
{# style off-agenda sessions to indicate this #}
.edit-meeting-schedule .session.off-agenda { filter: brightness(0.9); }
{# type and purpose styling #}
.edit-meeting-schedule .edit-grid .timeslot.wrong-timeslot-type { background-color: transparent; ); }
.edit-meeting-schedule .edit-grid .timeslot.wrong-timeslot-type .time-label { color: transparent; ); }
.edit-meeting-schedule .edit-grid .timeslot.wrong-timeslot-type { background-color: transparent; }
.edit-meeting-schedule .edit-grid .timeslot.wrong-timeslot-type .time-label { color: transparent; }
.edit-meeting-schedule .session.hidden-purpose { filter: blur(3px); }
{% endblock %}
{% block title %}{{ schedule.name }}: IETF {{ meeting.number }} meeting agenda{% endblock %}

View file

@ -113,10 +113,12 @@
<small class="text-muted">{{ session.last_update|utc|date:"H:i:s" }}&nbsp;UTC</small>
{% endif %}
</td>
<td>
{% if user|has_role:"Secretariat" or session.group in user_groups %}
<div class="float-end">{% include "meeting/edit_materials_button.html" %}</div>
{% endif %}
</td>
{% if user|has_role:"Secretariat" or user_groups %}
<td>
{% if session.group in user_groups %}
<div class="float-end">{% include "meeting/edit_materials_button.html" %}</div>
{% endif %}
</td>
{% endif %}
{% endif %}
</tr>

View file

@ -17,7 +17,6 @@
<p class="pull-left">Last updated: {% firstof note.get_update_time "unknown" %}</p>
<p class="pull-right"><a href="{{ note.url }}">View on notes.ietf.org</a></p>
<iframe id="preview" srcdoc="{{ note.get_preview|force_escape }}" sandbox>
<p>Your browser does not support iframes, so preview cannot be shown.</p>
</iframe>
</div>
</div>

View file

@ -11,7 +11,7 @@
{% origin %}
<h1>Interim Meeting Request</h1>
{% if form.non_field_errors %}<div class="my-3 alert alert-danger">{{ form.non_field_errors }}</div>{% endif %}
<form id="interim-request-form" role="form" method="post" class="my-3">
<form id="interim-request-form" method="post" class="my-3">
{% csrf_token %}
{% bootstrap_field form.group layout='horizontal' %}
{% bootstrap_field form.in_person layout='horizontal' %}

View file

@ -20,7 +20,7 @@
{% endblock %}
</h1>
<form id="interim-request-cancel-form"
role="form"
method="post"
class="my-3">
{% csrf_token %}

View file

@ -11,7 +11,7 @@
{% origin %}
<h1>Edit Interim Meeting Request</h1>
{% if form.non_field_errors %}<div class="my-3 alert alert-danger">{{ form.non_field_errors }}</div>{% endif %}
<form id="interim-request-form" role="form" method="post" class="my-3">
<form id="interim-request-form" method="post" class="my-3">
{% csrf_token %}
{% bootstrap_field form.group layout='horizontal' %}
<input type="hidden" name="group" value="{{ form.group.value }}">

View file

@ -9,7 +9,7 @@
{% block content %}
{% origin %}
<h1>Announce Interim Meeting</h1>
<form method="post" role="form" class="my-3">
<form method="post" class="my-3">
{% csrf_token %}
<div class="row mb-3">
<label for="id_to" class="col-md-2 fw-bold col-form-label">To</label>

View file

@ -9,7 +9,7 @@
<p class="alert alert-info my-3">
You are requesting to complete scheduling of the interim meeting for <b>{{ meeting.session_set.first.group.acronym|upper }}</b> on <b>{{ meeting.date }}</b> without sending an announcement.
</p>
<form action="" method="post">
<form method="post">
{% csrf_token %}
<input class="btn btn btn-danger" type="submit" value="Continue">
<a class="btn btn-secondary float-end"

View file

@ -19,9 +19,9 @@
</li>
{% endfor %}
{% else %}
<p>
<li>
You cannot manage the meeting materials for any groups.
</p>
</li>
{% endif %}
{% endwith %}
</ul>

View file

@ -40,11 +40,11 @@
</thead>
{% for session in area.list %}
{% ifchanged %}
<thead>
<tbody>
<tr>
<th class="table-warning" colspan="7">{{ session.current_status_name|capfirst }}</th>
</tr>
</thead>
</tbody>
{% endifchanged %}
<tbody>
<tr>

View file

@ -20,7 +20,6 @@
{% if session.agenda and show_agenda %}
{# agenda pop-up button #}
<button class="btn btn-outline-primary"
role="button"
data-bs-toggle="modal"
data-bs-target="#modal-{{ slug }}"
title="Show meeting materials">

View file

@ -11,12 +11,12 @@
{% endcomment %}
.timeslot-edit { overflow: auto; height: max(30rem, calc(100vh - 25rem));}
.tstable { width: 100%; border-collapse: separate; } {# "separate" to ensure sticky cells keep their borders #}
.tstable thead { position: sticky; top: 0; z-index: 2; background-color: white;}
.tstable thead { position: sticky; top: 0; z-index: 3; background-color: white;}
.tstable th:first-child, .tstable td:first-child {
background-color: white; {# needs to match the lighter of the striped-table colors! #}
position: sticky;
left: 0;
z-index: 1.5; {# render above other cells / borders but below thead (z-index 2, above) #}
z-index: 2; {# render above other cells / borders but below thead (z-index 3, above) #}
}
.tstable tbody > tr:nth-of-type(odd) > th:first-child {
background-color: rgb(249, 249, 249); {# needs to match the darker of the striped-table colors! #}

View file

@ -3,7 +3,6 @@
<div class="tz-display input-group my-3">
<label class="input-group-text border-primary bg-white fw-bold">Time zone:</label>
<input type="radio"
autocomplete="off"
{% if timezone == "meeting" %}checked{% endif %}
name="tzradio"
class="btn-check"
@ -11,7 +10,6 @@
onclick="ietf_timezone.use('{{ timezone }}')">
<label class="btn btn-outline-primary" for="meeting-timezone{{ id_suffix }}">Meeting</label>
<input type="radio"
autocomplete="off"
{% if timezone == "local" %}checked{% endif %}
name="tzradio"
class="btn-check"
@ -19,7 +17,6 @@
onclick="ietf_timezone.use('local')">
<label class="btn btn-outline-primary" for="local-timezone{{ id_suffix }}">Local</label>
<input type="radio"
autocomplete="off"
{% if timezone == "UTC" %}checked{% endif %}
name="tzradio"
class="btn-check"

View file

@ -1,10 +1,10 @@
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% origin %}
{% load static %}
{# FIXME: the weekview only renders correctly in quirks mode, i.e., not in HTML5 with "<!doctype html>" in the next line; it should be rewritten with fullcalendar #}
{# <!doctype html> #}
<html lang="en">
{% origin %}
<head>
<title>Weekview</title>
<meta charset="utf-8">

View file

@ -8,6 +8,7 @@
</button>
</h2>
<div id="generic_iesg_reqs_{{ position.name|slugify }}"
role="region"
class="accordion-collapse collapse">
<div class="accordion-body">{{ generic_iesg_reqs|safe }}</div>
</div>
@ -21,6 +22,7 @@
</button>
</h2>
<div id="iesg_reqs_{{ position.name|slugify }}"
role="region"
class="accordion-collapse collapse show"
aria-expanded="true">
<div class="accordion-body">{{ specific_reqs|safe }}</div>

View file

@ -146,6 +146,7 @@
<form class="form-inline" id="batch-action-form" method="post">
{% csrf_token %}
{% endif %}
{% if nominee_positions %}
<table class="table table-sm table-striped table-hover tablesorter"
id="nominee-position-table">
<thead>
@ -169,49 +170,50 @@
</th>
</tr>
</thead>
{% if nominee_positions %}
<tbody>
{% for np in nominee_positions %}
<tr>
{% if is_chair and nomcom.group.state_id == 'active' %}
<td>
<input class="batch-select form-check-input"
type="checkbox"
value="{{ np.id }}"
name="selected">
</td>
<td class="edit">
<a class="btn btn-primary btn-sm"
href="{% url 'ietf.nomcom.views.edit_nominee' year np.nominee.id %}">
Edit
</a>
</td>
{% endif %}
<tbody>
{% for np in nominee_positions %}
<tr>
{% if is_chair and nomcom.group.state_id == 'active' %}
<td>
<a href="{% url 'ietf.person.views.profile' email_or_name=np.nominee.name %}">
{{ np.nominee }}
</a>
<input class="batch-select form-check-input"
type="checkbox"
value="{{ np.id }}"
name="selected">
</td>
<td>
<td class="edit">
<a class="btn btn-primary btn-sm"
href="{% url 'ietf.nomcom.views.view_feedback_nominee' year=year nominee_id=np.nominee.id %}#comment">
View feedback
href="{% url 'ietf.nomcom.views.edit_nominee' year np.nominee.id %}">
Edit
</a>
</td>
<td>
{{ np.position.name }}
</td>
<td>
{{ np.state }}
</td>
<td>
{{ np.questionnaires|yesno:"Yes,No,No" }}
</td>
</tr>
{% endfor %}
</tbody>
{% endif %}
{% endif %}
<td>
<a href="{% url 'ietf.person.views.profile' email_or_name=np.nominee.name %}">
{{ np.nominee }}
</a>
</td>
<td>
<a class="btn btn-primary btn-sm"
href="{% url 'ietf.nomcom.views.view_feedback_nominee' year=year nominee_id=np.nominee.id %}#comment">
View feedback
</a>
</td>
<td>
{{ np.position.name }}
</td>
<td>
{{ np.state }}
</td>
<td>
{{ np.questionnaires|yesno:"Yes,No,No" }}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p>No nominees.</p>
{% endif %}
{% if is_chair %}
{% if nomcom.group.state_id == 'active' %}
<div class="mb-3">

View file

@ -26,7 +26,7 @@
</p>
{% endif %}
{% if nomcom.group.state_id == 'active' %}
<form id="reminderform " method="post">
<form id="reminderform" method="post">
{% csrf_token %}
<table class="table table-sm table-striped">
<thead>

Some files were not shown because too many files have changed in this diff Show more