Template fixes, and changes needed to fix templates.

- Legacy-Id: 19642
This commit is contained in:
Lars Eggert 2021-11-11 18:31:43 +00:00
parent 868f583afc
commit 408f45a9bf
16 changed files with 630 additions and 672 deletions

View file

@ -14,5 +14,9 @@ module.exports = {
},
globals: {
d3: true
},
parserOptions: {
sourceType: "module",
ecmaVersion: 2015
}
};

View file

@ -33,18 +33,18 @@ $enable-negative-margins: true;
@import "~/node_modules/bootstrap/scss/card";
@import "~/node_modules/bootstrap/scss/accordion";
// @import "~/node_modules/bootstrap/scss/breadcrumb";
// @import "~/node_modules/bootstrap/scss/pagination";
@import "~/node_modules/bootstrap/scss/pagination";
@import "~/node_modules/bootstrap/scss/badge";
// @import "~/node_modules/bootstrap/scss/alert";
@import "~/node_modules/bootstrap/scss/alert";
// @import "~/node_modules/bootstrap/scss/progress";
// @import "~/node_modules/bootstrap/scss/list-group";
// @import "~/node_modules/bootstrap/scss/close";
@import "~/node_modules/bootstrap/scss/close";
// @import "~/node_modules/bootstrap/scss/toasts";
// @import "~/node_modules/bootstrap/scss/modal";
// @import "~/node_modules/bootstrap/scss/tooltip";
@import "~/node_modules/bootstrap/scss/modal";
@import "~/node_modules/bootstrap/scss/tooltip";
// @import "~/node_modules/bootstrap/scss/popover";
// @import "~/node_modules/bootstrap/scss/carousel";
// @import "~/node_modules/bootstrap/scss/spinners";
@import "~/node_modules/bootstrap/scss/spinners";
// @import "~/node_modules/bootstrap/scss/offcanvas";
// @import "~/node_modules/bootstrap/scss/placeholders";

View file

@ -1,18 +1,18 @@
// Only import what we need:
// https://getbootstrap.com/docs/5.1/customize/optimize/
// import "bootstrap/js/dist/alert";
import "bootstrap/js/dist/alert";
import "bootstrap/js/dist/button";
// import "bootstrap/js/dist/carousel";
import "bootstrap/js/dist/collapse";
import "bootstrap/js/dist/dropdown";
// import "bootstrap/js/dist/modal";
import "bootstrap/js/dist/modal";
// import "bootstrap/js/dist/offcanvas";
// import "bootstrap/js/dist/popover";
// import "bootstrap/js/dist/scrollspy";
import "bootstrap/js/dist/tab";
// import "bootstrap/js/dist/toast";
// import "bootstrap/js/dist/tooltip";
import "bootstrap/js/dist/tooltip";
import jquery from "jquery"
@ -29,6 +29,7 @@ function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
jQuery.ajaxSetup({
crossDomain: false, // obviates need for sameOrigin test
beforeSend: function (xhr, settings) {
@ -38,6 +39,9 @@ jQuery.ajaxSetup({
}
});
$(document)
.ready(function () {
function dropdown_hover() {
var navbar = $(this)
.closest(".navbar");
@ -49,11 +53,6 @@ function dropdown_hover() {
}
}
if (!("ontouchstart" in document.documentElement)) {
$("ul.nav li.dropdown, ul.nav li.dropend")
.on("mouseenter mouseleave", dropdown_hover);
}
// load data for the menu
$.ajax({
url: $(document.body)
@ -77,14 +76,14 @@ $.ajax({
if (g.type != gtype) {
if (i > 0)
menu.push('<li class="dropdown-divider"></li>');
menu.push('<li class="dropdown-header">' + g.type + 's</li>');
menu.push('<li class="dropdown-header">' + g.type + "s</li>");
gtype = g.type;
}
menu.push('<li><a class="dropdown-item" href="' + g.url + '">' +
g.acronym + ' &mdash; ' + g.name + '</a></li>');
g.acronym + " &mdash; " + g.name + "</a></li>");
}
menu.push("</ul>");
for (var i = 0; i < attachTo.length; i++) {
for (i = 0; i < attachTo.length; i++) {
attachTo.closest(".dropdown-menu");
}
attachTo.append(menu.join(""));
@ -92,6 +91,12 @@ $.ajax({
}
});
if (!("ontouchstart" in document.documentElement)) {
$("ul.nav li.dropdown, ul.nav li.dropend")
.on("mouseenter mouseleave", dropdown_hover);
}
});
// This used to be in doc-search.js; consolidate all JS in one file.
$(document)
.ready(function () {
@ -172,15 +177,15 @@ $(document)
updateAdvanced();
}
$('.review-wish-add-remove-doc.ajax, .track-untrack-doc')
$(".review-wish-add-remove-doc.ajax, .track-untrack-doc")
.on("click", function (e) {
e.preventDefault();
var trigger = $(this);
$.ajax({
url: trigger.attr('href'),
type: 'POST',
url: trigger.attr("href"),
type: "POST",
cache: false,
dataType: 'json',
dataType: "json",
success: function (response) {
if (response.success) {
trigger.parent()
@ -189,12 +194,11 @@ $(document)
trigger.attr("hidden", true);
var target_unhide = null;
if (trigger.hasClass('review-wish-add-remove-doc')) {
target_unhide = '.review-wish-add-remove-doc';
} else if (trigger.hasClass('track-untrack-doc')) {
target_unhide = '.track-untrack-doc';
if (trigger.hasClass("review-wish-add-remove-doc")) {
target_unhide = ".review-wish-add-remove-doc";
} else if (trigger.hasClass("track-untrack-doc")) {
target_unhide = ".track-untrack-doc";
}
if (target_unhide) {}
trigger.parent()
.find(target_unhide)
.not(trigger)
@ -203,5 +207,4 @@ $(document)
}
});
});
});

View file

@ -20,6 +20,7 @@
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}"/>
<style>
{% block morecss %}{% endblock morecss %}
.leftmenu { width: 13em; }
</style>
{% block pagehead %}{% endblock pagehead %}
@ -64,29 +65,29 @@
</nav>
<div class="pt-3 container-fluid">
{% comment %} {% bootstrap_messages %} {% endcomment %}
{% for message in messages %}
<div class="alert{% if message.level_tag %} alert-{% if message.level_tag == 'error' %}danger{% else %}{{ message.level_tag }}{% endif %}{% endif %}{% if message.extra_tags %} {{ message.extra_tags }}{% endif %} alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&#215;</button>{{ message }}</div>
{% endfor %}
{% if request.COOKIES.left_menu == "on" and not hide_menu %}
{# ugly hack for the more or less unported meeting agenda edit pages #}
<div class="row">
<div class="d-none d-md-block border-end lh-sm leftmenu small" style="width: 13em;">
{% if request.COOKIES.left_menu == "on" and not hide_menu %}
<div class="col-1 d-none d-md-block border-end lh-sm leftmenu small">
<ul class="nav nav-pills flex-column">
{% include "base/menu.html" with flavor="left" %}
</ul>
</div>
{% endif %}
<div class="col" id="content">
{% comment %} {% bootstrap_messages %} {% endcomment %}
{% for message in messages %}
<div class="alert{% if message.level_tag %} alert-{% if message.level_tag == 'error' %}danger{% else %}{{ message.level_tag }}{% endif %}{% endif %}{% if message.extra_tags %} {{ message.extra_tags }}{% endif %} alert-dismissable fade show">
<button type="button" class="btn-close float-end" data-bs-dismiss="alert" aria-label="Close"></button>
{{ message }}
</div>
{% endfor %}
{% block content %}{{ content|safe }}{% endblock content %}
{% block content_end %}{% endblock content_end %}
</div>
{% if request.COOKIES.left_menu == "on" and not hide_menu %}
</div>
{% endif %}
<hr/>
{% block footer %}
<footer class="col-md-12 col-sm-12 text-center">
<hr/>
<a href="https://www.ietf.org/" class="p-3">IETF</a>
<a href="https://www.ietf.org/iesg/" class="p-3">IESG</a>
<a href="https://www.iab.org/" class="p-3">IAB</a>

View file

@ -1,8 +1,9 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% extends "base.html" %}
{% load origin %}
{% block title %}User settings{% endblock %}
{% block title %}User settings{% endblock title %}
{% block content %}
{% origin %}
@ -15,51 +16,47 @@
(everything still continues to work by using default settings).
</p>
<h2>How many days is considered "new"?</h2>
<h3>How many days is considered "new"?</h3>
<p>This setting affects how many days are considered "new enough" to get the special highlighting in the documents table. The default setting is {{ defaults.new_enough }} days.</p>
<div class="btn-group btn-group-justified">
<a class="btn btn-primary {% if new_enough == '7' %}active{% endif %}" href="/accounts/settings/new_enough/7">7 days</a>
<a class="btn btn-primary {% if new_enough == '14' %}active{% endif %}" href="/accounts/settings/new_enough/14">14 days</a>
<a class="btn btn-primary {% if new_enough == '21' %}active{% endif %}" href="/accounts/settings/new_enough/21">21 days</a>
<a class="btn btn-primary {% if new_enough == '30' %}active{% endif %}" href="/accounts/settings/new_enough/30">30 days</a>
<a class="btn btn-primary {% if new_enough == '60' %}active{% endif %}" href="/accounts/settings/new_enough/60">60 days</a>
<a class="btn btn-primary {% if new_enough == '90' %}active{% endif %}" href="/accounts/settings/new_enough/90">90 days</a>
</div>
<p class="btn-group d-flex">
<a class="btn btn-outline-primary {% if new_enough == '7' %}active{% endif %}" href="/accounts/settings/new_enough/7">7 days</a>
<a class="btn btn-outline-primary {% if new_enough == '14' %}active{% endif %}" href="/accounts/settings/new_enough/14">14 days</a>
<a class="btn btn-outline-primary {% if new_enough == '21' %}active{% endif %}" href="/accounts/settings/new_enough/21">21 days</a>
<a class="btn btn-outline-primary {% if new_enough == '30' %}active{% endif %}" href="/accounts/settings/new_enough/30">30 days</a>
<a class="btn btn-outline-primary {% if new_enough == '60' %}active{% endif %}" href="/accounts/settings/new_enough/60">60 days</a>
<a class="btn btn-outline-primary {% if new_enough == '90' %}active{% endif %}" href="/accounts/settings/new_enough/90">90 days</a>
</p>
<h2 class="ietf-divider">How many days is considered "soon"?</h2>
<h3>How many days is considered "soon"?</h3>
<p>This setting tells what is considered "soon" when showing documents that are going to be expire soon. The Default setting is {{ defaults.expires_soon }} days.</p>
<div class="btn-group btn-group-justified">
<a class="btn btn-primary {% if expires_soon == '7' %}active{% endif %}" href="/accounts/settings/expires_soon/7">7 days</a>
<a class="btn btn-primary {% if expires_soon == '14' %}active{% endif %}" href="/accounts/settings/expires_soon/14">14 days</a>
<a class="btn btn-primary {% if expires_soon == '21' %}active{% endif %}" href="/accounts/settings/expires_soon/21">21 days</a>
<a class="btn btn-primary {% if expires_soon == '30' %}active{% endif %}" href="/accounts/settings/expires_soon/30">30 days</a>
<a class="btn btn-primary {% if expires_soon == '60' %}active{% endif %}" href="/accounts/settings/expires_soon/60">60 days</a>
<a class="btn btn-primary {% if expires_soon == '90' %}active{% endif %}" href="/accounts/settings/expires_soon/90">90 days</a>
</div>
<p class="btn-group d-flex">
<a class="btn btn-outline-primary {% if expires_soon == '7' %}active{% endif %}" href="/accounts/settings/expires_soon/7">7 days</a>
<a class="btn btn-outline-primary {% if expires_soon == '14' %}active{% endif %}" href="/accounts/settings/expires_soon/14">14 days</a>
<a class="btn btn-outline-primary {% if expires_soon == '21' %}active{% endif %}" href="/accounts/settings/expires_soon/21">21 days</a>
<a class="btn btn-outline-primary {% if expires_soon == '30' %}active{% endif %}" href="/accounts/settings/expires_soon/30">30 days</a>
<a class="btn btn-outline-primary {% if expires_soon == '60' %}active{% endif %}" href="/accounts/settings/expires_soon/60">60 days</a>
<a class="btn btn-outline-primary {% if expires_soon == '90' %}active{% endif %}" href="/accounts/settings/expires_soon/90">90 days</a>
</p>
<h2 class="ietf-divider">Show full document text by default?</h2>
<h3>Show full document text by default?</h3>
<p>Show the full text immediately on the document page instead of only showing beginning of it. This defaults to {{ defaults.full_draft }}.</p>
<div class="btn-group btn-group-justified">
<a class="btn btn-primary {% if full_draft == 'off' %}active{% endif %}" href="/accounts/settings/full_draft/off">Off</a>
<a class="btn btn-primary {% if full_draft == 'on' %}active{% endif %}" href="/accounts/settings/full_draft/on">On</a>
</div>
<p class="btn-group d-flex">
<a class="btn btn-outline-primary {% if full_draft == 'off' %}active{% endif %}" href="/accounts/settings/full_draft/off">Off</a>
<a class="btn btn-outline-primary {% if full_draft == 'on' %}active{% endif %}" href="/accounts/settings/full_draft/on">On</a>
</p>
<h2 class="ietf-divider">Show the left-hand menu?</h2>
<h3>Show the left-hand menu?</h3>
<p>Show the left-hand menu on all regular pages? This defaults to {{ defaults.left_menu }}.</p>
<div class="btn-group btn-group-justified">
<a class="btn btn-primary {% if left_menu == 'off' %}active{% endif %}" href="/accounts/settings/left_menu/off">Off</a>
<a class="btn btn-primary {% if left_menu == 'on' %}active{% endif %}" href="/accounts/settings/left_menu/on">On</a>
</div>
{% endblock %}
<p class="btn-group d-flex">
<a class="btn btn-outline-primary {% if left_menu == 'off' %}active{% endif %}" href="/accounts/settings/left_menu/off">Off</a>
<a class="btn btn-outline-primary {% if left_menu == 'on' %}active{% endif %}" href="/accounts/settings/left_menu/on">On</a>
</p>
{% endblock content %}

View file

@ -11,7 +11,7 @@
{{ form.name|add_class:"form-control"|attr:"placeholder:Document name/title/RFC number" }}
<span class="input-group-btn">
<button class="btn btn-primary" type="submit">
<span class="bi bi-search"></span>
<span class="bi bi-search"/>
Search
</button>
</span>
@ -151,7 +151,7 @@
</div>
<div class="col-sm-4 d-grid">
<button class="btn btn-primary" type="submit">
<span class="bi bi-search"></span>
<span class="bi bi-search"/>
Search
</button>
</div>

View file

@ -1,45 +1,42 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2018-2018, All Rights Reserved #}
{% extends "base.html" %}
{% load origin %}
{% block title %}Personal Information in the Datatracker{% endblock %}
{% block title %}Personal Information in the Datatracker{% endblock title %}
{% block content %}
{% origin %}
<div class="col-sm-12" style="max-width: 85ex;">
<h1>Personal Information in the Datatracker</h1>
<p>
<a href="https://datatracker.ietf.org/doc/html/rfc3935">RFC 3935, "A Mission Statement for the IETF"</a> lays out
the goal and the mission of the IETF as follows:
the goal and the mission of the IETF as follows
</p>
<samp class="preformatted small"> The goal of the IETF is to make the Internet work better.
<pre>
The goal of the IETF is to make the Internet work better.
The mission of the IETF is to produce high quality, relevant
technical and engineering documents that influence the way people
design, use, and manage the Internet in such a way as to make the
Internet work better. These documents include protocol standards,
best current practices, and informational documents of various kinds.
</samp>
<!-- *** NOTE ***
</pre>
{% comment %}
The following text has been reviewed by legal counsel (Thomas Zych)
on Thu, 26 Apr 2018 17:24:03 -0400
*** DO NOT CHANGE WITHOUT LEGAL REVIEW ***
-->
{% endcomment %}
<p>
In order to fulfil its mission, the IETF provides various ways to distribute
and discuss Internet-Drafts, and otherwise process them until there is
consensus that they are ready for publication.
</p>
<p>
<p>
This makes the information in the content of the draft documents, as well
as contributions related to the draft documents and their processing as
laid out in the "<a href="https://www.ietf.org/about/note-well/">Note
@ -48,10 +45,9 @@
6(1)&nbsp;f) of
<a href="https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679#d1e1888-1-1">
EU's General Data Protection Regulation </a>.
</p>
<p>
<p>
The datatracker treats all personal information derived from draft documents and
documents published as RFC, as well as personal information derived from
processing draft documents through the IETF procedures, in accordance with
@ -59,16 +55,14 @@
email addresses and other address information provided in draft documents or as
contact information for IETF roles such as Working Group chairs, secretaries,
Area Directors and other roles.
</p>
<p>
<p>
There is however additional personal information held in the datatracker that
is used for other purposes. This information requires the consent of the
individuals whose information is stored and processed which IETF secures
through various means, and the person it relates to may at any time request
its correction or removal. This includes:
</p>
<ul>
@ -80,7 +74,6 @@
</ul>
<p>
Most of this information can be edited on the individual's
<a href="/accounts/profile/">Account Info</a> page by the individual
after logging in to the account. If the datatracker holds such
@ -88,14 +81,11 @@
the <a href="mailto:{{ settings.SECRETARIAT_ACTION_EMAIL }}">IETF secretariat</a> to change
or remove the information will be honoured to the extent feasible and
legally permitted.
</p>
<p>
Please also see the IETF's overall
<a href="https://www.ietf.org/privacy-statement/">Statement concerning personal data</a>.
<a href="https://www.ietf.org/privacy-statement/">Statement concerning personal data</a>
</p>
</div>
{% endblock %}
{% endblock content %}

View file

@ -1,35 +1,30 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% extends "base.html" %}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}
{{ title }} {{ person.plain_name }}
{% endblock %}
{% endblock title %}
{% block content %}
{% origin %}
<h1>{{ title }}<br><small>{{ person.plain_name }}</small></h1>
<p>
<b>
{{ info|safe }}
</b>
<h1>{{ title }}</h1>
<h2>{{ person.plain_name }}</h2>
<p class="fw-bold">
{{ info|striptags }}
</p>
<form enctype="multipart/form-data" method="post">
{% csrf_token %}
{% bootstrap_form form %}
<!-- Regarding placement of buttons: https://www.lukew.com/ff/entry.asp?571 -->
<button type="submit" class="btn btn-primary" name="submit" value="Save">Submit</button>
<a class="btn btn-primary float-end" href="{% url "ietf.ietfauth.views.profile" %}">Back</a>
{% bootstrap_button button_type="submit" content="Submit" %}
<a class="btn btn-secondary float-end" href="{% url "ietf.ietfauth.views.profile" %}">Back</a>
</form>
{% endblock %}
{% endblock content %}

View file

@ -1,8 +1,10 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% extends "base.html" %}
{% load origin %}
{% block title %}Profile update successful{% endblock %}
{% block title %}Profile update successful{% endblock title%}
{% block content %}
{% origin %}
@ -16,4 +18,4 @@
{% endfor %}
<a class="btn btn-primary" href="{% url "ietf.ietfauth.views.profile" %}">Edit profile</a>
{% endblock %}
{% endblock content %}

View file

@ -1,10 +1,12 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% extends "base.html" %}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Account creation{% endblock %}
{% block title %}Account creation{% endblock title %}
{% block content %}
{% origin %}
@ -17,41 +19,34 @@
<p>We have sent an email to {{ to_email }} with instructions on how to complete the process.</p>
{% else %}
<div class="row">
<div class="col-md-2 col-sm-0"></div>
<div class="col-md-8 col-sm-12">
<h1>Account creation</h1>
<p>
<b>If you already have an account and want to use a new email address,</b>
please go to your account profile page and
</p>
<p>
<a class="btn btn-primary" href="{% url "ietf.ietfauth.views.profile" %}"> Add a new email address</a>
</p>
<p>&nbsp;</p>
<p>
<b>If you already have an account but forgot your password,</b>
please simply
</p>
<p>
<a class="btn btn-warning" href="{% url "ietf.ietfauth.views.password_reset" %}">Reset your password</a>
</p>
<hr>
<hr/>
<p>Please enter your email address in order to create your datatracker account.</p>
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}
<button type="submit" class="btn btn-primary">Create account</button>
{% bootstrap_button button_type="submit" content="Create account" %}
</form>
</div>
<div class="col-md-2 col-sm-0"></div>
</div>
{% endif %}
{% endblock %}
{% endblock content %}

View file

@ -1,25 +1,23 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% extends "base.html" %}
{% load origin %}
{% load widget_tweaks django_bootstrap5 %}
{% load person_filters %}
{% block title %}Profile for {{ user }}{% endblock %}
{% block title %}Profile for {{ user }}{% endblock title %}
{% block content %}
{% origin %}
<h1>Profile information for {{ user.person.name }}</h1>
<p>&nbsp;</p>
<p>
The information you provide below is used to generate your <a href="{% url 'ietf.person.views.profile' email_or_name=user.person.email %}">public datatracker profile page</a>
</p>
<hr>
<form class="form-horizontal" method="post">
{% csrf_token %}
@ -28,34 +26,29 @@
{% bootstrap_form_errors f %}
{% endfor %}
<div class="form-group">
<label class="col-sm-2 control-label">User name <a href="#pi">&dagger;</a></label>
<div class="row mb-3">
<label class="col-sm-2 col-form-label fw-bold">User name <a href="#pi"><i class="bi bi-exclamation-circle"></i></a></label>
<div class="col-sm-10">
<p class="form-control-static">
<p class="form-control-plaintext">
{{ user.username }}
&nbsp;<a href="/accounts/username/"><span class="bi bi-pencil"></span></a>
</p>
<a class="btn btn-primary" href="/accounts/username/">Edit</a>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Password <a href="#pi">&dagger;</a></label>
<div class="row mb-3">
<label class="col-sm-2 col-form-label fw-bold">Password <a href="#pi"><i class="bi bi-exclamation-circle"></i></a></label>
<div class="col-sm-10">
<p class="form-control-static">
<a href="/accounts/password/">Password change form</a>
&nbsp;<a href="/accounts/password/"><span class="bi bi-pencil"></span></a>
</p>
<a class="btn btn-primary" href="/accounts/password/">Change password</a>
</div>
</div>
{% if person.photo %}
<div class="form-group">
<label class="col-sm-2 control-label">Photo <a href="#pi">&dagger;</a></label>
<div class="row mb-3">
<label class="col-sm-2 col-form-label fw-bold">Photo <a href="#pi"><i class="bi bi-exclamation-circle"></i></a></label>
<div class="col-sm-10">
<p class="form-control-static">
<p class="form-control-plaintext">
<a href="{{ person.photo.url }}">
<img class="photo" src="{{ person.photo.url }}" alt="Photo of {{ person }}" />
</a>
@ -64,115 +57,112 @@
</div>
{% endif %}
<div class="form-group">
<label class="col-sm-2 control-label">Nomcom Eligible</label>
<div class="col-sm-1 form-control-static">
<div class="row mb-3">
<label class="col-sm-2 col-form-label fw-bold">NomCom Eligible</label>
<div class="col-sm-10">
<p class="form-control-plaintext">
{{ person|is_nomcom_eligible|yesno:'Yes,No,No' }}
</p>
{% if volunteer_status == 'allow' %}
<br>
<a id="volunteer-button" class="btn btn-primary" href="{% url "ietf.nomcom.views.volunteer" %}">Volunteer</a>
{% endif %}
</div>
</div>
<div class="col-sm-9">
<p class="alert alert-info form-control-static">
<div class="offset-sm-2 alert alert-info ">
<p>
If you believe this calculation is incorrect, make sure you've added all the
email addresses you've registered for IETF meetings with to the
list below.<br/>
list below.</p>
<p>
If you've done so and the calculation is still incorrect, please
send a note to
<a href="mailto:{{settings.SECRETARIAT_SUPPORT_EMAIL}}">{{settings.SECRETARIAT_SUPPORT_EMAIL}}</a>.<br/>
<a href="mailto:{{ settings.SECRETARIAT_SUPPORT_EMAIL }}">{{ settings.SECRETARIAT_SUPPORT_EMAIL }}</a>.
</p>
<p>
See <a href="{% url 'ietf.doc.views_doc.document_main' name='rfc8713' %}">RFC 8713</a>
for eligibility requirements.
For the 2021 nomcom, see also <a href="{% url 'ietf.doc.views_doc.document_main' name='rfc8989' %}">RFC 8989</a>.
For the 2021 and 2022 NomComs, see also <a href="{% url 'ietf.doc.views_doc.document_main' name='rfc8989' %}">RFC 8989</a>.
</p>
{% if volunteer_status == 'volunteered' %}
<br/><strong id='volunteered'>You have volunteered for the {{nomcom.group.name}}.</strong> To modify your volunteer status, contact the NomCom chair.
{% endif %}
<p>
<b id="volunteered">You have volunteered for the {{ nomcom.group.name }}.</b> To modify your volunteer status, contact the NomCom chair.
</p>
</div>
{% endif %}
</div>
<div class="form-group">
<label class="col-sm-2 control-label">External Resources <a href="#pi">&dagger;</a></label>
<div class="col-sm-10 form-control-static">
<div class="row mb-3">
<label class="col-sm-2 col-form-label fw-bold">External Resources <a href="#pi"><i class="bi bi-exclamation-circle"></i></a></label>
<div class="col-sm-10">
{% for extres in person.personextresource_set.all %}
<div class="row">
<div class="col-sm-1">
<span title="{{ extres.name.name}}">{% firstof extres.display_name extres.name.name %}</span>
<div class="col-3">
{% firstof extres.display_name extres.name.name %}
</div>
<div class="col-sm-11">{{extres.value}}
{% if forloop.first %}&nbsp;<a href="{% url 'ietf.ietfauth.views.edit_person_externalresources' %}"><span class="bi bi-pencil"></span></a>{% endif %}
<div class="col">
{{ extres.value }}
</div>
</div>
{% empty %}
<div class="row"><div class="col-sm-1">None&nbsp;<a href="{% url 'ietf.ietfauth.views.edit_person_externalresources' %}"><span class="bi bi-pencil"></span></a></div></div>
None
{% endfor %}
<a class="btn btn-primary mt-1" href="{% url 'ietf.ietfauth.views.edit_person_externalresources' %}">Edit</a>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Email addresses</label>
<div class="col-sm-10">
<div class="row">
<div class="col-sm-10" id="emails">
<div class="row mb-3">
<label class="col-sm-2 col-form-label fw-bold">Email addresses</label>
<div class="col-sm-10 emails">
<table class="table table-sm">
<tr ><th>Primary</th><th>Active</th><th>Address</th><th>Origin</th></tr>
<tr>
<th class="text-center">Primary</th>
<th class="text-center">Active</th>
<th>Address</th>
<th>Origin</th></tr>
{% for email in emails %}
<tr>
<td><input type="radio" name="primary_email" value="{{ email.pk }}" {% if email.primary %}checked{% endif %}></td>
<td><input type="checkbox" name="active_emails" value="{{ email.pk }}" {% if email.active %}checked{% endif %}></td>
<td class="text-center">
<input class="form-check-input" type="radio" name="primary_email" value="{{ email.pk }}" {% if email.primary %}checked{% endif %}/>
</td>
<td class="text-center">
<input class="form-check-input" type="checkbox" name="active_emails" value="{{ email.pk }}" {% if email.active %}checked{% endif %}/>
</td>
<td>
{% if email.origin == person.user.username or email.origin == '' %}<a href="#pi">&dagger;</a>{% endif %}
{% if email.origin == person.user.username or email.origin == '' %}
<a href="#pi"><i class="bi bi-exclamation-circle"></i></a>
{% endif %}
{{ email }}
</td>
<td>{{ email.origin|default:'(unknown)' }}</td>
</tr>
{% endfor %}
</table>
</div>
<div class="col-sm-10">
<div class="help-block">Note: Email addresses cannot be deleted in this form, only deactivated.</div>
</div>
</div>
</div>
</div>
<p class="text-muted">Note: Email addresses cannot be deleted in this form, only deactivated.</p>
{% for f in new_email_forms %}
{% bootstrap_field f.new_email layout="horizontal" show_label=False %}
{% endfor %}
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="new-emails"></div>
<button class="btn btn-primary btn-sm add-email">Add a new email address</button>
<div>
<button class="btn btn-primary add-email mb-5">Add new email address</button>
</div>
</div>
{% for role in roles %}
{% bootstrap_field role.email_form.email layout="horizontal" show_label=False %}
{% bootstrap_field role.email_form.email show_label=False %}
{% endfor %}
{% bootstrap_field person_form.name layout="horizontal" %}
{% bootstrap_field person_form.plain layout="horizontal" %}
{% bootstrap_field person_form.ascii layout="horizontal" %}
{% if roles %}
{% bootstrap_field person_form.biography layout="horizontal" %}
{% endif %}
{% bootstrap_field person_form.consent layout="horizontal" %}
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
{% bootstrap_form person_form layout="horizontal" exclude="ascii_short" %}
{% bootstrap_button button_type="submit" content="Submit" extra_classes="offset-sm-2" %}
</form>
<hr>
<div class="small text-muted mt-5">
<p id="pi"><strong>[&dagger;] Personal information requiring consent:</strong></p>
<p id="pi">
<b><i class="bi bi-exclamation-circle"></i> Personal information requiring consent</b>
</p>
<p>
Personal information in the datatracker which is derived from your contributions
@ -182,53 +172,72 @@
covering IETF's Legitimate Interest due to the IETF's mission of developing standards
for the internet. See also the page on <a href="/help/personal-information">handling
of personal information</a>.
</p>
<p>
Personal information which is <b>not</b> derived from your contributions is covered by the EU
<p>
Personal information which is <i>not</i> derived from your contributions is covered by the EU
<a href="https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679#d1e1888-1-1">GDPR Article 6(1)&nbsp;(a)</a>
regarding consent. All such information is visible on this page and shown with the
dagger symbol (<strong>&dagger;</strong>) next to it, or listed on your
<i class="bi bi-exclamation-circle"></i> symbol next to it, or listed on your
<a href="{% url 'ietf.community.views.view_list' user.username %}">notification subscription page</a>. Most of this
information can be edited or removed on these pages. There are some exceptions, such
as photos, which currently require an email to <a href="mailto:{{ settings.SECRETARIAT_SUPPORT_EMAIL }}">the Secretariat</a>
if you wish to update or remove the information.
</p>
<p>
<p>
All the information the datatracker has that is coupled to this account and visible
on this page or otherwise related to your work on ietf documents, is also available
to you as a <a href="{% url 'ietf.api.views.PersonalInformationExportView' %}">JSON blob</a> when
you are logged in. It contains both the Legitimate Interest information and the information
that requires Consent.
</p>
{% endblock %}
</div>
{% endblock content %}
{% block js %}
<script>
$(document).ready(function() {
$("input[name=active_emails]").on("change keypress click", function () {
$(document)
.ready(function () {
$("input[name=active_emails]")
.on("change keypress click", function () {
if (this.checked) {
$(this).parent().next().addClass("text-success");;
$(this).parent().next().removeClass("text-danger line-through");
$(this)
.parent()
.next()
.addClass("text-success");;
$(this)
.parent()
.next()
.removeClass("text-danger line-through");
} else {
$(this).parent().next().addClass("text-danger line-through");
$(this).parent().next().removeClass("text-success");
$(this)
.parent()
.next()
.addClass("text-danger line-through");
$(this)
.parent()
.next()
.removeClass("text-success");
}
}).trigger("change");
})
.trigger("change");
$(".add-email").click(function(e) {
$(".add-email")
.on("click", function (e) {
e.preventDefault();
var container = $(this).closest("form").find(".new-emails");
var container = $(this)
.closest("form")
.find(".new-emails");
$('<input class="form-control" name="new_email" placeholder="The address entered here will get a confirmation challenge. To add an address that cannot confirm, contact the secretariat.">').appendTo(container).focus();
$('<div class="float-end pad"><i>Remember to submit the form for the new email challenge to be sent.</i></div>').appendTo(container);
$('<input class="form-control mb-3" name="new_email" placeholder="You will get a confirmation challenge. To add an address that cannot confirm, contact the secretariat.">')
.appendTo(container)
.trigger("focus");
$('<div class="float-end text-muted small">Remember to submit the form for the new email challenge to be sent.</div>')
.appendTo(container);
})
});
</script>
{% endblock %}
{% endblock js %}

View file

@ -1,40 +1,26 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% extends "base.html" %}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Sign in{% endblock %}
{% block title %}Sign in{% endblock title %}
{% block content %}
{% origin %}
<div class="col-md-2 col-sm-0"></div>
<div class="col-md-8 col-sm-12">
<h1>Sign in</h1>
<script type="text/javascript">window.scrollTo(0, 0)</script>
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}
{% if alert %}
<p class="alert alert-danger">
{{ alert }}
</p>
{% endif %}
<button type="submit" class="btn btn-primary">Sign in</button>
{% bootstrap_button button_type="submit" content="Sign in" %}
<div class="float-end">
Forgot your password?
<a href="{% url 'ietf.ietfauth.views.password_reset' %}">Request a reset</a>.
</div>
</form>
</div>
<div class="col-md-2 col-sm-0"></div>
{% endblock %}
{% endblock content %}

View file

@ -1,10 +1,10 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% extends "base.html" %}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Complete account creation{% endblock %}
{% block title %}Complete account creation{% endblock title %}
{% block content %}
{% origin %}
@ -13,9 +13,7 @@
<p>
Our apologies, it looks like there was an issue creating your Datatracker account.
Please send an email to support@ietf.org and we'll get you set up promptly.
Best, IETF Secretariat
Please send an email to the <a href="mailto:{{ settings.SECRETARIAT_SUPPORT_EMAIL }}">IETF secretariat</a> and we'll get you set up promptly.
</p>
{% endblock %}
{% endblock content %}

View file

@ -1,10 +1,12 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% extends "base.html" %}
{% load origin %}
{% load django_bootstrap5 %}
{% block title %}Password reset{% endblock %}
{% block title %}Password reset{% endblock title %}
{% block content %}
{% origin %}
@ -22,12 +24,7 @@
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}
<button type="submit" class="btn btn-warning">Reset password</button>
{% bootstrap_button button_type="submit" content="Reset password" %}
</form>
{% endif %}
{% endblock %}
{% endblock content %}

View file

@ -1,36 +1,30 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% extends "base.html" %}
{% load origin %}
{% block title %}About the Datatracker{% endblock %}
{% block title %}About the Datatracker{% endblock title %}
{% block content %}
{% origin %}
<div class="col-sm-12">
<h1>About the IETF Datatracker</h1>
<p>
<p>
The IETF Datatracker is the primary day-to-day front-end to the IETF database for people
who work on IETF standards. It contains data about the documents, working groups,
meetings, agendas, minutes, presentations, and more, of the IETF.
</p>
<p>
The primary public face of the IETF is at <a href="https://www.ietf.org/">www.ietf.org</a>.
</p>
<p>
All the Datatracker code is publicly avaliable from the
<p>
All the Datatracker code is publicly available from the
<a href="https://svn.ietf.org/svn/tools/ietfdb">IETF tools SVN repository</a>.
Bug tickets and wiki notes are available from the
<a href="https://trac.ietf.org/trac/ietfdb">Issue Tracker</a>, and
there are also <a href="/release">release notes</a> available since version 2.00.
</p>
<p>
<p>
Below you'll find a brief history of the datatracker development, in terms of the big
moments. For the nitty-gritty week-to-week code changes, please check the release
notes or the commit log.
@ -38,8 +32,8 @@
</p>
<h2>Version 6.x Work</h2>
<p>
<p>
Between the release of 6.0.0 in April 2015 and the <a href="/release/">latest release</a>
there has been numerous releases (75, as of 11 Feb 2017) which has extended the
functionality of the datatracker substantially. The <a href="/release/#release-list">release list</a>
@ -48,8 +42,8 @@
</p>
<h2>Version 6.0.0: Facelift using Bootstrap</h2>
<p>
<p>
During more than a year, from July 2013 to late 2014, <i>Lars Eggert</i> worked intensively
on a major facelift to the datatracker, porting the GUI to Bootstrap. The work
took
@ -58,23 +52,23 @@
</a>, and comprised changes to 1016 different files.
</p>
<p>
<p>
This work has turned the IETF Datatracker website into a responsive website which
support use on a much larger variety of devices, from small mobile devices to desktops.
</p>
<p>
The work relies heavily on the capabilities of <a href="http://getbootstrap.com">
<p>
The work relies heavily on the capabilities of <a href="https://getbootstrap.com">
Bootstrap</a>, and continues to use the <a href="https://www.djangoproject.org/">Django</a>
framework which the datatracker has been build on since <a href="/release/2.00/">version
2.00</a>. It also uses icons from <a href="">FontAwesome</a>, and functions from
2.00</a>. It also uses icons from <a href="https://fontawesome.com/">FontAwesome</a>, and functions from
<a href="https://django-bootstrap3.readthedocs.org/">django-bootstrap3</a>.
</p>
<p>
<p>
Additional
<a href="https://trac.ietf.org/trac/ietfdb/log/branch/iola?rev=9116&amp;stop_rev=8520&amp;limit=200">
page conversion work
@ -83,21 +77,21 @@
final style tweaks, bug-fixes and adaptations
</a>
by <i>Henrik Levkowetz</i>, giving it a distinct
<a href="http://www.colourlovers.com/palette/3702908/Key_West_Sunset">colour palette</a>
<a href="https://www.colourlovers.com/palette/3702908/Key_West_Sunset">colour palette</a>
(with the addition of complementing green and red colours for success and error indications),
and a selection of fonts from
<a href="http://www.paratype.com/public/">ParaType</a>
(<a href="http://www.identifont.com/show?2G32">PT Serif</a> for body text,
<a href="http://www.identifont.com/show?2G2G">PT Sans Caption</a> for headers,
<a href="http://www.identifont.com/show?2G2F">PT Sans</a> for menus,
<a href="https://www.paratype.com/public/">ParaType</a>
(<a href="https://www.identifont.com/show?2G32">PT Serif</a> for body text,
<a href="https://www.identifont.com/show?2G2G">PT Sans Caption</a> for headers,
<a href="https://www.identifont.com/show?2G2F">PT Sans</a> for menus,
and PT Mono for monospaced documents). (Even if PT Sans Caption was
created as a 'Caption' (6-8pt) <a href="http://en.wikipedia.org/wiki/Font#Optical_size">
created as a 'Caption' (6-8pt) <a href="https://en.wikipedia.org/wiki/Font#Optical_size">
optical size</a> font to go with PT Sans, it works well for headers when paired with PT Serif.)
</p>
<h2>Version 5.x Work</h2>
<p>
<h2>Version 5.x Work</h2>
<p>
Between the release of 5.0.0 in January 2014 and the last release in the 5.x series in
April 2015, there were 42 releases containing bug fixes and features. Worth mentioning
were 4 code sprint releases, added support for the secretariat's agenda scheduling work,
@ -106,24 +100,23 @@
database for tool builders, improved <a href="/ipr/">IPR support</a>, a move to Django 1.7,
and many <a href="https://trac.ietf.org/trac/ietfdb/wiki/Testing?version=13">
improvements in testing support</a>.
</p>
<h2>Version 5.0.0: Shim Removal</h2>
<div class="alert-info">
<div class="alert alert-info">
To be written.
</div>
<h2>Version 4.00: New Database Schema</h2>
<div class="alert-info">
<div class="alert alert-info">
To be written.
</div>
<h2>Version 3.00: Django Port of the IESG Datatracker Pages</h2>
<div class="alert-info">
<div class="alert alert-info">
To be written.
</div>
@ -153,8 +146,4 @@
public presentation</a> of it and its capabilities was made 2002-11-20
in Atlanta by Thomas Narten.
</p>
</div>
{% endblock %}
{% endblock content %}

View file

@ -1,42 +1,41 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}{% load cache %}
{% block title %}Release information{% endblock %}
{% extends "base.html" %}
{% load origin %}
{% load cache %}
{% block morecss %}
.year-row { background-color: white; }
.version-row { vertical-align: top; }
.version { text-align: right; padding: 0.1em 0.5em; min-width: 4em; }
.date { text-align: right; padding: 0.1em 0.5em; min-width: 8em; }
.release-title { padding: 0.1em 0.5em; }
{% endblock %}
{% block title %}Release information{% endblock title %}
{% block content %}
{% origin %}
<div class="col-sm-12">
<h1>
<div class="row">
<h1 class="col-11">
<a href="https://trac.ietf.org/trac/ietfdb/browser/tags/{{ entry.version }}">
Version {{ entry.version }}</a>
<br><small>Released {{ entry.date }}</small>
<div class="float-end"><a href="{% url "ietf.release.views.stats" %}" class="icon-link">&nbsp;<span class="small bi bi-bar-chart-line">&nbsp;</span></a></div>
<br/><small>Released {{ entry.date }}</small>
</h1>
<div class="col-1 text-end">
<a href="{% url "ietf.release.views.stats" %}" class="icon-link">
<span class="bi bi-bar-chart-line"></span>
</a>
</div>
</div>
<ul class="pager">
<li class="previous {% if not entry.prev %}disabled{% endif %}">
<a href="{% if entry.prev %}/release/{{entry.prev.version}}/{% else %}#{% endif %}"><span class="bi bi-arrow-left"></span> Previous release</a>
<ul class="pagination d-flex py-2">
<li class="me-auto page-item {% if not entry.prev %}disabled{% endif %}">
<a class="page-link" href="{% if entry.prev %}/release/{{ entry.prev.version }}/{% else %}#{% endif %}"><span class="bi bi-arrow-left"></span> Previous release</a>
</li>
<li class="next {% if not entry.next %}disabled{% endif %}">
<a href="{% if entry.next %}/release/{{entry.next.version}}/{% else %}#{% endif %}">Next release <span class="bi bi-arrow-right"></span></a>
<li class="page-item {% if not entry.next %}disabled{% endif %}">
<a class="page-link" href="{% if entry.next %}/release/{{ entry.next.version }}/{% else %}#{% endif %}">Next release <span class="bi bi-arrow-right"></span></a>
</li>
</ul>
<p>
{% if coverage %}
Tested:
<b>Code</b>: {{coverage.code.percentage|stringformat:".2f"}}%, &nbsp;
<b>Templates</b>: {{coverage.template.percentage|stringformat:".2f"}}%, &nbsp;
<b>URLs</b>: {{coverage.url.percentage|stringformat:".2f"}}% &nbsp;
<b>Code</b>: {{ coverage.code.percentage|stringformat:".2f" }}%,
<b>Templates</b>: {{ coverage.template.percentage|stringformat:".2f" }}%,
<b>URLs</b>: {{ coverage.url.percentage|stringformat:".2f" }}%
{% endif %}
{% if code_coverage_url %}
<br/>
@ -45,44 +44,37 @@
</p>
<h2>{{ entry.version }} release notes</h2>
<pre>{% if entry.title %} <b>{{entry.title}}</b>
{% if entry.title %}<h4>{{ entry.title }}</h4>{% endif %}
<pre>{{ entry.html|safe }}
{% endif %}{{entry.html|safe}}
-- {{entry.author}} &lt;{{entry.email}}&gt; {{entry.date}}
&mdash; {{ entry.author }} &lt;{{ entry.email }}&gt; {{ entry.date }}
</pre>
{% cache 3600 ietf_release_list %}
<div id="release-list"></div>
<h2>Release list:</h2>
<table style="margin-left: 3em" class="table-striped">
<tbody>
<table class="table table-striped table-sm">
{% for item in releases %}
{% ifchanged %}
</tbody>
<tbody>
<tr><td colspan="3"></td></tr>
<tr class="year-row">
<th class="h3">{{ item.date|slice:"7:11" }}</th>
<th></th>
<th></th>
<tr class="table-info">
<th colspan="3" class="h4">{{ item.date|slice:"7:11" }}</th>
</tr>
{% endifchanged %}
<tr class="version-row">
<td class="version"><a href="/release/{{item.version}}/">{{ item.version }}</a></td>
<td class="date">{{ item.date|slice:":11" }}</td>
<td class="release-title">{{ item.title }}</td>
<tr>
<td class="text-end"><a href="/release/{{ item.version }}/">{{ item.version }}</a></td>
<td class="text-end pe-3">{{ item.date|slice:":11" }}</td>
<td>{{ item.title }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endcache %}
</div>
{% endblock %}
{% endblock content %}
{% block footer %}
<div class="col-md-12 text-center padded-top">
<a href="https://trac.ietf.org/trac/ietfdb/wiki/ContractorInstructions"><i>Contractor instructions</i></a>
</div>
<p class="text-center">
<a href="https://trac.ietf.org/trac/ietfdb/wiki/ContractorInstructions">Contractor instructions</a>
</p>
{{ block.super }}
{% endblock %}
{% endblock footer %}