test: Validate HTML rendered during tests (#3782)
This commit is contained in:
parent
db254f7a48
commit
3234f1a121
|
@ -4,59 +4,38 @@
|
|||
|
||||
root = true
|
||||
|
||||
# Settings for IETF datatracker
|
||||
# Global settings for IETF datatracker
|
||||
# ---------------------------------------------------------
|
||||
# PEP8 Style
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
# to avoid tripping Henrik's commit hook:
|
||||
trim_trailing_whitespace = false
|
||||
insert_final_newline = false
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
# Specializations below *add to* the above defaults
|
||||
|
||||
# Settings for .github folder
|
||||
# ---------------------------------------------------------
|
||||
# GitHub Markdown Style
|
||||
|
||||
[.github/**]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = false
|
||||
insert_final_newline = true
|
||||
|
||||
# Settings for client-side JS / Vue files
|
||||
# ---------------------------------------------------------
|
||||
# StandardJS Style
|
||||
|
||||
[client/**]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[package.json]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
# Settings for cypress tests
|
||||
# ---------------------------------------------------------
|
||||
# StandardJS Style
|
||||
|
||||
[cypress/**]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -14,6 +14,8 @@
|
|||
*.#*
|
||||
.*.swp
|
||||
.DS_store
|
||||
datatracker.sublime-project
|
||||
datatracker.sublime-workspace
|
||||
# Simulated Subversion default ignores end here
|
||||
/.coverage
|
||||
/.factoryboy_random_state
|
||||
|
|
|
@ -24,7 +24,6 @@ RUN apt-get install -qy \
|
|||
build-essential \
|
||||
curl \
|
||||
docker-ce-cli \
|
||||
default-jdk \
|
||||
enscript \
|
||||
gawk \
|
||||
gcc \
|
||||
|
@ -46,7 +45,6 @@ RUN apt-get install -qy \
|
|||
libxtst6 \
|
||||
libmagic-dev \
|
||||
libmariadb-dev \
|
||||
libtidy-dev \
|
||||
locales \
|
||||
mariadb-client \
|
||||
netcat \
|
||||
|
@ -109,9 +107,6 @@ RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requ
|
|||
# Turn off rsyslog kernel logging (doesn't work in Docker)
|
||||
RUN sed -i '/imklog/s/^/#/' /etc/rsyslog.conf
|
||||
|
||||
# Install the Nu Html Checker (v.Nu)
|
||||
ADD https://github.com/validator/validator/releases/download/latest/vnu.jar /
|
||||
|
||||
# Fetch wait-for utility
|
||||
ADD https://raw.githubusercontent.com/eficode/wait-for/v2.1.3/wait-for /usr/local/bin/
|
||||
RUN chmod +rx /usr/local/bin/wait-for
|
||||
|
|
|
@ -31,7 +31,6 @@ RUN apt-get install -qy \
|
|||
bash \
|
||||
build-essential \
|
||||
curl \
|
||||
default-jdk \
|
||||
docker-ce-cli \
|
||||
enscript \
|
||||
fish \
|
||||
|
@ -56,7 +55,6 @@ RUN apt-get install -qy \
|
|||
libmagic-dev \
|
||||
libmariadb-dev \
|
||||
libmemcached-tools \
|
||||
libtidy-dev \
|
||||
locales \
|
||||
mariadb-client \
|
||||
memcached \
|
||||
|
@ -125,9 +123,6 @@ RUN sed -i '/imklog/s/^/#/' /etc/rsyslog.conf
|
|||
# Colorize the bash shell
|
||||
RUN sed -i 's/#force_color_prompt=/force_color_prompt=/' /root/.bashrc
|
||||
|
||||
# Install the Nu Html Checker (v.Nu)
|
||||
ADD https://github.com/validator/validator/releases/download/latest/vnu.jar /
|
||||
|
||||
ADD https://raw.githubusercontent.com/eficode/wait-for/v2.1.3/wait-for /usr/local/bin/
|
||||
RUN chmod +rx /usr/local/bin/wait-for
|
||||
|
||||
|
|
|
@ -33,8 +33,8 @@
|
|||
|
||||
<h2>Template content</h2>
|
||||
|
||||
<div class = "card">
|
||||
<p class='pasted'>{{ template.content }}</p>
|
||||
<div class="card">
|
||||
<p class="pasted">{{ template.content }}</p>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -109,14 +109,15 @@ def ballot_icon(context, doc):
|
|||
else:
|
||||
typename = "IESG"
|
||||
|
||||
res = ['<a %s href="%s" data-bs-toggle="modal" data-bs-target="#modal-%d" title="%s positions (click to show more)" class="ballot-icon"><table' % (
|
||||
res = ['<a %s href="%s" data-bs-toggle="modal" data-bs-target="#modal-%d" aria-label="%s positions" title="%s positions (click to show more)" class="ballot-icon"><table' % (
|
||||
right_click_string,
|
||||
urlreverse("ietf.doc.views_doc.ballot_popup", kwargs=dict(name=doc.name, ballot_id=ballot.pk)),
|
||||
ballot.pk,
|
||||
typename,
|
||||
typename,)]
|
||||
if my_blocking:
|
||||
res.append(' class="is-blocking" ')
|
||||
res.append('>')
|
||||
res.append('><tbody>')
|
||||
|
||||
res.append("<tr>")
|
||||
|
||||
|
@ -137,7 +138,7 @@ def ballot_icon(context, doc):
|
|||
res.append('<td class="position-empty"></td>')
|
||||
i = i + 1
|
||||
|
||||
res.append("</tr></table></a>")
|
||||
res.append("</tr></tbody></table></a>")
|
||||
res.append('<div id="modal-%d" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true"><div class="modal-dialog modal-dialog-scrollable modal-xl"><div class="modal-content"></div></div></div>' % ballot.pk)
|
||||
|
||||
return mark_safe("".join(res))
|
||||
|
|
|
@ -413,13 +413,13 @@ def format_snippet(text, trunc_words=25):
|
|||
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="visually-hidden full">%s</div>' % (snippet, full))
|
||||
return mark_safe('<div class="snippet">%s<button type="button" aria-label="Expand" 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 mark_safe(full)
|
||||
|
||||
@register.simple_tag
|
||||
def doc_edit_button(url_name, *args, **kwargs):
|
||||
"""Given URL name/args/kwargs, looks up the URL just like "url" tag and returns a properly formatted button for the document material tables."""
|
||||
return mark_safe('<a class="btn btn-primary btn-sm" role="button" href="%s">Edit</a>' % (urlreverse(url_name, args=args, kwargs=kwargs)))
|
||||
return mark_safe('<a class="btn btn-primary btn-sm" type="button" href="%s">Edit</a>' % (urlreverse(url_name, args=args, kwargs=kwargs)))
|
||||
|
||||
@register.filter
|
||||
def textify(text):
|
||||
|
|
|
@ -1595,7 +1595,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'h5[id$="{author_slug}"]').items()
|
||||
for target in q(f'p.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')
|
||||
|
|
|
@ -1196,9 +1196,9 @@ class BallotContentTests(TestCase):
|
|||
)
|
||||
|
||||
def _assertBallotMessage(self, q, balloter, expected):
|
||||
heading = q(f'h5[id$="_{slugify(balloter.plain_name())}"]')
|
||||
heading = q(f'p.h5[id$="_{slugify(balloter.plain_name())}"]')
|
||||
self.assertEqual(len(heading), 1)
|
||||
# <h5/> is followed by a panel with the message of interest, so use next()
|
||||
# <p.h5/> is followed by a panel with the message of interest, so use next()
|
||||
self.assertEqual(
|
||||
len(heading.next().find(
|
||||
f'*[title="{expected}"]'
|
||||
|
@ -1379,4 +1379,4 @@ class BallotContentTests(TestCase):
|
|||
q = PyQuery(content)
|
||||
self._assertBallotMessage(q, balloters[0], 'No email send requests for this discuss')
|
||||
self._assertBallotMessage(q, balloters[1], 'No ballot position send log available')
|
||||
self._assertBallotMessage(q, old_balloter, 'No ballot position send log available')
|
||||
self._assertBallotMessage(q, old_balloter, 'No ballot position send log available')
|
|
@ -106,7 +106,7 @@ class ChangeStateTests(TestCase):
|
|||
self.assertEqual(len(q('form select[name=state]')), 1)
|
||||
|
||||
if next_states:
|
||||
self.assertEqual(len(q('[type=submit][value="%s"]' % next_states[0].name)), 1)
|
||||
self.assertEqual(len(q('[type=submit]:contains("%s")' % next_states[0].name)), 1)
|
||||
|
||||
|
||||
# faulty post
|
||||
|
@ -148,7 +148,7 @@ class ChangeStateTests(TestCase):
|
|||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEqual(len(q('form [type=submit][value="%s"]' % first_state.name)), 1)
|
||||
self.assertEqual(len(q('form [type=submit]:contains("%s")' % first_state.name)), 1)
|
||||
|
||||
def test_pull_from_rfc_queue(self):
|
||||
ad = Person.objects.get(user__username="ad")
|
||||
|
@ -1383,7 +1383,7 @@ class SubmitToIesgTests(TestCase):
|
|||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code,200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEqual(len(q('form input[name="confirm"]')),1)
|
||||
self.assertEqual(len(q('form button[name="confirm"]')),1)
|
||||
|
||||
url = urlreverse('ietf.doc.views_draft.to_iesg', kwargs=dict(name=self.docname))
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@ from ietf.utils.mail import outbox, empty_outbox, parseaddr, on_behalf_of, get_p
|
|||
from ietf.utils.test_utils import login_testing_unauthorized, reload_db_objects
|
||||
from ietf.utils.test_utils import TestCase
|
||||
from ietf.utils.text import strip_prefix, xslugify
|
||||
from django.utils.html import escape
|
||||
|
||||
class ReviewTests(TestCase):
|
||||
def setUp(self):
|
||||
|
@ -175,7 +176,7 @@ class ReviewTests(TestCase):
|
|||
self.assertContains(r, review_req.team.name)
|
||||
try:
|
||||
# FIXME-LARS
|
||||
self.assertContains(r, author.name)
|
||||
self.assertContains(r, escape(author.name))
|
||||
except:
|
||||
print(r.content)
|
||||
self.assertContains(r, author.name)
|
||||
|
|
|
@ -574,7 +574,7 @@ def lastcalltext(request, name):
|
|||
e.save()
|
||||
|
||||
# make sure form has the updated text
|
||||
form = LastCallTextForm(initial=dict(last_call_text=e.text))
|
||||
form = LastCallTextForm(initial=dict(last_call_text=escape(e.text)))
|
||||
|
||||
|
||||
s = doc.get_state("draft-iesg")
|
||||
|
@ -813,7 +813,7 @@ def ballot_approvaltext(request, name):
|
|||
e.save()
|
||||
|
||||
# make sure form has the updated text
|
||||
form = ApprovalTextForm(initial=dict(approval_text=e.text))
|
||||
form = ApprovalTextForm(initial=dict(approval_text=escape(e.text)))
|
||||
|
||||
can_announce = doc.get_state("draft-iesg").order > 19
|
||||
need_intended_status = ""
|
||||
|
|
|
@ -556,8 +556,8 @@ def review_announcement_text(request, name):
|
|||
(existing, existing_new_work) = default_review_text(group, charter, by)
|
||||
existing.save()
|
||||
existing_new_work.save()
|
||||
form = ReviewAnnouncementTextForm(initial=dict(announcement_text=existing.text,
|
||||
new_work_text=existing_new_work.text))
|
||||
form = ReviewAnnouncementTextForm(initial=dict(announcement_text=escape(existing.text),
|
||||
new_work_text=escape(existing_new_work.text)))
|
||||
|
||||
if any(x in request.POST for x in ['send_annc_only','send_nw_only','send_both']) and form.is_valid():
|
||||
if any(x in request.POST for x in ['send_annc_only','send_both']):
|
||||
|
@ -613,7 +613,7 @@ def action_announcement_text(request, name):
|
|||
if "regenerate_text" in request.POST:
|
||||
e = default_action_text(group, charter, by)
|
||||
e.save()
|
||||
form = ActionAnnouncementTextForm(initial=dict(announcement_text=e.text))
|
||||
form = ActionAnnouncementTextForm(initial=dict(announcement_text=escape(e.text)))
|
||||
|
||||
if "send_text" in request.POST and form.is_valid():
|
||||
parsed_msg = send_mail_preformatted(request, form.cleaned_data['announcement_text'])
|
||||
|
|
|
@ -716,7 +716,7 @@ def last_call(request, name):
|
|||
|
||||
if "regenerate_last_call_text" in request.POST:
|
||||
e = generate_last_call_text(request,status_change)
|
||||
form = LastCallTextForm(initial=dict(last_call_text=e.text))
|
||||
form = LastCallTextForm(initial=dict(last_call_text=escape(e.text)))
|
||||
|
||||
return render(request, 'doc/status_change/last_call.html',
|
||||
dict(doc=status_change,
|
||||
|
|
|
@ -1527,7 +1527,7 @@ class DatelessMilestoneTests(TestCase):
|
|||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEqual(q('#switch-date-use-form button').attr('style'), 'display:none;')
|
||||
self.assertTrue(q('#switch-date-use-form button').hasClass('d-none'))
|
||||
|
||||
ms.group.charter.rev='00-00'
|
||||
ms.group.charter.save()
|
||||
|
|
|
@ -744,17 +744,17 @@ def login(request, extra_context=None):
|
|||
logout(request)
|
||||
response = render(request, 'registration/missing_person.html')
|
||||
if require_consent:
|
||||
messages.warning(request, mark_safe("""
|
||||
messages.warning(request, mark_safe('''
|
||||
|
||||
You have personal information associated with your account which is not
|
||||
derived from draft submissions or other ietf work, namely: %s. Please go
|
||||
to your <a href='/accounts/profile'>account profile</a> and review your
|
||||
to your <a href="/accounts/profile">account profile</a> and review your
|
||||
personal information, then scoll to the bottom and check the 'confirm'
|
||||
checkbox and submit the form, in order to to indicate that that the
|
||||
provided personal information may be used and displayed within the IETF
|
||||
datatracker.
|
||||
|
||||
""" % ', '.join(require_consent)))
|
||||
''' % ', '.join(require_consent)))
|
||||
return response
|
||||
|
||||
@login_required
|
||||
|
@ -816,4 +816,4 @@ def apikey_disable(request):
|
|||
messages.error(request, "Key validation failed; key not disabled")
|
||||
else:
|
||||
form = KeyDeleteForm(request.GET)
|
||||
return render(request, 'form.html', {'form':form, 'title':"Disable a personal API key", 'description':'', 'button':'Disable key'})
|
||||
return render(request, 'form.html', {'form':form, 'title':"Disable a personal API key", 'description':'', 'button':'Disable key'})
|
||||
|
|
|
@ -317,7 +317,7 @@ class LiaisonManagementTests(TestCase):
|
|||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEqual(len(q('form input[name=do_action_taken]')), 0)
|
||||
self.assertEqual(len(q('form button[name=do_action_taken]')), 0)
|
||||
|
||||
# log in and get
|
||||
self.client.login(username="secretary", password="secretary+password")
|
||||
|
@ -325,13 +325,13 @@ class LiaisonManagementTests(TestCase):
|
|||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEqual(len(q('form input[name=do_action_taken]')), 1)
|
||||
self.assertEqual(len(q('form button[name=do_action_taken]')), 1)
|
||||
|
||||
# mark action taken
|
||||
r = self.client.post(url, dict(do_action_taken="1"))
|
||||
self.assertEqual(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEqual(len(q('form input[name=do_action_taken]')), 0)
|
||||
self.assertEqual(len(q('form button[name=do_action_taken]')), 0)
|
||||
liaison = LiaisonStatement.objects.get(id=liaison.id)
|
||||
self.assertTrue(liaison.action_taken)
|
||||
|
||||
|
@ -357,7 +357,7 @@ class LiaisonManagementTests(TestCase):
|
|||
self.assertEqual(r.status_code, 200)
|
||||
self.assertContains(r, liaison.title)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEqual(len(q('form input[name=approved]')), 0)
|
||||
self.assertEqual(len(q('form button[name=approved]')), 0)
|
||||
|
||||
# check the detail page / authorized
|
||||
self.client.login(username="ulm-liaiman", password="ulm-liaiman+password")
|
||||
|
@ -368,7 +368,7 @@ class LiaisonManagementTests(TestCase):
|
|||
from ietf.liaisons.utils import can_edit_liaison
|
||||
user = User.objects.get(username='ulm-liaiman')
|
||||
self.assertTrue(can_edit_liaison(user, liaison))
|
||||
self.assertEqual(len(q('form input[name=approved]')), 1)
|
||||
self.assertEqual(len(q('form button[name=approved]')), 1)
|
||||
|
||||
# approve
|
||||
mailbox_before = len(outbox)
|
||||
|
|
|
@ -18,21 +18,21 @@ class ButtonWidget(Widget):
|
|||
super(ButtonWidget, self).__init__(*args, **kwargs)
|
||||
|
||||
def render(self, name, value, **kwargs):
|
||||
html = '<span style="display: none;" class="showAttachsOn">%s</span>' % conditional_escape(self.show_on)
|
||||
html += '<span style="display: none;" class="attachEnabledLabel">%s</span>' % conditional_escape(self.label)
|
||||
html = '<span class="d-none showAttachsOn">%s</span>' % conditional_escape(self.show_on)
|
||||
html += '<span class="d-none attachEnabledLabel">%s</span>' % conditional_escape(self.label)
|
||||
if self.require:
|
||||
for i in self.require:
|
||||
html += '<span style="display: none;" class="attachRequiredField">%s</span>' % conditional_escape(i)
|
||||
html += '<span class="d-none attachRequiredField">%s</span>' % conditional_escape(i)
|
||||
required_str = 'Please fill in %s to attach a new file' % conditional_escape(self.required_label)
|
||||
html += '<span style="display: none;" class="attachDisabledLabel">%s</span>' % conditional_escape(required_str)
|
||||
html += '<input type="button" class="addAttachmentWidget btn btn-primary btn-sm" value="%s">' % conditional_escape(self.label)
|
||||
html += '<span class="d-none attachDisabledLabel">%s</span>' % conditional_escape(required_str)
|
||||
html += '<button type="button" class="addAttachmentWidget btn btn-primary btn-sm">%s</button>' % conditional_escape(self.label)
|
||||
return mark_safe(html)
|
||||
|
||||
|
||||
class ShowAttachmentsWidget(Widget):
|
||||
def render(self, name, value, **kwargs):
|
||||
html = '<div id="id_%s">' % name
|
||||
html += '<span style="display: none;" class="showAttachmentsEmpty form-control widget">No files attached</span>'
|
||||
html += '<span class="d-none showAttachmentsEmpty form-control widget">No files attached</span>'
|
||||
html += '<div class="attachedFiles form-control widget">'
|
||||
if value and isinstance(value, QuerySet):
|
||||
for attachment in value:
|
||||
|
|
|
@ -3001,7 +3001,7 @@ def ajax_get_utc(request):
|
|||
utc_day_offset = (naive_utc_dt.date() - dt.date()).days
|
||||
html = "<span>{utc} UTC</span>".format(utc=utc)
|
||||
if utc_day_offset != 0:
|
||||
html = html + "<span class='day-offset'> {0:+d} Day</span>".format(utc_day_offset)
|
||||
html = html + '<span class="day-offset"> {0:+d} Day</span>'.format(utc_day_offset)
|
||||
context_data = {'timezone': timezone,
|
||||
'time': time,
|
||||
'utc': utc,
|
||||
|
|
|
@ -117,7 +117,7 @@ class SessionForm(forms.Form):
|
|||
self._add_widget_class(constraint_field.widget, 'wg_constraint')
|
||||
|
||||
selector_field = forms.ChoiceField(choices=group_acronym_choices, required=False)
|
||||
selector_field.widget.attrs['data-slug'] = constraintname.slug # used by onChange handler
|
||||
selector_field.widget.attrs['data-slug'] = constraintname.slug # used by onchange handler
|
||||
self._add_widget_class(selector_field.widget, 'wg_constraint_selector')
|
||||
|
||||
cfield_id = 'constraint_{}'.format(constraintname.slug)
|
||||
|
@ -150,7 +150,7 @@ class SessionForm(forms.Form):
|
|||
field_id)
|
||||
)
|
||||
|
||||
self.fields['joint_with_groups_selector'].widget.attrs['onChange'] = "document.form_post.joint_with_groups.value=document.form_post.joint_with_groups.value + ' ' + this.options[this.selectedIndex].value; return 1;"
|
||||
self.fields['joint_with_groups_selector'].widget.attrs['onchange'] = "document.form_post.joint_with_groups.value=document.form_post.joint_with_groups.value + ' ' + this.options[this.selectedIndex].value; return 1;"
|
||||
self.fields["resources"].choices = [(x.pk,x.desc) for x in ResourceAssociation.objects.filter(name__used=True).order_by('name__order') ]
|
||||
|
||||
if self.hidden:
|
||||
|
|
|
@ -33,7 +33,7 @@ Subject: {{ message.subject }}
|
|||
<div class="button-group">
|
||||
<ul id="announcement-button-list">
|
||||
<li><button type="submit" name="submit" value="Send">Send</button></li>
|
||||
<li><button onclick="history.go(-1);return false">Back</button></li>
|
||||
<li><button type="button" onclick="history.go(-1);return false">Back</button></li>
|
||||
<li><button type="submit" name="submit" value="Cancel">Cancel</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
|
|
|
@ -13,18 +13,20 @@
|
|||
|
||||
<form method="post">{% csrf_token %}
|
||||
<table class="new-style full-width amstable" id="announce-table">
|
||||
<tbody>
|
||||
{% if form.non_field_errors %}{{ form.non_field_errors }}{% endif %}
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}{% if field.field.required %}<span class="required"> *</span>{% endif %}</th>
|
||||
<th scope="row">{{ field.label_tag }}{% if field.field.required %}<span class="required"> *</span>{% endif %}</th>
|
||||
<td>{{ field.errors }}{{ field }}{% if field.help_text %}<br>{{ field.help_text }}{% endif %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="button-group">
|
||||
<ul id="announcement-button-list">
|
||||
<li><button type="submit" name="submit" value="Continue">Continue</button></li>
|
||||
<li><button onclick="window.location='../'" value="Cancel">Cancel</button></li>
|
||||
<li><button type="button" onclick="window.location='../'" value="Cancel">Cancel</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
|
||||
|
|
|
@ -17,9 +17,9 @@
|
|||
<table id="areas-list-table" class="full-width">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Acronym</th>
|
||||
<th>Status</th>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">Acronym</th>
|
||||
<th scope="col">Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{% block title %}Areas - People{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}">
|
||||
<script src="{% static 'ietf/js/jquery-ui.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
@ -21,15 +21,15 @@
|
|||
<table class="center">
|
||||
{% for director in directors %}
|
||||
<form action="modify/" method="post">{% csrf_token %}
|
||||
<input type="hidden" name="tag" value="{{ director.person.id }}" />
|
||||
<input type="hidden" name="tag" value="{{ director.person.id }}">
|
||||
<tr>
|
||||
<td id="id-ad-name"><a href="#">{{ director.person.name }}</a></td>
|
||||
<td>{% if director.name.slug == "ad" %}
|
||||
Voting Enabled
|
||||
{% else %}
|
||||
<input type="submit" name="submit" value="Enable Voting" /></td>
|
||||
<button type="submit" name="submit">Enable Voting</button></td>
|
||||
{% endif %}
|
||||
<td><input type="submit" name="submit" value="Retire" /></td>
|
||||
<td><button type="submit" name="submit">Retire</button></td>
|
||||
</tr>
|
||||
</form>
|
||||
{% endfor %}
|
||||
|
@ -40,18 +40,21 @@
|
|||
<p>
|
||||
<form action="." method="post">{% csrf_token %}
|
||||
<table class="center">
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><input type="submit" name="submit" value="Add" /></td>
|
||||
<td><button type="submit" name="submit">Add</button></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div> <!-- iniline-related -->
|
||||
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
<li><button onclick="history.go(-1);return true">Back</button></li>
|
||||
<li><button type="button" onclick="history.go(-1);return true">Back</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
</div> <!-- module -->
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<div class="module">
|
||||
<h2>Area - View</h2>
|
||||
<table class="full-width">
|
||||
|
||||
<tbody>
|
||||
<tr><td>Area Acronym:</td><td>{{ area.acronym }}</td></tr>
|
||||
<tr><td>Area Name:</td><td>{{ area.name }}</td></tr>
|
||||
<tr><td>Status:</td><td>{{ area.state }}</td></tr>
|
||||
|
@ -24,23 +24,26 @@
|
|||
<tr><td>Concluded Date:</td><td>{{ area.concluded_date|date:"Y-m-d" }}</td></tr>
|
||||
<tr><td>Last Modified Date:</td><td>{{ area.time|date:"Y-m-d" }}</td></tr>
|
||||
<tr><td>Comments:</td><td>{{ area.comments}}</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="inline-related">
|
||||
<h2>Directors</h2>
|
||||
<table class="full-width">
|
||||
<tbody>
|
||||
{% for director in directors %}
|
||||
<tr><td><a href="{% url 'ietf.secr.rolodex.views.view' id=director.person.id %}">{{ director.person.name }}</a>{% if director.name.slug == "pre-ad" %} (Incoming){% endif %}</td></tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div> <!-- inline-group -->
|
||||
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
<!-- <li><button onclick="window.location='../../'">Back</button></li> -->
|
||||
<li><button onclick="window.location='edit/'">Edit</button></li>
|
||||
<li><button onclick="window.location='people/'">People</button></li>
|
||||
<li><button onclick="window.location='{% url 'ietf.secr.groups.views.search' %}?primary_area={{ area.id }}'">Groups</button></li>
|
||||
<!-- <li><button type="button" onclick="window.location='../../'">Back</button></li> -->
|
||||
<li><button type="button" onclick="window.location='edit/'">Edit</button></li>
|
||||
<li><button type="button" onclick="window.location='people/'">People</button></li>
|
||||
<li><button type="button" onclick="window.location='{% url 'ietf.secr.groups.views.search' %}?primary_area={{ area.id }}'">Groups</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
</div> <!-- module -->
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
<!doctype html>
|
||||
<!DOCTYPE html>
|
||||
{% load staticfiles %}
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
<link rel="stylesheet" href="{% block stylesheet %}{% static 'secr/css/base.css' %}{% endblock %}" />
|
||||
<link rel="stylesheet" href="{% static 'secr/css/forms.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'secr/css/custom.css' %}" />
|
||||
<link rel="stylesheet" href="{% block stylesheet %}{% static 'secr/css/base.css' %}{% endblock %}">
|
||||
<link rel="stylesheet" href="{% static 'secr/css/forms.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'secr/css/custom.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}">
|
||||
|
||||
{% if not server_mode == "production" %}
|
||||
<link rel="stylesheet" href="{% static 'secr/css/test.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'secr/css/test.css' %}">
|
||||
{% endif %}
|
||||
{% block extrastyle %}{% endblock %}
|
||||
|
||||
|
@ -20,7 +20,7 @@
|
|||
<script src="{% static 'ietf/js/ietf.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
|
||||
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE">{% endblock %}
|
||||
</head>
|
||||
|
||||
<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}">
|
||||
|
@ -41,6 +41,7 @@
|
|||
<!-- Breadcrumbs -->
|
||||
<div class="breadcrumbs">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-start">
|
||||
{% block breadcrumbs %}<a href="/secr/">Home</a>{% endblock %}
|
||||
|
@ -49,6 +50,7 @@
|
|||
{% block instructions %}{% endblock %}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- END Breadcrumbs -->
|
||||
|
@ -65,6 +67,7 @@
|
|||
|
||||
<!-- Content -->
|
||||
<div id="content" class="{% block coltype %}colM{% endblock %}">
|
||||
<!-- [html-validate-disable-block input-missing-label -- FIXME: a lot of broken HTML in secr templates] -->
|
||||
{% block pretitle %}{% endblock %}
|
||||
{% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %}
|
||||
{% block content %}
|
||||
|
@ -72,7 +75,7 @@
|
|||
{{ content }}
|
||||
{% endblock %}
|
||||
{% block sidebar %}{% endblock %}
|
||||
<br class="clear" />
|
||||
<br class="clear">
|
||||
</div>
|
||||
<!-- END Content -->
|
||||
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
<!doctype html>
|
||||
<!DOCTYPE html>
|
||||
{% load staticfiles %}
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}"/>
|
||||
<link rel="stylesheet" href="{% block stylesheet %}{% static 'secr/css/base.css' %}{% endblock %}" />
|
||||
<link rel="stylesheet" href="{% static 'secr/css/forms.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'secr/css/custom.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}">
|
||||
<link rel="stylesheet" href="{% block stylesheet %}{% static 'secr/css/base.css' %}{% endblock %}">
|
||||
<link rel="stylesheet" href="{% static 'secr/css/forms.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'secr/css/custom.css' %}">
|
||||
{% if not server_mode == "production" %}
|
||||
<link rel="stylesheet" href="{% static 'secr/css/test.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'secr/css/test.css' %}">
|
||||
{% endif %}
|
||||
{% block extrastyle %}{% endblock %}
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
|||
<script src="{% static 'ietf/js/ietf.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
|
||||
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE">{% endblock %}
|
||||
</head>
|
||||
|
||||
<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}">
|
||||
|
@ -40,6 +40,7 @@
|
|||
<!-- Breadcrumbs -->
|
||||
<div class="breadcrumbs">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-start">
|
||||
{% block breadcrumbs %}<a href="/secr/">Home</a>{% endblock %}
|
||||
|
@ -48,6 +49,7 @@
|
|||
{% block instructions %}{% endblock %}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- END Breadcrumbs -->
|
||||
|
@ -64,6 +66,7 @@
|
|||
|
||||
<!-- Content -->
|
||||
<div id="content" class="{% block coltype %}colM{% endblock %}">
|
||||
<!-- [html-validate-disable-block input-missing-label -- FIXME: a lot of broken HTML in secr templates] -->
|
||||
{% block pretitle %}{% endblock %}
|
||||
{% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %}
|
||||
{% block content %}
|
||||
|
@ -71,7 +74,7 @@
|
|||
{{ content }}
|
||||
{% endblock %}
|
||||
{% block sidebar %}{% endblock %}
|
||||
<br class="clear" />
|
||||
<br class="clear">
|
||||
</div>
|
||||
<!-- END Content -->
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
{% block branding %}
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-start">
|
||||
<h1 id="site-name">{% if user|has_role:"Secretariat" %} Secretariat Dashboard {% else %} IETF Dashboard {% endif %}</h1>
|
||||
|
@ -16,6 +17,7 @@
|
|||
<span class="login">{% if user|has_role:"Secretariat" %}Secretariat {% endif %}Logged in: <a href="/accounts/profile/">{{ user }}</a> | <a rel="nofollow" href="/accounts/logout/">Log out</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
||||
|
@ -31,7 +33,7 @@
|
|||
|
||||
</div>
|
||||
<div id="footer-logo">
|
||||
<a href="https://www.amsl.com/"><img src="{% static 'secr/images/ams_logo.png' %}" alt="AMS" class="text-end p-3" /></a>
|
||||
<a href="https://www.amsl.com/"><img src="{% static 'secr/images/ams_logo.png' %}" alt="AMS" class="text-end p-3" ></a>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
{% block branding %}
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-start">
|
||||
<h1 id="site-name">{% if user|has_role:"Secretariat" %} Secretariat Dashboard {% else %} WG Chair Dashboard {% endif %}</h1>
|
||||
|
@ -16,6 +17,7 @@
|
|||
<span class="login">{% if user|has_role:"Secretariat" %}Secretariat {% endif %}Logged in: <a href="/accounts/profile/">{{ user }}</a> | <a rel="nofollow" href="/accounts/logout/">Log out</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
||||
|
@ -31,7 +33,7 @@
|
|||
|
||||
</div>
|
||||
<div id="footer-logo">
|
||||
<a href="https://www.amsl.com/"><img src="{% static 'secr/images/ams_logo.png' %}" alt="AMS" class="text-end p-3" /></a>
|
||||
<a href="https://www.amsl.com/"><img src="{% static 'secr/images/ams_logo.png' %}" alt="AMS" class="text-end p-3" ></a>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<div>
|
||||
<p>
|
||||
<input type="hidden" name="post" value="yes">
|
||||
<input type="submit" value="Yes, I'm sure">
|
||||
<button type="submit">Yes, I'm sure</button>
|
||||
<a href="#" onclick="history.go(-1);return false;" class="button cancel-link">Take me back</a>
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<div>
|
||||
<p>
|
||||
<input type="hidden" name="post" value="yes">
|
||||
<input type="submit" value="Yes, I'm sure">
|
||||
<button type="submit">Yes, I'm sure</button>
|
||||
<a href="#" onclick="history.go(-1);return false;" class="button cancel-link">Take me back</a>
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -12,7 +12,9 @@
|
|||
<h2>Console</h2>
|
||||
|
||||
<table class="full-width amstable" id="announce-table">
|
||||
<tr><th>Latest DocEvent</th><td>{{ latest_docevent }}</td></tr>
|
||||
<tbody>
|
||||
<tr><th scope="row">Latest DocEvent</th><td>{{ latest_docevent }}</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div> <!-- module -->
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Groups - People{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}">
|
||||
<script src="{% static 'ietf/js/jquery-ui.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
{% endblock %}
|
||||
|
@ -22,10 +22,10 @@
|
|||
<table class="full-width">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Role</th>
|
||||
<th>Name</th>
|
||||
<th>Email</th>
|
||||
<th>Action</th>
|
||||
<th scope="col">Role</th>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">Email</th>
|
||||
<th scope="col">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% if group.role_set.all %}
|
||||
|
@ -49,19 +49,21 @@
|
|||
{{ form.non_field_errors }}
|
||||
{{ form.group_acronym }}
|
||||
<table class="full-width">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{ form.name.errors }}{{ form.name }}</td>
|
||||
<td>{{ form.person.errors }}{{ form.person }}{% if form.person.help_text %}<br>{{ form.person.help_text }}{% endif %}</td>
|
||||
<td>{{ form.email.errors }}{{ form.email }}{% if form.email.help_text %}<br>{{ form.email.help_text }}{% endif %}</td>
|
||||
<td><input type="submit" name="submit" value="Add" /></td>
|
||||
<td>{{ form.name.errors }}<label for="{{ form.name.id_for_label }}" aria-label="Name"></label>{{ form.name }}</td>
|
||||
<td>{{ form.person.errors }}<label for="{{ form.person.id_for_label }}" aria-label="Person"></label>{{ form.person }}{% if form.person.help_text %}<br>{{ form.person.help_text }}{% endif %}</td>
|
||||
<td>{{ form.email.errors }}<label for="{{ form.email.id_for_label }}" aria-label="Email"></label>{{ form.email }}{% if form.email.help_text %}<br>{{ form.email.help_text }}{% endif %}</td>
|
||||
<td><button type="submit" name="submit">Add</button></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div> <!-- inline-related -->
|
||||
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
<li><button onclick="window.location='../'">Back</button></li>
|
||||
<li><button type="button" onclick="window.location='../'">Back</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
|
||||
|
|
|
@ -19,7 +19,10 @@
|
|||
<h2>Groups - Search</h2>
|
||||
<form enctype="multipart/form-data" method="post">{% csrf_token %}
|
||||
<table class="full-width amstable">
|
||||
{{ form.as_table }}
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include "includes/buttons_search.html" %}
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<div id="groups-view-col1">
|
||||
<h2>Groups - View</h2>
|
||||
<table >
|
||||
|
||||
<tbody>
|
||||
<tr><td>Group Acronym:</td><td>{{ group.acronym }}</td></tr>
|
||||
<tr><td>Group Name:</td><td>{{ group.name }}</td></tr>
|
||||
<tr><td>Status:</td><td>{{ group.state }}</td></tr>
|
||||
|
@ -56,6 +56,7 @@
|
|||
{% endif %}
|
||||
<tr><td>Comments:</td><td>{{ group.comments }}</td></tr>
|
||||
<tr><td>Last Modified Date:</td><td>{{ group.time }}</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
|
@ -109,11 +110,11 @@
|
|||
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
<li><button onclick="window.location='edit/'">Edit</button></li>
|
||||
<li><button onclick="window.location='people/'">People</button></li>
|
||||
<li><button type="button" onclick="window.location='edit/'">Edit</button></li>
|
||||
<li><button type="button" onclick="window.location='people/'">People</button></li>
|
||||
{% comment %}
|
||||
<li><button onclick="window.location='{% url "sec.ids.views.search" id=group.group_acronym.acronym_id %}'">Drafts</button></li>
|
||||
<li><button onclick="window.location='{% url "sec.rfcs.views.search" id=group.group_acronym.acronym_id %}'">RFCs</button></li>
|
||||
<li><button type="button" onclick="window.location='{% url "sec.ids.views.search" id=group.group_acronym.acronym_id %}'">Drafts</button></li>
|
||||
<li><button type="button" onclick="window.location='{% url "sec.rfcs.views.search" id=group.group_acronym.acronym_id %}'">RFCs</button></li>
|
||||
{% endcomment %}
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
<table class="full-width">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Date</th>
|
||||
<th>Time</th>
|
||||
<th>Action</th>
|
||||
<th>Name</th>
|
||||
<th scope="col">Date</th>
|
||||
<th scope="col">Time</th>
|
||||
<th scope="col">Action</th>
|
||||
<th scope="col">Name</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<div class="button-group">
|
||||
<ul>
|
||||
<li><button onclick="window.location='../'">Back</button></li>
|
||||
<li><button type="button" onclick="window.location='../'">Back</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<table id="group-search-results" class="center" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Group Name</th>
|
||||
<th>Group Acronym</th>
|
||||
<th>Status</th>
|
||||
<th>Type</th>
|
||||
<th>Meeting Scheduled</th>
|
||||
<th scope="col">Group Name</th>
|
||||
<th scope="col">Group Acronym</th>
|
||||
<th scope="col">Status</th>
|
||||
<th scope="col">Type</th>
|
||||
<th scope="col">Meeting Scheduled</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
<p>Use this to process meeting materials files that have been converted to PDF and uploaded to the server.</p>
|
||||
<ul class="none">
|
||||
<li>
|
||||
<button onclick="window.location='{% url 'ietf.secr.proceedings.views.process_pdfs' meeting_num=meeting.number %}'">Process PDFs</button>
|
||||
<button type="button" onclick="window.location='{% url 'ietf.secr.proceedings.views.process_pdfs' meeting_num=meeting.number %}'">Process PDFs</button>
|
||||
<span class="{% if ppt_count > 0 %}alert{% endif %}">{{ ppt_count }} PowerPoint files waiting to be converted</span>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Use this to input session recording information.</p>
|
||||
<ul class="none">
|
||||
<li><button onclick="window.location='{% url 'ietf.secr.proceedings.views.recording' meeting_num=meeting.number %}'">Recordings</button>
|
||||
<li><button type="button" onclick="window.location='{% url 'ietf.secr.proceedings.views.recording' meeting_num=meeting.number %}'">Recordings</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<table class="full-width">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Email</th>
|
||||
<th>ID</th>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">Email</th>
|
||||
<th scope="col">ID</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% if results %}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
{{ form.non_field_errors }}
|
||||
{% endif %}
|
||||
<table id="sessions-new-table">
|
||||
|
||||
<tbody>
|
||||
<tr class="bg1"><td>Working Group Name:</td><td>{{ group.name }} ({{ group.acronym }})</td></tr>
|
||||
<tr class="bg2"><td>Area Name:</td><td>{% if group.parent %}{{ group.parent.name }} ({{ group.parent.acronym }}){% endif %}</td></tr>
|
||||
<tr class="bg1"><td>Number of Sessions:<span class="required">*</span></td><td>{{ form.num_session.errors }}{{ form.num_session }}</td></tr>
|
||||
|
@ -31,6 +31,7 @@
|
|||
<tr class="bg1"><td>Conflicts to Avoid:</td>
|
||||
<td>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="2">Other WGs that included {{ group.name }} in their conflict lists:</td>
|
||||
<td>{{ session_conflicts.inbound|default:"None" }}</td>
|
||||
|
@ -40,7 +41,7 @@
|
|||
{% if forloop.first %}<td rowspan="{{ form.wg_constraint_count }}" >WG Sessions:<br>You may select multiple WGs within each category</td>{% endif %}
|
||||
<td>{{ cname|title }}</td>
|
||||
<td>{{ cselector }}
|
||||
<input type="button" id="wg_delete_{{ cname.slug }}" value="Delete the last entry" onClick="ietf_sessions.delete_wg_constraint_clicked('{{ cname.slug }}')"><br>
|
||||
<button type="button" id="wg_delete_{{ cname.slug }}" onclick="ietf_sessions.delete_wg_constraint_clicked('{{ cname.slug }}')">Delete the last entry</button><br>
|
||||
{{ cfield.errors }}{{ cfield }}
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -64,6 +65,7 @@
|
|||
<td colspan="2">BOF Sessions:</td>
|
||||
<td>If the sessions can not be found in the fields above, please enter free form requests in the Special Requests field below.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -77,22 +79,23 @@
|
|||
</tr>
|
||||
<tr class="bg1">
|
||||
<td>Times during which this WG can <strong>not</strong> meet:</td>
|
||||
<!-- [html-validate-disable-block no-redundant-for -- FIXME: form renders with redundant for attributes] -->
|
||||
<td>{{ form.timeranges.errors }}{{ form.timeranges }}</td>
|
||||
</tr>
|
||||
<tr class="bg2">
|
||||
<td>
|
||||
Plan session adjacent with another WG:<br />
|
||||
Plan session adjacent with another WG:<br>
|
||||
(Immediately before or after another WG, no break in between, in the same room.)
|
||||
</td>
|
||||
<td>{{ form.adjacent_with_wg.errors }}{{ form.adjacent_with_wg }}</td>
|
||||
</tr>
|
||||
<tr class="bg1">
|
||||
<td>
|
||||
Joint session with:<br />
|
||||
Joint session with:<br>
|
||||
(To request one session for multiple WGs together.)
|
||||
</td>
|
||||
<td>{{ form.joint_with_groups_selector }}
|
||||
<input type="button" value="Delete the last entry" onClick="ietf_sessions.delete_last_joint_with_groups(); return 1;"><br>
|
||||
<button type="button" onclick="ietf_sessions.delete_last_joint_with_groups(); return 1;">Delete the last entry</button><br>
|
||||
{{ form.joint_with_groups.errors }}{{ form.joint_with_groups }}
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -106,9 +109,10 @@
|
|||
{% endif %}
|
||||
|
||||
<tr class="bg2">
|
||||
<td>Special Requests:<br /> <br />i.e. restrictions on meeting times / days, etc.<br /> (limit 200 characters)</td>
|
||||
<td>Special Requests:<br> <br>i.e. restrictions on meeting times / days, etc.<br> (limit 200 characters)</td>
|
||||
<td>{{ form.comments.errors }}{{ form.comments }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="button-group">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% load ams_filters %}
|
||||
<table class="full-width">
|
||||
|
||||
<tbody>
|
||||
<tr class="row1"><td>Working Group Name:</td><td>{{ group.name }} ({{ group.acronym }})</td></tr>
|
||||
<tr class="row2"><td>Area Name:</td><td>{{ group.parent }}</td></tr>
|
||||
<tr class="row1"><td>Number of Sessions Requested:</td><td>{% if session.third_session %}3{% else %}{{ session.num_session }}{% endif %}</td></tr>
|
||||
|
@ -15,9 +15,11 @@
|
|||
<td>
|
||||
{% if session_conflicts.outbound %}
|
||||
<table>
|
||||
<tbody>
|
||||
{% for conflict in session_conflicts.outbound %}
|
||||
<tr><td>{{ conflict.name|title }}: </td><td>{{ conflict.groups }}</td></tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}<i>None</i>{% endif %}
|
||||
</td>
|
||||
|
@ -57,4 +59,5 @@
|
|||
</tr>
|
||||
{% endif %}
|
||||
<tr class="row1"><td>Special Requests:</td><td>{{ session.comments }}</td></tr>
|
||||
</table>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
@ -2,5 +2,5 @@
|
|||
<li><a href="https://www.ietf.org/instructions/meeting_materials_tool.html" target="_blank">Instructions</a>.</li>
|
||||
<li>If you require assistance in using this tool, or wish to report a bug, then please send a message to <a href="mailto:{{settings.SECRETARIAT_ACTION_EMAIL}}">ietf-action@ietf.org</a>.</li>
|
||||
<li>To submit your materials via email, please send agendas to <a href="mailto:agenda@ietf.org">agenda@ietf.org</a> and minutes/presentation slides to <a href="mailto:proceedings@ietf.org">proceedings@ietf.org</a>.</li>
|
||||
<li><b>Note:</b> Normal session materials materials management is now performed using the {% if meeting.number %}<a href="{% url 'ietf.meeting.views.materials' num=meeting.number %}">{% endif %}materials page{% if meeting.number %}</a>{% endif %}
|
||||
</ul>
|
||||
<li><b>Note:</b> Normal session materials materials management is now performed using the {% if meeting.number %}<a href="{% url 'ietf.meeting.views.materials' num=meeting.number %}">{% endif %}materials page{% if meeting.number %}</a>{% endif %}</li>
|
||||
</ul>
|
||||
|
|
|
@ -7,9 +7,10 @@
|
|||
{% if user|has_role:"Secretariat" %}
|
||||
|
||||
<table class="menu">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<h3>IESG</h3>
|
||||
<h2>IESG</h2>
|
||||
<ul>
|
||||
<li> <a href="{% url 'ietf.secr.announcement.views.main' %}"><b>Announcement</b></a></li>
|
||||
<li> <a href="{% url 'ietf.secr.telechat.views.main' %}"><b>Telechat</b></a></li>
|
||||
|
@ -17,7 +18,7 @@
|
|||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<h3>IDs and WGs Process</h3>
|
||||
<h2>IDs and WGs Process</h2>
|
||||
<ul>
|
||||
<li> <a href="{% url "ietf.secr.areas.views.list_areas" %}"><b>Areas</b></a></li>
|
||||
<li> <a href="{% url 'ietf.secr.groups.views.search' %}"><b>Groups</b></a></li>
|
||||
|
@ -28,7 +29,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<h3>Meetings and Proceedings</h3>
|
||||
<h2>Meetings and Proceedings</h2>
|
||||
<ul>
|
||||
<li> <a href="{% url "ietf.secr.sreq.views.main" %}"><b>Session Requests</b></a></li>
|
||||
<li> <a href="{% url 'ietf.secr.proceedings.views.main' %}"><b>Meeting Materials Manager (Proceedings)</b></a></li>
|
||||
|
@ -37,20 +38,22 @@
|
|||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<h3>IPR</h3>
|
||||
<h2>IPR</h2>
|
||||
<ul>
|
||||
<li> <a href="{% url 'ietf.ipr.views.admin' state='pending' %}"><b>IPR Admin</b></a></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% else %}
|
||||
|
||||
<table class="menu">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<h3>Section 1</h3>
|
||||
<h2>Section 1</h2>
|
||||
<ul>
|
||||
<li> <a href="{% url "ietf.secr.sreq.views.main" %}"><b>Session Requests</b></a></li>
|
||||
<li> <a href="{% url 'ietf.secr.proceedings.views.main' %}"><b>Meeting Material Manager</b></a></li>
|
||||
|
@ -58,17 +61,18 @@
|
|||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<h3>Section 2</h3>
|
||||
<h2>Section 2</h2>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<h3>Section 3</h3>
|
||||
<h2>Section 3</h2>
|
||||
</td>
|
||||
<td>
|
||||
<h3>Section 4</h3>
|
||||
<h2>Section 4</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endif %}
|
||||
|
|
|
@ -18,7 +18,10 @@
|
|||
<h2>Proceedings - Add</h2>
|
||||
<form id="proceedings-add-form" enctype="multipart/form-data" method="post">{% csrf_token %}
|
||||
<table id="proceedings-add-table">
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes, no-redundant-for -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
{% include "includes/buttons_save_cancel.html"%}
|
||||
</form>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Meetings{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}">
|
||||
<script src="{% static 'ietf/js/jquery-ui.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<script src="{% static 'secr/js/dynamic_inlines.js' %}"></script>
|
||||
|
|
|
@ -21,8 +21,8 @@
|
|||
<p>Use this to generate blue sheets for meeting sessions.</p>
|
||||
<ul class="none">
|
||||
<li>
|
||||
<form style="display:inline" method="post" action="{% url "ietf.secr.meetings.views.blue_sheet_generate" meeting_id=meeting.number%}">{% csrf_token %}
|
||||
<input type="submit" value="Generate Blue Sheets">
|
||||
<form class="d-inline" method="post" action="{% url "ietf.secr.meetings.views.blue_sheet_generate" meeting_id=meeting.number%}">{% csrf_token %}
|
||||
<button type="submit">Generate Blue Sheets</button>
|
||||
</form>
|
||||
Last run:
|
||||
{% if last_run %}
|
||||
|
@ -35,15 +35,14 @@
|
|||
<p>Use this to download the blue sheets from the server.</p>
|
||||
<ul class="none">
|
||||
<li>
|
||||
<button onclick="window.location='{{ url }}'">Download Blue Sheets</button>
|
||||
<button type="button" onclick="window.location='{{ url }}'">Download Blue Sheets</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<hr />
|
||||
<hr>
|
||||
<p>
|
||||
Use the session details page for a group to upload scanned bluesheets. The session details pages for a group can be reached from the meeting's <a href="{% url 'ietf.meeting.views.materials' num=meeting.number %}">materials page</a>.
|
||||
</p>
|
||||
</div> <!-- module -->
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -19,7 +19,10 @@
|
|||
<form action="." method="post">{% csrf_token %}
|
||||
<h2>Meetings - Edit</h2>
|
||||
<table id="proceedings-edit-table">
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
{% include "includes/buttons_save_cancel.html"%}
|
||||
|
||||
|
@ -28,4 +31,3 @@
|
|||
</div> <!-- module -->
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -29,9 +29,12 @@
|
|||
<br>
|
||||
<form method="post">{% csrf_token %}
|
||||
<table>
|
||||
{{ form }}
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
<input type="submit" value="Select" />
|
||||
<button type="submit">Select</button>
|
||||
</form>
|
||||
</div> <!-- inline-related -->
|
||||
</div> <!-- module -->
|
||||
|
|
|
@ -7,7 +7,10 @@
|
|||
<h3>Session: {{ slot.name }}</h3>
|
||||
<form id="misc-session-edit-form" enctype="multipart/form-data" action="." method="post">{% csrf_token %}
|
||||
<table class="full-width amstable">
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="button-group">
|
||||
|
|
|
@ -9,17 +9,17 @@
|
|||
<table id="misc-sessions" class="full-width">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Day</th>
|
||||
<th>Time</th>
|
||||
<th>Name</th>
|
||||
<th>Short Name</th>
|
||||
<th>Group</th>
|
||||
<th>Location</th>
|
||||
<th>Show Loc.</th>
|
||||
<th>Type</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th scope="col">Day</th>
|
||||
<th scope="col">Time</th>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">Short Name</th>
|
||||
<th scope="col">Group</th>
|
||||
<th scope="col">Location</th>
|
||||
<th scope="col">Show Loc.</th>
|
||||
<th scope="col">Type</th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -51,21 +51,23 @@
|
|||
{% else %}
|
||||
<h3>No timeslots exist for this meeting. Add rooms with the "duplicate timeslots" option enabled to copy timeslots from the last meeting.</h3>
|
||||
{% endif %}
|
||||
<br /><hr />
|
||||
<br><hr>
|
||||
|
||||
<div>
|
||||
<form id="timeslot-form" method="post">{% csrf_token %}
|
||||
<table class="full-width amstable">
|
||||
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
<tr><td colspan="2" class="text-center"><input type="submit" name="submit" value="Add" /></td></tr>
|
||||
<tr><td colspan="2" class="text-center"><button type="submit" name="submit">Add</button></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
<li><button onclick="window.location='../'">Back</button></li>
|
||||
<li><button type="button" onclick="window.location='../'">Back</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
<h2>IETF {{ meeting.number }} - Send Notifications</h2>
|
||||
<form id="id_notification_form" action="." method="post">{% csrf_token %}
|
||||
<p>The following groups are in state 'schedw' (Waiting for scheduling). Pressing the Send Now button will change them to be in state 'sched' (Scheduled), and send email notifications each of them that their session has been scheduled. The last time this button was pressed was {{ last_notice.time|date:"Y-m-d" }}:</p>
|
||||
<p id="id_notification_list">{% if not groups %}(none){% endif %}{% for group in groups %}{{ group.acronym }}{% if not forloop.last %}, {% endif %}{% endfor %}<p>
|
||||
<input type="submit" value="Send Now" name="submit" onclick="return window.confirm('Are you sure you want to send notifications?');">
|
||||
<p id="id_notification_list">{% if not groups %}(none){% endif %}{% for group in groups %}{{ group.acronym }}{% if not forloop.last %}, {% endif %}{% endfor %}</p>
|
||||
<button type="submit" name="submit" onclick="return window.confirm('Are you sure you want to send notifications?');">Send Now</button>
|
||||
</form>
|
||||
|
||||
{% include "includes/buttons_back.html" %}
|
||||
|
@ -28,26 +28,3 @@
|
|||
</div> <!-- module -->
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -20,24 +20,26 @@
|
|||
<form id="meetings-schedule-form" method="post">{% csrf_token %}
|
||||
<div class="inline-related{% if forloop.last %} last-related{% endif %}">
|
||||
<table class="full-width amstable">
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>Day:</th>
|
||||
<th scope="row">Day:</th>
|
||||
<td>{% if timeslot %}{{ timeslot.time|date:"l" }}{% endif %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Time:</th>
|
||||
<th scope="row">Time:</th>
|
||||
<td>{% if timeslot %}{{ timeslot.time|time:"H:i" }}{% endif %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Room:</th>
|
||||
<th scope="row">Room:</th>
|
||||
<td>{% if timeslot %}{{ timeslot.location.name }}{% endif %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Status:</th>
|
||||
<th scope="row">Status:</th>
|
||||
<td>{{ current_status_name }}</td>
|
||||
</tr>
|
||||
{{ form }}
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
</div> <!-- inline-related -->
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
<div class="inline-group">
|
||||
<div class="tabular inline-related">
|
||||
<!-- [html-validate-disable-block wcag/h32 -- FIXME: no submit button] -->
|
||||
<form id="meetings-meta-rooms" method="post">{% csrf_token %}
|
||||
{{ formset.management_form }}
|
||||
{{ formset.non_form_errors }}
|
||||
|
@ -16,9 +17,9 @@
|
|||
<table id="id_rooms_table" class="full-width">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th scope="col"></th>
|
||||
{% for field in formset.forms.0.visible_fields %}
|
||||
<th>{{ field.label|capfirst }}</th>
|
||||
<th scope="col">{{ field.label|capfirst }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
<table class="table table-sm table-striped ipr-table tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Group</th>
|
||||
<th>Time</th>
|
||||
<th>Room</th>
|
||||
<th>Agenda Note</th>
|
||||
<th>Status</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th scope="col">Group</th>
|
||||
<th scope="col">Time</th>
|
||||
<th scope="col">Room</th>
|
||||
<th scope="col">Agenda Note</th>
|
||||
<th scope="col">Status</th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -40,7 +40,7 @@
|
|||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="pk" value="{{ session.pk }}">
|
||||
<input type="submit" name="cancel" value="Cancel">
|
||||
<button type="submit" name="cancel">Cancel</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
</td>
|
||||
|
|
|
@ -9,11 +9,11 @@
|
|||
<table class="full-width">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Day</th>
|
||||
<th>Time</th>
|
||||
<th>Name</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th scope="col">Day</th>
|
||||
<th scope="col">Time</th>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -31,24 +31,26 @@
|
|||
{% else %}
|
||||
<h3>No timeslots exist for this meeting. Add rooms with the "duplicate timeslots" option enabled to copy timeslots from the last meeting.</h3>
|
||||
{% endif %}
|
||||
<br /><hr />
|
||||
<br><hr>
|
||||
|
||||
<form method="post">{% csrf_token %}
|
||||
{{ form.non_field_errors }}
|
||||
<table id="timeslot-form" class="full-width">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Day<br>{{ form.day.errors }}{{ form.day }}</td>
|
||||
<td>Time<br>{{ form.time.errors }}{{ form.time }}</td>
|
||||
<td>Duration<br>{{ form.duration.errors }}{{ form.duration }}</td>
|
||||
<td>Name<br>{{ form.name.errors }}{{ form.name }}</td>
|
||||
<td><input type="submit" name="submit" value="Add" /></td>
|
||||
<td><button type="submit" name="submit">Add</button></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
<li><button onclick="window.location='../'">Back</button></li>
|
||||
<li><button type="button" onclick="window.location='../'">Back</button></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -7,7 +7,10 @@
|
|||
<p><h3>TimeSlot:</h3></p>
|
||||
<form id="times-edit-form" enctype="multipart/form-data" action="." method="post">{% csrf_token %}
|
||||
<table class="full-width amstable">
|
||||
{{ form.as_table }}
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include "includes/buttons_save_cancel.html" %}
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
<ul class="errorlist"><li> THIS IS A FROZEN PROCEEDING</li></ul>
|
||||
{% endif %}
|
||||
<table class="full-width" id="proceedings-view-first-col">
|
||||
<tbody>
|
||||
<tr><td>Start Date:</td><td> {{ meeting.date }}</td></tr>
|
||||
<tr><td>City:</td><td> {{ meeting.city }} </td></tr>
|
||||
<tr><td>Country:</td><td> {{ meeting.country }} </td></tr>
|
||||
|
@ -28,16 +29,18 @@
|
|||
<tr><td>Venue Address:</td><td> {{ meeting.venue_addr }} </td></tr>
|
||||
<tr><td>Break Area:</td><td> {{ meeting.break_area }} </td></tr>
|
||||
<tr><td>Registration Area:</td><td> {{ meeting.reg_area }} </td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
<li><button onclick="window.location='{% url "ietf.secr.meetings.views.edit_meeting" meeting_id=meeting.number %}'">Edit</button></li>
|
||||
<li><button onclick="window.location='{% url "ietf.secr.meetings.views.notifications" meeting_id=meeting.number %}'">Notifications</button></li>
|
||||
<li><button onclick="window.location='{% url "ietf.secr.meetings.views.blue_sheet" meeting_id=meeting.number %}'">Blue Sheets</button></li>
|
||||
<li><button onclick="window.location='{% url "ietf.meeting.views.list_schedules" num=meeting.number %}'">Agenda List</button></li>
|
||||
<li><button type="button" onclick="window.location='{% url "ietf.secr.meetings.views.edit_meeting" meeting_id=meeting.number %}'">Edit</button></li>
|
||||
<li><button type="button" onclick="window.location='{% url "ietf.secr.meetings.views.notifications" meeting_id=meeting.number %}'">Notifications</button></li>
|
||||
<li><button type="button" onclick="window.location='{% url "ietf.secr.meetings.views.blue_sheet" meeting_id=meeting.number %}'">Blue Sheets</button></li>
|
||||
<li><button type="button" onclick="window.location='{% url "ietf.meeting.views.list_schedules" num=meeting.number %}'">Agenda List</button></li>
|
||||
<li>
|
||||
<!-- [html-validate-disable-block wcag/h32 -- FIXME: no submit button] -->
|
||||
<form id="id_schedule_selector">
|
||||
<select name="forma" onchange="location = this.options[this.selectedIndex].value;">
|
||||
<option value="">Select a schedule...</option>
|
||||
|
@ -48,7 +51,7 @@
|
|||
</form>
|
||||
</li>
|
||||
{% if meeting.schedule %}
|
||||
<li><button onclick="window.location='{% url "ietf.secr.meetings.views.rooms" meeting_id=meeting.number schedule_name=meeting.schedule.name %}'">Official Schedule</button></li>
|
||||
<li><button type="button" onclick="window.location='{% url "ietf.secr.meetings.views.rooms" meeting_id=meeting.number schedule_name=meeting.schedule.name %}'">Official Schedule</button></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
</tr>
|
||||
{% for meeting in meetings %}
|
||||
<tr class="{% cycle 'row1' 'row2' %}">
|
||||
<td class="text-start" style="white-space: nowrap">{{ meeting.date }}</td>
|
||||
<td class="text-start text-nowrap">{{ meeting.date }}</td>
|
||||
<td><a href="https://datatracker.ietf.org/wg/{{ meeting.group.acronym }}">{{ meeting.group.acronym }}</a></td>
|
||||
{% if meeting.schedule %}
|
||||
<td class="text-center"><a href="{{ meeting.schedule.get_absolute_url }}">Agenda</a></td>
|
||||
|
|
|
@ -19,13 +19,13 @@
|
|||
<table id="proceedings-list-table" class="full-width{% if user|has_role:"Secretariat" %} secretariat{% endif %}">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>IETF Meeting</th>
|
||||
<th scope="col">IETF Meeting</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% if meetings %}
|
||||
<tbody>
|
||||
{% for meeting in meetings %}
|
||||
<tr class = "{% cycle 'row1' 'row2' %}{% if meeting.get_submission_correction_date < today %} frozen{% else %} open{% endif %}">
|
||||
<tr class="{% cycle 'row1' 'row2' %}{% if meeting.get_submission_correction_date < today %} frozen{% else %} open{% endif %}">
|
||||
<td>
|
||||
<a href="{% url 'ietf.secr.proceedings.views.select' meeting_num=meeting.number %}">{{ meeting.number }}</a>
|
||||
</td>
|
||||
|
@ -37,7 +37,7 @@
|
|||
{% if user|has_role:"Secretariat" %}
|
||||
<div class="button-group">
|
||||
<ul id="proceedings-meeting-buttons">
|
||||
<li><button onclick="window.location='{% url "ietf.secr.meetings.views.add" %}'">Add</button></li>
|
||||
<li><button type="button" onclick="window.location='{% url "ietf.secr.meetings.views.add" %}'">Add</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
{% endif %}
|
||||
|
@ -48,14 +48,14 @@
|
|||
<table id="proceedings-interim-table" class="full-width{% if user|has_role:"Secretariat" %} secretariat{% endif %}">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Interim Meeting</th>
|
||||
<th scope="col">Interim Meeting</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% if interim_meetings %}
|
||||
<tbody>
|
||||
{% for meeting in interim_meetings %}
|
||||
|
||||
<tr class = "{% cycle 'row1' 'row2' %}">
|
||||
<tr class="{% cycle 'row1' 'row2' %}">
|
||||
<td>{{ meeting.group.acronym }}</td>
|
||||
<td><a href="{% url "ietf.meeting.views.session_details" num=meeting.number acronym=meeting.group.acronym %}">{{ meeting.date }}</a></td>
|
||||
</tr>
|
||||
|
@ -66,7 +66,7 @@
|
|||
</div> <!-- scroll -->
|
||||
<div class="button-group">
|
||||
<ul id="proceedings-interim-buttons">
|
||||
<li><button onclick="window.location='{% url "ietf.meeting.views.interim_request" %}'">Request Interim Meeting</button></li>
|
||||
<li><button type="button" onclick="window.location='{% url "ietf.meeting.views.interim_request" %}'">Request Interim Meeting</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
</div>
|
||||
|
@ -81,7 +81,7 @@
|
|||
|
||||
<div class="button-group">
|
||||
<ul id="proceedings-button-list">
|
||||
<li><button onclick="window.location='../'">Back</button></li>
|
||||
<li><button type="button" onclick="window.location='../'">Back</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
</div> <!-- module -->
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Proceedings{% endblock %}
|
||||
|
||||
{% block extrastyle %}{{ block.super }}
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/select2.css' %}">
|
||||
{% endblock %}
|
||||
|
||||
|
@ -32,7 +32,10 @@
|
|||
<h2>Recording Metadata</h2>
|
||||
<form id="recording-form" enctype="multipart/form-data" action="." method="post">{% csrf_token %}
|
||||
<table class="center" id="proceedings-upload-table">
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="button-group">
|
||||
|
@ -49,11 +52,11 @@
|
|||
<table class="center">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Group</th>
|
||||
<th>Session</th>
|
||||
<th>Name</th>
|
||||
<th>URL</th>
|
||||
<th>Edit</th>
|
||||
<th scope="col">Group</th>
|
||||
<th scope="col">Session</th>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">URL</th>
|
||||
<th scope="col">Edit</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% if sessions %}
|
||||
|
@ -93,7 +96,7 @@
|
|||
<table class="center">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Filename</th>
|
||||
<th scope="col">Filename</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% if unmatched_recordings %}
|
||||
|
|
|
@ -27,7 +27,10 @@
|
|||
<p><h3>Edit Recording Metadata:</h3></p>
|
||||
<form id="recording-form" method="post">{% csrf_token %}
|
||||
<table>
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include "includes/buttons_save_cancel.html" %}
|
||||
|
|
|
@ -22,16 +22,16 @@
|
|||
<table class="center">
|
||||
<form action="modify/" method="post">{% csrf_token %}
|
||||
<tr>
|
||||
<input type="hidden" name="frozen" value="{{ proceeding.frozen }}" />
|
||||
<input type="hidden" name="frozen" value="{{ proceeding.frozen }}">
|
||||
{% if not proceeding.frozen %}
|
||||
<tr>
|
||||
<td>Active Proceeding</td>
|
||||
<td><input type="submit" name="submit" value="Freeze" /></td>
|
||||
<td><button type="submit" name="submit">Freeze</button></td>
|
||||
{% endif %}
|
||||
{% if proceeding.frozen %}
|
||||
<tr>
|
||||
<td>Frozen Proceeding</td>
|
||||
<td><input type="submit" name="submit" value="Activate" /></td>
|
||||
<td><button type="submit" name="submit">Activate</button></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</form>
|
||||
|
@ -39,10 +39,9 @@
|
|||
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
<li><button onclick="history.go(-1);return true">Back</button></li>
|
||||
<li><button type="button" onclick="history.go(-1);return true">Back</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
</div> <!-- module -->
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -19,34 +19,38 @@
|
|||
<ul class="errorlist"><li> THIS IS A FROZEN PROCEEDING</li></ul>
|
||||
{% endif %}
|
||||
<table class="full-width" id="proceedings-view-first-col">
|
||||
<tbody>
|
||||
<tr><td>Meeting Start Date:</td><td> {{ meeting.date }}</td></tr>
|
||||
<tr><td>Meeting End Date:</td><td> {{ meeting.end_date }} </td></tr>
|
||||
<tr><td>Meeting City:</td><td> {{ meeting.city }} </td></tr>
|
||||
<tr><td>Meeting Country:</td><td> {{ meeting.country }} </td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="inline-related">
|
||||
<h2>Dates</h2>
|
||||
<table class="full-width" id="proceedings-view-first-col">
|
||||
<tbody>
|
||||
<tr><td>Submission Start Date:</td><td> {{ meeting.get_submission_start_date }} </td></tr>
|
||||
<tr><td>Submission Cut Off Date:</td><td> {{ meeting.get_submission_cut_off_date }} </td></tr>
|
||||
<tr><td>Submission Correction Cut Off Date:</td><td> {{ meeting.get_submission_correction_date }} </td></tr>
|
||||
<tr><td>Progress Report Start:</td><td> {{ meeting.pr_from_date }} </td></tr>
|
||||
<tr><td>Progress Report End:</td><td> {{ meeting.pr_to_date }} </td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div><!-- inline-related-->
|
||||
|
||||
<div class="button-group">
|
||||
{% if meeting.frozen == 0 %}
|
||||
<ul>
|
||||
<li><button onclick="window.location='{% url 'ietf.secr.proceedings.views.select' meeting_num=meeting.number %}'">Upload Materials</button></li>
|
||||
<li><button onclick="window.location='convert/'">Convert Materials</button></li>
|
||||
<li><button onclick="window.location='status/'">Proceedings {{ meeting.number }} Status</button></li>
|
||||
<li><button type="button" onclick="window.location='{% url 'ietf.secr.proceedings.views.select' meeting_num=meeting.number %}'">Upload Materials</button></li>
|
||||
<li><button type="button" onclick="window.location='convert/'">Convert Materials</button></li>
|
||||
<li><button type="button" onclick="window.location='status/'">Proceedings {{ meeting.number }} Status</button></li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% if meeting.frozen == 1 %}
|
||||
<ul>
|
||||
<li><button onclick="window.location='status/'">Proceedings {{ meeting.number }} Status</button></li>
|
||||
<li><button type="button" onclick="window.location='status/'">Proceedings {{ meeting.number }} Status</button></li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</div> <!-- button-group -->
|
||||
|
|
|
@ -14,9 +14,9 @@
|
|||
|
||||
<div class="module" >
|
||||
<h2>Proceedings</h2>
|
||||
<hr />
|
||||
<hr>
|
||||
<h2>{{ message }}</h2>
|
||||
<img class="loading" src="{% static "secr/images/ajax-loader.webp" %}" alt="loading..." />
|
||||
<img class="loading" src="{% static "secr/images/ajax-loader.webp" %}" alt="loading...">
|
||||
</div> <!-- module -->
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% block title %}Roles{% endblock %}
|
||||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'ietf/css/jquery-ui.css' %}">
|
||||
<script src="{% static 'ietf/js/jquery-ui.js' %}"></script>
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
|||
|
||||
$('#id_group').change(function(){
|
||||
var loadUrl = "/secr/roles/ajax/get-roles/" + $(this).val() + "/";
|
||||
var ajax_load = '<img class="loading" src="{% static "secr/images/ajax-loader.webp" %}" alt="loading..." />';
|
||||
var ajax_load = '<img class="loading" src="{% static "secr/images/ajax-loader.webp" %}" alt="loading...">';
|
||||
var text = $(this).val();
|
||||
$("#id_group_acronym").val(text);
|
||||
$("#roles-list").html(ajax_load).load(loadUrl);
|
||||
|
@ -59,13 +59,15 @@
|
|||
{% with role_form as form %}
|
||||
{{ role_form.non_field_errors }}
|
||||
<table class="full-width">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{ form.group_acronym.errors }}{{ form.group_acronym }}</td>
|
||||
<td>{{ form.name.errors }}{{ form.name }}</td>
|
||||
<td>{{ form.person.errors }}{{ form.person }}{% if form.person.help_text %}<br>{{ form.person.help_text }}{% endif %}</td>
|
||||
<td>{{ form.email.errors }}{{ form.email }}{% if form.email.help_text %}<br>{{ form.email.help_text }}{% endif %}</td>
|
||||
<td><input type="submit" name="submit" value="Add" /></td>
|
||||
<td><button type="submit" name="submit">Add</button></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
{% endwith %}
|
||||
</div> <!-- inline-related -->
|
||||
|
@ -73,7 +75,7 @@
|
|||
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
<li><button onclick="window.location='../'">Back</button></li>
|
||||
<li><button type="button" onclick="window.location='../'">Back</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<table class="full-width">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Role</th>
|
||||
<th>Name</th>
|
||||
<th>Email</th>
|
||||
<th>Action</th>
|
||||
<th scope="col">Role</th>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">Email</th>
|
||||
<th scope="col">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
<li><button onclick="history.go(-1);return true">Back</button></li>
|
||||
<li><button type="button" onclick="history.go(-1);return true">Back</button></li>
|
||||
<li><button type="submit" name="submit" value="Continue">Continue</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
|
@ -40,8 +40,10 @@
|
|||
<h2>Name</h2>
|
||||
<form id="rolodex-add-form" enctype="multipart/form-data" method="post">{% csrf_token %}
|
||||
<table class="full-width amstable">
|
||||
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include "includes/buttons_proceed.html" %}
|
||||
|
|
|
@ -8,13 +8,16 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Adding {{ name }}</h1>
|
||||
<h2>Adding {{ name }}</h2>
|
||||
|
||||
<form method="post" id="rolodex-add-form">{% csrf_token %}
|
||||
<div class="module">
|
||||
<h2>Rolodex - Add</h2>
|
||||
<h3>Rolodex - Add</h3>
|
||||
<table class="full-width amstable">
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
</div> <!-- module -->
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
</ul>
|
||||
</li></ul>
|
||||
<form method="post">{% csrf_token %}
|
||||
<input type="hidden" name="post" value="yes" />
|
||||
<input type="submit" value="Yes, I'm sure" />
|
||||
<input type="hidden" name="post" value="yes">
|
||||
<button type="submit">Yes, I'm sure</button>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
|
@ -18,7 +18,10 @@
|
|||
<div class="module">
|
||||
<h2>Rolodex - Edit</h2>
|
||||
<table id="rolodex-edit-table" class="full-width amstable">
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ person_form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="inline-group">
|
||||
|
@ -29,10 +32,10 @@
|
|||
<table id="rolodex-email-table" class="full-width">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th scope="col"></th>
|
||||
{% for field in email_formset.forms.0 %}
|
||||
{% if not field.is_hidden %}
|
||||
<th>{{ field.label }}</th>
|
||||
<th scope="col">{{ field.label }}</th>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</tr>
|
||||
|
|
|
@ -16,8 +16,10 @@
|
|||
<h2>Rolodex - Search <span class="unlocked"><a href="add/" class="addlink">Add</a></span></h2>
|
||||
<form id="rolodex-search-form" action="." method="post">{% csrf_token %}
|
||||
<table class="full-width amstable">
|
||||
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include "includes/buttons_search.html" %}
|
||||
|
|
|
@ -13,27 +13,28 @@
|
|||
|
||||
|
||||
<table id="rolodex-view-table" class="full-width">
|
||||
|
||||
<tbody>
|
||||
<tr><td>Name:</td><td>{{ person.name }}</td></tr>
|
||||
<tr><td>Ascii Name:</td><td>{{ person.ascii }}</td></tr>
|
||||
<tr><td>Short Name:</td><td>{{ person.ascii_short }}</td></tr>
|
||||
<tr><td>Aliases:</td><td>{% for alias in person.alias_set.all %}{% if not forloop.first %}, {% endif %}{{ alias.name }}{% endfor %}</td>
|
||||
<tr><td>Aliases:</td><td>{% for alias in person.alias_set.all %}{% if not forloop.first %}, {% endif %}{{ alias.name }}{% endfor %}</td></tr>
|
||||
<tr><td>User:</td><td>{{ person.user }}</td></tr>
|
||||
<tr><td></td><td></td></tr>
|
||||
{% for email in person.emails %}
|
||||
<tr><td>Email {{ forloop.counter }}:</td><td>{{ email }}</td></tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<br />
|
||||
<br>
|
||||
|
||||
<div class="inline-related">
|
||||
<h2><b>Roles</b></h2>
|
||||
<table id="rolodex-role-table" class="full-width">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Role Name</th>
|
||||
<th>Group / Area</th>
|
||||
<th>Email</th>
|
||||
<th scope="col">Role Name</th>
|
||||
<th scope="col">Group / Area</th>
|
||||
<th scope="col">Email</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% if roles %}
|
||||
|
@ -58,14 +59,14 @@
|
|||
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
<li><button onclick="window.location='../'">Search</button></li>
|
||||
<li><button onclick="window.location='edit/'">Edit</button></li>
|
||||
<li><button type="button" onclick="window.location='../'">Search</button></li>
|
||||
<li><button type="button" onclick="window.location='edit/'">Edit</button></li>
|
||||
{% comment %}
|
||||
Removed per Glen
|
||||
<li><button onclick="window.location='../../delete/{{ person.person_or_org_tag }}'">Delete</button></li>
|
||||
{% endcomment %}
|
||||
<li><button type="button" onclick="window.location='../../delete/{{ person.person_or_org_tag }}'">Delete</button></li>
|
||||
{% endcomment %}
|
||||
</ul>
|
||||
</div> <!-- view-buttons -->
|
||||
|
||||
</div> <!-- view-container -->
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -32,15 +32,13 @@
|
|||
|
||||
{% if group.features.acts_like_wg and form.session_forms.forms_to_keep|length > 2 %}
|
||||
<br>
|
||||
<span class="alert">
|
||||
<p>
|
||||
<b>
|
||||
Note: Your request for a third session must be approved by an area director before
|
||||
being submitted to agenda@ietf.org. Click "Submit" below to email an approval
|
||||
request to the area directors.
|
||||
</b>
|
||||
</p>
|
||||
</span>
|
||||
<p class="alert">
|
||||
<b>
|
||||
Note: Your request for a third session must be approved by an area director before
|
||||
being submitted to agenda@ietf.org. Click "Submit" below to email an approval
|
||||
request to the area directors.
|
||||
</b>
|
||||
</p>
|
||||
<br>
|
||||
{% endif %}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
<li><button onclick="window.location='../'">Back</button></li>
|
||||
<li><button type="button" onclick="window.location='../'">Back</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
<div class="inline-related">
|
||||
<br>
|
||||
<ul class="session-buttons">
|
||||
<li><button onclick="if (window.confirm('A message will be sent to agenda@ietf.com as well as to the area director(s).\n\nContinue?')) { window.location='{% url "ietf.secr.sreq.views.no_session" acronym=group.acronym %}'};">Send a notification that the group does not plan to hold a session at IETF {{ meeting.number }}</button></li>
|
||||
<li><button onclick="window.location='{% url "ietf.secr.sreq.views.new" acronym=group.acronym %}?previous'">Retrieve all information from previous meeting</button></li>
|
||||
<li><button type="button" onclick="if (window.confirm('A message will be sent to agenda@ietf.com as well as to the area director(s).\n\nContinue?')) { window.location='{% url "ietf.secr.sreq.views.no_session" acronym=group.acronym %}'};">Send a notification that the group does not plan to hold a session at IETF {{ meeting.number }}</button></li>
|
||||
<li><button type="button" onclick="window.location='{% url "ietf.secr.sreq.views.new" acronym=group.acronym %}?previous'">Retrieve all information from previous meeting</button></li>
|
||||
</ul>
|
||||
</div>
|
||||
{% include "includes/sessions_request_form.html" %}
|
||||
|
|
|
@ -19,7 +19,10 @@
|
|||
<p>Enter the message that you would like displayed to the WG Chair when this tool is locked.</p>
|
||||
<form method="post">{% csrf_token %}
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
|
|
|
@ -29,12 +29,12 @@
|
|||
|
||||
<div class="button-group">
|
||||
<ul>
|
||||
<li><button name="edit" onclick="window.location='{% url "ietf.secr.sreq.views.edit" acronym=group.acronym num=meeting.number %}'"{% if is_locked %} disabled{% endif %}>Edit</button></li>
|
||||
<li><button type="button" name="edit" onclick="window.location='{% url "ietf.secr.sreq.views.edit" acronym=group.acronym num=meeting.number %}'"{% if is_locked %} disabled{% endif %}>Edit</button></li>
|
||||
{% if show_approve_button %}
|
||||
<li><button onclick="window.location='approve/'">Approve Third Session</button></li>
|
||||
<li><button type="button" onclick="window.location='approve/'">Approve Third Session</button></li>
|
||||
{% endif %}
|
||||
<li><button onclick="if (window.confirm('Do you really want to cancel this session?')) { window.location='cancel/' };" {% if is_locked %} disabled{% endif %}>Cancel this Request</button></li>
|
||||
<li><button onclick="window.location='{% url "ietf.secr.sreq.views.main" %}'">Back</button></li>
|
||||
<li><button type="button" onclick="if (window.confirm('Do you really want to cancel this session?')) { window.location='cancel/' };" {% if is_locked %} disabled{% endif %}>Cancel this Request</button></li>
|
||||
<li><button type="button" onclick="window.location='{% url "ietf.secr.sreq.views.main" %}'">Back</button></li>
|
||||
</ul>
|
||||
</div> <!-- button-group -->
|
||||
</div> <!-- module -->
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
{% block extrahead %}{{ block.super }}
|
||||
<script src="{% static 'secr/js/utils.js' %}"></script>
|
||||
<link rel="stylesheet" href="{% static 'secr/css/telechat.css' %}" />
|
||||
<link rel="stylesheet" href="{% static 'secr/css/telechat.css' %}">
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}{{ block.super }}
|
||||
|
|
|
@ -10,43 +10,44 @@
|
|||
{% if document %}
|
||||
{% if not nav_start %}<a href="./previous/">« Previous</a>{% endif %}
|
||||
{% if not nav_end %}<span class="right-nav"><a href="./next/">Next »</a></span>{% endif %}
|
||||
<br />
|
||||
<br>
|
||||
<h3>
|
||||
{% for line in header %}
|
||||
{{ line }}<br />
|
||||
{{ line }}<br>
|
||||
{% endfor %}
|
||||
</h3>
|
||||
<br />
|
||||
<br>
|
||||
<h3>{{ document.name }}-{{ document.rev }} ({{ document.intended_std_level }})</h3>
|
||||
{% if conflictdoc %}References: <a href="{{ conflictdoc.get_absolute_url }}">{{ conflictdoc }}</a><br />{% endif %}
|
||||
<a href="#writeup">Ballot Writeup</a><br />
|
||||
Token: {{ document.ad.name }}<br />
|
||||
{% if conflictdoc %}References: <a href="{{ conflictdoc.get_absolute_url }}">{{ conflictdoc }}</a><br>{% endif %}
|
||||
<a href="#writeup">Ballot Writeup</a><br>
|
||||
Token: {{ document.ad.name }}<br>
|
||||
{% if document.type_id == "draft" %}
|
||||
Consensus: {{ document|consensus }}<br />
|
||||
Has downref: {% if downrefs %}Yes{% else %}No{% endif %}<br />
|
||||
Consensus: {{ document|consensus }}<br>
|
||||
Has downref: {% if downrefs %}Yes{% else %}No{% endif %}<br>
|
||||
{% endif %}
|
||||
Number of Open Positions: {{ open_positions }}<br />
|
||||
<br />
|
||||
Number of Open Positions: {{ open_positions }}<br>
|
||||
<br>
|
||||
<div>
|
||||
<form method="post">{% csrf_token %}
|
||||
{{ formset.management_form }}
|
||||
<table id="telechat-positions-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>Area Director</th>
|
||||
<th scope="col">Area Director</th>
|
||||
{% for position in document.active_ballot.ballot_type.positions.all %}
|
||||
<th>{{ position.name }}</th>
|
||||
<th scope="col">{{ position.name }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% for form in formset.forms %}
|
||||
<tr{% if form.initial.position == 'norecord' or form.initial.position == None %} class="green-row"{% endif %}{% if form.initial.position == 'discuss' %} class="red-row"{% endif %}><td>{{ form.initial.name }}{{ form.name }}{{ form.id }}</td>
|
||||
{% with form.position as field %}
|
||||
{% for choice in field.field.choices %}
|
||||
<td><input type="radio" {% if form.initial.position == choice.0 %}checked="checked" {% endif %}id="id_{{ field.html_name }}_{{ forloop.counter0 }}" value="{{ choice.0 }}" name="{{ field.html_name }}" /></td>
|
||||
<td><input type="radio" {% if form.initial.position == choice.0 %}checked {% endif %}id="id_{{ field.html_name }}_{{ forloop.counter0 }}" value="{{ choice.0 }}" name="{{ field.html_name }}"></td>
|
||||
{% endfor %}
|
||||
{% endwith %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="telechat-button">
|
||||
<ul><li><button type="submit" name="submit" value="update_ballot">Update Ballot</button></li></ul>
|
||||
|
@ -54,22 +55,26 @@
|
|||
</form>
|
||||
</div>
|
||||
|
||||
<hr /><br />
|
||||
<hr><br>
|
||||
|
||||
<!-- [html-validate-disable-block wcag/h32 -- FIXME: no submit button] -->
|
||||
<form method="post">{% csrf_token %}
|
||||
<table>
|
||||
<tbody>
|
||||
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
|
||||
{{ state_form.as_table }}
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="telechat-button">
|
||||
<ul><li><button type="submit" name="submit" value="update_state">Update State</button></li></ul>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<hr /><br />
|
||||
<hr><br>
|
||||
|
||||
{% if document.type_id == "charter" %}
|
||||
{% include "telechat/group.html" %}
|
||||
<br /><hr /><br />
|
||||
<br><hr><br>
|
||||
{% endif %}
|
||||
|
||||
<h2 id="writeup">Ballot Writeup</h2>
|
||||
|
@ -82,12 +87,12 @@
|
|||
{% for ref in downrefs %}
|
||||
<p>Add {{ref.target.document.canonical_name}}
|
||||
({{ref.target.document.std_level}} - {{ref.target.document.stream.desc}})
|
||||
to downref registry.<br />
|
||||
to downref registry.<br>
|
||||
{% if not ref.target.document.std_level %}
|
||||
+++ Warning: The standards level has not been set yet!!!<br />
|
||||
+++ Warning: The standards level has not been set yet!!!<br>
|
||||
{% endif %}
|
||||
{% if not ref.target.document.stream %}
|
||||
+++ Warning: document stream has not been set yet!!!<br />
|
||||
+++ Warning: document stream has not been set yet!!!<br>
|
||||
{% endif %}
|
||||
{% endfor %}</p>
|
||||
{% endif %}
|
||||
|
|
|
@ -9,12 +9,12 @@
|
|||
<div id="telechat-content">
|
||||
<span class="telechat-warn"><h3>This feature is pending</h3></span>
|
||||
<h3>Roll Call</h3>
|
||||
<br />
|
||||
<br>
|
||||
<form method="post">{% csrf_token %}
|
||||
{% for person in people %}
|
||||
<input type="checkbox" name="attendee" value="{{ person.id }}" checked="checked" /> {{ person.name }}<br />
|
||||
<input type="checkbox" name="attendee" value="{{ person.id }}" checked> {{ person.name }}<br>
|
||||
{% endfor %}
|
||||
<input type="submit" value="Update" />
|
||||
<button type="submit">Update</button>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -149,6 +149,27 @@ table tbody.meta {
|
|||
max-width: 300px;
|
||||
}
|
||||
|
||||
// Style the photo cards
|
||||
.photo {
|
||||
width: 13em;
|
||||
|
||||
.card-img-top {
|
||||
object-fit: cover;
|
||||
height: 15em;
|
||||
}
|
||||
|
||||
.photo-placeholder {
|
||||
height: 15em;
|
||||
font-size: 12em;
|
||||
}
|
||||
}
|
||||
|
||||
// Style the righthand navigation panel
|
||||
#righthand-nav {
|
||||
height: 70vh;
|
||||
width: inherit;
|
||||
}
|
||||
|
||||
// Add some padding when there are multiple buttons in a line than can wrap
|
||||
.buttonlist .btn {
|
||||
margin-top: map.get($spacers, 2);
|
||||
|
|
|
@ -34,9 +34,9 @@ var agenda_materials; // public interface
|
|||
data = "<p>Error retrieving " + data_src
|
||||
+ ": Missing content-type in response header</p>";
|
||||
} else if (t.indexOf("text/plain") > -1) {
|
||||
data = "<pre class='agenda'>" + data + "</pre>";
|
||||
data = '<pre class="agenda">' + data + "</pre>";
|
||||
} else if (t.indexOf("text/markdown") > -1) {
|
||||
data = "<pre class='agenda'>" + data + "</pre>";
|
||||
data = '<pre class="agenda">' + data + "</pre>";
|
||||
} else if(t.indexOf("text/html") > -1) {
|
||||
// nothing to do here
|
||||
} else {
|
||||
|
|
|
@ -124,7 +124,7 @@ function format_tooltip_notice(start, end) {
|
|||
// Format tooltip table
|
||||
function format_tooltip_table(start, end) {
|
||||
var current_timezone = get_current_tz_cb();
|
||||
var out = '<div class="text-start"><table class="table table-sm"><tr><th></th><th>Session start</th><th>Session end</th></tr>';
|
||||
var out = '<div class="text-start"><table class="table table-sm"><thead><tr><th scope="col"></th><th scope="col">Session start</th><th scope="col">Session end</th></tr></thead>';
|
||||
if (window.meeting_timezone !== "") {
|
||||
out += '<tr><th class="timehead">Meeting timezone</th><td>' +
|
||||
format_time(start, window.meeting_timezone, 0) + '</td><td>' +
|
||||
|
|
|
@ -182,7 +182,7 @@ $(function () {
|
|||
.attr("tabindex", 0)
|
||||
.after($(`
|
||||
<div class="col-xl-2 ps-0 small">
|
||||
<nav id="righthand-nav" class="position-fixed navbar navbar-light bg-light overflow-auto flex-fill" style="height: 70vh; width: inherit;">
|
||||
<nav id="righthand-nav" class="position-fixed navbar navbar-light bg-light overflow-auto flex-fill">
|
||||
</nav>
|
||||
</div>
|
||||
`))
|
||||
|
|
|
@ -64,7 +64,7 @@ var attachmentWidget = {
|
|||
} else {
|
||||
html += ' ' + field.val();
|
||||
}
|
||||
html += '<span style="display: none;" class="removeField">';
|
||||
html += '<span class="d-none removeField">';
|
||||
html += container.attr('id');
|
||||
html += '</span>';
|
||||
container.hide();
|
||||
|
|
|
@ -70,7 +70,7 @@ $(document)
|
|||
.addClass("sort");
|
||||
// $(header_row)
|
||||
// .children("th, td")
|
||||
// .wrapInner("<span class='tablesorter-th'></span>");
|
||||
// .wrapInner('<span class="tablesorter-th"></span>');
|
||||
// // .each((i, e) => field_magic(i, e, fields));
|
||||
|
||||
if ($(header_row)
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<img class="col-2 mb-5"
|
||||
src="{% static 'ietf/images/ietflogo.png' %}"
|
||||
alt="IETF">
|
||||
<div class='alert alert-warning my-3'>
|
||||
<h2>Authentication Required</h2>
|
||||
<div class="alert alert-warning my-3">
|
||||
<h1>Authentication Required</h1>
|
||||
<hr>
|
||||
<p>
|
||||
The server could not verify that you are authorized to view this page using
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<img class="col-2 mb-5"
|
||||
src="{% static 'ietf/images/ietflogo.png' %}"
|
||||
alt="IETF">
|
||||
<div class='alert alert-warning my-3'>
|
||||
<h2>Restricted Access</h2>
|
||||
<div class="alert alert-warning my-3">
|
||||
<h1>Restricted Access</h1>
|
||||
<hr>
|
||||
<p>
|
||||
{{ exception }}
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<img class="col-2 mb-5"
|
||||
src="{% static 'ietf/images/ietflogo.png' %}"
|
||||
alt="IETF">
|
||||
<div class='alert alert-warning my-3'>
|
||||
<h2>The page you were looking for couldn't be found</h2>
|
||||
<div class="alert alert-warning my-3">
|
||||
<h1>The page you were looking for couldn't be found</h1>
|
||||
<hr>
|
||||
<p>
|
||||
The requested URL was not found on this server. If you entered the URL
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<img class="col-2 mb-5"
|
||||
src="{% static 'ietf/images/ietflogo.png' %}"
|
||||
alt="IETF">
|
||||
<div class='alert alert-warning my-3'>
|
||||
<h2>Internal Server Error</h2>
|
||||
<div class="alert alert-warning my-3">
|
||||
<h1>Internal Server Error</h1>
|
||||
<hr>
|
||||
<p>
|
||||
The server encountered an internal error and was unable to complete
|
||||
|
|
|
@ -135,14 +135,8 @@ $ curl 'https://datatracker.ietf.org/api/v1/doc/document/?limit=0&name__cont
|
|||
A simplified Documents API, intended for cases where only a limited set of
|
||||
document attributes are necessary for an application is
|
||||
available for all documents at the relative url <code>doc.json</code>, e.g.,
|
||||
<code>{% url 'ietf.doc.views_doc.document_json' name='draft-ietf-poised95-std-proc-3' %}</code>
|
||||
<a href="{% url 'ietf.doc.views_doc.document_json' name='draft-ietf-poised95-std-proc-3' %}">
|
||||
<i class="bi bi-box-arrow-up-right"></i>
|
||||
</a>.
|
||||
You can also specify an RFC: <code>{% url 'ietf.doc.views_doc.document_json' name='rfc2026' %}</code>
|
||||
<a href="{% url 'ietf.doc.views_doc.document_json' name='rfc2026' %}">
|
||||
<i class="bi bi-box-arrow-up-right"></i>
|
||||
</a>.
|
||||
<code><a class="text-reset" href="{% url 'ietf.doc.views_doc.document_json' name='draft-ietf-poised95-std-proc-3' %}">{% url 'ietf.doc.views_doc.document_json' name='draft-ietf-poised95-std-proc-3' %}</a></code>.
|
||||
You can also specify an RFC: <code><a class="text-reset" href="{% url 'ietf.doc.views_doc.document_json' name='rfc2026' %}">{% url 'ietf.doc.views_doc.document_json' name='rfc2026' %}</a></code>.
|
||||
No API key is needed to access this.
|
||||
</p>
|
||||
<p>
|
||||
|
@ -255,9 +249,7 @@ $ curl -S -F "apikey=DgAAAMLSi3coaE5TjrRs518xO8eBRlCmFF3eQcC8_SjUTtRGLGiJh7-1SYP
|
|||
rather than having general access or requiring username/password
|
||||
login, see for example details for
|
||||
<code>{% url 'ietf.doc.views_ballot.api_set_position' %}</code>
|
||||
<a href="#iesg-position-api">
|
||||
above
|
||||
</a>.
|
||||
<a href="#iesg-position-api">above</a>.
|
||||
Personal API keys are available from your
|
||||
<a href="{% url 'ietf.ietfauth.views.apikey_index' %}">
|
||||
Account API Keys
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{# Copyright The IETF Trust 2015-2022, All Rights Reserved #}
|
||||
<!doctype html>
|
||||
<!DOCTYPE html>
|
||||
{% load ietf_filters static %}
|
||||
{% load origin %}
|
||||
{% origin %}
|
||||
|
@ -58,11 +58,13 @@
|
|||
</a>
|
||||
{% endif %}
|
||||
<div class="d-flex d-none d-lg-block">
|
||||
<label aria-label="Document search">
|
||||
<input class="form-control select2-field"
|
||||
id="navbar-doc-search"
|
||||
data-ajax--url="{% url 'ietf.doc.views_search.ajax_select2_search_docs' model_name='docalias' doc_type='draft' %}"
|
||||
type="text"
|
||||
data-placeholder="Document search">
|
||||
</label>
|
||||
</div>
|
||||
<button class="navbar-toggler"
|
||||
type="button"
|
||||
|
|
|
@ -154,7 +154,7 @@
|
|||
</li>
|
||||
{% endif %}
|
||||
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
||||
Review Teams
|
||||
Review Teams
|
||||
</li>
|
||||
{% for g in user|managed_review_groups %}
|
||||
<li>
|
||||
|
@ -171,7 +171,7 @@
|
|||
</li>
|
||||
{% endif %}
|
||||
<li {% if flavor == 'top' %}class="dropdown-header"{% else %}class="nav-item fw-bolder"{% endif %}>
|
||||
NomComs
|
||||
NomComs
|
||||
</li>
|
||||
{% for g in user|active_nomcoms %}
|
||||
<li>
|
||||
|
|
|
@ -224,4 +224,4 @@
|
|||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if flavor == "top" %}</ul>{% endif %}
|
||||
{% if flavor == "top" %}</ul></li>{% endif %}
|
||||
|
|
|
@ -27,8 +27,10 @@
|
|||
</p>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<th data-sort="doc">Document</th>
|
||||
<th>Manage</th>
|
||||
<tr>
|
||||
<th scope="col" data-sort="doc">Document</th>
|
||||
<th scope="col">Manage</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for d in individually_added %}
|
||||
|
@ -38,7 +40,7 @@
|
|||
<form method="post" id="remove_document_{{ d.pk }}">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="document" value="{{ d.pk }}">
|
||||
<button class="btn btn-danger btn-sm" name="action" value="remove_document">Remove</button>
|
||||
<button type="submit" class="btn btn-danger btn-sm" name="action" value="remove_document">Remove</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -78,10 +80,10 @@
|
|||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sort="rule">Rule</th>
|
||||
<th data-sort="value">Value</th>
|
||||
<th data-sort="num">Matching Documents</th>
|
||||
<th>Manage</th>
|
||||
<th scope="col" data-sort="rule">Rule</th>
|
||||
<th scope="col" data-sort="value">Value</th>
|
||||
<th scope="col" data-sort="num">Matching Documents</th>
|
||||
<th scope="col">Manage</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -104,7 +106,7 @@
|
|||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="rule" value="{{ rule.pk }}">
|
||||
<button class="btn btn-danger btn-sm" name="action" value="remove_rule">Remove</button>
|
||||
<button type="submit" class="btn btn-danger btn-sm" name="action" value="remove_rule">Remove</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -9,6 +9,6 @@
|
|||
<p>
|
||||
Add {{ name }} to the list?
|
||||
</p>
|
||||
<input type="submit" class="btn btn-primary" value="Track document">
|
||||
<button type="submit" class="btn btn-primary" value="Track document">Track document</button>
|
||||
</form>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -9,7 +9,9 @@
|
|||
<p>
|
||||
Remove {{ name }} from the list?
|
||||
</p>
|
||||
<input type="submit"
|
||||
<button type="submit"
|
||||
class="btn btn-primary"
|
||||
value="Remove tracking of document">
|
||||
</form>
|
||||
Remove tracking of document
|
||||
</button>
|
||||
</form>
|
||||
|
|
|
@ -15,13 +15,13 @@
|
|||
<table class="table table-sm tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sort="num">#</th>
|
||||
<th data-sort="query">SQL</th>
|
||||
<th data-sort="num">Count</th>
|
||||
<th data-sort="where">WHERE</th>
|
||||
<th data-sort="num">View/Templ.</th>
|
||||
<th data-sort="num">Time</th>
|
||||
<th data-sort="num">Acc.</th>
|
||||
<th scope="col" data-sort="num">#</th>
|
||||
<th scope="col" data-sort="query">SQL</th>
|
||||
<th scope="col" data-sort="num">Count</th>
|
||||
<th scope="col" data-sort="where">WHERE</th>
|
||||
<th scope="col" data-sort="num">View/Templ.</th>
|
||||
<th scope="col" data-sort="num">Time</th>
|
||||
<th scope="col" data-sort="num">Acc.</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -61,9 +61,9 @@
|
|||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>File (line)</th>
|
||||
<th>Method</th>
|
||||
<th>Code</th>
|
||||
<th scope="col">File (line)</th>
|
||||
<th scope="col">Method</th>
|
||||
<th scope="col">Code</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -103,7 +103,7 @@
|
|||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<small class='text-center text-muted'>
|
||||
<small class="text-center text-muted">
|
||||
Add <code>ietf.context_processors.sql_debug</code> to <code>settings.DEV_TEMPLATE_CONTEXT_PROCESSORS</code> to turn on the SQL statement table.
|
||||
</small>
|
||||
{% endif %}
|
||||
|
|
|
@ -14,11 +14,11 @@
|
|||
{% csrf_token %}
|
||||
<pre class="border p-3 mb-3">{{ announcement }}</pre>
|
||||
{% if action == "to_announcement_list" %}
|
||||
<button class="btn btn-primary" type="submit">Notify RFC Editor, send announcement & close ballot</button>
|
||||
<button class="btn btn-primary" type="submit">Notify RFC Editor, send announcement & close ballot</button>
|
||||
{% elif action == "to_rfc_editor" %}
|
||||
<button class="btn btn-primary" type="submit">Email RFC Editor & close ballot</button>
|
||||
<button class="btn btn-primary" type="submit">Email RFC Editor & close ballot</button>
|
||||
{% elif action == "do_not_publish" %}
|
||||
<button class="btn btn-primary" type="submit">Email RFC Editor (DNP) & close ballot"</button>
|
||||
<button class="btn btn-primary" type="submit">Email RFC Editor (DNP) & close ballot"</button>
|
||||
{% endif %}
|
||||
<a class="btn btn-secondary float-end"
|
||||
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue