More bs5 changes

- Legacy-Id: 19725
This commit is contained in:
Lars Eggert 2021-12-01 18:45:19 +00:00
parent 448c6dbe9e
commit e2541030d3
15 changed files with 343 additions and 237 deletions

View file

@ -108,7 +108,6 @@ $(document)
// Automatically add a navigation pane to long pages
$(document)
.ready(function () {
var headings = $("#content")
.find("h1, h2, h3, h4, h5, h6");
@ -123,11 +122,6 @@ $(document)
var last_level;
var nav;
$("body")
.attr("data-bs-spy", "scroll")
.attr("data-bs-target", "#righthand-nav")
.scrollspy("refresh");
$("#content")
.attr("data-bs-offset", 0)
.attr("tabindex", 0)
@ -185,5 +179,52 @@ $(document)
item[0].scrollIntoView({ block: "center" });
}
});
$("body")
.attr("data-bs-spy", "scroll")
.attr("data-bs-target", "#righthand-nav")
.scrollspy("refresh");
$(window)
.on("activate.bs.scrollspy", function () {
console.log("X");
});
}
});
// Replace track/untrack functionality with js.
$(document)
.ready(function () {
$('.review-wish-add-remove-doc.ajax, .track-untrack-doc')
.click(function (e) {
e.preventDefault();
var trigger = $(this);
$.ajax({
url: trigger.attr('href'),
type: 'POST',
cache: false,
dataType: 'json',
success: function (response) {
if (response.success) {
trigger.parent()
.find(".track-untrack-doc")
.tooltip("hide");
trigger.addClass("visually-hidden");
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 (target_unhide) {
trigger.parent()
.find(target_unhide)
.not(trigger)
.removeClass("visually-hidden");
}
}
}
});
});
});

View file

@ -0,0 +1,36 @@
$(document)
.ready(function () {
$("[name=rule_type]")
.on("click change keypress", function () {
var form = $(this)
.closest("form");
var ruleType = $(this)
.val();
var emptyForms = $(".empty-forms");
var currentFormContent = form.find(".form-content-placeholder .rule-type");
if (!ruleType || !currentFormContent.hasClass(ruleType)) {
// move previous back into the collection
if (currentFormContent.length > 0)
emptyForms.append(currentFormContent);
else
currentFormContent.html(""); // make sure it's empty
// insert new
if (ruleType)
form.find(".form-content-placeholder")
.append(emptyForms.find("." + ruleType));
}
});
$("[name=rule_type]")
.each(function () {
// don't trigger the handler if we have a form with errors
var placeholderContent = $(this)
.closest("form")
.find(".form-content-placeholder >");
if (placeholderContent.length == 0 || placeholderContent.hasClass("rule-type"))
$(this)
.trigger("change");
});
});

View file

@ -1,17 +1,14 @@
{# bs5ok #}
{# Copyright The IETF Trust 2007, All Rights Reserved #}
{% extends "base.html" %}
{% block title %}OpenID Connect Issuer{% endblock %}
{% block content %}
<h2>OpenID Connect Issuer</h2>
<h1>OpenID Connect Issuer</h1>
<p>
This is the IETF Datatracker's OpenID Connect Issuer endpoint.
The OpenID Connect provider info is at
<code>
<a href="{% url 'oidc_provider:provider-info' %}">{% url 'oidc_provider:provider-info' %}"</a>
<a href="{% url 'oidc_provider:provider-info' %}">{% url 'oidc_provider:provider-info' %}</a>
</code>
</p>
{% endblock %}
{% endblock %}

View file

@ -1,17 +1,18 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% origin %}
<ul class="dropdown-menu {% if flavor == 'top' %}mt-n1{% else %}ms-n1{% endif %}">
{% for p in parents %}
<li>
<a class="dropdown-item {% if flavor != 'top' %}text-wrap{% endif %}" href="{{ p.menu_url }}">Active {{ p.name }}s</a>
<a class="dropdown-item {% if flavor != 'top' %}text-wrap{% endif %}"
href="{{ p.menu_url }}">Active {{ p.name }}s</a>
</li>
{% endfor %}
{% for o in others %}
<li>
<a class="dropdown-item {% if flavor != 'top' %}text-wrap{% endif %}" href="{{o.menu_url}}">{{ o.acronym|upper }}</a>
<a class="dropdown-item {% if flavor != 'top' %}text-wrap{% endif %}"
href="{{ o.menu_url }}">{{ o.acronym|upper }}</a>
</li>
{% endfor %}
</ul>

View file

@ -1,11 +1,11 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% origin %}
{% for p in parents %}
<li class="dropend group-menu group-parent-{{ p.id }}">
<a class="dropdown-item dropdown-toggle {% if flavor != 'top' %}text-wrap link-primary{% endif %}" href="{{ p.menu_url }}">
<a class="dropdown-item dropdown-toggle {% if flavor != 'top' %}text-wrap link-primary{% endif %}"
href="{{ p.menu_url }}">
{{ p.short_name }}
</a>
</li>

View file

@ -1,29 +1,31 @@
<ul class="list-inline text-end pt-4">
<li class="list-inline-item">
<label id="list-feeds">Atom feed:</label>
<div class="btn-group" role="group" aria-labelledby="list-feeds">
<a class="btn btn-primary" title="Feed of all changes" href="{% if clist.group %}{% url "ietf.community.views.feed" acronym=clist.group.acronym %}{% else %}{% url "ietf.community.views.feed" username=clist.user.username %}{% endif %}">
<i class="bi bi-rss"></i> All changes
</a>
<a class="btn btn-primary" title="Feed of only significant state changes" href="{% if clist.group %}{% url "ietf.community.views.feed" acronym=clist.group.acronym %}{% else %}{% url "ietf.community.views.feed" username=clist.user.username %}{% endif %}?significant=1">
<i class="bi bi-rss"></i> Significant
</a>
</div>
</li>
{# bs5ok #}
<div class="text-end">
<label id="list-feeds">Atom feed:</label>
<div class="btn-group" role="group" aria-labelledby="list-feeds">
<a class="btn btn-primary"
title="Feed of all changes"
href="{% if clist.group %}{% url "ietf.community.views.feed" acronym=clist.group.acronym %}{% else %}{% url "ietf.community.views.feed" username=clist.user.username %}{% endif %}">
<i class="bi bi-rss"></i> All changes
</a>
<a class="btn btn-primary"
title="Feed of only significant state changes"
href="{% if clist.group %}{% url "ietf.community.views.feed" acronym=clist.group.acronym %}{% else %}{% url "ietf.community.views.feed" username=clist.user.username %}{% endif %}?significant=1">
<i class="bi bi-rss"></i> Significant
</a>
</div>
{% if clist.pk != None %}
<li class="list-inline-item"><a class="btn btn-primary" href="{% if clist.group %}{% url "ietf.community.views.subscription" acronym=clist.group.acronym %}{% else %}{% url "ietf.community.views.subscription" username=clist.user.username %}{% endif %}">
<a class="btn btn-primary"
href="{% if clist.group %}{% url "ietf.community.views.subscription" acronym=clist.group.acronym %}{% else %}{% url "ietf.community.views.subscription" username=clist.user.username %}{% endif %}">
<i class="bi bi-envelope"></i>
{% if subscribed %}
Change subscription
{% else %}
Subscribe to changes
{% endif %}
</a></li>
</a>
{% endif %}
<li class="list-inline-item">
<a class="btn btn-primary" href="{% if clist.group %}{% url "ietf.community.views.export_to_csv" acronym=clist.group.acronym %}{% else %}{% url "ietf.community.views.export_to_csv" username=clist.user.username %}{% endif %}"
><i class="bi bi-file-ruled"></i> Export as CSV</a>
</li>
</ul>
<a class="btn btn-primary"
href="{% if clist.group %}{% url "ietf.community.views.export_to_csv" acronym=clist.group.acronym %}{% else %}{% url "ietf.community.views.export_to_csv" username=clist.user.username %}{% endif %}">
<i class="bi bi-file-ruled"></i> Export as CSV
</a>
</div>

View file

@ -1,39 +1,43 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% load static %}
{% load misc_filters %}
{% block pagehead %}
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
{{ all_forms|merge_media:'css' }}
{% endblock %}
{% block title %}Manage {{ clist.long_name }}{% endblock %}
{% block content %}
{% origin %}
<h1>Manage {{ clist.long_name }}</h1>
<noscript>This page depends on Javascript being enabled to work properly.</noscript>
{% bootstrap_messages %}
<p>The list currently tracks <a href="{{ clist.get_absolute_url }}">{{ total_count }} document{{ total_count|pluralize }}</a>.</p>
<p><a class="btn btn-primary" href="{{ clist.get_absolute_url }}">Back to list</a></p>
<p>
The list currently tracks
<a href="{{ clist.get_absolute_url }}">{{ total_count }} document{{ total_count|pluralize }}</a>
.
</p>
<p>
<a class="btn btn-primary" href="{{ clist.get_absolute_url }}">Back to list</a>
</p>
<h2>Individual documents</h2>
{% if individually_added %}
<p>The list tracks {{ individually_added|length }} individually added document{{ individually_added|length|pluralize }}:</p>
<table class="table table-sm table-striped">
<p>
The list tracks {{ individually_added|length }} individually added document{{ individually_added|length|pluralize }}:
</p>
<table class="table table-sm table-striped tablesorter">
<thead>
<th data-sort="doc">Document</th>
<th>Manage</th>
</thead>
<tbody>
{% for d in individually_added %}
<tr>
<td>{{ d.name }}</td>
<td>
<form method="post" id="remove_document_{{d.pk}}">
<form method="post" id="remove_document_{{ d.pk }}">
{% csrf_token %}
<input type="hidden" name="document" value="{{ d.pk }}">
<button class="btn btn-danger btn-sm" name="action" value="remove_document">Remove</button>
@ -44,32 +48,44 @@
</tbody>
</table>
{% else %}
<p>The list does not track any individually added documents yet.</p>
<p>
The list does not track any individually added documents yet.
</p>
{% endif %}
{% if clist.group %}
<p>Add individual documents here:</p>
<p>
Add individual documents here:
</p>
{% else %}
<p>Conveniently track individual documents in your personal list with the track icon <span class="bi bi-bookmark"></span> in <a href="/doc/search/">search results</a>.</p>
<p>You can also add documents here:</p>
<p>
Conveniently track individual documents in your personal list with the track icon
<span class="bi bi-bookmark"></span>
in
<a href="/doc/search/">search results</a>
.
</p>
<p>
You can also add documents here:
</p>
{% endif %}
<form class="form add-document" method="post" id="add_document">
{% csrf_token %}
{% bootstrap_field add_doc_form.documents show_label=False %}
<button class="btn btn-primary" name="action" value="add_documents">Add documents</button>
{% bootstrap_form add_doc_form show_label=False %}
{% bootstrap_button button_type="submit" name="action" value="add_documents" content="Add documents" %}
</form>
<h2>Search rules</h2>
<p>You can track documents with a search rule. When a document fulfills the search criteria, it will automatically show up in the list.</p>
<p>
You can track documents with a search rule. When a document fulfills the search criteria, it will automatically show up in the list.
</p>
{% if rules %}
<table class="table table-sm table-striped">
<table class="table table-sm table-striped tablesorter">
<thead>
<tr><th>Rule</th><th>Value</th><th>Documents</th><th></th></tr>
<tr>
<th data-sort="rule">Rule</th>
<th data-sort="value">Value</th>
<th data-sort="num">Matching Documents</th>
<th>Manage</th>
</tr>
</thead>
<tbody>
{% for rule in rules %}
@ -86,7 +102,7 @@
{{ rule.text }}
{% endif %}
</td>
<td>{{ rule.matching_documents_count }} match{{ rule.matching_documents_count|pluralize:"es" }}</td>
<td>{{ rule.matching_documents_count }}</td>
<td>
<form method="post">
{% csrf_token %}
@ -98,47 +114,37 @@
{% endfor %}
</tbody>
</table>
{% else %}
<p>No rules defined.</p>
<p>
No rules defined.
</p>
{% endif %}
<div><a class="btn btn-primary" data-bs-toggle="collapse" data-bs-target="#add-new-rule">Add a new rule</a></div>
<div id="add-new-rule" {% if not rule_type_form.errors and not rule_form %}class="collapse"{% endif %}>
<h3>Add a new rule</h3>
<div>
<a class="btn btn-primary"
data-bs-toggle="collapse"
data-bs-target="#add-new-rule">Add a new rule</a>
</div>
<div id="add-new-rule"
{% if not rule_type_form.errors and not rule_form %}class="collapse"{% endif %}>
<form method="post">
{% csrf_token %}
{% bootstrap_form rule_type_form %}
{% bootstrap_form rule_type_form layout="horizontal" %}
<div class="form-content-placeholder">
{% if rule_form %}
{% bootstrap_form rule_form %}
{% bootstrap_form rule_form layout="horizontal" %}
{% endif %}
</div>
<button type="submit" class="btn btn-primary" name="action" value="add_rule">Add rule</button>
</form>
<div class="empty-forms hide">
<div class="empty-forms visually-hidden">
{% for rule_type, f in empty_rule_forms.items %}
<div class="rule-type {{ rule_type }}">
{% bootstrap_form f %}
</div>
<div class="rule-type {{ rule_type }}">{% bootstrap_form f layout="horizontal" %}</div>
{% endfor %}
</div>
</div>
{% endblock %}
{% block js %}
{{ all_forms|merge_media:'js' }}
<script src="{% static "ietf/js/list.js" %}"></script>
<script src="{% static 'ietf/js/manage-community-list.js' %}"></script>
{% endblock %}
{% endblock %}

View file

@ -1,18 +1,15 @@
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}{% origin %}
{% load django_bootstrap5 %}
{% extends "base.html" %}
{% load origin %}
{% origin %}
{% block title %}Track document {{ name }}{% endblock %}
{% bootstrap_messages %}
<form method="post">
{% csrf_token %}
<p>Add {{ name }} to the list?</p>
<input type="submit" class="btn btn-primary" value="Track document">
</form>
{% block content %}
<form method="post">
{% csrf_token %}
<p>
Add {{ name }} to the list?
</p>
<input type="submit" class="btn btn-primary" value="Track document">
</form>
{% endblock %}

View file

@ -1,23 +1,26 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load django_bootstrap5 %}
{% load static django_bootstrap5 %}
{% block title %}{{ clist.long_name }}{% endblock %}
{% block pagehead %}
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
{% endblock %}
{% block content %}
{% origin %}
<h1>{{ clist.long_name }}</h1>
{% bootstrap_messages %}
{% if can_manage_list %}
<a class="btn btn-primary" href="{% url "ietf.community.views.manage_list" username=clist.user.username %}">
<a class="btn btn-primary my-3"
href="{% url "ietf.community.views.manage_list" username=clist.user.username %}">
<i class="bi bi-gear"></i>
Manage list
</a>
{% endif %}
{% include "doc/search/search_results.html" with skip_no_matches_warning=True %}
{% include "doc/search/search_results.html" with skip_no_matches_warning=True start_table=True end_table=True %}
{% include "community/list_menu.html" %}
{% endblock %}
{% block js %}
<script src="{% static "ietf/js/list.js" %}"></script>
{% endblock %}

View file

@ -1,66 +1,80 @@
{# Copyright The IETF Trust 2015, All Rights Reserved #}{% load origin %}{% origin %}
{# bs5ok #}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% origin %}
{% load widget_tweaks %}
{% load ietf_filters %}
{% load ballot_icon %}
{% load person_filters %}
{% load django_bootstrap5 %}
<tr {% spaceless %}
{% if color_row_positions %}
{% with doc|ballotposition:user as pos %}
{% if pos %}class="position-{{pos.slug}}-row"{% endif %}
{% endwith %}
{% if color_row_positions %} {% with doc|ballotposition:user as pos %} {% if pos %}class="position-{{ pos.slug }}-row"{% endif %}
{% endwith %}
{% endif %}
{% endspaceless %}>
{% endspaceless %}>
<td>
{% if user.is_authenticated %}
<a href="{% url "ietf.community.views.untrack_document" username=request.user.username name=doc.name %}" class="track-untrack-doc" {% if not doc.tracked_in_personal_community_list %}hidden{% endif %} title="Remove from your personal ID list">
<a href="{% url "ietf.community.views.untrack_document" username=request.user.username name=doc.name %}"
class="track-untrack-doc
{% if not doc.tracked_in_personal_community_list %}visually-hidden{% endif %}"
title="Remove from your personal ID list">
<span class="bi bi-bookmark-check-fill"></span>
</a>
<a href="{% url "ietf.community.views.track_document" username=request.user.username name=doc.name %}" class="track-untrack-doc" {% if doc.tracked_in_personal_community_list %}hidden{% endif %} title="Add to your personal ID list">
<a href="{% url "ietf.community.views.track_document" username=request.user.username name=doc.name %}"
class="track-untrack-doc
{% if doc.tracked_in_personal_community_list %}visually-hidden{% endif %}"
title="Add to your personal ID list">
<span class="bi bi-bookmark"></span>
</a>
<br>
{% endif %}
{% if user.review_teams %}
<a class="review-wish-add-remove-doc ajax" {% if not doc.has_review_wish %}hidden{% endif %} href="{% url "ietf.doc.views_review.review_wishes_remove" name=doc.name %}?next={{ request.get_full_path|urlencode }}" title="Remove from your review wishes for all teams">
<a class="review-wish-add-remove-doc ajax
{% if not doc.has_review_wish %}visually-hidden{% endif %}"
href="{% url "ietf.doc.views_review.review_wishes_remove" name=doc.name %}?next={{ request.get_full_path|urlencode }}"
title="Remove from your review wishes for all teams">
<span class="bi bi-chats"></span>
</a>
<a class="review-wish-add-remove-doc {% if user.review_teams|length_is:"1" %}ajax {% endif %}" {% if doc.has_review_wish %}hidden{% endif %} href="{% url "ietf.doc.views_review.review_wish_add" name=doc.name %}?next={{ request.get_full_path|urlencode }}" title="Add to your review wishes">
<a class="review-wish-add-remove-doc {% if user.review_teams|length_is:"1" %}ajax {% endif %}
{% if doc.has_review_wish %}visually-hidden{% endif %}"
href="{% url "ietf.doc.views_review.review_wish_add" name=doc.name %}?next={{ request.get_full_path|urlencode }}"
title="Add to your review wishes">
<span class="bi bi-chats-o"></span>
</a>
<br>
{% endif %}
{% for session in doc.sessions %}
<a href="{% url 'ietf.meeting.views.agenda_ical' num=session.meeting.number session_id=session.id %}"
title="Calendar entry: document is on the agenda for {{ session.group.acronym }}@{{ session.meeting }}">
title="Calendar entry: document is on the agenda for {{ session.group.acronym }}@{{ session.meeting }}">
<span class="bi bi-calendar"></span>
</a>
{% endfor %}
</td>
<td>
{% if doc.pages %}
<small class="float-end text-muted">{{doc.pages}} page{{ doc.pages|pluralize }}</small>
{% endif %}
{% if doc.pages %}<small class="float-end text-muted">{{ doc.pages }} page{{ doc.pages|pluralize }}</small>{% endif %}
<div>
<a href="{{ doc.get_absolute_url }}">{% if doc.get_state_slug == "rfc" %}RFC {{ doc.rfc_number }}{% else %}{{ doc.name }}-{{ doc.rev }}{% endif %}</a>
{% if doc.get_state_slug == "rfc" and "draft" in doc.name %}
<i class="text-muted">(was {{ doc.name }})</i>
{% endif %}
<a href="{{ doc.get_absolute_url }}">
{% if doc.get_state_slug == "rfc" %}
RFC {{ doc.rfc_number }}
{% else %}
{{ doc.name }}-{{ doc.rev }}
{% endif %}
</a>
{% if doc.get_state_slug == "rfc" and "draft" in doc.name %}<i class="text-muted">(was {{ doc.name }})</i>{% endif %}
<br>
<b>{{ doc.title }}</b>
{% if doc.has_verified_errata %}
<a class="badge bg-danger float-end" href="https://www.rfc-editor.org/errata_search.php?rfc={{ doc.rfc_number }}">Errata</a>
<a class="badge bg-danger float-end"
href="https://www.rfc-editor.org/errata_search.php?rfc={{ doc.rfc_number }}">
Errata
</a>
{% elif doc.has_errata %}
<a class="badge bg-warning float-end" href="https://www.rfc-editor.org/errata_search.php?rfc={{ doc.rfc_number }}">Errata</a>
<a class="badge bg-warning float-end"
href="https://www.rfc-editor.org/errata_search.php?rfc={{ doc.rfc_number }}">
Errata
</a>
{% endif %}
</div>
{% if user|has_role:"Secretariat" and doc.reschedule_form %}
<div class="mt-3">
{% bootstrap_form doc.reschedule_form layout="floating" %}
@ -70,68 +84,69 @@
</div>
{% endif %}
</td>
<td>
<span class="text-nowrap">
{% if doc.latest_revision_date|timesince_days|new_enough:request and doc.get_state_slug != "rfc" %}
{% if doc.rev != "00" %}<a href="{{ rfcdiff_base_url }}?url2={{ doc.name }}-{{ doc.rev }}">
{% elif doc.replaces %}<a href="{{ rfcdiff_base_url }}?url1={{ doc.replaces_canonical_name}}&url2={{ doc.name }}-{{ doc.rev }}">{% endif %}
{% endif %}
{% if doc.get_state_slug == "rfc" %}{{ doc.latest_revision_date|date:"Y-m" }}{% else %}{{ doc.latest_revision_date|date:"Y-m-d" }}{% endif %}
{% if doc.latest_revision_date|timesince_days|new_enough:request and doc.get_state_slug != "rfc" %}
{% if doc.rev != "00" or doc.replaces %}</a>{% endif %}
{% endif %}
</span>
{% comment %}
{% if doc.rev != "00" %}
<a href="{{ rfcdiff_base_url }}?url2={{ doc.name }}-{{ doc.rev }}">
{% elif doc.replaces %}
<a href="{{ rfcdiff_base_url }}?url1={{ doc.replaces_canonical_name }}&url2={{ doc.name }}-{{ doc.rev }}">
{% endif %}
{% endif %}
{% if doc.get_state_slug == "rfc" %}
{{ doc.latest_revision_date|date:"Y-m" }}
{% else %}
{{ doc.latest_revision_date|date:"Y-m-d" }}
{% endif %}
{% if doc.latest_revision_date|timesince_days|new_enough:request and doc.get_state_slug != "rfc" %}
{% if doc.rev != "00" or doc.replaces %}</a>{% endif %}
{% endif %}
</span>
{% comment %}
{% for check in doc.submission.latest_checks %}
{% if check.passed != None and check.symbol.strip %}
{% if check.errors or check.warnings %}
<span class="checker-warning float-end" data-bs-toggle="modal" data-bs-target="#check-{{check.pk}}" title="{{check.checker|title}} returned warnings or errors." >{{ check.symbol|safe }}</span>
<span class="checker-warning float-end" data-bs-toggle="modal" data-bs-target="#check-{{ check.pk }}" title="{{ check.checker|title }} returned warnings or errors.">{{ check.symbol|safe }}</span>
{% else %}
<span class="checker-success float-end" data-bs-toggle="modal" data-bs-target="#check-{{check.pk}}" title="{{check.checker|title}} passed">{{ check.symbol|safe }}</span>
<span class="checker-success float-end" data-bs-toggle="modal" data-bs-target="#check-{{ check.pk }}" title="{{ check.checker|title }} passed">{{ check.symbol|safe }}</span>
{% endif %}
{% include "doc/yang-check-modal-overlay.html" %}
{% endif %}
{% endfor %}
{% endcomment %}
{% if doc.latest_revision_date|timesince_days|new_enough:request %}
<wbr><div class="float-end"><span class="badge bg-success">New</span></div>
{% endif %}
{% if doc.get_state_slug == "active" and doc.expirable and doc.expires|timesince_days|expires_soon:request %}
<wbr><span class="badge bg-warning">Expires soon</span>
{% endif %}
</td>
{% include "doc/search/status_columns.html" %}
<td class="text-center">
{% if doc.related_ipr %}
<a href="{% url "ietf.ipr.views.search" %}?submit=draft&amp;id={{ doc.name }}">
<span class="badge bg-secondary">{{ doc.related_ipr|length }}</span>
</a>
{% endif %}
</td>
{% if ad_name == None or ad_name != doc.ad.plain_name %}
<td>
{% if doc.ad %}
{% person_link doc.ad title="Area Director" %}<br>
{% endcomment %}
{% if doc.latest_revision_date|timesince_days|new_enough:request %}
<wbr>
<div class="float-end">
<span class="badge bg-success">New</span>
</div>
{% endif %}
{% if doc.get_state_slug == "active" and doc.expirable and doc.expires|timesince_days|expires_soon:request %}
<wbr>
<span class="badge bg-warning">Expires soon</span>
{% endif %}
</td>
{% include "doc/search/status_columns.html" %}
<td class="text-center">
{% if doc.related_ipr %}
<a href="{% url "ietf.ipr.views.search" %}?submit=draft&amp;id={{ doc.name }}">
<span class="badge bg-secondary">{{ doc.related_ipr|length }}</span>
</a>
{% endif %}
</td>
{% if ad_name == None or ad_name != doc.ad.plain_name %}
<td>
{% if doc.ad %}
{% person_link doc.ad title="Area Director" %}
<br>
{% endif %}
{% if doc.shepherd %}
{% email_person_link doc.shepherd title="Shepherd" class="small text-muted" %}
{% endif %}
</td>
{% endif %}
{% if doc.shepherd %}{% email_person_link doc.shepherd title="Shepherd" class="small text-muted" %}{% endif %}
</td>
{% endif %}
{% if color_row_positions %}
{% with doc|ballotposition:user as pos %}
<td {% if pos %}class="changebar position-{{pos.slug}}"{% endif %}></td>
{% endwith %}
{% endif %}
</tr>
{% if color_row_positions %}
{% with doc|ballotposition:user as pos %}
<td {% if pos %}class="changebar position-{{ pos.slug }}"{% endif %}></td>
{% endwith %}
{% endif %}
</tr>

View file

@ -1,4 +1,4 @@
{% autoescape off %}The following liaison {{ days_msg }}. Plase take actions.
{% autoescape off %}The following liaison {{ days_msg }}. Please take actions.
{% include "liaisons/liaison_mail.txt" %}
{% endautoescape %}
{% endautoescape %}

View file

@ -1,34 +1,32 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin static %}
{% block pagehead %}
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
{% endblock %}
{% block title %}Sync discrepancies{% endblock %}
{% block content %}
{% origin %}
<h1>Sync discrepancies</h1>
{% for title, docs in sections %}
<h2>{{ title }}</h2>
{% if docs %}
<table class="table table-sm table-striped tablesorter">
<thead>
<tr>
<th>Draft name</th>
<th>IESG state</th>
<th>RFC Editor state</th>
<th>IANA Action state</th>
<th data-sort="draft">Draft name</th>
<th data-sort="iesg">IESG state</th>
<th data-sort="rfc">RFC Editor state</th>
<th data-sort="iana">IANA Action state</th>
</tr>
</thead>
<tbody>
{% for d in docs %}
<tr>
<td><a href="{{ d.get_absolute_url }}">{{ d.name }}</a></td>
<td>
<a href="{{ d.get_absolute_url }}">{{ d.name }}</a>
</td>
<td>{{ d.iesg_state|default:"" }}</td>
<td>{{ d.rfc_state|default:"" }}</td>
<td>{{ d.iana_action_state|default:"" }}</td>
@ -37,12 +35,12 @@
</tbody>
</table>
{% else %}
<p class="text-muted">(None)</p>
<p class="text-muted">
(None)
</p>
{% endif %}
{% endfor %}
{% endblock %}
{% block js %}
<script src="{% static "ietf/js/list.js" %}"></script>
{% endblock %}
{% endblock %}

View file

@ -1,17 +1,18 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% block title %}Trigger {{ notification }} sync for {{ org }}{% endblock %}
{% block content %}
{% origin %}
<h1>Trigger {{ notification }} sync for {{ org }}</h1>
<p>Update the Datatracker with {{ help_text|safe }} at {{ org }}.</p>
<p>
Update the Datatracker with {{ help_text|safe }} at {{ org }}.
</p>
<form method="post">
{% csrf_token %}
<input class="btn btn-primary" type="submit" value="Trigger {{ notification }} sync"/>
<input class="btn btn-primary"
type="submit"
value="Trigger {{ notification }} sync"/>
</form>
{% endblock %}
{% endblock %}

View file

@ -1,28 +1,32 @@
{# bs5ok #}
{% extends "base.html" %}
{# Copyright The IETF Trust 2015-2019, All Rights Reserved #}
{% load origin %}
{% load origin static %}
{% block title %}Undo RFC Editor state events{% endblock %}
{% block pagehead %}
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
{% endblock %}
{% block content %}
{% origin %}
<h1>Undo RFC Editor state events</h1>
<table class="table table-sm table-striped">
<table class="table table-sm table-striped tablesorter">
<thead>
<tr>
<th>Time</th>
<th>Document</th>
<th>Text</th>
<th>Undo</th>
<th data-sort="time">Time</th>
<th data-sort="document">Document</th>
<th data-sort="text">Text</th>
<th data-sort="undo">Undo</th>
</tr>
</thead>
<tbody>
{% for e in events %}
<tr>
<td>{{ e.time|date:"Y-m-d H:i:s"}}</td>
<td><a href="{% url 'ietf.doc.views_doc.document_history' e.doc.name %}">{{ e.doc.name }}</a></td>
<td>{{ e.time|date:"Y-m-d H:i:s" }}</td>
<td>
<a href="{% url 'ietf.doc.views_doc.document_history' e.doc.name %}">{{ e.doc.name }}</a>
</td>
<td>{{ e.desc|safe }}</td>
<td>
<form method="post">
@ -36,3 +40,7 @@
</tbody>
</table>
{% endblock %}
{% block js %}
<script src="{% static "ietf/js/list.js" %}"></script>
{% endblock %}

View file

@ -49,6 +49,7 @@
"ietf/static/js/ietf.js",
"ietf/static/js/liaisons.js",
"ietf/static/js/list.js",
"ietf/static/js/manage-community-list.js",
"ietf/static/js/moment-timezone-with-data-10-year-range.js",
"ietf/static/js/moment.js",
"ietf/static/js/review-stats.js",