Hopefully the final check-ins.
- Legacy-Id: 19909
This commit is contained in:
parent
ed30521e14
commit
bbf088e18b
docker/configs
ietf
doc
iesg
meeting
person/templatetags
static
templates
401.html403.html404.html500.html
admin/group/group
api
base.htmlbase
community
list_menu.htmlmanage_list.htmlsubscription.htmltrack_document.htmluntrack_document.htmlview_list.html
cookies
debug.htmldoc
add_comment.htmladd_sessionpresentation.html
ballot
approvaltext.htmlapprove_ballot.htmlapprove_downrefs.htmlballot_issued.htmlclear_ballot.htmldefer_ballot.htmledit_position.htmlirsg_ballot_approve.htmlirsg_ballot_close.htmllastcalltext.htmlrfceditornote.htmlsend_ballot_comment.htmlundefer_ballot.htmlwriteupnotes.html
ballot_popup.htmlbofreq
change_ad.htmlchange_shepherd.htmlchange_shepherd_email.htmlchange_state.htmlchange_title.htmlcharter
action_announcement_text.htmlapprove.htmlballot_issued.htmlballot_writeupnotes.htmlchange_ad.htmlchange_state.htmlchange_title.htmlreview_announcement_text.htmlsubmit.html
conflict_review
document_ballot.htmldocument_ballot_content.htmldocument_bofreq.htmldocument_charter.htmldocument_conflict_review.htmldocument_draft.htmldocument_email.htmldocument_history.htmldocument_html.htmldocument_material.htmldocument_referenced_by.htmldocument_references.htmldocument_review.htmldocument_status_change.htmldocument_top.htmldocument_writeup.htmldownref.htmldownref_add.htmldraft
|
@ -41,7 +41,7 @@ EMAIL_PORT=2025
|
|||
TRAC_WIKI_DIR_PATTERN = "test/wiki/%s"
|
||||
TRAC_SVN_DIR_PATTERN = "test/svn/%s"
|
||||
|
||||
MEDIA_BASE_DIR = 'test'
|
||||
MEDIA_BASE_DIR = 'data/developers'
|
||||
MEDIA_ROOT = MEDIA_BASE_DIR + '/media/'
|
||||
MEDIA_URL = '/media/'
|
||||
|
||||
|
@ -59,4 +59,20 @@ SUBMIT_YANG_RFC_MODEL_DIR = 'data/developers/ietf-ftp/yang/rfcmod/'
|
|||
# Set INTERNAL_IPS for use within Docker. See https://knasmueller.net/fix-djangos-debug-toolbar-not-showing-inside-docker
|
||||
import socket
|
||||
hostname, _, ips = socket.gethostbyname_ex(socket.gethostname())
|
||||
INTERNAL_IPS = [".".join(ip.split(".")[:-1] + ["1"]) for ip in ips]
|
||||
INTERNAL_IPS = [".".join(ip.split(".")[:-1] + ["1"]) for ip in ips]
|
||||
|
||||
# DEV_TEMPLATE_CONTEXT_PROCESSORS = [
|
||||
# 'ietf.context_processors.sql_debug',
|
||||
# ]
|
||||
|
||||
DOCUMENT_PATH_PATTERN = 'data/developers/ietf-ftp/{doc.type_id}/'
|
||||
INTERNET_DRAFT_PATH = 'data/developers/ietf-ftp/internet-drafts/'
|
||||
CHARTER_PATH = 'data/developers/ietf-ftp/charter/'
|
||||
BOFREQ_PATH = 'data/developers/ietf-ftp/bofreq/'
|
||||
CONFLICT_REVIEW_PATH = 'data/developers/ietf-ftp/conflict-reviews/'
|
||||
STATUS_CHANGE_PATH = 'data/developers/ietf-ftp/status-changes/'
|
||||
INTERNET_DRAFT_ARCHIVE_DIR = 'data/developers/ietf-ftp/internet-drafts/'
|
||||
INTERNET_ALL_DRAFTS_ARCHIVE_DIR = 'data/developers/ietf-ftp/internet-drafts/'
|
||||
|
||||
NOMCOM_PUBLIC_KEYS_DIR = 'data/nomcom_keys/public_keys/'
|
||||
SLIDE_STAGING_PATH = 'test/staging/'
|
|
@ -17,15 +17,16 @@ from ietf.doc.models import Document, DocAlias
|
|||
from ietf.doc.utils import uppercase_std_abbreviated_name
|
||||
from ietf.utils.fields import SearchableField
|
||||
|
||||
def select2_id_doc_name(objs):
|
||||
def select2_id_doc_name(model, objs):
|
||||
return [{
|
||||
"id": o.pk,
|
||||
"url": o.get_absolute_url() if model == Document else o.document.get_absolute_url(),
|
||||
"text": escape(uppercase_std_abbreviated_name(o.name)),
|
||||
} for o in objs] if objs else []
|
||||
|
||||
|
||||
def select2_id_doc_name_json(objs):
|
||||
return json.dumps(select2_id_doc_name(objs))
|
||||
def select2_id_doc_name_json(model, objs):
|
||||
return json.dumps(select2_id_doc_name(model, objs))
|
||||
|
||||
|
||||
class SearchableDocumentsField(SearchableField):
|
||||
|
@ -55,7 +56,7 @@ class SearchableDocumentsField(SearchableField):
|
|||
|
||||
def make_select2_data(self, model_instances):
|
||||
"""Get select2 data items"""
|
||||
return select2_id_doc_name(model_instances)
|
||||
return select2_id_doc_name(self.model, model_instances)
|
||||
|
||||
def ajax_url(self):
|
||||
"""Get the URL for AJAX searches"""
|
||||
|
|
|
@ -226,13 +226,14 @@ def urlize_ietf_docs(string, autoescape=None):
|
|||
"""
|
||||
if autoescape and not isinstance(string, SafeData):
|
||||
string = escape(string)
|
||||
string = re.sub(r"(?<!>)(RFC\s*?)0{0,3}(\d+)", "<a href=\"/doc/rfc\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
|
||||
string = re.sub(r"(?<!>)(BCP\s*?)0{0,3}(\d+)", "<a href=\"/doc/bcp\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
|
||||
string = re.sub(r"(?<!>)(STD\s*?)0{0,3}(\d+)", "<a href=\"/doc/std\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
|
||||
string = re.sub(r"(?<!>)(FYI\s*?)0{0,3}(\d+)", "<a href=\"/doc/fyi\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
|
||||
string = re.sub(r"(?<!>)(draft-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
|
||||
string = re.sub(r"(?<!>)(conflict-review-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
|
||||
string = re.sub(r"(?<!>)(status-change-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
|
||||
string = re.sub(r"(RFC\s*?)0{0,3}(\d+)", "<a href=\"/doc/rfc\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
|
||||
string = re.sub(r"(BCP\s*?)0{0,3}(\d+)", "<a href=\"/doc/bcp\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
|
||||
string = re.sub(r"(STD\s*?)0{0,3}(\d+)", "<a href=\"/doc/std\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
|
||||
string = re.sub(r"(FYI\s*?)0{0,3}(\d+)", "<a href=\"/doc/fyi\\2/\">\\1\\2</a>", string, flags=re.IGNORECASE)
|
||||
string = re.sub(r"(draft-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
|
||||
string = re.sub(r"(conflict-review-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
|
||||
string = re.sub(r"(status-change-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
|
||||
string = re.sub(r"(charter-[-0-9a-zA-Z._+]+)", "<a href=\"/doc/\\1/\">\\1</a>", string, flags=re.IGNORECASE)
|
||||
return mark_safe(string)
|
||||
urlize_ietf_docs = stringfilter(urlize_ietf_docs)
|
||||
|
||||
|
@ -240,9 +241,15 @@ urlize_ietf_docs = stringfilter(urlize_ietf_docs)
|
|||
def urlize_related_source_list(related, autoescape=None):
|
||||
"""Convert a list of DocumentRelations into list of links using the source document's canonical name"""
|
||||
links = []
|
||||
names = set()
|
||||
titles = set()
|
||||
for rel in related:
|
||||
name=rel.source.canonical_name()
|
||||
title = rel.source.title
|
||||
if name in names and title in titles:
|
||||
continue
|
||||
names.add(name)
|
||||
titles.add(title)
|
||||
url = urlreverse('ietf.doc.views_doc.document_main', kwargs=dict(name=name))
|
||||
if autoescape:
|
||||
name = escape(name)
|
||||
|
@ -409,7 +416,9 @@ def ad_area(user):
|
|||
def format_history_text(text, trunc_words=25):
|
||||
"""Run history text through some cleaning and add ellipsis if it's too long."""
|
||||
full = mark_safe(text)
|
||||
full = urlize_ietf_docs(full)
|
||||
if "</a>" not in full:
|
||||
full = urlize_ietf_docs(full)
|
||||
full = bleach.linkify(full, parse_email=True)
|
||||
|
||||
return format_snippet(full, trunc_words)
|
||||
|
||||
|
|
|
@ -2384,7 +2384,7 @@ class FieldTests(TestCase):
|
|||
self.assertCountEqual(decoded_ids, [str(doc.id) for doc in docs])
|
||||
for doc in docs:
|
||||
self.assertEqual(
|
||||
dict(id=doc.pk, selected=True, text=escape(uppercase_std_abbreviated_name(doc.name))),
|
||||
dict(id=doc.pk, selected=True, url=doc.get_absolute_url(), text=escape(uppercase_std_abbreviated_name(doc.name))),
|
||||
decoded[str(doc.pk)],
|
||||
)
|
||||
|
||||
|
|
|
@ -191,7 +191,8 @@ This test section has some text.
|
|||
self.client.login(username=username,password=username+'+password')
|
||||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code,200)
|
||||
unescaped = unescape(unicontent(r).encode('utf-8').decode('unicode-escape'))
|
||||
# Yes, unescape is needed twice, for names like "O'Connor"
|
||||
unescaped = unescape(unescape(unicontent(r).encode('utf-8').decode('unicode-escape')))
|
||||
for editor in previous_editors:
|
||||
self.assertIn(editor.name,unescaped)
|
||||
new_editors = set(previous_editors)
|
||||
|
@ -231,7 +232,8 @@ This test section has some text.
|
|||
self.client.login(username=username,password=username+'+password')
|
||||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code,200)
|
||||
unescaped = unescape(unicontent(r).encode('utf-8').decode('unicode-escape'))
|
||||
# Yes, unescape is needed twice, for names like "O'Connor"
|
||||
unescaped = unescape(unescape(unicontent(r).encode('utf-8').decode('unicode-escape')))
|
||||
for responsible in previous_responsible:
|
||||
self.assertIn(responsible.name, unescaped)
|
||||
new_responsible = set(previous_responsible)
|
||||
|
|
|
@ -33,9 +33,9 @@ class EditAuthorsTests(IetfSeleniumTestCase):
|
|||
person_span = form_elt.find_element(By.CLASS_NAME, 'select2-selection')
|
||||
self.scroll_to_element(person_span)
|
||||
person_span.click()
|
||||
input = self.driver.find_element(By.CLASS_NAME, 'select2-search__field')
|
||||
input = self.driver.find_element(By.CSS_SELECTOR, '.select2-search__field[aria-controls*=author]')
|
||||
input.send_keys(name)
|
||||
result_selector = 'ul.select2-results__options > li.select2-results__option--selectable'
|
||||
result_selector = 'ul.select2-results__options[id*=author] > li.select2-results__option--selectable'
|
||||
self.wait.until(
|
||||
expected_conditions.text_to_be_present_in_element(
|
||||
(By.CSS_SELECTOR, result_selector),
|
||||
|
@ -94,9 +94,9 @@ class EditAuthorsTests(IetfSeleniumTestCase):
|
|||
# get the "add author" button so we can add blank author forms
|
||||
add_author_button = self.driver.find_element(By.ID, 'add-author-button')
|
||||
for index, auth in enumerate(authors):
|
||||
self.driver.execute_script("arguments[0].scrollIntoView();", add_author_button) # FIXME-LARS: no idea why this fails:
|
||||
self.driver.execute_script("arguments[0].scrollIntoView();", add_author_button) # FIXME: no idea why this fails:
|
||||
# self.scroll_to_element(add_author_button) # Can only click if it's in view!
|
||||
self.driver.execute_script("arguments[0].click();", add_author_button) # FIXME-LARS: no idea why this fails:
|
||||
self.driver.execute_script("arguments[0].click();", add_author_button) # FIXME: no idea why this fails:
|
||||
# add_author_button.click() # Create a new form. Automatically scrolls to it.
|
||||
author_forms = authors_list.find_elements(By.CLASS_NAME, 'author-panel')
|
||||
authors_added = index + 1
|
||||
|
@ -119,7 +119,7 @@ class EditAuthorsTests(IetfSeleniumTestCase):
|
|||
self.driver.find_element(By.ID, 'id_basis').send_keys('change testing')
|
||||
# Now click the 'submit' button and check that the update was accepted.
|
||||
submit_button = self.driver.find_element(By.CSS_SELECTOR, 'button[type="submit"]')
|
||||
self.driver.execute_script("arguments[0].click();", submit_button) # FIXME-LARS: no idea why this fails:
|
||||
self.driver.execute_script("arguments[0].click();", submit_button) # FIXME: no idea why this fails:
|
||||
# self.scroll_to_element(submit_button)
|
||||
# submit_button.click()
|
||||
# Wait for redirect to the document_main view
|
||||
|
|
|
@ -583,4 +583,4 @@ def ajax_select2_search_docs(request, model_name, doc_type):
|
|||
|
||||
objs = qs.distinct().order_by("name")[:20]
|
||||
|
||||
return HttpResponse(select2_id_doc_name_json(objs), content_type='application/json')
|
||||
return HttpResponse(select2_id_doc_name_json(model, objs), content_type='application/json')
|
|
@ -26,8 +26,7 @@ def get_agenda_date(date=None):
|
|||
return datetime.date.today()
|
||||
else:
|
||||
try:
|
||||
# FIXME: .active()
|
||||
return TelechatDate.objects.all().get(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()).date
|
||||
return TelechatDate.objects.active().get(date=datetime.datetime.strptime(date, "%Y-%m-%d").date()).date
|
||||
except (ValueError, TelechatDate.DoesNotExist):
|
||||
raise Http404
|
||||
|
||||
|
@ -221,5 +220,4 @@ def agenda_data(date=None):
|
|||
fill_in_agenda_docs(date, sections)
|
||||
fill_in_agenda_management_issues(date, sections)
|
||||
|
||||
return { 'date': date.isoformat(), 'sections': sections }
|
||||
|
||||
return { 'date': date.isoformat(), 'sections': sections }
|
|
@ -266,7 +266,7 @@ class EditMeetingScheduleTests(IetfSeleniumTestCase):
|
|||
|
||||
# hide timeslots
|
||||
modal_open = self.driver.find_element(By.CSS_SELECTOR, "#timeslot-toggle-modal-open")
|
||||
self.driver.execute_script("arguments[0].click();", modal_open) # FIXME-LARS: not working:
|
||||
self.driver.execute_script("arguments[0].click();", modal_open) # FIXME: not working:
|
||||
# modal_open.click()
|
||||
|
||||
self.assertTrue(self.driver.find_element(By.CSS_SELECTOR, "#timeslot-group-toggles-modal").is_displayed())
|
||||
|
@ -589,7 +589,7 @@ class EditMeetingScheduleTests(IetfSeleniumTestCase):
|
|||
# option to swap. If we used the first or last day, a fencepost error in
|
||||
# disabling options by date might be hidden.
|
||||
clicked_index = 1
|
||||
self.driver.execute_script("arguments[0].click();", future_swap_ts_buttons[clicked_index]) # FIXME-LARS: not working:
|
||||
self.driver.execute_script("arguments[0].click();", future_swap_ts_buttons[clicked_index]) # FIXME: not working:
|
||||
# future_swap_ts_buttons[clicked_index].click()
|
||||
try:
|
||||
modal = wait.until(
|
||||
|
@ -1520,7 +1520,7 @@ class AgendaTests(IetfSeleniumTestCase):
|
|||
),
|
||||
'Modal open button not found or not clickable',
|
||||
)
|
||||
# FIXME-LARS: no idea why we need js instead of the following:
|
||||
# FIXME: no idea why we need js instead of the following:
|
||||
# self.scroll_to_element(open_modal_button)
|
||||
# open_modal_button.click()
|
||||
self.driver.execute_script("arguments[0].click();", open_modal_button)
|
||||
|
@ -1761,7 +1761,7 @@ class AgendaTests(IetfSeleniumTestCase):
|
|||
farfut_button = self.driver.find_element(By.CSS_SELECTOR, 'button[data-filter-item="farfut"]')
|
||||
break_checkbox = self.driver.find_element(By.CSS_SELECTOR, 'input[type="checkbox"][name="selected-sessions"][data-filter-item="secretariat-sessb"]')
|
||||
registration_checkbox = self.driver.find_element(By.CSS_SELECTOR, 'input[type="checkbox"][name="selected-sessions"][data-filter-item="secretariat-sessa"]')
|
||||
self.driver.execute_script("arguments[0].click();", mars_sessa_checkbox) # select mars session; FIXME: no idea why a simple mars_sessa_checkbox.click() doesn't work
|
||||
self.driver.execute_script("arguments[0].click();", mars_sessa_checkbox) # select mars session; FIXME: no idea why a simple mars_sessa_checkbox.click() doesn't work
|
||||
|
||||
try:
|
||||
wait.until(
|
||||
|
|
|
@ -4280,8 +4280,8 @@ class InterimTests(TestCase):
|
|||
self.assertContains(r, 'IETF-%02d'%int(ietf.meeting.number))
|
||||
q = PyQuery(r.content)
|
||||
#id="-%s" % interim.group.acronym
|
||||
#self.assertIn('CANCELLED', q('[id*="'+id+'"]').text())
|
||||
self.assertIn('CANCELLED', q('tr>td>a>span').text())
|
||||
#self.assertIn('Cancelled', q('[id*="'+id+'"]').text())
|
||||
self.assertIn('Cancelled', q('tr>td>a>span').text())
|
||||
|
||||
def do_upcoming_test(self, querystring=None, create_meeting=True):
|
||||
if create_meeting:
|
||||
|
@ -4304,7 +4304,7 @@ class InterimTests(TestCase):
|
|||
self.assertContains(r, 'IETF 72')
|
||||
# cancelled session
|
||||
q = PyQuery(r.content)
|
||||
self.assertIn('CANCELLED', q('tr>td.text-end>span').text())
|
||||
self.assertIn('Cancelled', q('tr>td.text-end>span').text())
|
||||
|
||||
# test_upcoming_filters_ignored removed - we _don't_ want to ignore filters now, and the test passed because it wasn't testing the filtering anyhow (which requires testing the js).
|
||||
|
||||
|
|
|
@ -4,55 +4,83 @@ import datetime
|
|||
|
||||
from django import template
|
||||
|
||||
import debug # pyflakes:ignore
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
from ietf.nomcom.utils import is_eligible
|
||||
from ietf.nomcom.utils import is_eligible
|
||||
from ietf.person.models import Alias
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.filter
|
||||
def is_nomcom_eligible(person, date=datetime.date.today()):
|
||||
return is_eligible(person=person,date=date)
|
||||
return is_eligible(person=person, date=date)
|
||||
|
||||
|
||||
@register.filter
|
||||
def person_by_name(name):
|
||||
"Look up a person record from name"
|
||||
if not isinstance(name, (type(b''), type(u''))):
|
||||
if not isinstance(name, (type(b""), type(""))):
|
||||
return None
|
||||
alias = Alias.objects.filter(name=name).first()
|
||||
return alias.person if alias else None
|
||||
|
||||
|
||||
# CLEANUP: There are several hundred Person objects with no Alias object,
|
||||
# violating the expectiations of the code. The check for the existance of an
|
||||
# violating the expectations of the code. The check for the existence of an
|
||||
# alias object below matching the person's name avoids presenting a link that
|
||||
# we know will 404. When the database is corrected and we can expect that the
|
||||
# Alias for the person's name to always be there, we can remove this extra
|
||||
# database query (or leave it as a safeguard until it becomes a performance
|
||||
# issue.)
|
||||
|
||||
@register.inclusion_tag('person/person_link.html')
|
||||
|
||||
|
||||
@register.inclusion_tag("person/person_link.html")
|
||||
def person_link(person, **kwargs):
|
||||
title = kwargs.get('title', '')
|
||||
cls = kwargs.get('class', '')
|
||||
with_email = kwargs.get('with_email', True)
|
||||
nowrap = kwargs.get('nowrap', True)
|
||||
title = kwargs.get("title", "")
|
||||
cls = kwargs.get("class", "")
|
||||
with_email = kwargs.get("with_email", True)
|
||||
nowrap = kwargs.get("nowrap", True)
|
||||
if person:
|
||||
name = person.name if person.alias_set.filter(name=person.name).exists() else ''
|
||||
plain_name = person.plain_name()
|
||||
name = (
|
||||
person.name
|
||||
if person.alias_set.filter(name=person.name).exists()
|
||||
else plain_name
|
||||
)
|
||||
email = person.email_address()
|
||||
return {'name': name, 'plain_name': plain_name, 'email': email, 'title': title, 'class': cls, 'with_email': with_email, 'nowrap': nowrap}
|
||||
return {
|
||||
"name": name,
|
||||
"plain_name": plain_name,
|
||||
"email": email,
|
||||
"title": title,
|
||||
"class": cls,
|
||||
"with_email": with_email,
|
||||
"nowrap": nowrap,
|
||||
}
|
||||
else:
|
||||
return {}
|
||||
|
||||
|
||||
@register.inclusion_tag('person/person_link.html')
|
||||
@register.inclusion_tag("person/person_link.html")
|
||||
def email_person_link(email, **kwargs):
|
||||
title = kwargs.get('title', '')
|
||||
cls = kwargs.get('class', '')
|
||||
with_email = kwargs.get('with_email', True)
|
||||
nowrap = kwargs.get('nowrap', True)
|
||||
name = email.person.name if email.person.alias_set.filter(name=email.person.name).exists() else ''
|
||||
title = kwargs.get("title", "")
|
||||
cls = kwargs.get("class", "")
|
||||
with_email = kwargs.get("with_email", True)
|
||||
nowrap = kwargs.get("nowrap", True)
|
||||
plain_name = email.person.plain_name()
|
||||
name = (
|
||||
email.person.name
|
||||
if email.person.alias_set.filter(name=email.person.name).exists()
|
||||
else plain_name
|
||||
)
|
||||
email = email.address
|
||||
return {'name': name, 'plain_name': plain_name, 'email': email, 'title': title, 'class': cls, 'with_email': with_email, 'nowrap': nowrap}
|
||||
return {
|
||||
"name": name,
|
||||
"plain_name": plain_name,
|
||||
"email": email,
|
||||
"title": title,
|
||||
"class": cls,
|
||||
"with_email": with_email,
|
||||
"nowrap": nowrap,
|
||||
}
|
|
@ -143,12 +143,12 @@ pre {
|
|||
}
|
||||
|
||||
#timeline .bar text {
|
||||
fill: white;
|
||||
fill: black;
|
||||
dominant-baseline: central;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
$timeline-odd-color: $primary;
|
||||
$timeline-odd-color: $info;
|
||||
$timeline-odd-hover-color: shift-color($timeline-odd-color, $link-shade-percentage) !default;
|
||||
|
||||
#timeline .bar:nth-child(odd) rect {
|
||||
|
@ -160,7 +160,7 @@ $timeline-odd-hover-color: shift-color($timeline-odd-color, $link-shade-percenta
|
|||
fill: $timeline-odd-hover-color;
|
||||
}
|
||||
|
||||
$timeline-even-color: $success;
|
||||
$timeline-even-color: $warning;
|
||||
$timeline-even-hover-color: shift-color($timeline-even-color, $link-shade-percentage) !default;
|
||||
|
||||
#timeline .bar:nth-child(even) rect {
|
||||
|
|
|
@ -75,7 +75,7 @@ $(document)
|
|||
}
|
||||
attachTo.find(".dropdown-menu")
|
||||
.remove();
|
||||
var menu = ['<ul class="dropdown-menu ms-n1">'];
|
||||
var menu = ['<ul class="dropdown-menu ms-n1 mt-n1">'];
|
||||
var groups = data[parentId];
|
||||
var gtype = "";
|
||||
for (var i = 0; i < groups.length; ++i) {
|
||||
|
|
|
@ -97,7 +97,11 @@ setInterval(animate, 50);
|
|||
window.draw_calendar = function () {
|
||||
window.setTimeout(draw_calendar, 1000);
|
||||
|
||||
var width = document.body.clientWidth;
|
||||
var width = $('#mtgheader')
|
||||
.width();
|
||||
var offset = $('#mtgheader')
|
||||
.offset()
|
||||
.left;
|
||||
var height = document.body.clientHeight;
|
||||
|
||||
if (lastheight == height &&
|
||||
|
@ -116,7 +120,7 @@ window.draw_calendar = function () {
|
|||
{
|
||||
var start_time = parseInt(items[i].time.substr(0, 2), 10) * 60 +
|
||||
parseInt(items[i].time.substr(2, 2), 10);
|
||||
var end_time = start_time + (items[i].duration / 60)
|
||||
var end_time = start_time + (items[i].duration / 60);
|
||||
|
||||
if (start_time < day_start) { day_start = start_time; }
|
||||
if (end_time > day_end) { day_end = end_time; }
|
||||
|
@ -128,8 +132,6 @@ window.draw_calendar = function () {
|
|||
var header_offset = $('#daytabs')
|
||||
.outerHeight(true) + $('#mtgheader')
|
||||
.outerHeight(true);
|
||||
console.log($('#mtgheader')
|
||||
.outerHeight(true));
|
||||
|
||||
var num_minutes = day_end - day_start;
|
||||
var minute_height = (height - header_height - header_offset) / num_minutes;
|
||||
|
@ -146,7 +148,7 @@ window.draw_calendar = function () {
|
|||
var e = document.createElement("div");
|
||||
|
||||
e.style.border = "solid";
|
||||
e.style.borderWidth = border;
|
||||
e.style.borderWidth = border + "px";
|
||||
|
||||
e.style.background = "#2647f0";
|
||||
e.style.color = "#fff";
|
||||
|
@ -157,15 +159,15 @@ window.draw_calendar = function () {
|
|||
e.style.overflow = "hidden";
|
||||
e.style.position = "absolute";
|
||||
|
||||
e.style.top = header_offset;
|
||||
e.style.left = timelabel_width + ri * room_width;
|
||||
e.style.width = room_width;
|
||||
e.style.height = header_height;
|
||||
e.style.top = header_offset + "px";
|
||||
e.style.left = (offset + timelabel_width + ri * room_width) + "px";
|
||||
e.style.width = room_width + "px";
|
||||
e.style.height = header_height + "px";
|
||||
|
||||
e.style.margin = 0;
|
||||
e.style.padding = padding;
|
||||
e.style.margin = 0 + "px";
|
||||
e.style.padding = padding + "px";
|
||||
e.style.fontFamily = "sans-serif";
|
||||
e.style.fontSize = header_height * 0.25;
|
||||
e.style.fontSize = (header_height * 0.25) + "px";
|
||||
|
||||
e.style.textAlign = "center";
|
||||
|
||||
|
@ -188,7 +190,7 @@ window.draw_calendar = function () {
|
|||
e = document.createElement("div");
|
||||
|
||||
e.style.border = "solid";
|
||||
e.style.borderWidth = border;
|
||||
e.style.borderWidth = border + "px";
|
||||
|
||||
e.style.color = "#000";
|
||||
e.style.borderColor = "#fff #000";
|
||||
|
@ -197,13 +199,13 @@ window.draw_calendar = function () {
|
|||
e.style.overflow = "hidden";
|
||||
e.style.position = "absolute";
|
||||
|
||||
e.style.top = header_height + header_offset;
|
||||
e.style.left = timelabel_width + ri * room_width;
|
||||
e.style.width = room_width;
|
||||
e.style.height = height - header_height - header_offset;
|
||||
e.style.top = (header_height + header_offset) + "px";
|
||||
e.style.left = (offset + timelabel_width + ri * room_width) + "px";
|
||||
e.style.width = room_width + "px";
|
||||
e.style.height = (height - header_height - header_offset) + "px";
|
||||
|
||||
e.style.margin = 0;
|
||||
e.style.padding = padding;
|
||||
e.style.margin = 0 + "px";
|
||||
e.style.padding = padding + "px";
|
||||
|
||||
document.getElementById("day" + day)
|
||||
.appendChild(e);
|
||||
|
@ -220,28 +222,28 @@ window.draw_calendar = function () {
|
|||
e.style.borderColor = "#f8f8f8";
|
||||
e.style.overflow = "hidden";
|
||||
e.style.position = "absolute";
|
||||
e.style.top = header_height + header_offset + (time - day_start) * minute_height;
|
||||
e.style.left = timelabel_width;
|
||||
e.style.width = width - timelabel_width;
|
||||
e.style.height = 0;
|
||||
e.style.top = (header_height + header_offset + (time - day_start) * minute_height) + "px";
|
||||
e.style.left = (offset + timelabel_width) + "px";
|
||||
e.style.width = (width - timelabel_width) + "px";
|
||||
e.style.height = 0 + "px";
|
||||
e.style.zIndex = "-1";
|
||||
e.style.margin = 0;
|
||||
e.style.padding = padding;
|
||||
e.style.margin = 0 + "px";
|
||||
e.style.padding = padding + "px";
|
||||
document.getElementById("day" + day)
|
||||
.appendChild(e);
|
||||
|
||||
e = document.createElement("div");
|
||||
e.style.overflow = "hidden";
|
||||
e.style.position = "absolute";
|
||||
e.style.top = header_height + header_offset - (header_height * 0.125) + (time - day_start) * minute_height;
|
||||
e.style.left = 0;
|
||||
e.style.width = timelabel_width;
|
||||
e.style.height = header_height * 0.5;
|
||||
e.style.top = (header_height + header_offset - (header_height * 0.125) + (time - day_start) * minute_height) + "px";
|
||||
e.style.left = offset + "px";
|
||||
e.style.width = timelabel_width + "px";
|
||||
e.style.height = (header_height * 0.5) + "px";
|
||||
e.style.zIndex = "-1";
|
||||
e.style.margin = 0;
|
||||
e.style.margin = 0 + "px";
|
||||
e.style.padding = padding;
|
||||
e.style.fontFamily = "sans-serif";
|
||||
e.style.fontSize = header_height * 0.25;
|
||||
e.style.fontSize = (header_height * 0.25) + "px";
|
||||
e.style.textAlign = "right";
|
||||
e.style.color = "#e0e0e0";
|
||||
var label = time / 60 + "00";
|
||||
|
@ -270,13 +272,13 @@ window.draw_calendar = function () {
|
|||
|
||||
var sess_width = room_width / items[i].lanes;
|
||||
var sess_height = ((end_time - start_time) * minute_height);
|
||||
var room_left = timelabel_width + items[i].room_index * room_width;
|
||||
var room_left = offset + timelabel_width + items[i].room_index * room_width;
|
||||
var sess_left = room_left + sess_width * items[i].lane;
|
||||
var sess_top = ((start_time - day_start) * minute_height) + header_height + header_offset;
|
||||
|
||||
e = document.createElement("div");
|
||||
e.style.border = "solid";
|
||||
e.style.borderWidth = border;
|
||||
e.style.borderWidth = border + "px";
|
||||
|
||||
if (fg[items[i].area]) {
|
||||
e.style.background = bg[items[i].area];
|
||||
|
@ -291,12 +293,12 @@ window.draw_calendar = function () {
|
|||
e.style.display = "block";
|
||||
e.style.overflow = "hidden";
|
||||
e.style.position = "absolute";
|
||||
e.style.top = sess_top;
|
||||
e.style.left = sess_left;
|
||||
e.style.width = sess_width;
|
||||
e.style.height = sess_height;
|
||||
e.style.margin = 0;
|
||||
e.style.padding = padding;
|
||||
e.style.top = sess_top + "px";
|
||||
e.style.left = sess_left + "px";
|
||||
e.style.width = sess_width + "px";
|
||||
e.style.height = sess_height + "px";
|
||||
e.style.margin = 0 + "px";
|
||||
e.style.padding = padding + "px";
|
||||
e.style.fontFamily = "sans-serif";
|
||||
e.style.fontSize = "8pt";
|
||||
if (items[i].from_base_schedule)
|
||||
|
@ -357,20 +359,23 @@ function resize(div, t2, l2, w2, h2, to_fit) {
|
|||
}
|
||||
|
||||
function animate() {
|
||||
var offset = $('#mtgheader')
|
||||
.offset()
|
||||
.left;
|
||||
var i;
|
||||
for (i = divlist.length - 1; i >= 0; i--) {
|
||||
var div = divlist[i];
|
||||
if (div.percent < 100) {
|
||||
div.percent += 5;
|
||||
var t1 = parseFloat(div.style.top.replace("px", ""));
|
||||
var l1 = parseFloat(div.style.left.replace("px", ""));
|
||||
var w1 = parseFloat(div.style.width.replace("px", ""));
|
||||
var h1 = parseFloat(div.style.height.replace("px", ""));
|
||||
var t1 = parseFloat(div.style.top.replace("px", "")) + "px";
|
||||
var l1 = offset + parseFloat(div.style.left.replace("px", "")) + "px";
|
||||
var w1 = parseFloat(div.style.width.replace("px", "")) + "px";
|
||||
var h1 = parseFloat(div.style.height.replace("px", "")) + "px";
|
||||
|
||||
div.style.top = wavg(t1, div.t2, div.percent);
|
||||
div.style.left = wavg(l1, div.l2, div.percent);
|
||||
div.style.width = wavg(w1, div.w2, div.percent);
|
||||
div.style.height = wavg(h1, div.h2, div.percent);
|
||||
div.style.top = wavg(t1, div.t2, div.percent) + "px" + "px";
|
||||
div.style.left = offset + wavg(l1, div.l2, div.percent) + "px" + "px";
|
||||
div.style.width = wavg(w1, div.w2, div.percent) + "px" + "px";
|
||||
div.style.height = wavg(h1, div.h2, div.percent) + "px" + "px";
|
||||
|
||||
if (t1 == div.t2 && l1 == div.l2 &&
|
||||
w1 == div.w2 && h1 == div.h2) { div.percent = 100; }
|
||||
|
@ -390,7 +395,7 @@ function animate() {
|
|||
tmp();
|
||||
}
|
||||
}
|
||||
div.style.height = tmp;
|
||||
div.style.height = tmp + "px";
|
||||
} else {
|
||||
divlist.remove(i);
|
||||
if (div.callback) {
|
||||
|
@ -410,14 +415,17 @@ function finish_maximize(e) {
|
|||
}
|
||||
|
||||
e.insertBefore(document.createElement("br"), e.firstChild);
|
||||
var offset = $('#mtgheader')
|
||||
.offset()
|
||||
.left;
|
||||
|
||||
var minimize_func = function (e) { return function () { minimize(e); }; };
|
||||
var img = document.createElement("img");
|
||||
img.src = "{% static 'ietf/images/agenda-weekview/close.png' %}";
|
||||
img.style.cssFloat = "right";
|
||||
img.onclick = minimize_func(e);
|
||||
img.style.cursor = "pointer";
|
||||
e.insertBefore(img, e.firstChild);
|
||||
var i = document.createElement("i");
|
||||
i.classList.add('bi', 'bi-x-lg');
|
||||
i.style.cssFloat = "right";
|
||||
i.onclick = minimize_func(e);
|
||||
i.style.cursor = "pointer";
|
||||
e.insertBefore(i, e.firstChild);
|
||||
|
||||
var h = document.createElement("span");
|
||||
h.appendChild(document.createTextNode(items[e.id].dayname));
|
||||
|
@ -428,24 +436,24 @@ function finish_maximize(e) {
|
|||
var tmp = e.style.height;
|
||||
e.style.removeProperty("height");
|
||||
var used_height = e.clientHeight;
|
||||
e.style.height = tmp;
|
||||
e.style.height = tmp + "px";
|
||||
|
||||
var frame = document.createElement("iframe");
|
||||
frame.setAttribute("src", items[e.id].agenda);
|
||||
|
||||
frame.style.position = "absolute";
|
||||
frame.style.left = 8;
|
||||
frame.style.width = e.clientWidth - 16;
|
||||
frame.style.top = used_height + 8;
|
||||
frame.style.height = e.clientHeight - used_height - 16;
|
||||
frame.style.left = (offset + 8) + "px";
|
||||
frame.style.width = (e.clientWidth - 16) + "px";
|
||||
frame.style.top = (used_height + 8) + "px";
|
||||
frame.style.height = (e.clientHeight - used_height - 16) + "px";
|
||||
|
||||
frame.style.background = "#fff";
|
||||
frame.style.overflow = "auto";
|
||||
frame.id = "agenda";
|
||||
|
||||
frame.style.border = e.style.border;
|
||||
frame.style.borderWidth = border;
|
||||
frame.style.padding = padding;
|
||||
frame.style.borderWidth = border + "px";
|
||||
frame.style.padding = padding + "px";
|
||||
frame.style.borderColor = e.style.borderColor;
|
||||
|
||||
e.appendChild(frame);
|
||||
|
|
|
@ -4,7 +4,7 @@ import select2 from "select2";
|
|||
select2($);
|
||||
|
||||
$.fn.select2.defaults.set("allowClear", true);
|
||||
$.fn.select2.defaults.set("debug", false); // FIXME-LARS: initialize from settings.DEBUG somehow?
|
||||
$.fn.select2.defaults.set("debug", false);
|
||||
$.fn.select2.defaults.set("dropdownCssClass", ":all:");
|
||||
$.fn.select2.defaults.set("minimumInputLength", 2);
|
||||
$.fn.select2.defaults.set("selectionCssClass", ":all:");
|
||||
|
@ -47,13 +47,12 @@ window.setupSelect2Field = function (e) {
|
|||
}
|
||||
} : undefined
|
||||
});
|
||||
|
||||
console.log(e);
|
||||
};
|
||||
|
||||
$(document)
|
||||
.ready(function () {
|
||||
$(".select2-field")
|
||||
.not(".select2-hidden-accessible")
|
||||
.each(function () {
|
||||
if ($(this)
|
||||
.closest(".template")
|
||||
|
|
|
@ -387,12 +387,12 @@ function finish_maximize(e) {
|
|||
|
||||
e.insertBefore(document.createElement("br"), e.firstChild);
|
||||
|
||||
var img = document.createElement("img");
|
||||
img.src = "{% static 'ietf/images/agenda-weekview/close.png' %}";
|
||||
img.style.cssFloat = "right";
|
||||
img.onclick = function () { minimize(e); };
|
||||
img.style.cursor = "pointer";
|
||||
e.insertBefore(img, e.firstChild);
|
||||
var i = document.createElement("i");
|
||||
i.classList.add('bi', 'bi-x-lg');
|
||||
i.style.cssFloat = "right";
|
||||
i.onclick = function () { minimize(e); };
|
||||
i.style.cursor = "pointer";
|
||||
e.insertBefore(i, e.firstChild);
|
||||
|
||||
var h = document.createElement("span");
|
||||
h.appendChild(document.createTextNode(e.item.dayname));
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2012, All Rights Reserved #}
|
||||
{% extends "base.html" %}
|
||||
{% load static %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2007, All Rights Reserved #}
|
||||
{% extends "base.html" %}
|
||||
{% load static %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2007, All Rights Reserved #}
|
||||
{% extends "base.html" %}
|
||||
{% load static %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2007, All Rights Reserved #}
|
||||
{% extends "base.html" %}
|
||||
{% load static %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "admin/change_form.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "admin/change_list.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "admin/base_site.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2007, All Rights Reserved #}
|
||||
{% extends "base.html" %}
|
||||
{% load static %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2007, All Rights Reserved #}
|
||||
{% extends "base.html" %}
|
||||
{% block title %}OpenID Connect Issuer{% endblock %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015-2021, All Rights Reserved #}
|
||||
<!doctype html>
|
||||
{% load ietf_filters static %}
|
||||
|
@ -17,6 +16,7 @@
|
|||
<link href='https://fonts.googleapis.com/css?family=IM+Fell+English+SC|IM+Fell+DW+Pica:400,400italic|Nova+Mono|IM+Fell+English:400,400italic&subset=latin-ext,latin' rel='stylesheet' type='text/css'>
|
||||
{% endcomment %}
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/select2.css' %}">
|
||||
<style>
|
||||
{% block morecss %}{% endblock %}
|
||||
.leftmenu { width: 13em; }
|
||||
|
@ -56,15 +56,13 @@
|
|||
in
|
||||
</a>
|
||||
{% endif %}
|
||||
<form class="navbar-form d-flex d-none d-lg-block" action="/doc/search/">
|
||||
<input class="form-control"
|
||||
<div class="d-flex d-none d-lg-block">
|
||||
<input class="form-control select2-field"
|
||||
id="navbar-doc-search"
|
||||
data-ajax--url="{% url 'ietf.doc.views_search.ajax_select2_search_docs' model_name='document' doc_type='draft' %}"
|
||||
type="text"
|
||||
name="name"
|
||||
placeholder="Document search"
|
||||
required>
|
||||
<input type="hidden" name="activedrafts" value="on">
|
||||
<input type="hidden" name="rfcs" value="on">
|
||||
</form>
|
||||
data-placeholder="Document search">
|
||||
</div>
|
||||
<button class="navbar-toggler"
|
||||
type="button"
|
||||
data-bs-toggle="collapse"
|
||||
|
@ -138,6 +136,13 @@
|
|||
</footer>
|
||||
{% endblock %}
|
||||
</div>
|
||||
{% block js %}{% endblock %}
|
||||
{% block js %}
|
||||
{% endblock %}
|
||||
<script src="{% static 'ietf/js/select2.js' %}"></script>
|
||||
<script>
|
||||
$('#navbar-doc-search').on('select2:select', function (e) {
|
||||
window.location.href = e.params.data.url;
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015-2019, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
<div class="text-end">
|
||||
<label id="list-feeds">Atom feed:</label>
|
||||
<div class="btn-group" role="group" aria-labelledby="list-feeds">
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% extends "base.html" %}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% extends "base.html" %}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load static %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2019, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2019, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2019, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2016, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2016, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2021 All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2021, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2021, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2021, All Rights Reserved #}
|
||||
{% load origin django_bootstrap5 static %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2021, All Rights Reserved #}
|
||||
{% load origin django_bootstrap5 static %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2021, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
@ -55,7 +54,7 @@
|
|||
</td>
|
||||
<td>
|
||||
{% if doc.get_state %}
|
||||
<span title="{{ doc.get_state.desc }}">{{ doc.get_state.name }}</span>
|
||||
<span title="{{ doc.get_state.desc }}" class="{% if doc.get_state.name|slugify == 'approved' %}text-success{% elif doc.get_state.name|slugify == 'declined' %}text-danger{% endif %}">{{ doc.get_state.name }}</span>
|
||||
{% else %}
|
||||
No document state
|
||||
{% endif %}
|
||||
|
@ -136,7 +135,7 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.notify|default:"(None)" }}
|
||||
{{ doc.notify|default:'<span class="text-muted">(None)</span>' }}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
@ -91,7 +90,7 @@
|
|||
</td>
|
||||
<td>
|
||||
{% if doc.get_state %}
|
||||
<span title="{{ doc.get_state.desc }}">{{ doc.get_state.name }}</span>
|
||||
<span title="{{ doc.get_state.desc }}" class="{% if doc.get_state.name|slugify == 'approved' %}text-success{% endif %}">{{ doc.get_state.name }}</span>
|
||||
{% else %}
|
||||
No document state
|
||||
{% endif %}
|
||||
|
@ -105,7 +104,11 @@
|
|||
<th>{{ group.type.name }}</th>
|
||||
<th>State</th>
|
||||
<td class="edit"></td>
|
||||
<td>{{ group.state.name }}</td>
|
||||
<td>
|
||||
<span class="{% if group.state.name|slugify == 'active' %}text-success{% endif %}">
|
||||
{{ group.state.name }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody class="meta border-top">
|
||||
|
@ -149,7 +152,7 @@
|
|||
</td>
|
||||
<td>
|
||||
{% if not telechat %}
|
||||
(None)
|
||||
<span class="text-muted">(None)</span>
|
||||
{% else %}
|
||||
On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat
|
||||
{% endif %}
|
||||
|
@ -172,7 +175,7 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ doc.notify|default:"(None)" }}
|
||||
{{ doc.notify|default:"<span class='text-muted'>(None)</span>" }}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
@ -90,7 +89,7 @@
|
|||
</td>
|
||||
<td>
|
||||
{% if not telechat %}
|
||||
(None)
|
||||
<span class="text-muted">(None)</span>
|
||||
{% else %}
|
||||
On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat
|
||||
{% if doc.returning_item %}(returning item){% endif %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2016-2020, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
@ -44,21 +43,23 @@
|
|||
<td class="edit"></td>
|
||||
<td>
|
||||
{% if doc.get_state_slug == "rfc" and not snapshot %}
|
||||
RFC - {{ doc.std_level }}
|
||||
(
|
||||
<span class="text-success">RFC - {{ doc.std_level }}</span>
|
||||
{% if published %}
|
||||
{{ published.time|date:"F Y" }}
|
||||
({{ published.time|date:"F Y" }})
|
||||
{% else %}
|
||||
publication date unknown
|
||||
(Publication date unknown)
|
||||
{% endif %}
|
||||
{% if has_errata %}
|
||||
;
|
||||
<a href="https://www.rfc-editor.org/errata_search.php?rfc={{ rfc_number }}"
|
||||
rel="nofollow">Errata</a>
|
||||
{% else %}
|
||||
; No errata
|
||||
{% if has_verified_errata %}
|
||||
<a class="badge bg-danger text-decoration-none"
|
||||
href="https://www.rfc-editor.org/errata_search.php?rfc={{ doc.rfc_number }}" title="Click to view errata." rel="nofollow">
|
||||
Errata
|
||||
</a>
|
||||
{% elif has_errata %}
|
||||
<a class="badge bg-warning text-decoration-none"
|
||||
href="https://www.rfc-editor.org/errata_search.php?rfc={{ doc.rfc_number }}" title="Click to view errata." rel="nofollow">
|
||||
Errata
|
||||
</a>
|
||||
{% endif %}
|
||||
)
|
||||
{% if obsoleted_by %}<div>Obsoleted by {{ obsoleted_by|urlize_related_source_list|join:", " }}</div>{% endif %}
|
||||
{% if updated_by %}<div>Updated by {{ updated_by|urlize_related_source_list|join:", " }}</div>{% endif %}
|
||||
{% if obsoletes %}<div>Obsoletes {{ obsoletes|urlize_related_target_list|join:", " }}</div>{% endif %}
|
||||
|
@ -78,7 +79,7 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{{ doc.get_state }} Internet-Draft
|
||||
<span class="{% if doc.get_state_slug == 'active' %}text-success{% elif doc.get_state_slug == 'expired' %}text-danger{% endif %}">{{ doc.get_state }} Internet-Draft</span>
|
||||
{% if submission %}({{ submission|safe }}){% endif %}
|
||||
{% if resurrected_by %}- resurrect requested by {{ resurrected_by }}{% endif %}
|
||||
{% endif %}
|
||||
|
@ -107,7 +108,7 @@
|
|||
<td>
|
||||
{{ doc.time|date:"Y-m-d" }}
|
||||
{% if latest_revision and latest_revision.time.date != doc.time.date %}
|
||||
(latest revision {{ latest_revision.time|date:"Y-m-d" }})
|
||||
<span class="text-muted">(Latest revision {{ latest_revision.time|date:"Y-m-d" }})</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -197,7 +198,7 @@
|
|||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td {% if stream_desc == "(None)" %}class="text-muted"{%endif%} >
|
||||
<td {% if stream_desc == "(None)" %}class="text-muted"{%endif%}>
|
||||
{{ stream_desc }}
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -238,13 +239,13 @@
|
|||
<td>
|
||||
{% if doc.get_state_slug != "active" and doc.get_state_slug != "rfc" %}
|
||||
<div class="float-end badge bg-warning">
|
||||
Expired & archived
|
||||
Expired & archived
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if file_urls %}
|
||||
{% for label, url in file_urls %}
|
||||
<a class="btn btn-primary btn-sm" href="{{ url }}">
|
||||
<i class="bi bi-file-{% if label == "pdf" %}pdf{% elif label == "xml" or label == "htmlized" %}code{% elif label == "bibtex" %}ruled{% elif label == "plain text" %}text{% endif %}">
|
||||
<i class="bi bi-file-{% if label == 'pdf' %}pdf{% elif label == 'xml' or label == 'htmlized' or label == 'html' %}code{% elif label == 'bibtex' %}ruled{% elif label == 'plain text' %}text{% endif %}">
|
||||
</i>
|
||||
{{ label }}
|
||||
</a>
|
||||
|
@ -427,7 +428,9 @@
|
|||
</td>
|
||||
<td>
|
||||
{% if stream_state %}
|
||||
{{ stream_state }}
|
||||
<span class="{% if stream_state|slugify|slice:"6" == 'active' %}text-success{% endif %}">
|
||||
{{ stream_state }}
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="text-muted">
|
||||
(None)
|
||||
|
@ -453,8 +456,9 @@
|
|||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{# PEY: Move this to the IRSG section when built #}
|
||||
{% if due_date %}[Due date: {{ due_date }}]{% endif %}
|
||||
{% if due_date %}
|
||||
<span class="text-muted">(Due date {{ due_date }})</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
{% else %}
|
||||
<th>
|
||||
|
@ -463,7 +467,7 @@
|
|||
<td class="edit">
|
||||
</td>
|
||||
<td>
|
||||
(No stream defined)
|
||||
<span class="text-muted">(No stream defined)</span>
|
||||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
|
@ -575,7 +579,7 @@
|
|||
href="{% url 'ietf.doc.views_doc.document_shepherd_writeup' name=doc.name %}">
|
||||
Show
|
||||
</a>
|
||||
<small class="text-muted">(last changed {{ shepherd_writeup.time|date:"Y-m-d" }})</small>
|
||||
<span class="text-muted">(Last changed {{ shepherd_writeup.time|date:"Y-m-d" }})</span>
|
||||
{% else %}
|
||||
<span class="text-muted">
|
||||
(None)
|
||||
|
@ -640,7 +644,13 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ iesg_state_summary|default:"I-D Exists" }}
|
||||
<span class="{% if iesg_state_summary|slugify == 'expired' %}text-danger{% endif %}">
|
||||
{% if iesg_state_summary|striptags == iesg_state_summary %}
|
||||
{{ iesg_state_summary|default:"I-D Exists"|urlize_ietf_docs }}
|
||||
{% else %}
|
||||
{{ iesg_state_summary|default:"I-D Exists" }}
|
||||
{% endif %}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
{% if doc.action_holders_enabled %}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load ietf_filters %}
|
||||
{% load ietf_filters textfilters %}
|
||||
{% load static %}
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" href="{% static "ietf/css/list.css" %}">
|
||||
|
@ -50,8 +49,8 @@
|
|||
<a href="{% url 'ietf.mailtrigger.views.show_triggers' trigger %}"
|
||||
title="{{ desc }}">{{ trigger }}</a>
|
||||
</td>
|
||||
<td>{{ to|join:', ' }}</td>
|
||||
<td>{{ cc|join:', ' }}</td>
|
||||
<td>{{ to|join:', '|linkify }}</td>
|
||||
<td>{{ cc|join:', '|linkify }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
@ -126,7 +125,7 @@
|
|||
</td>
|
||||
<td class="text-end">{{ e.rev }}</td>
|
||||
<td>{{ e.by|escape }}</td>
|
||||
<td>{{ e.desc|format_history_text|safe }}</td>
|
||||
<td>{{ e.desc|format_history_text }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "doc/htmlized_base.html" %}
|
||||
{# Copyright The IETF Trust 2016, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
@ -95,7 +94,7 @@
|
|||
{% if pres.rev != doc.rev %}(version -{{ pres.rev }}){% endif %}{% if not forloop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
None
|
||||
<span class="text-muted">(None)</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static ietf_filters %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin static ietf_filters %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2016-2019, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
@ -90,7 +89,7 @@
|
|||
</td>
|
||||
<td>
|
||||
{% if not telechat %}
|
||||
(None)
|
||||
<span class="text-muted">(None)</span>
|
||||
{% else %}
|
||||
On agenda of {{ telechat.telechat_date|date:"Y-m-d" }} IESG telechat
|
||||
{% if doc.returning_item %}(returning item){% endif %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2017, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2017, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2019, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
{# bs5ok #}
|
||||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue