More fixes.
- Legacy-Id: 19828
This commit is contained in:
parent
373b5dbbf4
commit
8bc7fde027
|
@ -133,7 +133,7 @@ def ballot_icon(context, doc):
|
|||
|
||||
# add sufficient table calls to last row to avoid HTML validation warning
|
||||
while (i + 1) % 5 != 0:
|
||||
res.append('<td class="empty"></td>')
|
||||
res.append('<td class="position-empty"></td>')
|
||||
i = i + 1
|
||||
|
||||
res.append("</tr></table></a>")
|
||||
|
|
|
@ -419,14 +419,11 @@ def format_history_text(text, trunc_words=25):
|
|||
def format_snippet(text, trunc_words=25):
|
||||
# urlize if there aren't already links present
|
||||
if not 'href=' in text:
|
||||
# django's urlize() cannot handle adjacent parentheszised
|
||||
# expressions, for instance [REF](http://example.com/foo)
|
||||
# Use bleach.linkify instead
|
||||
text = bleach.linkify(text)
|
||||
text = bleach.linkify(text, parse_email=True)
|
||||
full = keep_spacing(collapsebr(linebreaksbr(mark_safe(sanitize_fragment(text)))))
|
||||
snippet = truncatewords_html(full, trunc_words)
|
||||
if snippet != full:
|
||||
return mark_safe('<div class="snippet">%s<button class="btn btn-sm btn-primary show-all"><i class="bi bi-caret-down"></i></button></div><div class="hidden full">%s</div>' % (snippet, full))
|
||||
return mark_safe('<div class="snippet">%s<button class="btn btn-sm btn-primary show-all"><i class="bi bi-caret-down"></i></button></div><div class="visually-hidden full">%s</div>' % (snippet, full))
|
||||
return full
|
||||
|
||||
@register.simple_tag
|
||||
|
@ -493,18 +490,32 @@ def consensus(doc):
|
|||
return "Unknown"
|
||||
|
||||
@register.filter
|
||||
def pos_to_label(text):
|
||||
"""Return a valid Bootstrap label type for a ballot position."""
|
||||
def pos_to_label_format(text):
|
||||
"""Returns valid Bootstrap classes to label a ballot position."""
|
||||
return {
|
||||
'Yes': 'success',
|
||||
'No Objection': 'info',
|
||||
'Abstain': 'warning',
|
||||
'Discuss': 'danger',
|
||||
'Block': 'danger',
|
||||
'Recuse': 'primary',
|
||||
'Not Ready': 'danger',
|
||||
'Need More Time': 'danger',
|
||||
}.get(str(text), 'secondary')
|
||||
'Yes': 'bg-yes text-light',
|
||||
'No Objection': 'bg-noobj text-dark',
|
||||
'Abstain': 'bg-abstain text-light',
|
||||
'Discuss': 'bg-discuss text-light',
|
||||
'Block': 'bg-discuss text-light',
|
||||
'Recuse': 'bg-recuse text-light',
|
||||
'Not Ready': 'bg-discuss text-light',
|
||||
'Need More Time': 'bg-discuss text-light',
|
||||
}.get(str(text), 'bg-norecord text-dark')
|
||||
|
||||
@register.filter
|
||||
def pos_to_border_format(text):
|
||||
"""Returns valid Bootstrap classes to label a ballot position border."""
|
||||
return {
|
||||
'Yes': 'border-yes',
|
||||
'No Objection': 'border-noobj',
|
||||
'Abstain': 'border-abstain',
|
||||
'Discuss': 'border-discuss',
|
||||
'Block': 'border-discuss',
|
||||
'Recuse': 'border-recuse',
|
||||
'Not Ready': 'border-discuss',
|
||||
'Need More Time': 'border-discuss',
|
||||
}.get(str(text), 'border-norecord')
|
||||
|
||||
@register.filter
|
||||
def capfirst_allcaps(text):
|
||||
|
|
|
@ -1531,7 +1531,7 @@ class DocTestCase(TestCase):
|
|||
doc.save_with_history([e])
|
||||
r = self.client.get(urlreverse("ietf.doc.views_doc.document_ballot", kwargs=dict(name=doc.name)))
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertContains(r, '(%s for -%s)' % (pos.comment_time.strftime('%Y-%m-%d'), oldrev))
|
||||
self.assertRegex(r.content.decode(), r'\(\s*%s\s+for\s+-%s\s*\)' % (pos.comment_time.strftime('%Y-%m-%d'), oldrev))
|
||||
|
||||
# Now simulate a new ballot against the new revision and make sure the "was" position is included
|
||||
pos2 = BallotPositionDocEvent.objects.create(
|
||||
|
@ -1579,7 +1579,7 @@ class DocTestCase(TestCase):
|
|||
href = q(f'div.balloter-name a[href$="{author_slug}"]').attr('href')
|
||||
ids = [
|
||||
target.attr('id')
|
||||
for target in q(f'h4.anchor-target[id$="{author_slug}"]').items()
|
||||
for target in q(f'h5[id$="{author_slug}"]').items()
|
||||
]
|
||||
self.assertEqual(len(ids), 1, 'Should be exactly one link for the balloter')
|
||||
self.assertEqual(href, f'#{ids[0]}', 'Anchor href should match ID')
|
||||
|
|
|
@ -49,27 +49,27 @@ class ViewCharterTests(TestCase):
|
|||
url = urlreverse('ietf.doc.views_doc.document_main',kwargs={'name':charter.name})
|
||||
r = self.client.get(url)
|
||||
q = PyQuery(r.content)
|
||||
self.assertIn('The information below is for a proposed recharter. The current approved charter is',q('#message-row').text())
|
||||
self.assertIn('The information below is for a proposed recharter. The current approved charter is',q('.alert').text())
|
||||
|
||||
url = urlreverse('ietf.doc.views_doc.document_main',kwargs={'name':charter.name,'rev':'02-00'})
|
||||
r = self.client.get(url)
|
||||
q = PyQuery(r.content)
|
||||
self.assertIn('The information below is for an older version of the current proposed rechartering effort',q('#message-row').text())
|
||||
self.assertIn('The information below is for an older version of the current proposed rechartering effort',q('.alert').text())
|
||||
|
||||
url = urlreverse('ietf.doc.views_doc.document_main',kwargs={'name':charter.name,'rev':'02'})
|
||||
r = self.client.get(url)
|
||||
q = PyQuery(r.content)
|
||||
self.assertIn('The information below is for the currently approved charter, but newer proposed charter text exists',q('#message-row').text())
|
||||
self.assertIn('The information below is for the currently approved charter, but newer proposed charter text exists',q('.alert').text())
|
||||
|
||||
url = urlreverse('ietf.doc.views_doc.document_main',kwargs={'name':charter.name,'rev':'01-00'})
|
||||
r = self.client.get(url)
|
||||
q = PyQuery(r.content)
|
||||
self.assertIn('The information below is for an older proposed',q('#message-row').text())
|
||||
self.assertIn('The information below is for an older proposed',q('.alert').text())
|
||||
|
||||
url = urlreverse('ietf.doc.views_doc.document_main',kwargs={'name':charter.name,'rev':'01'})
|
||||
r = self.client.get(url)
|
||||
q = PyQuery(r.content)
|
||||
self.assertIn('The information below is for an older approved',q('#message-row').text())
|
||||
self.assertIn('The information below is for an older approved',q('.alert').text())
|
||||
|
||||
e = NewRevisionDocEventFactory(doc=charter,rev="03")
|
||||
charter.rev='03'
|
||||
|
@ -78,7 +78,7 @@ class ViewCharterTests(TestCase):
|
|||
url = urlreverse('ietf.doc.views_doc.document_main',kwargs={'name':charter.name})
|
||||
r = self.client.get(url)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEqual('',q('#message-row').text())
|
||||
self.assertEqual('',q('.alert').text())
|
||||
|
||||
|
||||
|
||||
|
@ -838,4 +838,4 @@ class EditCharterTests(TestCase):
|
|||
ad_role = RoleFactory(group__type_id='area',name_id='ad')
|
||||
charter = CharterFactory(group__type_id='wg',group__state_id='bof',group__parent=ad_role.group)
|
||||
e1,_ = default_review_text(charter.group, charter, Person.objects.get(name="(System)"))
|
||||
self.assertTrue('A new IETF WG has been proposed' in e1.text)
|
||||
self.assertTrue('A new IETF WG has been proposed' in e1.text)
|
|
@ -396,7 +396,7 @@ class StatusChangeTests(TestCase):
|
|||
q = PyQuery(r.content)
|
||||
self.assertEqual(len(q('#content [type=submit]:contains("Save")')),1)
|
||||
# There should be three rows on the form
|
||||
self.assertEqual(len(q('#content .row')),3)
|
||||
self.assertEqual(len(q('#content .input-group')),3)
|
||||
|
||||
# Try to add a relation to an RFC that doesn't exist
|
||||
r = self.client.post(url,dict(new_relation_row_blah="rfc9997",
|
||||
|
@ -534,4 +534,4 @@ class StatusChangeSubmitTests(TestCase):
|
|||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
DocumentFactory(type_id='statchg',name='status-change-imaginary-mid-review',notify='notify@example.org')
|
||||
DocumentFactory(type_id='statchg',name='status-change-imaginary-mid-review',notify='notify@example.org')
|
|
@ -867,7 +867,6 @@ def document_history(request, name):
|
|||
person__user=request.user)))
|
||||
else:
|
||||
can_add_comment = has_role(request.user, ("Area Director", "Secretariat", "IRTF Chair"))
|
||||
|
||||
return render(request, "doc/document_history.html",
|
||||
dict(doc=doc,
|
||||
top=top,
|
||||
|
|
|
@ -1709,7 +1709,7 @@ class StatusUpdateTests(TestCase):
|
|||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
q=PyQuery(response.content)
|
||||
self.assertTrue(bleach.linkify(escape(event.desc)) in str(q('pre')))
|
||||
self.assertTrue(bleach.linkify(escape(event.desc), parse_email=True) in str(q('pre')))
|
||||
self.assertFalse(q('a#edit_button'))
|
||||
self.client.login(username=chair.person.user.username,password='%s+password'%chair.person.user.username)
|
||||
response = self.client.get(url)
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Announcement{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% block title %}Areas{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'ietf/css/jquery-ui.css' %}" />
|
||||
<script type="text/javascript" src="{% static 'ietf/js/jquery-ui.js' %}"></script>
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/jquery-ui.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% block title %}Areas - View{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
{% block extrastyle %}{% endblock %}
|
||||
|
||||
{% block extrahead %}
|
||||
<script type="text/javascript" src="{% static 'ietf/js/ietf.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/ietf.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
{% block extrastyle %}{% endblock %}
|
||||
|
||||
{% block extrahead %}
|
||||
<script type="text/javascript" src="{% static 'ietf/js/ietf.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/ietf.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Groups - Charter{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'ietf/css/jquery-ui.css' %}" />
|
||||
<script type="text/javascript" src="{% static 'ietf/js/jquery-ui.js' %}"></script>
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/jquery-ui.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Groups - Search{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Groups - View{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
{% block extrahead %}
|
||||
{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'ietf/css/jquery-ui.css' %}" />
|
||||
<script type="text/javascript" src="{% static 'ietf/js/jquery-ui.js' %}"></script>
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script type="text/javascript" src="{% static 'secr/js/dynamic_inlines.js' %}"></script>
|
||||
<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>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Meetings - Blue Sheet{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Meetings - Edit{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Meetings{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Meetings{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Meetings{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Proceeding manager{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'ietf/js/jquery-ui.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/jquery-ui.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/select2.js' %}"></script>
|
||||
<script type="text/javascript" src="{% static 'secr/js/proceedings-recording.js' %}"></script>
|
||||
<script src="{% static 'secr/js/proceedings-recording.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% block title %}Edit Recording{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Proceedings{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% block title %}Proceedings - Status{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% block title %}Proceedings - View{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% block title %}Proceeding manager{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -5,10 +5,10 @@
|
|||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'ietf/css/jquery-ui.css' %}" />
|
||||
<script type="text/javascript" src="{% static 'ietf/js/jquery-ui.js' %}"></script>
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/jquery-ui.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$.ajaxSetup ({
|
||||
cache: false
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Rolodex - Add{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Rolodex - Edit{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/dynamic_inlines.js' %}"></script>
|
||||
<script src="{% static 'secr/js/dynamic_inlines.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Rolodex - Search{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{{ form.media }}
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
{% block title %}Sessions - Edit{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script type="text/javascript" src="{% static 'secr/js/sessions.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/sessions.js' %}"></script>
|
||||
{{ form.media }}
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Sessions{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
{% block title %}Sessions{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
{% block title %}Sessions- New{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script type="text/javascript" src="{% static 'secr/js/sessions.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/sessions.js' %}"></script>
|
||||
{{ form.media }}
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Sessions{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Sessions - View{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Telechat{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script type="text/javascript" src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<link rel="stylesheet" type="text/css" href="{% static 'secr/css/telechat.css' %}" />
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -61,16 +61,26 @@ $bootstrap-icons-font-src: url("~node_modules/bootstrap-icons/font/fonts/bootstr
|
|||
url("~node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff?a97b3594ad416896e15824f6787370e0") format("woff") !default;
|
||||
@import "../../../node_modules/bootstrap-icons/font/bootstrap-icons";
|
||||
|
||||
// Leave room for fixed-top navbar.
|
||||
// Leave room for fixed-top navbar...
|
||||
body {
|
||||
padding-top: 60px;
|
||||
}
|
||||
|
||||
// Make textareas use monospace font
|
||||
textarea {
|
||||
font-family: var(--bs-font-monospace);
|
||||
// ...and make sure it doesn't overlap when we scroll to anchors.
|
||||
html {
|
||||
scroll-padding-top: 60px;
|
||||
}
|
||||
|
||||
// Make textareas use a monospace font
|
||||
textarea {
|
||||
font-family: var(--bs-font-monospace);
|
||||
}
|
||||
|
||||
// Wrap long lines in preformatted text.
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
// Make the font size choice cascade down into group menu dropdowns.
|
||||
.leftmenu li>ul {
|
||||
|
@ -160,10 +170,6 @@ $timeline-even-hover-color: shift-color($timeline-even-color, $link-shade-percen
|
|||
border: 2 * $table-border-width solid #000;
|
||||
}
|
||||
|
||||
.ballot-icon table {
|
||||
// margin: 0 0 10px 10px;
|
||||
}
|
||||
|
||||
.is-blocking {
|
||||
box-shadow: 0 0 8px 8px #dc0d12;
|
||||
padding: 3px 0px 3px 3px;
|
||||
|
@ -171,33 +177,119 @@ $timeline-even-hover-color: shift-color($timeline-even-color, $link-shade-percen
|
|||
border: 1px solid #dc0d12;
|
||||
}
|
||||
|
||||
.position-moretime,
|
||||
.position-notready,
|
||||
.position-discuss,
|
||||
.position-block {
|
||||
background-color: $danger;
|
||||
|
||||
// See https://getbootstrap.com/docs/5.0/customize/color/#all-colors
|
||||
$color-discuss: $red-500;
|
||||
$color-yes: $green-500;
|
||||
$color-noobj: $green-100;
|
||||
$color-abstain: $orange-400;
|
||||
$color-recuse: $purple-400;
|
||||
$color-norecord: $gray-300;
|
||||
|
||||
.color-discuss {
|
||||
color: $color-discuss;
|
||||
}
|
||||
|
||||
.position-yes {
|
||||
background-color: $success;
|
||||
.color-yes {
|
||||
color: $color-yes;
|
||||
}
|
||||
|
||||
.position-noobj {
|
||||
background-color: $info;
|
||||
.color-noobj {
|
||||
color: $color-noobj;
|
||||
}
|
||||
|
||||
.position-abstain {
|
||||
background-color: hsl(hue($warning), 80%, 70%);
|
||||
.color-abstain {
|
||||
color: $color-abstain;
|
||||
}
|
||||
|
||||
.position-recuse {
|
||||
background-color: hsl(hue($primary), 80%, 70%);
|
||||
.color-recuse {
|
||||
color: $color-recuse;
|
||||
}
|
||||
|
||||
.position-norecord {
|
||||
// background-color: $secondary;
|
||||
.color-norecord {
|
||||
color: $color-norecord;
|
||||
}
|
||||
|
||||
.bg-discuss {
|
||||
background-color: $color-discuss;
|
||||
}
|
||||
|
||||
.bg-yes {
|
||||
background-color: $color-yes;
|
||||
}
|
||||
|
||||
.bg-noobj {
|
||||
background-color: $color-noobj;
|
||||
}
|
||||
|
||||
.bg-abstain {
|
||||
background-color: $color-abstain;
|
||||
}
|
||||
|
||||
.bg-recuse {
|
||||
background-color: $color-recuse;
|
||||
}
|
||||
|
||||
.bg-norecord {
|
||||
background-color: $color-norecord;
|
||||
}
|
||||
|
||||
.border-discuss {
|
||||
border-color: $color-discuss;
|
||||
}
|
||||
|
||||
.border-yes {
|
||||
border-color: $color-yes;
|
||||
}
|
||||
|
||||
.border-noobj {
|
||||
border-color: $color-noobj;
|
||||
}
|
||||
|
||||
.border-abstain {
|
||||
border-color: $color-abstain;
|
||||
}
|
||||
|
||||
.border-recuse {
|
||||
border-color: $color-recuse;
|
||||
}
|
||||
|
||||
.border-norecord {
|
||||
border-color: $color-norecord;
|
||||
}
|
||||
|
||||
td.position-moretime,
|
||||
td.position-notready,
|
||||
td.position-discuss,
|
||||
td.position-block {
|
||||
background-color: $color-discuss;
|
||||
}
|
||||
|
||||
td.position-yes {
|
||||
background-color: $color-yes;
|
||||
}
|
||||
|
||||
td.position-noobj {
|
||||
background-color: $color-noobj;
|
||||
}
|
||||
|
||||
td.position-abstain {
|
||||
background-color: $color-abstain;
|
||||
}
|
||||
|
||||
td.position-recuse {
|
||||
background-color: $color-recuse;
|
||||
}
|
||||
|
||||
td.position-norecord {
|
||||
background-color: $white; // $color-norecord;
|
||||
}
|
||||
|
||||
td.position-empty {
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
|
||||
/* === Edit Meeting Schedule ====================================== */
|
||||
|
||||
.edit-meeting-schedule .edit-grid {
|
||||
|
|
|
@ -51,11 +51,11 @@ function format_time(t, tz, fmt) {
|
|||
switch (fmt) {
|
||||
case 0:
|
||||
out = t.tz(tz)
|
||||
.format('dddd, ') + '<span class="">' +
|
||||
.format('dddd, ') + '<span>' +
|
||||
t.tz(tz)
|
||||
.format('MMMM Do YYYY, ') + '</span>' +
|
||||
t.tz(tz)
|
||||
.format('HH:mm') + '<span class="">' +
|
||||
.format('HH:mm') + '<span>' +
|
||||
t.tz(tz)
|
||||
.format(' Z z') + '</span>';
|
||||
break;
|
||||
|
@ -222,7 +222,7 @@ window.highlight_ongoing = function () {
|
|||
agenda_rows.first()
|
||||
.children("th, td")
|
||||
.
|
||||
prepend($('<div id="now" class="anchor-target"></div>'));
|
||||
prepend($('<div id="now"></div>'));
|
||||
}
|
||||
|
||||
// Update tooltips
|
||||
|
|
|
@ -13,23 +13,22 @@ function expiration_date(d) {
|
|||
return new Date(d.published.getTime() + 1000 * 60 * 60 * 24 * 185);
|
||||
}
|
||||
|
||||
|
||||
function max(arr) {
|
||||
return Math.max.apply(null, Object.keys(arr).map(function(e) {
|
||||
return arr[e];
|
||||
}));
|
||||
return Math.max.apply(null, Object.keys(arr)
|
||||
.map(function (e) {
|
||||
return arr[e];
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
function offset(d) {
|
||||
if (bar_y[d.name] === undefined) {
|
||||
var m = Object.keys(bar_y).length === 0 ? -bar_height : max(bar_y);
|
||||
var m = Object.keys(bar_y)
|
||||
.length === 0 ? -bar_height : max(bar_y);
|
||||
bar_y[d.name] = m + bar_height;
|
||||
}
|
||||
return "translate(" + x_scale(d.published) + ", " + bar_y[d.name] + ")";
|
||||
}
|
||||
|
||||
|
||||
function bar_width(d, i) {
|
||||
// check for next rev of this name, or published RFC
|
||||
for (i++; i < data.length; i++) {
|
||||
|
@ -48,16 +47,17 @@ function bar_width(d, i) {
|
|||
return x_scale(w) - x_scale(d.published);
|
||||
}
|
||||
|
||||
|
||||
function scale_x() {
|
||||
width = $("#timeline").width();
|
||||
width = $("#timeline")
|
||||
.width();
|
||||
|
||||
// scale data to width of container minus y label width
|
||||
x_scale = d3.time.scale().domain([
|
||||
d3.min(data, function(d) { return d.published; }),
|
||||
d3.max(data, function(d) { return d.published; })
|
||||
]).range([y_label_width, width]);
|
||||
|
||||
x_scale = d3.time.scale()
|
||||
.domain([
|
||||
d3.min(data, function (d) { return d.published; }),
|
||||
d3.max(data, function (d) { return d.published; })
|
||||
])
|
||||
.range([y_label_width, width]);
|
||||
|
||||
// if the end of the timeline is past the current date, show it
|
||||
var tv = data.slice(0, -1);
|
||||
|
@ -70,53 +70,59 @@ function scale_x() {
|
|||
// resort data by publication time to suppress some ticks if they are closer
|
||||
// than 12px and have a different label from the one before; and don't add a
|
||||
// tick for the final pseudo entry
|
||||
tv = tv.sort(function(a, b) { return a.published - b.published; })
|
||||
.map(function(d, i, arr) {
|
||||
tv = tv.sort(function (a, b) { return a.published - b.published; })
|
||||
.map(function (d, i, arr) {
|
||||
if (i === 0 ||
|
||||
x_scale(d.published) > x_scale(arr[i - 1].published) + 12 &&
|
||||
format(d.published) !== format(arr[i - 1].published)) {
|
||||
return d.published;
|
||||
}
|
||||
}).filter(function(d) { return d !== undefined; });
|
||||
})
|
||||
.filter(function (d) { return d !== undefined; });
|
||||
|
||||
x_axis = d3.svg.axis()
|
||||
.scale(x_scale)
|
||||
.tickValues(tv)
|
||||
.tickFormat(function(d) {
|
||||
.tickFormat(function (d) {
|
||||
if (d.getTime() < now) { return format(d); }
|
||||
return "Now";
|
||||
})
|
||||
.orient("bottom");
|
||||
}
|
||||
|
||||
|
||||
function update_x_axis() {
|
||||
d3.select("#timeline svg .x.axis").call(x_axis)
|
||||
d3.select("#timeline svg .x.axis")
|
||||
.call(x_axis)
|
||||
.selectAll("text")
|
||||
.style("text-anchor", "end")
|
||||
.attr("transform", "translate(-14, 2) rotate(-60)");
|
||||
}
|
||||
|
||||
|
||||
function update_timeline() {
|
||||
bar_y = {};
|
||||
scale_x();
|
||||
var chart = d3.select("#timeline svg").attr("width", width);
|
||||
var chart = d3.select("#timeline svg")
|
||||
.attr("width", width);
|
||||
// enter data (skip the last pseudo entry)
|
||||
var bar = chart.selectAll("g").data(data.slice(0, -1));
|
||||
bar.attr("transform", offset).select("rect").attr("width", bar_width);
|
||||
var bar = chart.selectAll("g")
|
||||
.data(data.slice(0, -1));
|
||||
bar.attr("transform", offset)
|
||||
.select("rect")
|
||||
.attr("width", bar_width);
|
||||
update_x_axis();
|
||||
}
|
||||
|
||||
|
||||
function draw_timeline() {
|
||||
bar_height = parseFloat($("body").css("line-height"));
|
||||
bar_height = parseFloat($("body")
|
||||
.css("line-height"));
|
||||
|
||||
var div = $("#timeline");
|
||||
div.addClass("my-3");
|
||||
if (div.is(":empty")) {
|
||||
div.append("<svg xmlns:xlink='http://www.w3.org/1999/xlink'></svg>");
|
||||
}
|
||||
var chart = d3.select("#timeline svg").attr("width", width);
|
||||
var chart = d3.select("#timeline svg")
|
||||
.attr("width", width);
|
||||
|
||||
var defs = chart.append("defs");
|
||||
var fade = defs.append("linearGradient")
|
||||
|
@ -140,19 +146,19 @@ function draw_timeline() {
|
|||
maskContentUnits: "objectBoundingBox"
|
||||
})
|
||||
.append("rect")
|
||||
.attr({
|
||||
height: 1,
|
||||
width: 1,
|
||||
fill: "url(#maskGradient)"
|
||||
});
|
||||
.attr({
|
||||
height: 1,
|
||||
width: 1,
|
||||
fill: "url(#maskGradient)"
|
||||
});
|
||||
|
||||
var y_labels = data
|
||||
.map(function(d) { return d.name; })
|
||||
.filter(function(val, i, self) { return self.indexOf(val) === i; });
|
||||
.map(function (d) { return d.name; })
|
||||
.filter(function (val, i, self) { return self.indexOf(val) === i; });
|
||||
|
||||
// calculate the width of the widest y axis label by drawing them off-screen
|
||||
// and measuring the bounding boxes
|
||||
y_label_width = 10 + d3.max(y_labels, function(l) {
|
||||
y_label_width = 10 + d3.max(y_labels, function (l) {
|
||||
var lw;
|
||||
chart.append("text")
|
||||
.attr({
|
||||
|
@ -160,10 +166,12 @@ function draw_timeline() {
|
|||
transform: "translate(0, " + -bar_height + ")"
|
||||
})
|
||||
.text(l)
|
||||
.each(function() {
|
||||
lw = this.getBBox().width;
|
||||
.each(function () {
|
||||
lw = this.getBBox()
|
||||
.width;
|
||||
})
|
||||
.remove().remove();
|
||||
.remove()
|
||||
.remove();
|
||||
return lw;
|
||||
});
|
||||
|
||||
|
@ -172,43 +180,44 @@ function draw_timeline() {
|
|||
|
||||
// re-order data by document name, for CSS background color alternation
|
||||
var ndata = [];
|
||||
y_labels.forEach(function(l) {
|
||||
ndata = ndata.concat(data.filter(function(d) { return d.name === l; }));
|
||||
y_labels.forEach(function (l) {
|
||||
ndata = ndata.concat(data.filter(function (d) { return d.name === l; }));
|
||||
});
|
||||
data = ndata;
|
||||
|
||||
// enter data (skip the last pseudo entry)
|
||||
var bar = chart.selectAll("g").data(data.slice(0, -1));
|
||||
var bar = chart.selectAll("g")
|
||||
.data(data.slice(0, -1));
|
||||
var g = bar.enter()
|
||||
.append("g")
|
||||
.attr({
|
||||
class: "bar",
|
||||
transform: offset
|
||||
});
|
||||
.attr({
|
||||
class: "bar",
|
||||
transform: offset
|
||||
});
|
||||
g.append("a")
|
||||
.attr("xlink:href", function(d) { return d.url; })
|
||||
.attr("xlink:href", function (d) { return d.url; })
|
||||
.append("rect")
|
||||
.attr({
|
||||
height: bar_height,
|
||||
width: bar_width,
|
||||
class: "btn",
|
||||
type: "button",
|
||||
mask: function(d, i) {
|
||||
// apply gradient if the document is a draft and expired
|
||||
if (d.name.match(/^draft-/) &&
|
||||
bar_width(d, i) >= x_scale(expiration_date(d)) -
|
||||
x_scale(d.published)) {
|
||||
return "url(#fade)";
|
||||
}
|
||||
.attr({
|
||||
height: bar_height,
|
||||
width: bar_width,
|
||||
class: "btn",
|
||||
type: "button",
|
||||
mask: function (d, i) {
|
||||
// apply gradient if the document is a draft and expired
|
||||
if (d.name.match(/^draft-/) &&
|
||||
bar_width(d, i) >= x_scale(expiration_date(d)) -
|
||||
x_scale(d.published)) {
|
||||
return "url(#fade)";
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
g.append("text")
|
||||
.attr({
|
||||
x: 3,
|
||||
y: bar_height / 2
|
||||
})
|
||||
.text(function(d) { return d.rev; });
|
||||
.text(function (d) { return d.rev; });
|
||||
|
||||
var y_scale = d3.scale.ordinal()
|
||||
.domain(y_labels)
|
||||
|
@ -219,10 +228,11 @@ function draw_timeline() {
|
|||
.tickValues(y_labels)
|
||||
.orient("left");
|
||||
|
||||
chart.append("g").attr({
|
||||
class: "x axis",
|
||||
transform: "translate(0, " + (max(bar_y) + bar_height) + ")"
|
||||
});
|
||||
chart.append("g")
|
||||
.attr({
|
||||
class: "x axis",
|
||||
transform: "translate(0, " + (max(bar_y) + bar_height) + ")"
|
||||
});
|
||||
update_x_axis();
|
||||
|
||||
chart.append("g")
|
||||
|
@ -236,20 +246,21 @@ function draw_timeline() {
|
|||
|
||||
// set height of timeline
|
||||
var x_label_height;
|
||||
d3.select(".x.axis").each(function() {
|
||||
x_label_height = this.getBBox().height;
|
||||
});
|
||||
d3.select(".x.axis")
|
||||
.each(function () {
|
||||
x_label_height = this.getBBox()
|
||||
.height;
|
||||
});
|
||||
chart.attr("height", max(bar_y) + bar_height + x_label_height);
|
||||
}
|
||||
|
||||
|
||||
d3.json("doc.json", function(error, json) {
|
||||
d3.json("doc.json", function (error, json) {
|
||||
if (error) { return; }
|
||||
data = json.rev_history;
|
||||
|
||||
if (data.length) {
|
||||
// make js dates out of publication dates
|
||||
data.forEach(function(d) { d.published = new Date(d.published); });
|
||||
data.forEach(function (d) { d.published = new Date(d.published); });
|
||||
|
||||
// add pseudo entry when the ID will expire
|
||||
data.push({
|
||||
|
@ -261,9 +272,9 @@ d3.json("doc.json", function(error, json) {
|
|||
}
|
||||
});
|
||||
|
||||
|
||||
$(window).on({
|
||||
resize: function() {
|
||||
update_timeline();
|
||||
}
|
||||
});
|
||||
$(window)
|
||||
.on({
|
||||
resize: function () {
|
||||
update_timeline();
|
||||
}
|
||||
});
|
|
@ -133,6 +133,16 @@ $(document)
|
|||
`))
|
||||
.find("h1:visible, h2:visible, h3:visible, h4:visible, h5:visible, h6:visible")
|
||||
.each(function () {
|
||||
// Some headings have complex HTML in them - only use first part in that case.
|
||||
var text = $(this)
|
||||
.html()
|
||||
.split("<")
|
||||
.shift();
|
||||
|
||||
if (text === "") {
|
||||
// Nothing to do for empty headings.
|
||||
return;
|
||||
}
|
||||
var id = $(this)
|
||||
.attr("id");
|
||||
|
||||
|
@ -142,9 +152,6 @@ $(document)
|
|||
.attr("id", id);
|
||||
}
|
||||
|
||||
var text = $(this)
|
||||
.text();
|
||||
|
||||
if (nav === undefined) {
|
||||
nav = $("#righthand-nav");
|
||||
nav = $(nav)
|
||||
|
@ -184,10 +191,6 @@ $(document)
|
|||
.attr("data-bs-target", "#righthand-nav")
|
||||
.scrollspy("refresh");
|
||||
|
||||
// $(window)
|
||||
// .on("activate.bs.scrollspy", function () {
|
||||
// console.log("X");
|
||||
// });
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -38,6 +38,12 @@ $(document)
|
|||
.each(function () {
|
||||
var table = $(this);
|
||||
|
||||
if ($(table)
|
||||
.hasClass("tablesorter-done")) {
|
||||
console.log("tablesorter already initialized; list.js probably loaded twice.");
|
||||
return;
|
||||
}
|
||||
|
||||
var header_row = $(table)
|
||||
.find("thead > tr:first");
|
||||
|
||||
|
@ -53,26 +59,25 @@ $(document)
|
|||
|
||||
if (fields.length == 0 || !fields.filter(field => field != "")) {
|
||||
console.log("No table fields defined, disabling search/sort.");
|
||||
return;
|
||||
}
|
||||
|
||||
} else {
|
||||
$(table)
|
||||
.wrap(`<div id='tablewrapper-${n}'></div`);
|
||||
$(header_row)
|
||||
.children("[data-sort]")
|
||||
.addClass("sort")
|
||||
.each((i, e) => field_magic(i, e, fields));
|
||||
|
||||
$(table)
|
||||
.wrap(`<div id='tablewrapper-${n}'></div`);
|
||||
if ($(header_row)
|
||||
.text()
|
||||
.trim() == "") {
|
||||
console.log("No headers fields visible, hiding header row.");
|
||||
header_row.addClass("visually-hidden");
|
||||
}
|
||||
|
||||
$(header_row)
|
||||
.children("[data-sort]")
|
||||
.addClass("sort")
|
||||
.each((i, e) => field_magic(i, e, fields));
|
||||
|
||||
if ($(header_row)
|
||||
.text()
|
||||
.trim() == "") {
|
||||
console.log("No headers fields visible, hiding header row.");
|
||||
header_row.addClass("visually-hidden");
|
||||
}
|
||||
|
||||
// HTML for the search widget
|
||||
var searcher = $.parseHTML(`
|
||||
// HTML for the search widget
|
||||
var searcher = $.parseHTML(`
|
||||
<div class="input-group my-3">
|
||||
<input type="search" class="search form-control" placeholder="Search"/>
|
||||
<button class="btn btn-outline-secondary search-reset" type="button">
|
||||
|
@ -80,189 +85,189 @@ $(document)
|
|||
</button>
|
||||
</div>`);
|
||||
|
||||
$(table)
|
||||
.before(searcher);
|
||||
$(table)
|
||||
.before(searcher);
|
||||
|
||||
var search_field = $(searcher)
|
||||
.children("input.search");
|
||||
var search_field = $(searcher)
|
||||
.children("input.search");
|
||||
|
||||
var reset_search = $(searcher)
|
||||
.children("button.search-reset");
|
||||
var reset_search = $(searcher)
|
||||
.children("button.search-reset");
|
||||
|
||||
var pager = $.parseHTML(`
|
||||
var pager = $.parseHTML(`
|
||||
<nav aria-label="Pagination control" class="visually-hidden">
|
||||
<ul class="pagination d-flex flex-wrap text-center"></ul>
|
||||
</nav>`);
|
||||
|
||||
$(table)
|
||||
.before(pager);
|
||||
$(table)
|
||||
.before(pager);
|
||||
|
||||
var list_instance = [];
|
||||
var internal_table = [];
|
||||
var list_instance = [];
|
||||
var internal_table = [];
|
||||
|
||||
var pagination = $(table)
|
||||
.children("tbody")
|
||||
.length == 1;
|
||||
var pagination = $(table)
|
||||
.children("tbody")
|
||||
.length == 1;
|
||||
|
||||
pagination = false; // FIXME-LARS: pagination not working yet.
|
||||
pagination = false; // FIXME-LARS: pagination not working yet.
|
||||
|
||||
// list.js cannot deal with tables with multiple tbodys,
|
||||
// so maintain separate internal "table" copies for
|
||||
// sorting/searching and update the DOM based on them
|
||||
$(table)
|
||||
.children("tbody, tfoot")
|
||||
.addClass("list")
|
||||
.each(function () {
|
||||
// add the required classes to the cells
|
||||
$(this)
|
||||
.children("tr")
|
||||
.each(function () {
|
||||
$(this)
|
||||
.children("th, td")
|
||||
.each((i, e) => {
|
||||
$(e)
|
||||
.addClass(fields[i]);
|
||||
field_magic(i, e, fields);
|
||||
});
|
||||
});
|
||||
// list.js cannot deal with tables with multiple tbodys,
|
||||
// so maintain separate internal "table" copies for
|
||||
// sorting/searching and update the DOM based on them
|
||||
$(table)
|
||||
.children("tbody, tfoot")
|
||||
.addClass("list")
|
||||
.each(function () {
|
||||
// add the required classes to the cells
|
||||
$(this)
|
||||
.children("tr")
|
||||
.each(function () {
|
||||
$(this)
|
||||
.children("th, td")
|
||||
.each((i, e) => {
|
||||
$(e)
|
||||
.addClass(fields[i]);
|
||||
field_magic(i, e, fields);
|
||||
});
|
||||
});
|
||||
|
||||
// create the internal table and add list.js to them
|
||||
var thead = $(this)
|
||||
.siblings("thead:first")
|
||||
.clone();
|
||||
// create the internal table and add list.js to them
|
||||
var thead = $(this)
|
||||
.siblings("thead:first")
|
||||
.clone();
|
||||
|
||||
var tbody = $(this)
|
||||
.clone();
|
||||
var tbody = $(this)
|
||||
.clone();
|
||||
|
||||
var tbody_rows = $(tbody)
|
||||
.find("tr")
|
||||
.length;
|
||||
var tbody_rows = $(tbody)
|
||||
.find("tr")
|
||||
.length;
|
||||
|
||||
if (tbody_rows == 0) {
|
||||
console.log("Skipping empty tbody");
|
||||
return;
|
||||
} else if (tbody_rows <= items_per_page) {
|
||||
pagination = false;
|
||||
}
|
||||
if (tbody_rows == 0) {
|
||||
console.log("Skipping empty tbody");
|
||||
return;
|
||||
} else if (tbody_rows <= items_per_page) {
|
||||
pagination = false;
|
||||
}
|
||||
|
||||
var parent = $(table)
|
||||
.parent()
|
||||
.clone();
|
||||
var parent = $(table)
|
||||
.parent()
|
||||
.clone();
|
||||
|
||||
$(parent)
|
||||
.children("table")
|
||||
.empty()
|
||||
.removeClass("tablesorter")
|
||||
.append(thead, tbody);
|
||||
$(parent)
|
||||
.children("table")
|
||||
.empty()
|
||||
.removeClass("tablesorter")
|
||||
.append(thead, tbody);
|
||||
|
||||
internal_table.push(parent);
|
||||
internal_table.push(parent);
|
||||
|
||||
var hook = `tablewrapper-${n}`;
|
||||
if (pagination) {
|
||||
console.log("Enabling pager.");
|
||||
$(pager)
|
||||
.removeClass("visually-hidden");
|
||||
pagination = {
|
||||
innerWindow: 5,
|
||||
left: 1,
|
||||
right: 1,
|
||||
item: '<li class="page-item flex-fill"><a class="page page-link" href="#"></a></li>'
|
||||
};
|
||||
} else {
|
||||
hook = parent[0];
|
||||
}
|
||||
var hook = `tablewrapper-${n}`;
|
||||
if (pagination) {
|
||||
console.log("Enabling pager.");
|
||||
$(pager)
|
||||
.removeClass("visually-hidden");
|
||||
pagination = {
|
||||
innerWindow: 5,
|
||||
left: 1,
|
||||
right: 1,
|
||||
item: '<li class="page-item flex-fill"><a class="page page-link" href="#"></a></li>'
|
||||
};
|
||||
} else {
|
||||
hook = parent[0];
|
||||
}
|
||||
|
||||
list_instance.push(
|
||||
new List(hook, pagination ? {
|
||||
valueNames: fields,
|
||||
pagination: pagination,
|
||||
page: items_per_page
|
||||
} : {
|
||||
valueNames: fields
|
||||
}));
|
||||
});
|
||||
list_instance.push(
|
||||
new List(hook, pagination ? {
|
||||
valueNames: fields,
|
||||
pagination: pagination,
|
||||
page: items_per_page
|
||||
} : {
|
||||
valueNames: fields
|
||||
}));
|
||||
});
|
||||
|
||||
reset_search.on("click", function () {
|
||||
search_field.val("");
|
||||
reset_search.on("click", function () {
|
||||
search_field.val("");
|
||||
$.each(list_instance, (i, e) => {
|
||||
e.search();
|
||||
});
|
||||
});
|
||||
|
||||
search_field.on("keyup", function (event) {
|
||||
if (event.key == "Escape") {
|
||||
reset_search.trigger("click");
|
||||
} else {
|
||||
$.each(list_instance, (i, e) => {
|
||||
e.search();
|
||||
e.search($(this)
|
||||
.val());
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$(table)
|
||||
.find(".sort")
|
||||
.on("click", function () {
|
||||
var order = $(this)
|
||||
.hasClass("asc") ? "desc" : "asc";
|
||||
$.each(list_instance, (i, e) => {
|
||||
e.sort($(this)
|
||||
.attr("data-sort"), { order: order, sortFunction: text_sort });
|
||||
});
|
||||
});
|
||||
|
||||
search_field.on("keyup", function (event) {
|
||||
if (event.key == "Escape") {
|
||||
reset_search.trigger("click");
|
||||
} else {
|
||||
$.each(list_instance, (i, e) => {
|
||||
e.search($(this)
|
||||
.val());
|
||||
});
|
||||
$.each(list_instance, (i, e) => {
|
||||
e.on("sortComplete", function () {
|
||||
replace_with_internal(table, internal_table, i);
|
||||
if (i == list_instance.length - 1) {
|
||||
$(table)
|
||||
.find("thead:first tr")
|
||||
.children("th, td")
|
||||
.each((idx, el) => {
|
||||
var cl = internal_table[i].find("thead:first tr")
|
||||
.children("th, td")
|
||||
.eq(idx)
|
||||
.attr("class");
|
||||
$(el)
|
||||
.attr("class", cl);
|
||||
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$(table)
|
||||
.find(".sort")
|
||||
.on("click", function () {
|
||||
var order = $(this)
|
||||
.hasClass("asc") ? "desc" : "asc";
|
||||
$.each(list_instance, (i, e) => {
|
||||
e.sort($(this)
|
||||
.attr("data-sort"), { order: order, sortFunction: text_sort });
|
||||
});
|
||||
});
|
||||
|
||||
$.each(list_instance, (i, e) => {
|
||||
e.on("sortComplete", function () {
|
||||
replace_with_internal(table, internal_table, i);
|
||||
if (i == list_instance.length - 1) {
|
||||
$(table)
|
||||
.find("thead:first tr")
|
||||
.children("th, td")
|
||||
.each((idx, el) => {
|
||||
var cl = internal_table[i].find("thead:first tr")
|
||||
.children("th, td")
|
||||
.eq(idx)
|
||||
.attr("class");
|
||||
$(el)
|
||||
.attr("class", cl);
|
||||
e.on("searchComplete", function () {
|
||||
var last_show_with_children = {};
|
||||
e.items.forEach((item) => {
|
||||
if ($(item.elm)
|
||||
.hasClass("show-with-children")) {
|
||||
var kind = $(item.elm)
|
||||
.attr("class")
|
||||
.split(/\s+/)
|
||||
.join();
|
||||
last_show_with_children[kind] = item;
|
||||
}
|
||||
|
||||
if (item.found) {
|
||||
Object.entries(last_show_with_children)
|
||||
.forEach(([key, val]) => {
|
||||
val.found = true;
|
||||
val.show();
|
||||
delete last_show_with_children[key];
|
||||
});
|
||||
}
|
||||
|
||||
if ($(item.elm)
|
||||
.hasClass("show-always")) {
|
||||
item.found = true;
|
||||
item.show();
|
||||
}
|
||||
});
|
||||
|
||||
e.on("searchComplete", function () {
|
||||
var last_show_with_children = {};
|
||||
e.items.forEach((item) => {
|
||||
if ($(item.elm)
|
||||
.hasClass("show-with-children")) {
|
||||
var kind = $(item.elm)
|
||||
.attr("class")
|
||||
.split(/\s+/)
|
||||
.join();
|
||||
last_show_with_children[kind] = item;
|
||||
}
|
||||
|
||||
if (item.found) {
|
||||
Object.entries(last_show_with_children)
|
||||
.forEach(([key, val]) => {
|
||||
val.found = true;
|
||||
val.show();
|
||||
delete last_show_with_children[key];
|
||||
});
|
||||
}
|
||||
|
||||
if ($(item.elm)
|
||||
.hasClass("show-always")) {
|
||||
item.found = true;
|
||||
item.show();
|
||||
}
|
||||
});
|
||||
|
||||
e.update();
|
||||
replace_with_internal(table, internal_table, i);
|
||||
});
|
||||
e.update();
|
||||
replace_with_internal(table, internal_table, i);
|
||||
});
|
||||
}
|
||||
});
|
||||
$(table.addClass("tablesorter-done"));
|
||||
n++;
|
||||
});
|
||||
n++;
|
||||
});
|
|
@ -1,22 +1,31 @@
|
|||
$(function () {
|
||||
var form = $(".new-relation-row").closest("form");
|
||||
var newRowHtml = form.find(".new-relation-row").get(0).outerHTML;
|
||||
var form = $(".new-relation-row")
|
||||
.closest("form");
|
||||
var newRowHtml = form.find(".new-relation-row")
|
||||
.get(0)
|
||||
.outerHTML;
|
||||
var counter = 1;
|
||||
|
||||
form.on("click", ".delete", function (e) {
|
||||
e.preventDefault();
|
||||
$(this).closest(".row").remove();
|
||||
$(this)
|
||||
.closest(".input-group")
|
||||
.remove();
|
||||
});
|
||||
|
||||
form.on("keydown", ".new-relation-row input[type=text]", function () {
|
||||
var top = $(this).closest(".new-relation-row");
|
||||
var top = $(this)
|
||||
.closest(".new-relation-row");
|
||||
top.removeClass("new-relation-row");
|
||||
top.find(".form-text").remove();
|
||||
top.find(".delete").show();
|
||||
top.find("input,select").each(function () {
|
||||
this.name += counter;
|
||||
});
|
||||
top.find(".delete")
|
||||
.removeAttr('Disabled')
|
||||
.removeClass("btn-outline-danger")
|
||||
.addClass("btn-danger");
|
||||
top.find("input,select")
|
||||
.each(function () {
|
||||
this.name += counter;
|
||||
});
|
||||
++counter;
|
||||
top.after(newRowHtml);
|
||||
});
|
||||
});
|
||||
});
|
|
@ -6,7 +6,7 @@
|
|||
{% block content %}
|
||||
<h1>Datatracker API Notes</h1>
|
||||
<div class="bio-text">
|
||||
<h2 id="framework" class="anchor-target">Framework API</h2>
|
||||
<h2 id="framework">Framework API</h2>
|
||||
<p>
|
||||
This section describes the autogenerated read-only API towards the database tables. See also
|
||||
the
|
||||
|
@ -63,7 +63,7 @@
|
|||
Data is currently provided in JSON and XML format. Adding new formats is
|
||||
fairly easy, if it should be found desirable.
|
||||
</p>
|
||||
<h3 id="framework-documents" class="anchor-target">Framework API: Documents</h3>
|
||||
<h3 id="framework-documents">Framework API: Documents</h3>
|
||||
<p>
|
||||
Documents are listed at
|
||||
<a href="https://datatracker.ietf.org/api/v1/doc/document/">/api/v1/doc/document/</a>
|
||||
|
@ -148,7 +148,7 @@ $ curl 'https://datatracker.ietf.org/api/v1/doc/document/?limit=0&name__contains
|
|||
etc.
|
||||
</li>
|
||||
</ol>
|
||||
<h2 id="simplified-documents" class="anchor-target">Simplified Documents API</h2>
|
||||
<h2 id="simplified-documents">Simplified Documents API</h2>
|
||||
<p>
|
||||
A simplified Documents API, intended for cases where only a limited set of
|
||||
document attributes are necessary for an application is
|
||||
|
@ -168,7 +168,7 @@ $ curl 'https://datatracker.ietf.org/api/v1/doc/document/?limit=0&name__contains
|
|||
<p>
|
||||
The simplified document API takes no parameters, and is invoked with a HTTP GET.
|
||||
</p>
|
||||
<h2 id="iesg-position-api" class="anchor-target">IESG Ballot Position API</h2>
|
||||
<h2 id="iesg-position-api">IESG Ballot Position API</h2>
|
||||
<p>
|
||||
A simplified IESG ballot position interface, intended for automation, is
|
||||
available at <code>{% url 'ietf.doc.views_ballot.api_set_position' %}</code>. Access is limited to area directors.
|
||||
|
@ -209,7 +209,7 @@ $ curl 'https://datatracker.ietf.org/api/v1/doc/document/?limit=0&name__contains
|
|||
$ curl -S -F "apikey=AwAAABVR3D5GHkVMhspKSxBCVknGMmqikNIhT85kSnghjaV_pYy26WV92mm-jpdi" -F "doc=draft-ietf-lamps-eai-addresses" -F "position=noobj" -F "comment=Comment text" https://datatracker.ietf.org/api/iesg/position
|
||||
Done
|
||||
</pre>
|
||||
<h2 id="session-video-url-api" class="anchor-target">Set Session Video URL</h2>
|
||||
<h2 id="session-video-url-api">Set Session Video URL</h2>
|
||||
<p>
|
||||
This interface is intended for Meetecho, to provide a way to set the
|
||||
URL of a video recording for a given session. It is available at
|
||||
|
@ -250,7 +250,7 @@ $ curl -S -F "apikey=AwAAABVR3D5GHkVMhspKSxBCVknGMmqikNIhT85kSnghjaV_pYy26WV92mm
|
|||
$ curl -S -F "apikey=DgAAAMLSi3coaE5TjrRs518xO8eBRlCmFF3eQcC8_SjUTtRGLGiJh7-1SYPT5WiS" -F "meeting=101" -F "group=mptcp" -F "item=1" -F "url=https://foo.example/beer/mptcp" https://datatracker.ietf.org/api/meeting/session/video/url
|
||||
Done
|
||||
</pre>
|
||||
<h2 id="openid-connect" class="anchor-target">OpenID Connect</h2>
|
||||
<h2 id="openid-connect">OpenID Connect</h2>
|
||||
<p>
|
||||
The datatracker supports
|
||||
<a href="https://openid.net/connect/">OpenID Connect</a>
|
||||
|
@ -258,7 +258,7 @@ $ curl -S -F "apikey=DgAAAMLSi3coaE5TjrRs518xO8eBRlCmFF3eQcC8_SjUTtRGLGiJh7-1SYP
|
|||
not dynamic registration. The OpenID Connect Issuer is
|
||||
<code> {{ settings.IDTRACKER_BASE_URL }}{% url 'ietf.api.urls.oidc_issuer' %} </code>
|
||||
</p>
|
||||
<h2 id="datatracker-version" class="anchor-target">Datatracker Version</h2>
|
||||
<h2 id="datatracker-version">Datatracker Version</h2>
|
||||
<p>
|
||||
The datatracker version and release/patch date is available as a JSON blob at
|
||||
<code>
|
||||
|
@ -267,7 +267,7 @@ $ curl -S -F "apikey=DgAAAMLSi3coaE5TjrRs518xO8eBRlCmFF3eQcC8_SjUTtRGLGiJh7-1SYP
|
|||
</a>
|
||||
</code>.
|
||||
</p>
|
||||
<h2 id="personal-api-keys" class="anchor-target">
|
||||
<h2 id="personal-api-keys">
|
||||
Personal API Keys
|
||||
</h2>
|
||||
<p>
|
||||
|
@ -307,7 +307,7 @@ $ curl -S -F "apikey=DgAAAMLSi3coaE5TjrRs518xO8eBRlCmFF3eQcC8_SjUTtRGLGiJh7-1SYP
|
|||
a regular login in order to activate access.
|
||||
</li>
|
||||
</ul>
|
||||
<h2 id="signing-keys" class="anchor-target">
|
||||
<h2 id="signing-keys">
|
||||
Signing Keys
|
||||
</h2>
|
||||
<p>
|
||||
|
|
|
@ -109,9 +109,9 @@
|
|||
</small>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class='text-center text-muted'>
|
||||
Add 'ietf.context_processors.sql_debug' to settings.TEMPLATE_CONTECT_PROCESSORS to turn on the SQL statement table
|
||||
</div>
|
||||
<small class='text-center text-muted'>
|
||||
Add <samp>ietf.context_processors.sql_debug</samp> to <samp>settings.DEV_TEMPLATE_CONTEXT_PROCESSORS</samp> to turn on the SQL statement table.
|
||||
</small>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% block js %}
|
||||
|
|
|
@ -1,25 +1,23 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}Change shepherding AD for {{titletext}}{% endblock %}
|
||||
|
||||
{% block title %}Change responsible AD for {{ titletext }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Change shepherding AD<br><small class="text-muted">{{titletext}}</small></h1>
|
||||
|
||||
<form enctype="multipart/form-data" method="post">
|
||||
<h1>
|
||||
Change responsible AD
|
||||
<br>
|
||||
<small class="text-muted">{{ titletext }}</small>
|
||||
</h1>
|
||||
<form class="mt-3" enctype="multipart/form-data" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">Back</a>
|
||||
|
||||
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">
|
||||
Back
|
||||
</a>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,35 +1,29 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load static %}
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}Change document shepherd for {{ doc.name }}-{{ doc.rev }}{% endblock %}
|
||||
|
||||
{% block pagehead %}
|
||||
{{ form.media.css }}
|
||||
{% endblock %}
|
||||
|
||||
{% block pagehead %}{{ form.media.css }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Change document shepherd<br><small class="text-muted">{{ doc.name }}-{{ doc.rev }}</small></h1>
|
||||
|
||||
<p>The shepherd needs to have a Datatracker account. A new account can be
|
||||
<a href="{% url "ietf.ietfauth.views.create_account" %}">created here</a>.</p>
|
||||
|
||||
<h1>
|
||||
Change document shepherd
|
||||
<br>
|
||||
<small class="text-muted">{{ doc.name }}-{{ doc.rev }}</small>
|
||||
</h1>
|
||||
<p>
|
||||
The shepherd needs to have a Datatracker account. A new account can be
|
||||
<a href="{% url "ietf.ietfauth.views.create_account" %}">created here</a>
|
||||
.
|
||||
</p>
|
||||
<form enctype="multipart/form-data" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary">Save</button>
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
|
||||
|
||||
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
{{ form.media.js}}
|
||||
{% endblock %}
|
||||
{% block js %}{{ form.media.js }}{% endblock %}
|
|
@ -1,25 +1,21 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}Change the document shepherd email for {{ doc.name }}-{{ doc.rev }}{% endblock %}
|
||||
|
||||
{% block title %}Change document shepherd email for {{ doc.name }}-{{ doc.rev }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Change the document shepherd email<br><small class="text-muted">{{ doc.name }}-{{ doc.rev }}</small></h1>
|
||||
|
||||
<h1>
|
||||
Change document shepherd email
|
||||
<br>
|
||||
<small class="text-muted">{{ doc.name }}-{{ doc.rev }}</small>
|
||||
</h1>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
|
||||
<button type="submit" class="btn btn-primary">Save</button>
|
||||
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,27 +1,24 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}Change state for {{doc.title}}{% endblock %}
|
||||
|
||||
{% block title %}Change state for {{ doc.title }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Change state<br><small class="text-muted">{{doc.title}}</small></h1>
|
||||
|
||||
<p><a class="btn btn-info" href="{{help_url}}">Help on states</a></p>
|
||||
|
||||
<h1>
|
||||
Change state
|
||||
<br>
|
||||
<small class="text-muted">{{ doc.title }}</small>
|
||||
</h1>
|
||||
<p>
|
||||
<a class="my-2 btn btn-info" href="{{ help_url }}">Help on states</a>
|
||||
</p>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
|
||||
|
||||
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,25 +1,23 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}Change title for {{ doc.title }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Change title<br><small class="text-muted">{{ titletext }}</small></h1>
|
||||
|
||||
<form method="post">
|
||||
<h1>
|
||||
Change title
|
||||
<br>
|
||||
<small class="text-muted">{{ titletext }}</small>
|
||||
</h1>
|
||||
<form class="mt-3" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">Back</a>
|
||||
|
||||
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">
|
||||
Back
|
||||
</a>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,32 +1,32 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}{{ charter.chartered_group.type.name }} action announcement writeup for {{ charter.chartered_group.acronym }}{% endblock %}
|
||||
|
||||
{% block title %}
|
||||
{{ charter.chartered_group.type.name }} action announcement writeup for {{ charter.chartered_group.acronym }}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>{{ charter.chartered_group.type.name }} action announcement writeup<br><small class="text-muted">{{ charter.chartered_group.acronym }}</small></h1>
|
||||
|
||||
<form method="post">
|
||||
<h1>
|
||||
{{ charter.chartered_group.type.name }} action announcement writeup
|
||||
<br>
|
||||
<small class="text-muted">{{ charter.chartered_group.acronym }}</small>
|
||||
</h1>
|
||||
<form class="mt-3" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form announcement_text_form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary" name="save_text" value="Save">Submit</button>
|
||||
<button type="submit" class="btn btn-warning" name="regenerate_text" value="Reenerate"">Regenerate</button>
|
||||
|
||||
<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" href="{% url 'ietf.doc.views_charter.approve' name=charter.canonical_name %}">Charter approval page</a>
|
||||
<a type="submit"
|
||||
class="btn btn-primary"
|
||||
href="{% url 'ietf.doc.views_charter.approve' name=charter.canonical_name %}">
|
||||
Charter approval page
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
<a class="btn btn-secondary float-end" href="{{ back_url }}">Back</a>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
{% endblock%}
|
||||
{% endblock %}
|
|
@ -1,25 +1,21 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}Approve {{ charter.canonical_name }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Approve {{ charter.canonical_name }}-{{ charter.rev }}</h1>
|
||||
|
||||
<form method="post">
|
||||
<form class="mt-3" method="post">
|
||||
{% csrf_token %}
|
||||
<pre>{{ announcement }}</pre>
|
||||
|
||||
|
||||
|
||||
<pre class="border p-3">{{ announcement }}</pre>
|
||||
<button type="submit" class="btn btn-primary">Send announcement, close ballot & update revision</button>
|
||||
<a class="btn btn-warning" href="{% url "ietf.doc.views_charter.action_announcement_text" name=charter.canonical_name %}?next=approve">Edit/regenerate announcement</a>
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=charter.name %}">Back</a>
|
||||
|
||||
|
||||
<a class="btn btn-warning"
|
||||
href="{% url "ietf.doc.views_charter.action_announcement_text" name=charter.canonical_name %}?next=approve">
|
||||
Edit/regenerate announcement
|
||||
</a>
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=charter.name %}">Back</a>
|
||||
</form>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,16 +1,20 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% block title %}Ballot for {{ doc.name }} issued{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Ballot for {{ doc.name }} issued</h1>
|
||||
|
||||
<p>Ballot has been sent out.</p>
|
||||
|
||||
<h1>
|
||||
Ballot issued
|
||||
<br>
|
||||
<small class="text-muted">{{ doc.name }}</small>
|
||||
</h1>
|
||||
<p>
|
||||
Ballot has been sent out.
|
||||
</p>
|
||||
<div class="buttonlist">
|
||||
<a class="btn btn-primary" href="{% url 'ietf.doc.views_doc.document_writeup' name=doc.name %}">Back</a>
|
||||
<a class="btn btn-secondary"
|
||||
href="{% url 'ietf.doc.views_doc.document_writeup' name=doc.name %}">Back</a>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,31 +1,35 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}Ballot writeup and notes for {{ charter.chartered_group }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
|
||||
<h1>Ballot writeup and notes<br><small class="text-muted">{{ charter.chartered_group }}</small></h1>
|
||||
|
||||
<form method="post">
|
||||
<h1>
|
||||
Ballot writeup and notes
|
||||
<br>
|
||||
<small class="text-muted">{{ charter.chartered_group }}</small>
|
||||
</h1>
|
||||
<form class="mt-3" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form ballot_writeup_form %}
|
||||
|
||||
<div class="form-text">
|
||||
Working group summary, personnel, IAB note, IESG note, IANA note.
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary" name="save_ballot_writeup" value="Save Ballot Writeup">Save</button>
|
||||
<button type="submit" class="btn btn-warning" name="send_ballot" value="Save and Re-Issue Ballot">Save & {% if ballot_issued %}re-{% endif %}issue ballot</button>
|
||||
<a class="btn btn-secondary float-end" href="{% url 'ietf.doc.views_doc.document_writeup' name=charter.name %}">Back</a>
|
||||
|
||||
|
||||
<div class="form-text mb-3">Working group summary, personnel, IAB note, IESG note, IANA note.</div>
|
||||
<button type="submit"
|
||||
class="btn btn-primary"
|
||||
name="save_ballot_writeup"
|
||||
value="Save Ballot Writeup">Save</button>
|
||||
<button type="submit"
|
||||
class="btn btn-warning"
|
||||
name="send_ballot"
|
||||
value="Save and Re-Issue Ballot">
|
||||
Save &
|
||||
{% if ballot_issued %}re-{% endif %}
|
||||
issue ballot
|
||||
</button>
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url 'ietf.doc.views_doc.document_writeup' name=charter.name %}">
|
||||
Back
|
||||
</a>
|
||||
</form>
|
||||
|
||||
{% endblock%}
|
||||
{% endblock %}
|
|
@ -1,27 +1,23 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}
|
||||
Change responsible AD for {{ charter.canonical_name }}-{{ charter.rev }}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Change responsible AD for {{ charter.canonical_name }}-{{ charter.rev }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Change responsible AD<br><small class="text-muted">{{ charter.canonical_name }}-{{ charter.rev }}</small></h1>
|
||||
|
||||
<form enctype="multipart/form-data" method="post">
|
||||
<h1>
|
||||
Change responsible AD
|
||||
<br>
|
||||
<small class="text-muted">{{ charter.canonical_name }}-{{ charter.rev }}</small>
|
||||
</h1>
|
||||
<form class="mt-3" enctype="multipart/form-data" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=charter.canonical_name %}">Back</a>
|
||||
|
||||
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=charter.canonical_name %}">
|
||||
Back
|
||||
</a>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,64 +1,60 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}{{ title }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>{{ title }}</h1>
|
||||
|
||||
{% if not option %}
|
||||
<p><a class="btn btn-info" href="{% url 'ietf.doc.views_help.state_help' type="charter" %}">Help on states</a></p>
|
||||
<p class="my-3">
|
||||
<a class="btn btn-info"
|
||||
href="{% url 'ietf.doc.views_help.state_help' type="charter" %}">Help on states</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{% for field in form.visible_fields %}
|
||||
{% bootstrap_field field %}
|
||||
|
||||
{% if field.name == "charter_state" and chartering_type == "rechartering" %}
|
||||
<div class="checkbox ballot-wo-extern">
|
||||
<label>
|
||||
<input type="checkbox" name="ballot_wo_extern">
|
||||
<b>Ask whether external review can be skipped in ballot</b>
|
||||
</label>
|
||||
<div class="my-3 form-check ballot-wo-extern">
|
||||
<input class="form-check-input"
|
||||
type="checkbox"
|
||||
id="ballot_wo_extern"
|
||||
name="ballot_wo_extern">
|
||||
<label class="form-check-label" for="ballot_wo_extern">Ask whether external review can be skipped in ballot.</label>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% if initial_review %}
|
||||
<p class="alert alert-warning"><b>Warning:</b> Announced initial review time hasn't elapsed yet. It does so at {{ initial_review.expires }}.</p>
|
||||
<p class="alert alert-warning">
|
||||
<b>Warning:</b> Announced initial review time hasn't elapsed yet. It does so at {{ initial_review.expires }}.
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
||||
{% if option == "initcharter" or option == "recharter" %}
|
||||
<button class="btn btn-primary" type="submit">Initiate chartering</button>
|
||||
{% endif %}
|
||||
{% if not option or option == "abandon" %}
|
||||
<button class="btn btn-primary" type="submit">Save & notify secretariat</button>
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
|
||||
{% endif %}
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
{% if prev_state %}
|
||||
<h3>Or revert to previous state</h3>
|
||||
|
||||
<div class="prev-state">
|
||||
<form method="post">{% csrf_token %}
|
||||
<input type="hidden" name="charter_state" value="{{ prev_charter_state.pk }}" />
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden"
|
||||
name="charter_state"
|
||||
value="{{ prev_charter_state.pk }}"/>
|
||||
<input type="hidden" name="state" value="{{ prev_state.slug }}" />
|
||||
<input type="submit" value="Back to {{ prev_charter_state.name }}" />
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script>
|
||||
var info_msg = {{ info_msg|safe }}, statesForBallotWoExtern = {{ states_for_ballot_wo_extern }};
|
||||
|
@ -66,15 +62,16 @@
|
|||
$(document).ready(function () {
|
||||
function stateChanged() {
|
||||
var v = $(this).val();
|
||||
console.log(v);
|
||||
$("#id_message").val(info_msg[v] || "");
|
||||
|
||||
if ($.inArray(+v, statesForBallotWoExtern) != -1)
|
||||
$(".ballot-wo-extern").show();
|
||||
$(".ballot-wo-extern").show();
|
||||
else
|
||||
$(".ballot-wo-extern").hide();
|
||||
$(".ballot-wo-extern").hide();
|
||||
}
|
||||
$("#id_charter_state").click(stateChanged).change(stateChanged).keydown(stateChanged);
|
||||
$("#id_charter_state").click();
|
||||
$("#id_charter_state").on("click change keydown", stateChanged);
|
||||
$("#id_charter_state").trigger("click");
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,26 +1,17 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}{{ title }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>{{ title }}</h1>
|
||||
|
||||
<form class="change-title" method="post">
|
||||
<form class="change-title mt-3" method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
|
||||
<button class="btn btn-primary" type="submit">Save and (possibly) notify Secretariat</button>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,34 +1,40 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}WG Review announcement }} announcement writeup for {{ charter.chartered_group.acronym }}{% endblock %}
|
||||
|
||||
{% block title %}WG Review announcement writeup for {{ charter.chartered_group.acronym }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>WG Review announcement writeup<br><small class="text-muted">{{ charter.chartered_group.acronym }}</small></h1>
|
||||
|
||||
<form method="post">
|
||||
<h1>
|
||||
WG Review announcement writeup
|
||||
<br>
|
||||
<small class="text-muted">{{ charter.chartered_group.acronym }}</small>
|
||||
</h1>
|
||||
<form class="mt-3" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form announcement_text_form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary" name="save_text" value="Save">Submit</button>
|
||||
<button type="submit" class="btn btn-warning" name="regenerate_text" value="Regenerate"">Regenerate</button>
|
||||
|
||||
<button type="submit" class="btn btn-warning" name="regenerate_text" value="Regenerate"">Regenerate
|
||||
</button>
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<input type="submit" type="submit" class="btn btn-primary" name="send_annc_only" value="Send only to IETF-Announce" />
|
||||
<input type="submit" type="submit" class="btn btn-primary" name="send_nw_only" value="Send only to New-Work" />
|
||||
<input type="submit" type="submit" class="btn btn-primary" name="send_both" value="Send to both" />
|
||||
<input type="submit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
name="send_annc_only"
|
||||
value="Send only to IETF-Announce"/>
|
||||
<input type="submit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
name="send_nw_only"
|
||||
value="Send only to New-Work"/>
|
||||
<input type="submit"
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
name="send_both"
|
||||
value="Send to both"/>
|
||||
{% endif %}
|
||||
|
||||
<a class="btn btn-secondary float-end" href="{{ back_url }}">Back</a>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
{% endblock%}
|
||||
{% endblock %}
|
|
@ -1,39 +1,40 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load django_bootstrap5 %}
|
||||
{% load textfilters %}
|
||||
|
||||
|
||||
{% block title %}
|
||||
Charter submission for {{ group.acronym }} {{ group.type.name }}
|
||||
{% endblock %}
|
||||
|
||||
{% load person_filters %}
|
||||
{% block title %}Charter submission for {{ group.acronym }} {{ group.type.name }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Charter submission</h1>
|
||||
|
||||
<table class="table table-sm">
|
||||
<tbody class="meta">
|
||||
<table class="mt-3 table table-sm table-borderless">
|
||||
<tbody class="meta border-top">
|
||||
<tr>
|
||||
<th>{{ group.type.name }}</th>
|
||||
<th>Name</th>
|
||||
<td>{{ group.name }}</td>
|
||||
<th class="fs-6">{{ group.name }}</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Acronym</th>
|
||||
<td>{{ group.acronym }}</td>
|
||||
<td>
|
||||
<a href="{{ group.about_url }}">{{ group.acronym }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
{% if group.parent and group.parent.type_id == "area" %}
|
||||
<th>{{ group.parent.type.name }}</th>
|
||||
<td>{{ group.parent.name }} ({{ group.parent.acronym }})</td>
|
||||
<td>
|
||||
{{ group.parent.name }} (
|
||||
<a href="{{ group.parent.about_url }}">{{ group.parent.acronym }}</a>
|
||||
)
|
||||
</td>
|
||||
{% else %}
|
||||
<th></th><td></td>
|
||||
<th></th>
|
||||
<td></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -41,13 +42,11 @@
|
|||
<th>State</th>
|
||||
<td>
|
||||
{{ group.state.name }}
|
||||
{% if requested_close %}
|
||||
<div class="badge bg-info">In the process of being closed</div>
|
||||
{% endif %}
|
||||
{% if requested_close %}<div class="badge bg-info">In the process of being closed</div>{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="meta">
|
||||
<tbody class="meta border-top">
|
||||
{% for slug, label, roles in group.personnel %}
|
||||
<tr>
|
||||
{% if forloop.first %}
|
||||
|
@ -57,46 +56,55 @@
|
|||
{% endif %}
|
||||
<th>{{ label }}</th>
|
||||
<td>
|
||||
|
||||
|
||||
{% for r in roles %}
|
||||
<span class="bi bi-envelope"></span>
|
||||
<a href="mailto:{{ r.email.address }}">{{ r.person.plain_name }}</a>
|
||||
{% person_link r.person %}
|
||||
<br>
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
||||
{% if group.list_email %}
|
||||
<tbody class="meta">
|
||||
<tbody class="meta border-top">
|
||||
<tr>
|
||||
<th>Mailing list</th>
|
||||
<th>Address</th><td>{{ group.list_email|linkify }}</td>
|
||||
<th>Address</th>
|
||||
<td>{{ group.list_email|linkify }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>To subscribe</th>
|
||||
<td>{{ group.list_subscribe|linkify }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Archive</th>
|
||||
<td>
|
||||
{{ group.list_archive|linkify }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td></td><th>To subscribe</th><td>{{ group.list_subscribe|linkify }}</td></tr>
|
||||
<tr><td></td><th>Archive</th><td>{{ group.list_archive|linkify }}</td></tr>
|
||||
</tbody>
|
||||
{% endif %}
|
||||
</table>
|
||||
|
||||
<p class="alert alert-info">The text will be submitted as <b>{{ name }}-{{ next_rev }}</b>.</p>
|
||||
|
||||
<p class="alert alert-info">
|
||||
The text will be submitted as <b>{{ name }}-{{ next_rev }}</b>.
|
||||
</p>
|
||||
<form enctype="multipart/form-data" method="post" id="charter-form">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<button type="submit" class="btn btn-primary">
|
||||
Submit
|
||||
</button>
|
||||
{% if group.charter %}
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=name %}">Back</a>
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=name %}">
|
||||
Back
|
||||
</a>
|
||||
{% else %}
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.group.views.group_about" group_type=group.type_id acronym=group.acronym %}">Back</a>
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.group.views.group_about" group_type=group.type_id acronym=group.acronym %}">
|
||||
Back
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,25 +1,17 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}Approve {{ review.canonical_name }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Approve {{ review.canonical_name }}</h1>
|
||||
|
||||
<form method="post">
|
||||
<form class="my-3" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary">Send announcement & close ballot</button>
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=review.name %}">Back</a>
|
||||
|
||||
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=review.name %}">Back</a>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,31 +1,30 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}Begin IETF conflict review for {{doc_to_review.canonical_name}}-{{doc_to_review.rev}}{% endblock %}
|
||||
|
||||
{% block title %}Begin IETF conflict review for {{ doc_to_review.canonical_name }}-{{ doc_to_review.rev }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Begin IETF conflict review<br><small class="text-muted">{{doc_to_review.canonical_name}}-{{doc_to_review.rev}}</small></h1>
|
||||
|
||||
<h1>
|
||||
Begin IETF conflict review
|
||||
<br>
|
||||
<small class="text-muted">{{ doc_to_review.canonical_name }}-{{ doc_to_review.rev }}</small>
|
||||
</h1>
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<p><a class="btn btn-info" href="{% url 'ietf.doc.views_help.state_help' type="conflict-review" %}">Help on states</a></p>
|
||||
<p class="my-3">
|
||||
<a class="btn btn-info"
|
||||
href="{% url 'ietf.doc.views_help.state_help' type="conflict-review" %}">Help on states</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
<form method="post">
|
||||
<form class="my-3" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=doc_to_review.name %}">Back</a>
|
||||
|
||||
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=doc_to_review.name %}">
|
||||
Back
|
||||
</a>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,31 +1,35 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}
|
||||
Edit conflict review for {{ conflictdoc.canonical_name }}-{{ conflictdoc.rev }}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Edit conflict review for {{ conflictdoc.canonical_name }}-{{ conflictdoc.rev }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Edit conflict review<br><small class="text-muted">{{ conflictdoc.canonical_name }}-{{ conflictdoc.rev }}</small></h1>
|
||||
|
||||
<p class="alert alert-info">The text will be submitted as <strong>{{ review.canonical_name }}-{{ next_rev }}</strong></p>
|
||||
|
||||
<form enctype="multipart/form-data" method="post">
|
||||
<h1>
|
||||
Edit conflict review
|
||||
<br>
|
||||
<small class="text-muted">{{ conflictdoc.canonical_name }}-{{ conflictdoc.rev }}</small>
|
||||
</h1>
|
||||
<p class="my-3 alert alert-info">
|
||||
The text will be submitted as <strong>{{ review.canonical_name }}-{{ next_rev }}</strong>
|
||||
</p>
|
||||
<form class="my-3" enctype="multipart/form-data" method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary" name="submit_response" value="Submit">Submit</button>
|
||||
<button type="submit" class="btn btn-warning" name="reset_text" value="Reset to Template Text">Reset to template text</button>
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=review.canonical_name %}">Back</a>
|
||||
|
||||
|
||||
|
||||
<button type="submit"
|
||||
class="btn btn-primary"
|
||||
name="submit_response"
|
||||
value="Submit">Submit</button>
|
||||
<button type="submit"
|
||||
class="btn btn-warning"
|
||||
name="reset_text"
|
||||
value="Reset to Template Text">
|
||||
Reset to template text
|
||||
</button>
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=review.canonical_name %}">
|
||||
Back
|
||||
</a>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,13 +1,11 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block title %}Ballot for {{ doc.name }}-{{ doc.rev }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
{{ top|safe }}
|
||||
{{ ballot_content|safe }}
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,168 +1,238 @@
|
|||
{# Copyright The IETF Trust 2015, All Rights Reserved #}{% load origin %}{% origin %}
|
||||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{% load ietf_filters %}
|
||||
{% load textfilters %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-2 d-none d-md-block d-sm-block d-lg-block d-xl-block d-xxl-block">
|
||||
|
||||
{% for n, positions in position_groups %}
|
||||
<h4><span class="badge bg-{{ n|pos_to_label }}"> {{ n.name }}</span></h4>
|
||||
<h5>
|
||||
<span class="badge {{ n|pos_to_label_format }}">{{ n.name }}</span>
|
||||
</h5>
|
||||
{% for p in positions %}
|
||||
<div class="balloter-name">
|
||||
{% if p.is_old_pos %}<span class="text-muted">({% endif %}{% if p.comment or p.discuss %}<a href="#{{ doc.name|slugify }}_{{ p.balloter.plain_name|slugify }}">{% endif %}{{ p.balloter.plain_name }}{% if p.comment or p.discuss %}</a>{% endif %}{% if p.is_old_pos %})</span>{% endif %}
|
||||
<div class="balloter-name mb-2">
|
||||
{% if p.is_old_pos %}
|
||||
<span class="text-muted">
|
||||
(
|
||||
{% endif %}
|
||||
{% if p.comment or p.discuss %}<a href="#{{ doc.name|slugify }}_{{ p.balloter.plain_name|slugify }}">{% endif %}
|
||||
{{ p.balloter.plain_name }}
|
||||
{% if p.comment or p.discuss %}</a>{% endif %}
|
||||
{% if p.is_old_pos %}
|
||||
)
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% empty %}
|
||||
(None)
|
||||
<span class="text-muted">(None)</span>
|
||||
{% endfor %}
|
||||
<br>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="col-md-10">
|
||||
{% if all_ballots and all_ballots|length > 1 %}
|
||||
<ul class="pagination pagination-sm">
|
||||
<li class="disabled"><span><b>Ballots</b></span></li>
|
||||
<li class="disabled">
|
||||
<span>
|
||||
<b>Ballots</b>
|
||||
</span>
|
||||
</li>
|
||||
{% for b in all_ballots %}
|
||||
<li {% if b == ballot %}class="active"{% endif %}>
|
||||
<a href="{% url "ietf.doc.views_doc.document_ballot" name=doc.name ballot_id=b.pk %}">{{ b.ballot_type.name }} ({{ b.rev }})</a>
|
||||
<a href="{% url "ietf.doc.views_doc.document_ballot" name=doc.name ballot_id=b.pk %}">
|
||||
{{ b.ballot_type.name }} ({{ b.rev }})
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
{% if doc.type_id == "draft" or doc.type_id == "conflrev" or doc.type_id == "statchg" %}
|
||||
{% if deferred %}
|
||||
<p class="alert alert-danger">Ballot deferred by {{ deferred.by }} on {{ deferred.time|date:"Y-m-d" }}.</p>
|
||||
<p class="alert alert-danger">
|
||||
Ballot deferred by {{ deferred.by }} on {{ deferred.time|date:"Y-m-d" }}.
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if not ballot_open %}
|
||||
<p class="alert alert-warning"><b>Note:</b> This ballot was opened for revision {{ ballot.rev }} and is now closed.</p>
|
||||
<p class="alert alert-warning">
|
||||
<b>Note:</b> This ballot was opened for revision {{ ballot.rev }} and is now closed.
|
||||
</p>
|
||||
{% else %}
|
||||
<p class="alert alert-info"><b>Summary:</b> {{ summary }}</p>
|
||||
<p class="alert alert-info">
|
||||
<b>Summary:</b> {{ summary }}
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% if ballot.ballot_type.question %}
|
||||
<p class="well"><b>Ballot question:</b> "{{ ballot.ballot_type.question }}"</p>
|
||||
<p class="alert alert-secondary">
|
||||
<b>Ballot question:</b> "{{ ballot.ballot_type.question }}"
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% if editable and user|has_role:"Area Director,Secretariat,IRSG Member" %}
|
||||
<a class="btn btn-primary"
|
||||
href="https://mailarchive.ietf.org/arch/search/?q=subject:{{doc.name}}+AND+subject:(discuss+OR+comment+OR+review)">
|
||||
Search Mailarchive</a>
|
||||
|
||||
<a class="btn btn-primary my-3"
|
||||
href="https://mailarchive.ietf.org/arch/search/?q=subject:{{ doc.name }}+AND+subject:(discuss+OR+comment+OR+review)">
|
||||
Search Mailarchive
|
||||
</a>
|
||||
{% if user|can_ballot:doc %}
|
||||
<a class="btn btn-primary" href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot.pk %}">Edit position</a>
|
||||
<a class="btn btn-primary"
|
||||
href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot.pk %}">
|
||||
Edit position
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if doc.type_id == "draft" or doc.type_id == "conflrev" or doc.type_id == "statchg" %}
|
||||
{% if deferred %}
|
||||
<a class="btn btn-primary" href="{% url 'ietf.doc.views_ballot.undefer_ballot' name=doc.name %}">Undefer ballot</a>
|
||||
<a class="btn btn-warning"
|
||||
href="{% url 'ietf.doc.views_ballot.undefer_ballot' name=doc.name %}">Undefer ballot</a>
|
||||
{% else %}
|
||||
{% if doc.telechat_date %}
|
||||
<a class="btn btn-warning" href="{% url 'ietf.doc.views_ballot.defer_ballot' name=doc.name %}">Defer ballot</a>
|
||||
<a class="btn btn-warning"
|
||||
href="{% url 'ietf.doc.views_ballot.defer_ballot' name=doc.name %}">Defer ballot</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if user|has_role:"Area Director,Secretariat" and ballot.ballot_type.slug != "irsg-approve" %}
|
||||
<a class="btn btn-danger" href="{% url 'ietf.doc.views_ballot.clear_ballot' name=doc.name ballot_type_slug=ballot.ballot_type.slug%}">Clear ballot</a>
|
||||
<a class="btn btn-danger"
|
||||
href="{% url 'ietf.doc.views_ballot.clear_ballot' name=doc.name ballot_type_slug=ballot.ballot_type.slug %}">
|
||||
Clear ballot
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% for n, positions in position_groups %}
|
||||
{% for p in positions %}
|
||||
{% if not p.is_old_pos %}
|
||||
<h4 class="anchor-target" id="{{ doc.name|slugify }}_{{ p.balloter.plain_name|slugify }}">{{ p.balloter.plain_name }}
|
||||
<h5 class="mt-4"
|
||||
id="{{ doc.name|slugify }}_{{ p.balloter.plain_name|slugify }}">
|
||||
{{ p.balloter.plain_name }}
|
||||
<span class="float-end">
|
||||
{% if p.old_positions %}<span class="text-muted small">(was {{ p.old_positions|join:", " }})</span>{% endif %}
|
||||
<span class="badge bg-{{ p.pos|pos_to_label }}">{{p.pos}}</span>
|
||||
<span class="badge {{ p.pos|pos_to_label_format }}">{{ p.pos }}</span>
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<a href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot.pk %}?balloter={{ p.balloter.pk }}" title="Click to edit the position of {{ p.balloter.plain_name }}" class="btn btn-primary btn-sm">Edit</a>
|
||||
<a href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot.pk %}?balloter={{ p.balloter.pk }}"
|
||||
title="Click to edit the position of {{ p.balloter.plain_name }}"
|
||||
class="btn btn-primary btn-sm">
|
||||
Edit
|
||||
</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
</h4>
|
||||
</h5>
|
||||
{% if p.pos.blocking and p.discuss %}
|
||||
<div class="card border-danger">
|
||||
<div class="card-header bg-danger">
|
||||
<div><b>{{ p.pos.name }}</b> ({{ p.discuss_time|date:"Y-m-d" }}{% if not p.for_current_revision %} for -{{ p.get_dochistory.rev }}{% endif %})
|
||||
<div class="card border-danger {% if p.comment %} mb-2{% endif %}">
|
||||
<div class="card-header bg-danger text-light">
|
||||
<div>
|
||||
<b>{{ p.pos.name }}</b> ({{ p.discuss_time|date:"Y-m-d" }}
|
||||
{% if not p.for_current_revision %}for -{{ p.get_dochistory.rev }}{% endif %}
|
||||
)
|
||||
{% if p.send_email %}
|
||||
<span class="bi bi-envelope float-end" title="Email requested to be sent for this discuss"></span>
|
||||
<span class="bi bi-envelope float-end"
|
||||
title="Email requested to be sent for this discuss"></span>
|
||||
{% elif p.any_email_sent == True %}
|
||||
<span class="bi bi-envelope float-end" title="Email requested to be sent for earlier discuss"></span>
|
||||
<span class="bi bi-envelope float-end"
|
||||
title="Email requested to be sent for earlier discuss"></span>
|
||||
{% elif p.any_email_sent == False %}
|
||||
<span class="bi bi-chat-o float-end" title="No email send requests for this discuss"></span>
|
||||
<span class="bi bi-chat-o float-end"
|
||||
title="No email send requests for this discuss"></span>
|
||||
{% else %}
|
||||
<span class="bi bi-chat-o float-end" title="No email send requests for this discuss"></span>
|
||||
<span class="bi bi-chat-o float-end"
|
||||
title="No email send requests for this discuss"></span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body"><pre class="ballot pasted">{{ p.discuss|linkify }}</pre></div>
|
||||
<div class="card-body">
|
||||
<pre class="ballot pasted">{{ p.discuss|linkify }}</pre>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if p.comment %}
|
||||
<div class="card border-{{ p.pos|pos_to_label }}">
|
||||
<div class="card-header bg-{{ p.pos|pos_to_label }}">
|
||||
<div><b>Comment</b> ({{ p.comment_time|date:"Y-m-d" }}{% if not p.for_current_revision %} for -{{ p.get_dochistory.rev }}{% endif %})
|
||||
<div class="card {{ p.pos|pos_to_border_format }}">
|
||||
<div class="card-header {{ p.pos|pos_to_label_format }}">
|
||||
<div>
|
||||
<b>Comment</b> ({{ p.comment_time|date:"Y-m-d" }}
|
||||
{% if not p.for_current_revision %}for -{{ p.get_dochistory.rev }}{% endif %}
|
||||
)
|
||||
{% if p.send_email %}
|
||||
<span class="bi bi-envelope float-end" title="Email requested to be sent for this comment"></span>
|
||||
<span class="bi bi-envelope-check float-end"
|
||||
title="Email requested to be sent for this comment"></span>
|
||||
{% elif p.any_email_sent == True %}
|
||||
<span class="bi bi-envelope float-end" title="Email requested to be sent for earlier comment"></span>
|
||||
<span class="bi bi-envelope-plus float-end"
|
||||
title="Email requested to be sent for earlier comment"></span>
|
||||
{% elif p.any_email_sent == False %}
|
||||
<span class="bi bi-chat-o float-end" title="No email send requests for this comment"></span>
|
||||
<span class="bi bi-envelope-dash float-end"
|
||||
title="No email send requests for this comment"></span>
|
||||
{% else %}
|
||||
<div class="float-end small italic" title="No ballot position send log available">No email<br/>send info</div>
|
||||
<span class="bi bi-envelope-exclamation float-end"
|
||||
title="No ballot position send log available"></span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body"><pre class="ballot pasted">{{ p.comment|linkify }}</pre></div>
|
||||
<div class="card-body">
|
||||
<pre class="ballot pasted">{{ p.comment|linkify }}</pre>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% for n, positions in position_groups %}
|
||||
{% for p in positions %}
|
||||
{% if p.is_old_pos %}
|
||||
<h4 class="anchor-target" id="{{ doc.name|slugify }}_{{ p.balloter.plain_name|slugify }}">
|
||||
<h5 id="{{ doc.name|slugify }}_{{ p.balloter.plain_name|slugify }}">
|
||||
<span class="text-muted">({{ p.balloter.plain_name }}; former steering group member)</span>
|
||||
<span class="float-end">
|
||||
{% if p.old_positions %}<span class="text-muted small">(was {{ p.old_positions|join:", " }})</span>{% endif %}
|
||||
<span class="badge bg-{{ p.pos|pos_to_label }}">{{p.pos}}</span>
|
||||
<span class="badge {{ p.pos|pos_to_label_format }}">{{ p.pos }}</span>
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
<a href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot.pk %}?balloter={{ p.balloter.pk }}" title="Click to edit the position of {{ p.balloter.plain_name }}" class="btn btn-primary btn-sm">Edit</a>
|
||||
<a href="{% url "ietf.doc.views_ballot.edit_position" name=doc.name ballot_id=ballot.pk %}?balloter={{ p.balloter.pk }}"
|
||||
title="Click to edit the position of {{ p.balloter.plain_name }}"
|
||||
class="btn btn-primary btn-sm">
|
||||
Edit
|
||||
</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
</h4>
|
||||
<div class="card border-{{ p.pos|pos_to_label }}">
|
||||
<div class="card-header bg-{{ p.pos|pos_to_label }}">
|
||||
<div><b>{{ p.pos.name }} </b>
|
||||
</h5>
|
||||
<div class="card {{ p.pos|pos_to_border_format }}">
|
||||
<div class="card-header {{ p.pos|pos_to_label_format }}">
|
||||
<div>
|
||||
<b>{{ p.pos.name }} </b>
|
||||
{% if p.pos.blocking and p.discuss %}
|
||||
<b>[Treat as non-blocking comment]</b> ({{ p.discuss_time|date:"Y-m-d" }}{% if not p.for_current_revision %} for -{{ p.get_dochistory.rev }}{% endif %})
|
||||
<b>[Treat as non-blocking comment]</b> ({{ p.discuss_time|date:"Y-m-d" }}
|
||||
{% if not p.for_current_revision %}for -{{ p.get_dochistory.rev }}{% endif %}
|
||||
)
|
||||
{% else %}
|
||||
({{ p.comment_time|date:"Y-m-d" }}{% if not p.for_current_revision %} for -{{ p.get_dochistory.rev }}{% endif %})
|
||||
({{ p.comment_time|date:"Y-m-d" }}
|
||||
{% if not p.for_current_revision %}for -{{ p.get_dochistory.rev }}{% endif %}
|
||||
)
|
||||
{% endif %}
|
||||
{% if p.send_email %}
|
||||
<span class="bi bi-envelope float-end" title="Email requested to be sent for this ballot position"></span>
|
||||
<span class="bi bi-envelope float-end"
|
||||
title="Email requested to be sent for this ballot position"></span>
|
||||
{% elif p.any_email_sent == True %}
|
||||
<span class="bi bi-envelope float-end" title="Email requested to be sent for earlier ballot position"></span>
|
||||
<span class="bi bi-envelope float-end"
|
||||
title="Email requested to be sent for earlier ballot position"></span>
|
||||
{% elif p.any_email_sent == False %}
|
||||
<span class="bi bi-chat-o float-end" title="No email send requests for this ballot position"></span>
|
||||
<span class="bi bi-chat-o float-end"
|
||||
title="No email send requests for this ballot position"></span>
|
||||
{% else %}
|
||||
<div class="float-end small italic" title="No ballot position send log available">No email<br/>send info</div>
|
||||
<div class="float-end small italic"
|
||||
title="No ballot position send log available">
|
||||
No email
|
||||
<br />
|
||||
send info
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% if p.pos.blocking and p.discuss %}
|
||||
<div class="card-body"><pre class="ballot pasted">{{ p.discuss|linkify }}</pre></div>
|
||||
<div class="card-body">
|
||||
<pre class="ballot pasted">{{ p.discuss|linkify }}</pre>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="card-body"><pre class="ballot pasted">{{ p.comment|linkify }}</pre></div>
|
||||
<div class="card-body">
|
||||
<pre class="ballot pasted">{{ p.comment|linkify }}</pre>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,44 +1,30 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2021, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load static %}
|
||||
{% load ietf_filters %}
|
||||
{% load person_filters %}
|
||||
|
||||
{% block title %}{{ doc.title }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
{{ top|safe }}
|
||||
|
||||
{% include "doc/revisions_list.html" %}
|
||||
<div id="timeline"></div>
|
||||
|
||||
<table class="table table-sm">
|
||||
<thead id="message-row">
|
||||
<tr>
|
||||
{% if doc.rev != latest_rev %}
|
||||
<th colspan="4" class="alert-warning">The information below is for an older version of this BOF request</th>
|
||||
{% else %}
|
||||
<th colspan="4"></th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody class="meta">
|
||||
|
||||
{% if doc.rev != latest_rev %}
|
||||
<div class="alert alert-warning">The information below is for an older version of this BOF request.</div>
|
||||
{% endif %}
|
||||
<table class="table table-sm table-borderless">
|
||||
<tbody class="meta border-top">
|
||||
<tr>
|
||||
<th>Document</th>
|
||||
<th>Type</th>
|
||||
<td class="edit"></td>
|
||||
<td>
|
||||
{{doc.get_state.slug|capfirst}} BOF request
|
||||
{% if snapshot %}
|
||||
<span class="badge bg-warning">Snapshot</span>
|
||||
{% endif %}
|
||||
{{ doc.get_state.slug|capfirst }} BOF request
|
||||
{% if snapshot %}<span class="badge bg-warning">Snapshot</span>{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Title</th>
|
||||
|
@ -49,19 +35,19 @@
|
|||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ doc.title }}</td>
|
||||
<th>{{ doc.title }}</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Last updated</th>
|
||||
<td class="edit"></td>
|
||||
<td>{{ doc.time|date:"Y-m-d" }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th><a href="{% url 'ietf.doc.views_help.state_help' type='bofreq' %}">State</a></th>
|
||||
<th>
|
||||
<a href="{% url 'ietf.doc.views_help.state_help' type='bofreq' %}">State</a>
|
||||
</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and can_manage %}
|
||||
{% doc_edit_button 'ietf.doc.views_bofreq.change_state' name=doc.name %}
|
||||
|
@ -75,10 +61,9 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="editors">
|
||||
<td></td>
|
||||
<th>Editor{{editors|pluralize}}</th>
|
||||
<th>Editor{{ editors|pluralize }}</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot %}
|
||||
{% if editor_can_manage or can_manage %}
|
||||
|
@ -88,11 +73,11 @@
|
|||
</td>
|
||||
<td>
|
||||
{% for editor in editors %}
|
||||
{% person_link editor %}{% if not forloop.last %}, {% endif %}
|
||||
{% person_link editor %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="responsible">
|
||||
<td></td>
|
||||
<th>Responsible Leadership</th>
|
||||
|
@ -105,11 +90,11 @@
|
|||
</td>
|
||||
<td>
|
||||
{% for leader in responsible %}
|
||||
{% person_link leader %}{% if not forloop.last %}, {% endif %}
|
||||
{% person_link leader %}
|
||||
{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{% with doc.docextresource_set.all as resources %}
|
||||
{% if resources or editor_can_manage or can_manage %}
|
||||
<tr>
|
||||
|
@ -117,32 +102,34 @@
|
|||
<th>Additional Resources</th>
|
||||
<td class="edit">
|
||||
{% if editor_can_manage or can_manage %}
|
||||
<a class="btn btn-primary btn-sm" href="{% url 'ietf.doc.views_draft.edit_doc_extresources' name=doc.name %}">Edit</a>
|
||||
<a class="btn btn-primary btn-sm"
|
||||
href="{% url 'ietf.doc.views_draft.edit_doc_extresources' name=doc.name %}">Edit</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if resources %}
|
||||
<table class="col-md-12 col-sm-12 col-xs-12">
|
||||
<tbody>
|
||||
{% for resource in resources|dictsort:"display_name" %}
|
||||
{% if resource.name.type.slug == 'url' or resource.name.type.slug == 'email' %}
|
||||
<tr><td> - <a href="{{ resource.value }}" title="{{resource.name.name}}">{% firstof resource.display_name resource.name.name %}</a></td></tr>
|
||||
{# Maybe make how a resource displays itself a method on the class so templates aren't doing this switching #}
|
||||
{% else %}
|
||||
<tr><td> - <span title="{{resource.name.name}}">{% firstof resource.display_name resource.name.name %}: {{resource.value}}</span></td></tr>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% for resource in resources|dictsort:"display_name" %}
|
||||
{% if resource.name.type.slug == 'url' or resource.name.type.slug == 'email' %}
|
||||
<a href="{{ resource.value }}" title="{{ resource.name.name }}">
|
||||
{% firstof resource.display_name resource.name.name %}
|
||||
</a>
|
||||
<br>
|
||||
{# Maybe make how a resource displays itself a method on the class so templates aren't doing this switching #}
|
||||
{% else %}
|
||||
<span title="{{ resource.name.name }}">{% firstof resource.display_name resource.name.name %}: {{ resource.value }}</span>
|
||||
<br>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Send notices to</th>
|
||||
<th>
|
||||
Send notices to
|
||||
</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot %}
|
||||
{% if can_manage %}
|
||||
|
@ -154,26 +141,30 @@
|
|||
{{ doc.notify|default:"(None)" }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% if not snapshot %}
|
||||
{% if editor_can_manage or can_manage %}
|
||||
<p id="change-request"><a class="btn btn-primary" href="{% url 'ietf.doc.views_bofreq.submit' name=doc.name %}">Change BOF request text</a></p>
|
||||
<p id="change-request">
|
||||
<a class="btn btn-primary"
|
||||
href="{% url 'ietf.doc.views_bofreq.submit' name=doc.name %}">
|
||||
Change BOF request text
|
||||
</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<div class="card ">
|
||||
<div class="card-header">{{doc.name}}-{{doc.rev}}</div>
|
||||
<div class="card-header">
|
||||
{{ doc.name }}-{{ doc.rev }}
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{{ content|sanitize|safe }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static 'ietf/js/d3.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/document_timeline.js' %}"></script>
|
||||
{% endblock %}
|
||||
<script src="{% static 'ietf/js/d3.js' %}">
|
||||
</script>
|
||||
<script src="{% static 'ietf/js/document_timeline.js' %}">
|
||||
</script>
|
||||
{% endblock %}
|
|
@ -1,47 +1,52 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load static %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% load person_filters %}
|
||||
{% block pagehead %}
|
||||
<link rel="alternate" type="application/atom+xml" href="/feed/group-changes/{{ group.acronym }}/">
|
||||
<link rel="alternate"
|
||||
type="application/atom+xml"
|
||||
href="/feed/group-changes/{{ group.acronym }}/">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ doc.title }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
{{ top|safe }}
|
||||
|
||||
{% include "doc/revisions_list.html" %}
|
||||
<div id="timeline"></div>
|
||||
|
||||
<table class="table table-sm">
|
||||
<thead id="message-row">
|
||||
<tr>
|
||||
{% if doc.rev|charter_major_rev != latest_rev|charter_major_rev %}
|
||||
<th colspan="4" class="alert-warning">The information below is for an older {% if doc.rev|charter_minor_rev %}proposed{% else %}approved{% endif %} charter</th>
|
||||
{% else %}
|
||||
{% if doc.rev != latest_rev %}
|
||||
{% if doc.rev|charter_minor_rev %}
|
||||
<th colspan="4" class="alert-warning">The information below is for an older version of the current proposed rechartering effort</th>
|
||||
{% else %}
|
||||
<th colspan="4" class="alert-info">The information below is for the currently approved charter, but newer proposed charter text exists</th>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if doc.rev|charter_minor_rev and doc.rev|charter_major_rev != '00' %}
|
||||
<th colspan="4" class="alert-info">The information below is for a proposed recharter. The current approved charter is version {{ doc.rev|charter_major_rev }}</th>
|
||||
{% else %}
|
||||
<th colspan="4"></th>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody class="meta">
|
||||
|
||||
{% if doc.rev|charter_major_rev != latest_rev|charter_major_rev %}
|
||||
<div class="alert alert-warning">
|
||||
The information below is for an older
|
||||
{% if doc.rev|charter_minor_rev %}
|
||||
proposed
|
||||
{% else %}
|
||||
approved
|
||||
{% endif %}
|
||||
charter
|
||||
</div>
|
||||
{% else %}
|
||||
{% if doc.rev != latest_rev %}
|
||||
{% if doc.rev|charter_minor_rev %}
|
||||
<div class="alert alert-warning">
|
||||
The information below is for an older version of the current proposed rechartering effort
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="alert alert-info">
|
||||
The information below is for the currently approved charter, but newer proposed charter text exists
|
||||
</div>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if doc.rev|charter_minor_rev and doc.rev|charter_major_rev != '00' %}
|
||||
<div class="alert alert-info">
|
||||
The information below is for a proposed recharter. The current approved charter is version {{ doc.rev|charter_major_rev }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<table class="table table-sm table-borderless">
|
||||
<tbody class="meta border-top">
|
||||
<tr>
|
||||
<th>Document</th>
|
||||
<th>
|
||||
|
@ -52,16 +57,12 @@
|
|||
{% endif %}
|
||||
</th>
|
||||
<td class="edit"></td>
|
||||
<td>
|
||||
<th>
|
||||
{{ group.name }} {{ group.type.name }}
|
||||
<a href="{{ group.about_url }}">({{ group.acronym }})</a>
|
||||
|
||||
{% if snapshot %}
|
||||
<span class="badge bg-warning">Snapshot</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
{% if snapshot %}<span class="badge bg-warning">Snapshot</span>{% endif %}
|
||||
</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Title</th>
|
||||
|
@ -72,17 +73,17 @@
|
|||
</td>
|
||||
<td>{{ doc.title }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Last updated</th>
|
||||
<td class="edit"></td>
|
||||
<td>{{ doc.time|date:"Y-m-d" }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th><a href="{% url 'ietf.doc.views_help.state_help' type='charter' %}">State</a></th>
|
||||
<th>
|
||||
<a href="{% url 'ietf.doc.views_help.state_help' type='charter' %}">State</a>
|
||||
</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and can_manage %}
|
||||
{% doc_edit_button 'ietf.doc.views_charter.change_state' name=doc.name %}
|
||||
|
@ -94,19 +95,12 @@
|
|||
{% else %}
|
||||
No document state
|
||||
{% endif %}
|
||||
|
||||
{% if chartering == "initial" %}
|
||||
<span class="badge bg-info">Initial chartering</span>
|
||||
{% endif %}
|
||||
{% if chartering == "rechartering" %}
|
||||
<span class="badge bg-info">Rechartering</span>
|
||||
{% endif %}
|
||||
{% if chartering == "initial" %}<span class="badge bg-info">Initial chartering</span>{% endif %}
|
||||
{% if chartering == "rechartering" %}<span class="badge bg-info">Rechartering</span>{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
|
||||
<tbody class="meta">
|
||||
<tbody class="meta border-top">
|
||||
<tr>
|
||||
<th>{{ group.type.name }}</th>
|
||||
<th>State</th>
|
||||
|
@ -114,35 +108,40 @@
|
|||
<td>{{ group.state.name }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
<tbody class="meta">
|
||||
<tbody class="meta border-top">
|
||||
{% if group.type_id != "rg" %}
|
||||
<tr>
|
||||
<th>IESG</th>
|
||||
<th>Responsible AD</th>
|
||||
<td></td>
|
||||
<td>
|
||||
{{ group.ad_role.person.plain_name|default:"(None)" }}
|
||||
</td>
|
||||
<td>
|
||||
{% person_link group.ad_role.person %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Charter Edit AD</th>
|
||||
<th>
|
||||
</th>
|
||||
<th>
|
||||
Charter Edit AD
|
||||
</th>
|
||||
<td class="edit">
|
||||
{% if can_manage %}
|
||||
{% doc_edit_button 'ietf.doc.views_charter.edit_ad' name=doc.name %}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.ad|default:"(None)" }}
|
||||
{% person_link doc.ad %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
{% if not snapshot and chartering %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Telechat date</th>
|
||||
<td>
|
||||
</td>
|
||||
<th>
|
||||
Telechat date
|
||||
</th>
|
||||
<td class="edit">
|
||||
{% if can_manage %}
|
||||
{% doc_edit_button 'ietf.doc.views_doc.telechat_date;charter' name=doc.name %}
|
||||
|
@ -154,17 +153,19 @@
|
|||
{% else %}
|
||||
On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat
|
||||
{% endif %}
|
||||
|
||||
{% if ballot_summary %}
|
||||
<br><i>{{ ballot_summary }}</i>
|
||||
<br>
|
||||
<i>{{ ballot_summary }}</i>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Send notices to</th>
|
||||
<td>
|
||||
</td>
|
||||
<th>
|
||||
Send notices to
|
||||
</th>
|
||||
<td class="edit">
|
||||
{% if can_manage %}
|
||||
{% doc_edit_button 'ietf.doc.views_doc.edit_notify;charter' name=doc.name %}
|
||||
|
@ -174,69 +175,85 @@
|
|||
{{ doc.notify|default:"(None)" }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p class="buttonlist">
|
||||
{% if not snapshot and can_manage %}
|
||||
{% if chartering %}
|
||||
{% url 'ietf.doc.views_charter.change_state' name=doc.name option='abandon' as abandon_url %}
|
||||
{% if abandon_url %}
|
||||
<a class="btn btn-danger" href="{{ abandon_url }}">Abandon chartering</a>
|
||||
<a class="btn btn-danger" href="{{ abandon_url }}">
|
||||
Abandon chartering
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if user|has_role:"Secretariat" %}
|
||||
{% url 'ietf.doc.views_charter.approve' name=doc.name as approve_url %}
|
||||
{% if approve_url %}
|
||||
<a class="btn btn-primary" href="{{ approve_url }}">Approve charter</a>
|
||||
<a class="btn btn-primary" href="{{ approve_url }}">
|
||||
Approve charter
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% else %}
|
||||
|
||||
{% if group.state_id == "proposed" or group.state_id == "bof" %}
|
||||
{% url 'ietf.doc.views_charter.submit' name=doc.name option='initcharter' as start_url %}
|
||||
{% if start_url %}
|
||||
<a class="btn btn-primary" href="{{ start_url }}">Start chartering</a>
|
||||
<a class="btn btn-primary" href="{{ start_url }}">
|
||||
Start chartering
|
||||
</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% url 'ietf.doc.views_charter.submit' name=doc.name option='recharter' as recharter_url %}
|
||||
{% if recharter_url %}
|
||||
<a class="btn btn-primary" href="{{ recharter_url }}">Recharter</a>
|
||||
<a class="btn btn-primary" href="{{ recharter_url }}">
|
||||
Recharter
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
<h2>Charter<br><small class="text-muted">{{ doc.canonical_name }}-{{ doc.rev }}</small></h2>
|
||||
|
||||
<h2 class="my-3">
|
||||
Charter
|
||||
<br>
|
||||
<small class="text-muted">{{ doc.canonical_name }}-{{ doc.rev }}</small>
|
||||
</h2>
|
||||
{% if not snapshot and can_manage and chartering and group.state_id != "conclude" %}
|
||||
<p><a class="btn btn-primary" href="{% url 'ietf.doc.views_charter.submit' name=doc.name %}">Change charter text</a></p>
|
||||
<p>
|
||||
<a class="btn btn-primary"
|
||||
href="{% url 'ietf.doc.views_charter.submit' name=doc.name %}">
|
||||
Change charter text
|
||||
</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% if doc.rev != "" %}
|
||||
{# this content is already wrapped in 'pre' #}
|
||||
{{ content|sanitize|maybewordwrap|safe }}
|
||||
{% endif %}
|
||||
|
||||
{% if not snapshot and chartering %}
|
||||
<h2>Proposed milestones</h2>
|
||||
<h2 class="my-3">
|
||||
Proposed milestones
|
||||
</h2>
|
||||
{% if can_manage %}
|
||||
<p><a class="btn btn-primary" href="{% url 'ietf.group.milestones.edit_milestones;charter' group_type=doc.group.type_id acronym=doc.group.acronym %}">Edit milestones</a></p>
|
||||
<p>
|
||||
<a class="btn btn-primary"
|
||||
href="{% url 'ietf.group.milestones.edit_milestones;charter' group_type=doc.group.type_id acronym=doc.group.acronym %}">
|
||||
Edit milestones
|
||||
</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% if milestones %}
|
||||
{% include "group/milestones.html" %}
|
||||
{% else %}
|
||||
<p>No milestones for charter found.</p>
|
||||
<p>
|
||||
No milestones for charter found.
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static 'ietf/js/d3.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/document_timeline.js' %}"></script>
|
||||
{% endblock %}
|
||||
<script src="{% static 'ietf/js/d3.js' %}">
|
||||
</script>
|
||||
<script src="{% static 'ietf/js/document_timeline.js' %}">
|
||||
</script>
|
||||
{% endblock %}
|
|
@ -1,30 +1,22 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load static %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% load person_filters %}
|
||||
{% load textfilters %}
|
||||
{% block title %}{{ doc.title }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
{{ top|safe }}
|
||||
|
||||
{% include "doc/revisions_list.html" %}
|
||||
<div id="timeline"></div>
|
||||
|
||||
<table class="table table-sm">
|
||||
<thead id="message-row">
|
||||
<tr>
|
||||
{% if doc.rev != latest_rev %}
|
||||
<th colspan="4" class="alert-warning">The information below is for an old version of the document</th>
|
||||
{% else %}
|
||||
<th colspan="4"></th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody class="meta">
|
||||
{% if doc.rev != latest_rev %}
|
||||
<div class="alert alert-warning">The information below is for an old version of the document</div>
|
||||
{% endif %}
|
||||
<table class="table table-sm table-borderless">
|
||||
<tbody class="meta border-top">
|
||||
<tr>
|
||||
<th>Document</th>
|
||||
<th>
|
||||
|
@ -37,58 +29,63 @@
|
|||
<td class="edit"></td>
|
||||
<td>
|
||||
<a href="{% url "ietf.doc.views_doc.document_main" name=conflictdoc.canonical_name %}">
|
||||
{{ conflictdoc.canonical_name }}{% if conflictdoc.get_state_slug != 'rfc' %}-{{ conflictdoc.rev }}{% endif %}
|
||||
{% if conflictdoc.get_state_slug == 'rfc' %}
|
||||
{{ conflictdoc.canonical_name|upper }}
|
||||
{% else %}
|
||||
{{ conflictdoc.canonical_name }}-{{ conflictdoc.rev }}
|
||||
{% endif %}
|
||||
</a>
|
||||
<span class="badge bg-info">{{conflictdoc.stream}} stream</span>
|
||||
|
||||
{% if snapshot %}
|
||||
<span class="badge bg-warning">Snapshot</span>
|
||||
{% endif %}
|
||||
<span class="badge bg-info">{{ conflictdoc.stream }} stream</span>
|
||||
{% if snapshot %}<span class="badge bg-warning">Snapshot</span>{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Last updated</th>
|
||||
<td class="edit"></td>
|
||||
<td>{{ doc.time|date:"Y-m-d" }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th><a href="{% url 'ietf.doc.views_help.state_help' type='conflict-review' %}">State</a></th>
|
||||
<th>
|
||||
<a href="{% url 'ietf.doc.views_help.state_help' type='conflict-review' %}">State</a>
|
||||
</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" %}
|
||||
<a title="{{ doc.get_state.desc }}" class="btn btn-primary btn-sm float-end" href="{% url 'ietf.doc.views_conflict_review.change_state' name=doc.name %}">Edit</a>
|
||||
<a title="{{ doc.get_state.desc }}"
|
||||
class="btn btn-primary btn-sm float-end"
|
||||
href="{% url 'ietf.doc.views_conflict_review.change_state' name=doc.name %}">
|
||||
Edit
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.get_state.name }}
|
||||
</td>
|
||||
<td>{{ doc.get_state.name }}</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
<tbody class="meta">
|
||||
<tbody class="meta border-top">
|
||||
<tr>
|
||||
<th>IESG</th>
|
||||
<th>Shepherding AD</th>
|
||||
<th>Responsible AD</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
<a class="btn btn-primary btn-sm float-end" href="{% url 'ietf.doc.views_conflict_review.edit_ad' name=doc.name %}">Edit</a>
|
||||
<a class="btn btn-primary btn-sm float-end"
|
||||
href="{% url 'ietf.doc.views_conflict_review.edit_ad' name=doc.name %}">
|
||||
Edit
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{doc.ad}}
|
||||
</td>
|
||||
<td>{% person_link doc.ad %}</td>
|
||||
</tr>
|
||||
|
||||
{% if not snapshot %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Telechat date</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
<a class="btn btn-primary btn-sm float-end" href="{% url 'ietf.doc.views_doc.telechat_date;conflict-review' name=doc.name %}">Edit</a>
|
||||
<a class="btn btn-primary btn-sm float-end"
|
||||
href="{% url 'ietf.doc.views_doc.telechat_date;conflict-review' name=doc.name %}">
|
||||
Edit
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
|
@ -96,50 +93,56 @@
|
|||
(None)
|
||||
{% else %}
|
||||
On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat
|
||||
{% if doc.returning_item %} (returning item){% endif %}
|
||||
{% if doc.returning_item %}(returning item){% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if ballot_summary %}
|
||||
<br><i>{{ ballot_summary }}</i>
|
||||
<br>
|
||||
<i>{{ ballot_summary }}</i>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Send notices to</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
<a class="btn btn-primary btn-sm float-end" href="{% url 'ietf.doc.views_doc.edit_notify;conflict-review' name=doc.name %}">Edit</a>
|
||||
<a class="btn btn-primary btn-sm float-end"
|
||||
href="{% url 'ietf.doc.views_doc.edit_notify;conflict-review' name=doc.name %}">
|
||||
Edit
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{doc.notify}}
|
||||
</td>
|
||||
<td>{{ doc.notify|linkify }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2>Conflict review<br><small class="text-muted">{{ conflictdoc.name }}-{{ conflictdoc.rev }}</small></h2>
|
||||
<h2 class="mt-3">
|
||||
Conflict review
|
||||
<br>
|
||||
<small class="text-muted">{{ conflictdoc.name }}-{{ conflictdoc.rev }}</small>
|
||||
</h2>
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug != 'apprsent' %}
|
||||
<a class="btn btn-primary" href="{% url 'ietf.doc.views_conflict_review.submit' name=doc.name %}">Change conflict review text</a>
|
||||
<a class="btn btn-primary"
|
||||
href="{% url 'ietf.doc.views_conflict_review.submit' name=doc.name %}">
|
||||
Change conflict review text
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" %}
|
||||
{% if request.user|has_role:"Secretariat" %}
|
||||
{% if doc.get_state_slug == 'appr-reqnopub-pend' or doc.get_state_slug == 'appr-noprob-pend' %}
|
||||
<a class="btn btn-primary" href="{% url 'ietf.doc.views_conflict_review.approve_conflict_review' name=doc.name %}">Approve conflict review</a>
|
||||
<a class="btn btn-primary"
|
||||
href="{% url 'ietf.doc.views_conflict_review.approve_conflict_review' name=doc.name %}">
|
||||
Approve conflict review
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if doc.rev %}
|
||||
<pre> {{ content|sanitize|maybewordwrap|safe }}</pre>
|
||||
{% endif %}
|
||||
{% if doc.rev %}<pre> {{ content|sanitize|maybewordwrap|safe }}</pre>{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static 'ietf/js/d3.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/document_timeline.js' %}"></script>
|
||||
{% endblock %}
|
||||
<script src="{% static 'ietf/js/d3.js' %}">
|
||||
</script>
|
||||
<script src="{% static 'ietf/js/document_timeline.js' %}">
|
||||
</script>
|
||||
{% endblock %}
|
File diff suppressed because it is too large
Load diff
|
@ -1,22 +1,18 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load ietf_filters %}
|
||||
{% load static %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Email expansions for {{ doc.name }}-{{ doc.rev }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
{{ top|safe }}
|
||||
|
||||
{% if aliases %}
|
||||
<h2>Email aliases</h2>
|
||||
|
||||
<h2 class="my-3">Email aliases</h2>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -28,17 +24,17 @@
|
|||
{% for alias in aliases %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="mailto:{{ doc.name }}{{ alias.alias_type|default:''}}@{{ietf_domain}}">
|
||||
{{ doc.name }}{{ alias.alias_type|default:''}}@{{ietf_domain}}</a></td>
|
||||
<a href="mailto:{{ doc.name }}{{ alias.alias_type|default:'' }}@{{ ietf_domain }}">
|
||||
{{ doc.name }}{{ alias.alias_type|default:'' }}@{{ ietf_domain }}
|
||||
</a>
|
||||
</td>
|
||||
<td>{{ alias.expansion }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
<h2>Recipient expansions</h2>
|
||||
|
||||
<h2 class="my-3">Recipient expansions</h2>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -50,16 +46,17 @@
|
|||
<tbody>
|
||||
{% for trigger,desc,to,cc in expansions %}
|
||||
<tr>
|
||||
<td><a href="{% url 'ietf.mailtrigger.views.show_triggers' trigger %}"
|
||||
title="{{desc}}">{{trigger}}</a></td>
|
||||
<td> {{to|join:', '}}</td>
|
||||
<td> {{cc|join:', '}}</td>
|
||||
<td>
|
||||
<a href="{% url 'ietf.mailtrigger.views.show_triggers' trigger %}"
|
||||
title="{{ desc }}">{{ trigger }}</a>
|
||||
</td>
|
||||
<td>{{ to|join:', ' }}</td>
|
||||
<td>{{ cc|join:', ' }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
|
@ -1,51 +1,58 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load ietf_filters %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %}History for {{ doc.name }}{% if doc.rev %}-{{ doc.rev }}{% endif %}{% endblock %}
|
||||
|
||||
{% block title %}
|
||||
History for {{ doc.name }}
|
||||
{% if doc.rev %}-{{ doc.rev }}{% endif %}
|
||||
{% endblock %}
|
||||
{% block pagehead %}
|
||||
<link rel="alternate" type="application/atom+xml" href="/feed/document-changes/{{ doc.name }}/" />
|
||||
<link rel="alternate"
|
||||
type="application/atom+xml"
|
||||
href="/feed/document-changes/{{ doc.name }}/"/>
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
{{ top|safe }}
|
||||
|
||||
{% if diff_revisions and diff_revisions|length > 1 or doc.name|rfcbis %}
|
||||
<h2>Revision differences</h2>
|
||||
|
||||
<form class="form-horizontal diff-form" action="{{rfcdiff_base_url}}" method="get" target="_blank">
|
||||
|
||||
<h2 class="my-3">Revision differences</h2>
|
||||
<form class="form-horizontal diff-form"
|
||||
action="{{ rfcdiff_base_url }}"
|
||||
method="get"
|
||||
target="_blank">
|
||||
<div class="row mb-3">
|
||||
<label for="url1" class="col-form-label col-sm-2">From revision</label>
|
||||
<label for="url1" class="col-form-label col-sm-2 fw-bold">From revision</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control" id="url1" name="url1">
|
||||
<select class="form-select" id="url1" name="url1">
|
||||
{% for name, rev, time, url in diff_revisions %}
|
||||
<option value="{{ url }}" {% if diff_revisions|length > 1 and forloop.counter == 2 %} selected="selected" {% endif %}>
|
||||
{{ name }}{% if rev %}-{{ rev }}{% endif %}
|
||||
<option value="{{ url }}"
|
||||
{% if diff_revisions|length > 1 and forloop.counter == 2 %} selected="selected"{% endif %}>
|
||||
{{ name }}
|
||||
{% if rev %}-{{ rev }}{% endif %}
|
||||
({{ time|date:"Y-m-d" }})
|
||||
</option>
|
||||
{% endfor %}
|
||||
{% if doc.name|rfcbis %}
|
||||
<option value="{{ doc.name|rfcbis }}"{% if diff_revisions and diff_revisions|length == 1 %} selected="selected"{% endif %}>
|
||||
<option value="{{ doc.name|rfcbis }}"
|
||||
{% if diff_revisions and diff_revisions|length == 1 %} selected="selected"{% endif %}>
|
||||
{{ doc.name|rfcbis }}
|
||||
</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="url2" class="col-form-label col-sm-2">To revision</label>
|
||||
<label for="url2" class="col-form-label col-sm-2 fw-bold">To revision</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="form-control" id="url2" name="url2">
|
||||
<select class="form-select" id="url2" name="url2">
|
||||
{% for name, rev, time, url in diff_revisions %}
|
||||
<option value="{{ url }}" {% if forloop.counter == 1 %} selected="selected" {% endif %}>
|
||||
{{ name }}{% if rev %}-{{ rev }}{% endif %}
|
||||
<option value="{{ url }}"
|
||||
{% if forloop.counter == 1 %} selected="selected"{% endif %}>
|
||||
{{ name }}
|
||||
{% if rev %}-{{ rev }}{% endif %}
|
||||
({{ time|date:"Y-m-d" }})
|
||||
</option>
|
||||
{% endfor %}
|
||||
|
@ -57,34 +64,51 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label class="col-form-label col-sm-2">Diff format</label>
|
||||
<label class="col-form-label col-sm-2 fw-bold">Diff format</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="btn-group" data-bs-toggle="buttons">
|
||||
<input type="radio" class="btn-check" checked name="difftype" value="--html" id="html">
|
||||
<input type="radio"
|
||||
class="btn-check"
|
||||
checked
|
||||
name="difftype"
|
||||
value="--html"
|
||||
id="html">
|
||||
<label for="html"class="btn btn-outline-primary">Side-by-side</label>
|
||||
<input type="radio" class="btn-check" name="difftype" value="--abdiff" id="abdiff">
|
||||
<input type="radio"
|
||||
class="btn-check"
|
||||
name="difftype"
|
||||
value="--abdiff"
|
||||
id="abdiff">
|
||||
<label for="abdiff"class="btn btn-outline-primary">Before-after</label>
|
||||
<input type="radio" class="btn-check" name="difftype" value="--chbars" id="chbars">
|
||||
<input type="radio"
|
||||
class="btn-check"
|
||||
name="difftype"
|
||||
value="--chbars"
|
||||
id="chbars">
|
||||
<label for="chbars"class="btn btn-outline-primary">Change bars</label>
|
||||
<input type="radio" class="btn-check" name="difftype" value="--hwdiff" id="hwdiff">
|
||||
<input type="radio"
|
||||
class="btn-check"
|
||||
name="difftype"
|
||||
value="--hwdiff"
|
||||
id="hwdiff">
|
||||
<label for="hwdiff"class="btn btn-outline-primary">Wdiff</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary mb-3">Submit</button>
|
||||
<button type="submit" class="btn btn-primary mb-3">Submit</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
<h2>Document history</h2>
|
||||
<h2 class="my-3">Document history</h2>
|
||||
{% if can_add_comment %}
|
||||
<div class="buttonlist">
|
||||
<a class="btn btn-primary" href="{% url 'ietf.doc.views_doc.add_comment' name=doc.name %}"><span class="bi bi-plus"></span> Add comment</a>
|
||||
<a class="btn btn-primary"
|
||||
href="{% url 'ietf.doc.views_doc.add_comment' name=doc.name %}">
|
||||
<span class="bi bi-plus"></span>
|
||||
Add comment
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -94,11 +118,12 @@
|
|||
<th data-sort="action">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for e in events %}
|
||||
<tr class="anchor-target" id="history-{{ e.pk }}">
|
||||
<td class="text-nowrap"><div title="{{ e.time|date:'Y-m-d H:i:s O' }}">{{ e.time|date:"Y-m-d" }}</div></td>
|
||||
<tr id="history-{{ e.pk }}">
|
||||
<td class="text-nowrap">
|
||||
<div title="{{ e.time|date:'Y-m-d H:i:s O' }}">{{ e.time|date:"Y-m-d" }}</div>
|
||||
</td>
|
||||
<td class="text-end">{{ e.rev }}</td>
|
||||
<td>{{ e.by|escape }}</td>
|
||||
<td>{{ e.desc|format_history_text|safe }}</td>
|
||||
|
@ -107,7 +132,11 @@
|
|||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
<script>
|
||||
$(".snippet .show-all").on("click", function () {
|
||||
$(this).parents(".snippet").addClass("visually-hidden").siblings(".full").removeClass("visually-hidden");
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
|
@ -1,16 +1,23 @@
|
|||
{# bs5ok #}
|
||||
{% extends "doc/htmlized_base.html" %}
|
||||
{# Copyright The IETF Trust 2016, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load static %}
|
||||
{% load ietf_filters %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="alternate" type="application/atom+xml" title="Document changes" href="/feed/document-changes/{{ doc.name }}/">
|
||||
<meta name="description" content="{{ doc.title }} {% if doc.get_state_slug == "rfc" %}(RFC {{ rfc_number }}{% if published %}, {{ published.time|date:"F Y" }}{% endif %}{% if obsoleted_by %}; obsoleted by {{ obsoleted_by|join:", " }}{% endif %}){% else %}(Internet-Draft, {{ doc.time|date:"Y" }}){% endif %}">
|
||||
<link rel="alternate"
|
||||
type="application/atom+xml"
|
||||
title="Document changes"
|
||||
href="/feed/document-changes/{{ doc.name }}/">
|
||||
<meta name="description"
|
||||
content="{{ doc.title }}, {% if doc.get_state_slug == "rfc" %}(RFC {{ rfc_number }}{% if published %}, {{ published.time|date:"F Y" }}{% endif %}{% if obsoleted_by %}; obsoleted by {{ obsoleted_by|join:"
|
||||
{% endif %}
|
||||
{% else %}
|
||||
Internet-Draft,
|
||||
{{ doc.time|date:"Y" }}
|
||||
{% endif %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
|
||||
.bgwhite { background-color: white; }
|
||||
.bgred { background-color: #F44; }
|
||||
.bggrey { background-color: #666; }
|
||||
|
@ -21,11 +28,8 @@
|
|||
.bgblue { background-color: #66F; }
|
||||
.bgcyan { background-color: #4DD; }
|
||||
.bggreen { background-color: #4F4; }
|
||||
|
||||
.draftcontent { margin-top:0px !important;}
|
||||
|
||||
.draftcontent { margin-top:1em;}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}
|
||||
{% if doc.get_state_slug == "rfc" %}
|
||||
{{ doc.canonical_name }}
|
||||
|
@ -33,58 +37,47 @@
|
|||
{{ doc.name }}-{{ doc.rev }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block bodyAttrs %}style="padding-top: 0;"{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
|
||||
<div class="rfcmarkup">
|
||||
<div class="noprint" style="height: 6px;">
|
||||
<div class="noprint" style="height: .5em;">
|
||||
<div onmouseover="this.style.cursor='pointer';"
|
||||
onclick="showLegend();"
|
||||
onmouseout="hideLegend()"
|
||||
style="height: 6px; min-height: 6px; width: 96ex; position: absolute; margin-top:0; "
|
||||
class="meta-info {{doccolor}}"
|
||||
title="Click for colour legend." > </div>
|
||||
onclick="showLegend();"
|
||||
onmouseout="hideLegend()"
|
||||
style="height: .5em; min-height: .5em; width: 96ex; "
|
||||
class="meta-info {{ doccolor }}"
|
||||
title="Click for color legend.">
|
||||
</div>
|
||||
<div id="legend"
|
||||
class="meta-info noprint pre legend"
|
||||
style="position:absolute; top: 4px; left: 4ex; visibility:hidden; background-color: white; padding: 4px 9px 5px 7px; border: solid #345 1px; "
|
||||
onmouseover="showLegend();"
|
||||
onmouseout="hideLegend();">
|
||||
class="meta-info noprint pre legend"
|
||||
style="position:absolute; top: 4px; left: 4ex; visibility:hidden; background-color: white; padding: 4px 9px 5px 7px; border: solid #345 1px; "
|
||||
onmouseover="showLegend();"
|
||||
onmouseout="hideLegend();">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if doc.meta %}
|
||||
<div class="noprint">
|
||||
<pre class="pre meta-info">{{ doc.supermeta|safe }}
|
||||
|
||||
{{ doc.meta|safe }}</pre>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="draftcontent">
|
||||
{{ doc.htmlized|default:"Generation of htmlized text failed"|safe }}
|
||||
</div>
|
||||
|
||||
<div class="draftcontent">{{ doc.htmlized|default:"Generation of htmlized text failed"|safe }}</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script type="text/javascript"><!--
|
||||
var legend_html = "Colour legend:<br /> \
|
||||
<script>
|
||||
var legend_html = "Color legend:<br> \
|
||||
<table> \
|
||||
<tr><td>Unknown:</td> <td><span class='cplate bgwhite'> </span></td></tr> \
|
||||
<tr><td>Draft:</td> <td><span class='cplate bgred'> </span></td></tr> \
|
||||
<tr><td>Informational:</td> <td><span class='cplate bgorange'> </span></td></tr> \
|
||||
<tr><td>Experimental:</td> <td><span class='cplate bgyellow'> </span></td></tr> \
|
||||
<tr><td>Best Common Practice:</td> <td><span class='cplate bgmagenta'> </span></td></tr> \
|
||||
<tr><td>Proposed Standard:</td> <td><span class='cplate bgblue'> </span></td></tr> \
|
||||
<tr><td>Draft Standard (old designation):</td> <td><span class='cplate bgcyan'> </span></td></tr> \
|
||||
<tr><td>Internet Standard:</td> <td><span class='cplate bggreen'> </span></td></tr> \
|
||||
<tr><td>Historic:</td> <td><span class='cplate bggrey'> </span></td></tr> \
|
||||
<tr><td>Obsolete:</td> <td><span class='cplate bgbrown'> </span></td></tr> \
|
||||
<tr><td>Unknown:</td> <td><span class='bgwhite'> </span></td></tr> \
|
||||
<tr><td>Draft:</td> <td><span class='bgred'> </span></td></tr> \
|
||||
<tr><td>Informational:</td> <td><span class='bgorange'> </span></td></tr> \
|
||||
<tr><td>Experimental:</td> <td><span class='bgyellow'> </span></td></tr> \
|
||||
<tr><td>Best Common Practice:</td> <td><span class='bgmagenta'> </span></td></tr> \
|
||||
<tr><td>Proposed Standard:</td> <td><span class='bgblue'> </span></td></tr> \
|
||||
<tr><td>Draft Standard (old designation):</td> <td><span class='bgcyan'> </span></td></tr> \
|
||||
<tr><td>Internet Standard:</td> <td><span class='bggreen'> </span></td></tr> \
|
||||
<tr><td>Historic:</td> <td><span class='bggrey'> </span></td></tr> \
|
||||
<tr><td>Obsolete:</td> <td><span class='bgbrown'> </span></td></tr> \
|
||||
</table>";
|
||||
function showLegend() {
|
||||
var elem = document.getElementById('legend');
|
||||
|
@ -96,6 +89,5 @@
|
|||
elem.style.visibility='hidden';
|
||||
elem.innerHTML = "";
|
||||
}
|
||||
// -->
|
||||
</script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -104,7 +104,7 @@
|
|||
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Shepherding AD</th>
|
||||
<th>Responsible AD</th>
|
||||
<td class="edit">
|
||||
{% if not snapshot and user|has_role:"Area Director,Secretariat" and doc.get_state_slug not in approved_states %}
|
||||
<a class="btn btn-primary btn-sm float-end" href="{% url 'ietf.doc.views_status_change.edit_ad' name=doc.name %}">Edit</a>
|
||||
|
@ -157,4 +157,4 @@
|
|||
{% block js %}
|
||||
<script src="{% static 'ietf/js/d3.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/document_timeline.js' %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,11 +1,20 @@
|
|||
{# Copyright The IETF Trust 2015, All Rights Reserved #}{% load origin %}{% origin %}
|
||||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{% load ietf_filters %}
|
||||
<h2>{{ doc.title }}<br><small class="text-muted">{{ name }}</small></h2>
|
||||
|
||||
<ul class="nav nav-tabs mb-3">
|
||||
<h1>
|
||||
{{ doc.title }}
|
||||
<br>
|
||||
<small class="text-muted">{{ name }}</small>
|
||||
</h1>
|
||||
<ul class="nav nav-tabs my-3">
|
||||
{% for name, t, url, active, tooltip in tabs %}
|
||||
<li {% if tooltip %}title="{{tooltip}}"{% endif %} class="nav-item">
|
||||
<a class="nav-link {% if t == selected %}active {% endif %}{% if not active %}disabled {% endif %}" {% if active %}href="{{ url }}"{% endif %}>{{ name|capfirst_allcaps }}</a>
|
||||
<li {% if tooltip %}title="{{ tooltip }}"{% endif %} class="nav-item">
|
||||
<a class="nav-link {% if t == selected %}active{% endif %}{% if not active %}disabled{% endif %}"
|
||||
{% if active %}href="{{ url }}"{% endif %}>
|
||||
{{ name|capfirst_allcaps }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
|
@ -4,11 +4,11 @@
|
|||
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}Change shepherding AD for {{ doc.name }}-{{ doc.rev }}{% endblock %}
|
||||
{% block title %}Change responsible AD for {{ doc.name }}-{{ doc.rev }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Change shepherding AD<br><small class="text-muted">{{ doc.name }}-{{ doc.rev }}</small></h1>
|
||||
<h1>Change responsible AD<br><small class="text-muted">{{ doc.name }}-{{ doc.rev }}</small></h1>
|
||||
|
||||
<form enctype="multipart/form-data" method="post">
|
||||
{% csrf_token %}
|
||||
|
@ -22,4 +22,4 @@
|
|||
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -71,7 +71,7 @@
|
|||
{% block js %}
|
||||
<script src="{% static 'ietf/js/sortable.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/select2.js' %}"></script>
|
||||
<script type="text/javascript">
|
||||
<script>
|
||||
var ajax_url = '{% url "ietf.person.ajax.person_email_json" personid="123454321" %}';
|
||||
</script>
|
||||
<script src="{% static 'ietf/js/edit_authors.js' %}"></script>
|
||||
|
|
|
@ -1,14 +1,18 @@
|
|||
<!DOCTYPE html> {% load ietf_filters static %}
|
||||
{# bs5ok #}
|
||||
<!doctype html>
|
||||
{% load ietf_filters static %}
|
||||
{# Copyright The IETF Trust 2021, All Rights Reserved #}
|
||||
{% load origin %}{% origin %}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>{% block title %}No title{% endblock %}</title>
|
||||
<title>
|
||||
{% block title %}No title{% endblock %}
|
||||
</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<style>
|
||||
|
||||
@media only screen
|
||||
and (min-width: 992px)
|
||||
and (max-width: 1199px) {
|
||||
|
@ -33,13 +37,13 @@
|
|||
div.content { width: 96ex; margin: 0 auto; }
|
||||
}
|
||||
@media only screen
|
||||
and (min-device-width : 375px)
|
||||
and (max-device-width : 667px) {
|
||||
and (min-width : 375px)
|
||||
and (max-width : 667px) {
|
||||
body { font-size: 9.5pt; }
|
||||
div.content { width: 96ex; margin: 0; }
|
||||
}
|
||||
@media only screen
|
||||
and (min-device-width: 1200px) {
|
||||
and (min-width: 1200px) {
|
||||
body { font-size: 10pt; margin: 0 4em; }
|
||||
div.content { width: 96ex; margin: 0; }
|
||||
}
|
||||
|
@ -95,6 +99,7 @@
|
|||
}
|
||||
.meta-info {
|
||||
background-color: #EEE;
|
||||
width: 96ex;
|
||||
}
|
||||
.top {
|
||||
border-top: 7px solid #EEE;
|
||||
|
@ -121,30 +126,24 @@
|
|||
|
||||
{% block morecss %}{% endblock %}
|
||||
</style>
|
||||
|
||||
{% block pagehead %}{% endblock %}
|
||||
|
||||
{% if server_mode and server_mode == "production" %}
|
||||
<link rel="shortcut icon" href="{% static 'ietf/images/ietf-icon-blue3.png' %}">
|
||||
<link rel="shortcut icon"
|
||||
href="{% static 'ietf/images/ietf-icon-blue3.png' %}">
|
||||
{% else %}
|
||||
<link rel="shortcut icon" href="{% static 'ietf/images/ietf-icon-red3.png' %}">
|
||||
<link rel="shortcut icon"
|
||||
href="{% static 'ietf/images/ietf-icon-red3.png' %}">
|
||||
{% endif %}
|
||||
<link rel="apple-touch-icon" href="{% static 'ietf/images/apple-touch-icon.png' %}">
|
||||
<link rel="apple-touch-icon"
|
||||
href="{% static 'ietf/images/apple-touch-icon.png' %}">
|
||||
</head>
|
||||
|
||||
<body {% block bodyAttrs %}{%endblock%}>
|
||||
|
||||
<body {% block bodyAttrs %}{% endblock %}>
|
||||
<div class="content" id="content">
|
||||
{% block content %}{{ content|safe }}{% endblock %}
|
||||
{% block content_end %}{% endblock %}
|
||||
</div>
|
||||
|
||||
{% block footer %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block footer %}{% endblock %}
|
||||
</div>
|
||||
|
||||
{% block js %}{% endblock %}
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
|
@ -25,7 +25,7 @@
|
|||
</p>
|
||||
|
||||
{% for group in groups %}
|
||||
<h2 class="anchor-target" id="{{ group.acronym }}">{{ group.name }} ({{ group.acronym }})</h2>
|
||||
<h2 id="{{ group.acronym }}">{{ group.name }} ({{ group.acronym }})</h2>
|
||||
{% for d in group.active_drafts %}
|
||||
<p>
|
||||
<b>{{ d.title }}.</b><br>
|
||||
|
|
|
@ -36,8 +36,8 @@
|
|||
</ul>
|
||||
|
||||
{% for state, heading, count, links in categories %}
|
||||
<h2 class="anchor-target" id="{{ state.slug }}">{{ heading }} ({{ count }})</h2>
|
||||
<h2 id="{{ state.slug }}">{{ heading }} ({{ count }})</h2>
|
||||
<p class="links">{{ links|safe }}</p>
|
||||
{% endfor %}
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -22,7 +22,7 @@
|
|||
</thead>
|
||||
<tbody>
|
||||
{% for rel in relations %}
|
||||
<tr class="anchor-target" id="{{ rel.slug }}">
|
||||
<tr id="{{ rel.slug }}">
|
||||
<th>{{ rel.name }}</th>
|
||||
<td>{{ rel.desc|linebreaksbr }}</td>
|
||||
<td>{{ rel.revname }}</td>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
</thead>
|
||||
<tbody>
|
||||
{% for state in states %}
|
||||
<tr class="anchor-target" id="{{ state.slug|default:"idexists" }}">
|
||||
<tr id="{{ state.slug|default:"idexists" }}">
|
||||
<th>{{ state.name }}</th>
|
||||
<td>{{ state.desc|safe|linebreaksbr }}</td>
|
||||
{% if has_next_states %}
|
||||
|
@ -54,7 +54,7 @@
|
|||
|
||||
<tbody>
|
||||
{% for tag in tags %}
|
||||
<tr class="anchor-target" id="{{ tag.slug }}">
|
||||
<tr id="{{ tag.slug }}">
|
||||
<th>{{ tag.name }}</th>
|
||||
<td>{{ tag.desc|linebreaksbr }}</td>
|
||||
</tr>
|
||||
|
@ -67,4 +67,4 @@
|
|||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,43 +1,42 @@
|
|||
{# Copyright The IETF Trust 2015, All Rights Reserved #}{% load origin %}{% origin %}
|
||||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{% for rfc,choice_slug in form.relations.items %}
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-md-5">
|
||||
<input class="form-control" name="new_relation_row_{{rfc}}" type="text" value="{{rfc}}">
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<select class="form-control" name="statchg_relation_row_{{rfc}}">
|
||||
<option value="" {% if choice_slug == "" %}selected{% endif %}>(None)</option>
|
||||
{% for rel in relation_slugs %}
|
||||
<option value="{{rel.slug}}" {% if choice_slug == rel.slug %}selected{%endif%}>{{rel.name}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button class="btn btn-danger delete">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group mb-3">
|
||||
<input class="form-control"
|
||||
name="new_relation_row_{{ rfc }}"
|
||||
type="text"
|
||||
value="{{ rfc }}">
|
||||
<select class="form-select" name="statchg_relation_row_{{ rfc }}">
|
||||
<option value="" {% if choice_slug == "" %}selected{% endif %}>
|
||||
(None)
|
||||
</option>
|
||||
{% for rel in relation_slugs %}
|
||||
<option value="{{ rel.slug }}"
|
||||
{% if choice_slug == rel.slug %}selected{% endif %}>
|
||||
{{ rel.name }}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<button class="btn btn-danger delete">Delete</button>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<div class="form-group new-relation-row">
|
||||
<div class="row">
|
||||
<div class="col-md-5">
|
||||
<input name="new_relation_row_" type="text" class="form-control" placeholder="rfc...">
|
||||
<p class="form-text">Enter new affected RFC.</p>
|
||||
</div>
|
||||
|
||||
<div class="col-md-5">
|
||||
<select class="form-control" name="statchg_relation_row_">
|
||||
<option value="" {% if choice_slug == "" %}selected{% endif %}>(None)</option>
|
||||
{% for rel in relation_slugs %}
|
||||
<option value="{{rel.slug}}" {% if choice_slug == rel.slug %}selected{%endif%}>{{rel.name}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<p class="form-text">Select proposed new status.</p>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button class="btn btn-danger delete" style="display:none">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group mb-3 new-relation-row">
|
||||
<input name="new_relation_row_"
|
||||
type="text"
|
||||
class="form-control"
|
||||
placeholder="Enter new affected RFC.">
|
||||
<select class="form-select" name="statchg_relation_row_">
|
||||
<option value="" {% if choice_slug == "" %}selected{% endif %}>
|
||||
(Select proposed new status.)
|
||||
</option>
|
||||
{% for rel in relation_slugs %}
|
||||
<option value="{{ rel.slug }}"
|
||||
{% if choice_slug == rel.slug %}selected{% endif %}>
|
||||
{{ rel.name }}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<button class="btn btn-outline-danger delete" disabled>Delete</button>
|
||||
</div>
|
|
@ -1,35 +1,26 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load static %}
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}Edit RFCs affected by status change{% endblock %}
|
||||
|
||||
{% block title %}Edit RFCs affected by status change {{ doc.name }}{% endblock %}
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
|
||||
<h1>Edit RFCs affected by status change</h1>
|
||||
|
||||
<form method="post">
|
||||
<h1>
|
||||
Edit RFCs affected by status change
|
||||
<br>
|
||||
<small class="text-muted">{{ doc.name }}</small>
|
||||
</h1>
|
||||
<form class="mt-3" method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
{% include "doc/status_change/edit_related_rows.html" %}
|
||||
|
||||
{% if form.non_field_errors %}
|
||||
<div class="alert alert-danger">{{ form.non_field_errors }}</div>
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
||||
{% if form.non_field_errors %}<div class="alert alert-danger">{{ form.non_field_errors }}</div>{% endif %}
|
||||
<button type="submit" class="btn btn-primary">Save</button>
|
||||
<a class="btn btn-secondary float-end" href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
|
||||
|
||||
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=doc.name %}">Back</a>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static 'ietf/js/status-change-edit-relations.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% endblock %}
|
|
@ -1,41 +1,31 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load static %}
|
||||
{% load django_bootstrap5 %}
|
||||
|
||||
{% block title %}Begin RFC status change review{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Begin RFC status change review</h1>
|
||||
|
||||
<p><a class="btn btn-primary" href="{% url 'ietf.doc.views_help.state_help' type="status-change" %}">Help on states</a></p>
|
||||
|
||||
<p>
|
||||
<a class="mt-3 btn btn-primary"
|
||||
href="{% url 'ietf.doc.views_help.state_help' type="status-change" %}">
|
||||
Help on states
|
||||
</a>
|
||||
</p>
|
||||
<form class="start-rfc-status-change-review" method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
<div class="row">
|
||||
<label class="col-form-label col-md-5">Affected RFCs</label>
|
||||
</div>
|
||||
<label class="col-form-label">Affected RFCs</label>
|
||||
{% include "doc/status_change/edit_related_rows.html" %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-10">
|
||||
{% bootstrap_form form %}
|
||||
|
||||
|
||||
|
||||
<button type="submit" class="btn btn-primary" name="submit_response" value="Submit">Submit</button>
|
||||
<a class="btn btn-secondary float-end" href="{{ back_url }}">Back</a>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% bootstrap_form form %}
|
||||
<button type="submit"
|
||||
class="btn btn-primary"
|
||||
name="submit_response"
|
||||
value="Submit">Submit</button>
|
||||
<a class="btn btn-secondary float-end" href="{{ back_url }}">Back</a>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="{% static 'ietf/js/status-change-edit-relations.js' %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -22,7 +22,7 @@
|
|||
<a class="btn btn-primary" href="{% url "ietf.group.views.chair_photos" group_type="wg" %}">Chair Photos</a>
|
||||
|
||||
{% for area in areas %}
|
||||
<h2 class="anchor-target" id="{{area.acronym}}">{{ area.name }} ({{ area.acronym }})</h2>
|
||||
<h2 id="{{area.acronym}}">{{ area.name }} ({{ area.acronym }})</h2>
|
||||
|
||||
{% if area.ads_and_pre_ads %}
|
||||
<h3>{{ area.acronym }} Area Director{{ area.ads_and_pre_ads|pluralize }} (AD{{ area.ads_and_pre_ads|pluralize }})</h3>
|
||||
|
@ -60,7 +60,7 @@
|
|||
<tbody>
|
||||
{% for group in area.groups %}
|
||||
<tr>
|
||||
<td><div class="anchor-target" id="{{group.acronym}}"><a href="{% url "ietf.group.views.group_home" group_type=group.type_id acronym=group.acronym %}">{{ group.acronym }}</a></div></td>
|
||||
<td><div id="{{group.acronym}}"><a href="{% url "ietf.group.views.group_home" group_type=group.type_id acronym=group.acronym %}">{{ group.acronym }}</a></div></td>
|
||||
<td>
|
||||
{% if group.ad_role %}
|
||||
<a href="{% url 'ietf.person.views.profile' email_or_name=group.ad_role.person.name %}">{{ group.ad_role.person.plain_name.split.0 }}</a>
|
||||
|
@ -97,4 +97,4 @@
|
|||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -19,7 +19,7 @@
|
|||
{% regroup roles by last_initial as alphabet_blocks %}
|
||||
<div class="col-md-11">
|
||||
{% for letter in alphabet_blocks %}
|
||||
<div class="row anchor-target" id="{{letter.grouper}}">
|
||||
<div class="row" id="{{letter.grouper}}">
|
||||
<div class="card ">
|
||||
<div class="card-header">{{letter.grouper}}</div>
|
||||
<div class="card-body">
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
<p class="alert alert-info">Note that the information on historical groups may be inaccurate.</p>
|
||||
|
||||
{% for label, groups in sections.items %}
|
||||
<div class="anchor-target" id="{{label}}">
|
||||
<div id="{{label}}">
|
||||
<div class="card ">
|
||||
<div class="card-header">{{label}}</div>
|
||||
<div class="card-body">
|
||||
|
@ -55,7 +55,7 @@
|
|||
{% else %}
|
||||
{% regroup groups by parent as grouped_by_areas %}
|
||||
{% for area_grouping in grouped_by_areas %}
|
||||
<div class="anchor-target" id="{{label}}-{{area_grouping.grouper.name|default:'unknown'|slugify}}">
|
||||
<div id="{{label}}-{{area_grouping.grouper.name|default:'unknown'|slugify}}">
|
||||
<div class="card ">
|
||||
<div class="card-header">{{area_grouping.grouper.name|default:'Unknown area'}}</div>
|
||||
<div class="card-body">
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
{% regroup roles by name as role_groups %}
|
||||
<div class="col-md-10">
|
||||
{% for role_name in role_groups %}
|
||||
<div class="row anchor-target" id="{{role_name.grouper|urlencode}}">
|
||||
<div class="row" id="{{role_name.grouper|urlencode}}">
|
||||
<div class="card ">
|
||||
<div class="card-header">{{role_name.grouper}}{{role_name.list|pluralize}}</div>
|
||||
<div class="card-body">
|
||||
|
|
|
@ -1,20 +1,32 @@
|
|||
{# Copyright The IETF Trust 2015, All Rights Reserved #}{% load origin %}{% origin %}
|
||||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
{# assumes group and milestones is in context #}
|
||||
{% regroup milestones by resolved as milestonegroups %}
|
||||
|
||||
{% for milestoneset in milestonegroups %}
|
||||
<h2>
|
||||
<h2 class="my-3">
|
||||
{% if milestoneset.grouper %}
|
||||
{{milestoneset.grouper}} milestones
|
||||
{{ milestoneset.grouper }} milestones
|
||||
{% else %}
|
||||
{% if group.state_id == "proposed" %}Proposed milestones{% else %}Milestones{% endif %}
|
||||
{% if group.state_id == "proposed" %}
|
||||
Proposed milestones
|
||||
{% else %}
|
||||
Milestones
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</h2>
|
||||
<table class="table table-sm table-striped{% if group.uses_milestone_dates %} tablesorter{% endif %}">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% if group.uses_milestone_dates %}Date{% else %}Order{% endif %}</th>
|
||||
<th>Milestone</th>
|
||||
<th data-sort="num">
|
||||
{% if group.uses_milestone_dates %}
|
||||
Date
|
||||
{% else %}
|
||||
Order
|
||||
{% endif %}
|
||||
</th>
|
||||
<th data-sort="milestone">Milestone</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -35,11 +47,12 @@
|
|||
<td>
|
||||
{{ milestone.desc }}
|
||||
{% for d in milestone.docs.all %}
|
||||
<br><a href="{% url "ietf.doc.views_doc.document_main" name=d.name %}">{{ d.name }}</a>
|
||||
<br>
|
||||
<a href="{% url "ietf.doc.views_doc.document_main" name=d.name %}">{{ d.name }}</a>
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
|
@ -14,11 +14,11 @@
|
|||
{% include "iesg/nav.html" with active="agenda" %}
|
||||
{% for num, section in sections %}
|
||||
{% if num|sectionlevel == 1 %}
|
||||
<h2 class="anchor-target" id="sec-{{ num|slugify }}">{{ num }}. {{ section.title|safe }}</h2>
|
||||
<h2 id="sec-{{ num|slugify }}">{{ num }}. {{ section.title|safe }}</h2>
|
||||
{% elif num|sectionlevel == 2 %}
|
||||
<h3 class="anchor-target" id="sec-{{ num|slugify }}">{{ num }} {{ section.title|safe }}</h3>
|
||||
<h3 id="sec-{{ num|slugify }}">{{ num }} {{ section.title|safe }}</h3>
|
||||
{% elif num|sectionlevel == 3 %}
|
||||
<h4 class="anchor-target" id="sec-{{ num|slugify }}">{{ num }} {{ section.title|safe }}</h4>
|
||||
<h4 id="sec-{{ num|slugify }}">{{ num }} {{ section.title|safe }}</h4>
|
||||
{% endif %}
|
||||
{% if num == "1.4" %}<pre>{{ section.text }}</pre>{% endif %}
|
||||
{% if num >= "2" and num < "5" %}
|
||||
|
|
|
@ -57,7 +57,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
|
||||
<p>If NOT APPROVED - The Secretariat will<br>
|
||||
* Place the charter back on the agenda for the next telechat.<br>
|
||||
* OR Wait for instructions from the shepherding AD.</p>
|
||||
* OR Wait for instructions from the responsible AD.</p>
|
||||
{% endif %}
|
||||
|
||||
{% if num|startswith:"4.2.1" %}
|
||||
|
@ -88,5 +88,5 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
|
||||
<p>If NOT APPROVED - The Secretariat will<br>
|
||||
* Place the charter back on the agenda for the next telechat.<br>
|
||||
* OR Wait for instructions from the shepherding AD.</p>
|
||||
{% endif %}
|
||||
* OR Wait for instructions from the responsible AD.</p>
|
||||
{% endif %}
|
|
@ -11,7 +11,7 @@
|
|||
{% include "iesg/nav.html" with active="photos" %}
|
||||
{% regroup roles by group.acronym as alphabet_blocks %}
|
||||
{% for letter in alphabet_blocks %}
|
||||
<div class="anchor-target mb-3">
|
||||
<div class="mb-3">
|
||||
<h2 class="mt-5">
|
||||
<a href="{% url 'ietf.group.views.group_home' acronym=letter.grouper %}">{{ letter.list.0.group.name }}</a>
|
||||
</h2>
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
<tbody>
|
||||
{% for e in events %}
|
||||
<tr class="anchor-target" id="history-{{ e.pk }}">
|
||||
<tr id="history-{{ e.pk }}">
|
||||
<td class="text-nowrap">{{ e.time|date:"Y-m-d" }}</td>
|
||||
<td>{{ e.type }}
|
||||
{% if e.response_due and e.response_past_due %}
|
||||
|
@ -60,4 +60,4 @@
|
|||
|
||||
{% block js %}
|
||||
<script src="{% static "ietf/js/list.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
|
@ -33,15 +33,15 @@
|
|||
{% endif %}
|
||||
</p>
|
||||
|
||||
<h2 class="anchor-target" id="generic">General IPR disclosures</h2>
|
||||
<h2 id="generic">General IPR disclosures</h2>
|
||||
|
||||
{% include "ipr/ipr_table.html" with iprs=generic_disclosures %}
|
||||
|
||||
<h2 class="anchor-target" id="specific">Specific IPR disclosures</h2>
|
||||
<h2 id="specific">Specific IPR disclosures</h2>
|
||||
|
||||
{% include "ipr/ipr_table.html" with iprs=specific_disclosures %}
|
||||
|
||||
<h2 class="anchor-target" id="notify">Specific third-party IPR disclosures</h2>
|
||||
<h2 id="notify">Specific third-party IPR disclosures</h2>
|
||||
|
||||
{% include "ipr/ipr_table.html" with iprs=thirdpty_disclosures %}
|
||||
|
||||
|
|
|
@ -10,5 +10,5 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script type="text/javascript" src="{% static 'ietf/js/ipr-search.js' %}"></script>
|
||||
<script src="{% static 'ietf/js/ipr-search.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue