test: Validate HTML rendered during tests (#3782)

This commit is contained in:
Lars Eggert 2022-04-07 19:30:38 +03:00 committed by GitHub
parent db254f7a48
commit 3234f1a121
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
333 changed files with 4120 additions and 4275 deletions

View file

@ -4,59 +4,38 @@
root = true root = true
# Settings for IETF datatracker # Global settings for IETF datatracker
# --------------------------------------------------------- # ---------------------------------------------------------
# PEP8 Style # PEP8 Style
[*] [*]
indent_style = space
indent_size = 4 indent_size = 4
end_of_line = lf
charset = utf-8 charset = utf-8
# to avoid tripping Henrik's commit hook: trim_trailing_whitespace = true
trim_trailing_whitespace = false insert_final_newline = true
insert_final_newline = false
# Specializations below *add to* the above defaults
# Settings for .github folder # Settings for .github folder
# --------------------------------------------------------- # ---------------------------------------------------------
# GitHub Markdown Style # GitHub Markdown Style
[.github/**] [.github/**]
indent_style = space
indent_size = 2 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 # Settings for client-side JS / Vue files
# --------------------------------------------------------- # ---------------------------------------------------------
# StandardJS Style # StandardJS Style
[client/**] [client/**]
indent_style = space
indent_size = 2 indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[package.json] [package.json]
indent_style = space
indent_size = 2 indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
# Settings for cypress tests # Settings for cypress tests
# --------------------------------------------------------- # ---------------------------------------------------------
# StandardJS Style # StandardJS Style
[cypress/**] [cypress/**]
indent_style = space
indent_size = 2 indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

2
.gitignore vendored
View file

@ -14,6 +14,8 @@
*.#* *.#*
.*.swp .*.swp
.DS_store .DS_store
datatracker.sublime-project
datatracker.sublime-workspace
# Simulated Subversion default ignores end here # Simulated Subversion default ignores end here
/.coverage /.coverage
/.factoryboy_random_state /.factoryboy_random_state

View file

@ -24,7 +24,6 @@ RUN apt-get install -qy \
build-essential \ build-essential \
curl \ curl \
docker-ce-cli \ docker-ce-cli \
default-jdk \
enscript \ enscript \
gawk \ gawk \
gcc \ gcc \
@ -46,7 +45,6 @@ RUN apt-get install -qy \
libxtst6 \ libxtst6 \
libmagic-dev \ libmagic-dev \
libmariadb-dev \ libmariadb-dev \
libtidy-dev \
locales \ locales \
mariadb-client \ mariadb-client \
netcat \ 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) # Turn off rsyslog kernel logging (doesn't work in Docker)
RUN sed -i '/imklog/s/^/#/' /etc/rsyslog.conf 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 # Fetch wait-for utility
ADD https://raw.githubusercontent.com/eficode/wait-for/v2.1.3/wait-for /usr/local/bin/ ADD https://raw.githubusercontent.com/eficode/wait-for/v2.1.3/wait-for /usr/local/bin/
RUN chmod +rx /usr/local/bin/wait-for RUN chmod +rx /usr/local/bin/wait-for

View file

@ -31,7 +31,6 @@ RUN apt-get install -qy \
bash \ bash \
build-essential \ build-essential \
curl \ curl \
default-jdk \
docker-ce-cli \ docker-ce-cli \
enscript \ enscript \
fish \ fish \
@ -56,7 +55,6 @@ RUN apt-get install -qy \
libmagic-dev \ libmagic-dev \
libmariadb-dev \ libmariadb-dev \
libmemcached-tools \ libmemcached-tools \
libtidy-dev \
locales \ locales \
mariadb-client \ mariadb-client \
memcached \ memcached \
@ -125,9 +123,6 @@ RUN sed -i '/imklog/s/^/#/' /etc/rsyslog.conf
# Colorize the bash shell # Colorize the bash shell
RUN sed -i 's/#force_color_prompt=/force_color_prompt=/' /root/.bashrc 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/ ADD https://raw.githubusercontent.com/eficode/wait-for/v2.1.3/wait-for /usr/local/bin/
RUN chmod +rx /usr/local/bin/wait-for RUN chmod +rx /usr/local/bin/wait-for

View file

@ -33,8 +33,8 @@
<h2>Template content</h2> <h2>Template content</h2>
<div class = "card"> <div class="card">
<p class='pasted'>{{ template.content }}</p> <p class="pasted">{{ template.content }}</p>
</div> </div>
{% endblock %} {% endblock %}

View file

@ -109,14 +109,15 @@ def ballot_icon(context, doc):
else: else:
typename = "IESG" 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, right_click_string,
urlreverse("ietf.doc.views_doc.ballot_popup", kwargs=dict(name=doc.name, ballot_id=ballot.pk)), urlreverse("ietf.doc.views_doc.ballot_popup", kwargs=dict(name=doc.name, ballot_id=ballot.pk)),
ballot.pk, ballot.pk,
typename,
typename,)] typename,)]
if my_blocking: if my_blocking:
res.append(' class="is-blocking" ') res.append(' class="is-blocking" ')
res.append('>') res.append('><tbody>')
res.append("<tr>") res.append("<tr>")
@ -137,7 +138,7 @@ def ballot_icon(context, doc):
res.append('<td class="position-empty"></td>') res.append('<td class="position-empty"></td>')
i = i + 1 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) 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)) return mark_safe("".join(res))

View file

@ -413,13 +413,13 @@ def format_snippet(text, trunc_words=25):
full = keep_spacing(collapsebr(linebreaksbr(mark_safe(sanitize_fragment(text))))) full = keep_spacing(collapsebr(linebreaksbr(mark_safe(sanitize_fragment(text)))))
snippet = truncatewords_html(full, trunc_words) snippet = truncatewords_html(full, trunc_words)
if snippet != full: 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) return mark_safe(full)
@register.simple_tag @register.simple_tag
def doc_edit_button(url_name, *args, **kwargs): 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.""" """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 @register.filter
def textify(text): def textify(text):

View file

@ -1595,7 +1595,7 @@ class DocTestCase(TestCase):
href = q(f'div.balloter-name a[href$="{author_slug}"]').attr('href') href = q(f'div.balloter-name a[href$="{author_slug}"]').attr('href')
ids = [ ids = [
target.attr('id') 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(len(ids), 1, 'Should be exactly one link for the balloter')
self.assertEqual(href, f'#{ids[0]}', 'Anchor href should match ID') self.assertEqual(href, f'#{ids[0]}', 'Anchor href should match ID')

View file

@ -1196,9 +1196,9 @@ class BallotContentTests(TestCase):
) )
def _assertBallotMessage(self, q, balloter, expected): 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) 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( self.assertEqual(
len(heading.next().find( len(heading.next().find(
f'*[title="{expected}"]' f'*[title="{expected}"]'

View file

@ -106,7 +106,7 @@ class ChangeStateTests(TestCase):
self.assertEqual(len(q('form select[name=state]')), 1) self.assertEqual(len(q('form select[name=state]')), 1)
if next_states: 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 # faulty post
@ -148,7 +148,7 @@ class ChangeStateTests(TestCase):
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
q = PyQuery(r.content) 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): def test_pull_from_rfc_queue(self):
ad = Person.objects.get(user__username="ad") ad = Person.objects.get(user__username="ad")
@ -1383,7 +1383,7 @@ class SubmitToIesgTests(TestCase):
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code,200) self.assertEqual(r.status_code,200)
q = PyQuery(r.content) 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)) url = urlreverse('ietf.doc.views_draft.to_iesg', kwargs=dict(name=self.docname))

View file

@ -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 login_testing_unauthorized, reload_db_objects
from ietf.utils.test_utils import TestCase from ietf.utils.test_utils import TestCase
from ietf.utils.text import strip_prefix, xslugify from ietf.utils.text import strip_prefix, xslugify
from django.utils.html import escape
class ReviewTests(TestCase): class ReviewTests(TestCase):
def setUp(self): def setUp(self):
@ -175,7 +176,7 @@ class ReviewTests(TestCase):
self.assertContains(r, review_req.team.name) self.assertContains(r, review_req.team.name)
try: try:
# FIXME-LARS # FIXME-LARS
self.assertContains(r, author.name) self.assertContains(r, escape(author.name))
except: except:
print(r.content) print(r.content)
self.assertContains(r, author.name) self.assertContains(r, author.name)

View file

@ -574,7 +574,7 @@ def lastcalltext(request, name):
e.save() e.save()
# make sure form has the updated text # 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") s = doc.get_state("draft-iesg")
@ -813,7 +813,7 @@ def ballot_approvaltext(request, name):
e.save() e.save()
# make sure form has the updated text # 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 can_announce = doc.get_state("draft-iesg").order > 19
need_intended_status = "" need_intended_status = ""

View file

@ -556,8 +556,8 @@ def review_announcement_text(request, name):
(existing, existing_new_work) = default_review_text(group, charter, by) (existing, existing_new_work) = default_review_text(group, charter, by)
existing.save() existing.save()
existing_new_work.save() existing_new_work.save()
form = ReviewAnnouncementTextForm(initial=dict(announcement_text=existing.text, form = ReviewAnnouncementTextForm(initial=dict(announcement_text=escape(existing.text),
new_work_text=existing_new_work.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_nw_only','send_both']) and form.is_valid():
if any(x in request.POST for x in ['send_annc_only','send_both']): 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: if "regenerate_text" in request.POST:
e = default_action_text(group, charter, by) e = default_action_text(group, charter, by)
e.save() 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(): if "send_text" in request.POST and form.is_valid():
parsed_msg = send_mail_preformatted(request, form.cleaned_data['announcement_text']) parsed_msg = send_mail_preformatted(request, form.cleaned_data['announcement_text'])

View file

@ -716,7 +716,7 @@ def last_call(request, name):
if "regenerate_last_call_text" in request.POST: if "regenerate_last_call_text" in request.POST:
e = generate_last_call_text(request,status_change) 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', return render(request, 'doc/status_change/last_call.html',
dict(doc=status_change, dict(doc=status_change,

View file

@ -1527,7 +1527,7 @@ class DatelessMilestoneTests(TestCase):
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
q = PyQuery(r.content) 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.rev='00-00'
ms.group.charter.save() ms.group.charter.save()

View file

@ -744,17 +744,17 @@ def login(request, extra_context=None):
logout(request) logout(request)
response = render(request, 'registration/missing_person.html') response = render(request, 'registration/missing_person.html')
if require_consent: if require_consent:
messages.warning(request, mark_safe(""" messages.warning(request, mark_safe('''
You have personal information associated with your account which is not You have personal information associated with your account which is not
derived from draft submissions or other ietf work, namely: %s. Please go 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' personal information, then scoll to the bottom and check the 'confirm'
checkbox and submit the form, in order to to indicate that that the checkbox and submit the form, in order to to indicate that that the
provided personal information may be used and displayed within the IETF provided personal information may be used and displayed within the IETF
datatracker. datatracker.
""" % ', '.join(require_consent))) ''' % ', '.join(require_consent)))
return response return response
@login_required @login_required

View file

@ -317,7 +317,7 @@ class LiaisonManagementTests(TestCase):
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
q = PyQuery(r.content) 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 # log in and get
self.client.login(username="secretary", password="secretary+password") self.client.login(username="secretary", password="secretary+password")
@ -325,13 +325,13 @@ class LiaisonManagementTests(TestCase):
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
q = PyQuery(r.content) 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 # mark action taken
r = self.client.post(url, dict(do_action_taken="1")) r = self.client.post(url, dict(do_action_taken="1"))
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
q = PyQuery(r.content) 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) liaison = LiaisonStatement.objects.get(id=liaison.id)
self.assertTrue(liaison.action_taken) self.assertTrue(liaison.action_taken)
@ -357,7 +357,7 @@ class LiaisonManagementTests(TestCase):
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
self.assertContains(r, liaison.title) self.assertContains(r, liaison.title)
q = PyQuery(r.content) 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 # check the detail page / authorized
self.client.login(username="ulm-liaiman", password="ulm-liaiman+password") 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 from ietf.liaisons.utils import can_edit_liaison
user = User.objects.get(username='ulm-liaiman') user = User.objects.get(username='ulm-liaiman')
self.assertTrue(can_edit_liaison(user, liaison)) 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 # approve
mailbox_before = len(outbox) mailbox_before = len(outbox)

View file

@ -18,21 +18,21 @@ class ButtonWidget(Widget):
super(ButtonWidget, self).__init__(*args, **kwargs) super(ButtonWidget, self).__init__(*args, **kwargs)
def render(self, name, value, **kwargs): def render(self, name, value, **kwargs):
html = '<span style="display: none;" class="showAttachsOn">%s</span>' % conditional_escape(self.show_on) html = '<span class="d-none 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 attachEnabledLabel">%s</span>' % conditional_escape(self.label)
if self.require: if self.require:
for i in 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) 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 += '<span class="d-none 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 += '<button type="button" class="addAttachmentWidget btn btn-primary btn-sm">%s</button>' % conditional_escape(self.label)
return mark_safe(html) return mark_safe(html)
class ShowAttachmentsWidget(Widget): class ShowAttachmentsWidget(Widget):
def render(self, name, value, **kwargs): def render(self, name, value, **kwargs):
html = '<div id="id_%s">' % name 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">' html += '<div class="attachedFiles form-control widget">'
if value and isinstance(value, QuerySet): if value and isinstance(value, QuerySet):
for attachment in value: for attachment in value:

View file

@ -3001,7 +3001,7 @@ def ajax_get_utc(request):
utc_day_offset = (naive_utc_dt.date() - dt.date()).days utc_day_offset = (naive_utc_dt.date() - dt.date()).days
html = "<span>{utc} UTC</span>".format(utc=utc) html = "<span>{utc} UTC</span>".format(utc=utc)
if utc_day_offset != 0: 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, context_data = {'timezone': timezone,
'time': time, 'time': time,
'utc': utc, 'utc': utc,

View file

@ -117,7 +117,7 @@ class SessionForm(forms.Form):
self._add_widget_class(constraint_field.widget, 'wg_constraint') self._add_widget_class(constraint_field.widget, 'wg_constraint')
selector_field = forms.ChoiceField(choices=group_acronym_choices, required=False) 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') self._add_widget_class(selector_field.widget, 'wg_constraint_selector')
cfield_id = 'constraint_{}'.format(constraintname.slug) cfield_id = 'constraint_{}'.format(constraintname.slug)
@ -150,7 +150,7 @@ class SessionForm(forms.Form):
field_id) 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') ] self.fields["resources"].choices = [(x.pk,x.desc) for x in ResourceAssociation.objects.filter(name__used=True).order_by('name__order') ]
if self.hidden: if self.hidden:

View file

@ -33,7 +33,7 @@ Subject: {{ message.subject }}
<div class="button-group"> <div class="button-group">
<ul id="announcement-button-list"> <ul id="announcement-button-list">
<li><button type="submit" name="submit" value="Send">Send</button></li> <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> <li><button type="submit" name="submit" value="Cancel">Cancel</button></li>
</ul> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->

View file

@ -13,18 +13,20 @@
<form method="post">{% csrf_token %} <form method="post">{% csrf_token %}
<table class="new-style full-width amstable" id="announce-table"> <table class="new-style full-width amstable" id="announce-table">
<tbody>
{% if form.non_field_errors %}{{ form.non_field_errors }}{% endif %} {% if form.non_field_errors %}{{ form.non_field_errors }}{% endif %}
{% for field in form.visible_fields %} {% for field in form.visible_fields %}
<tr> <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> <td>{{ field.errors }}{{ field }}{% if field.help_text %}<br>{{ field.help_text }}{% endif %}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody>
</table> </table>
<div class="button-group"> <div class="button-group">
<ul id="announcement-button-list"> <ul id="announcement-button-list">
<li><button type="submit" name="submit" value="Continue">Continue</button></li> <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> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->

View file

@ -17,9 +17,9 @@
<table id="areas-list-table" class="full-width"> <table id="areas-list-table" class="full-width">
<thead> <thead>
<tr> <tr>
<th>Name</th> <th scope="col">Name</th>
<th>Acronym</th> <th scope="col">Acronym</th>
<th>Status</th> <th scope="col">Status</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>

View file

@ -3,7 +3,7 @@
{% block title %}Areas - People{% endblock %} {% block title %}Areas - People{% endblock %}
{% block extrahead %}{{ block.super }} {% 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 'ietf/js/jquery-ui.js' %}"></script>
<script src="{% static 'secr/js/utils.js' %}"></script> <script src="{% static 'secr/js/utils.js' %}"></script>
{% endblock %} {% endblock %}
@ -21,15 +21,15 @@
<table class="center"> <table class="center">
{% for director in directors %} {% for director in directors %}
<form action="modify/" method="post">{% csrf_token %} <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> <tr>
<td id="id-ad-name"><a href="#">{{ director.person.name }}</a></td> <td id="id-ad-name"><a href="#">{{ director.person.name }}</a></td>
<td>{% if director.name.slug == "ad" %} <td>{% if director.name.slug == "ad" %}
Voting Enabled Voting Enabled
{% else %} {% else %}
<input type="submit" name="submit" value="Enable Voting" /></td> <button type="submit" name="submit">Enable Voting</button></td>
{% endif %} {% endif %}
<td><input type="submit" name="submit" value="Retire" /></td> <td><button type="submit" name="submit">Retire</button></td>
</tr> </tr>
</form> </form>
{% endfor %} {% endfor %}
@ -40,18 +40,21 @@
<p> <p>
<form action="." method="post">{% csrf_token %} <form action="." method="post">{% csrf_token %}
<table class="center"> <table class="center">
<tbody>
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ form.as_table }} {{ form.as_table }}
<tr> <tr>
<td></td> <td></td>
<td><input type="submit" name="submit" value="Add" /></td> <td><button type="submit" name="submit">Add</button></td>
</tr> </tr>
</tbody>
</table> </table>
</form> </form>
</div> <!-- iniline-related --> </div> <!-- iniline-related -->
<div class="button-group"> <div class="button-group">
<ul> <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> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->
</div> <!-- module --> </div> <!-- module -->

View file

@ -16,7 +16,7 @@
<div class="module"> <div class="module">
<h2>Area - View</h2> <h2>Area - View</h2>
<table class="full-width"> <table class="full-width">
<tbody>
<tr><td>Area Acronym:</td><td>{{ area.acronym }}</td></tr> <tr><td>Area Acronym:</td><td>{{ area.acronym }}</td></tr>
<tr><td>Area Name:</td><td>{{ area.name }}</td></tr> <tr><td>Area Name:</td><td>{{ area.name }}</td></tr>
<tr><td>Status:</td><td>{{ area.state }}</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>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>Last Modified Date:</td><td>{{ area.time|date:"Y-m-d" }}</td></tr>
<tr><td>Comments:</td><td>{{ area.comments}}</td></tr> <tr><td>Comments:</td><td>{{ area.comments}}</td></tr>
</tbody>
</table> </table>
<div class="inline-related"> <div class="inline-related">
<h2>Directors</h2> <h2>Directors</h2>
<table class="full-width"> <table class="full-width">
<tbody>
{% for director in directors %} {% 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> <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 %} {% endfor %}
</tbody>
</table> </table>
</div> <!-- inline-group --> </div> <!-- inline-group -->
<div class="button-group"> <div class="button-group">
<ul> <ul>
<!-- <li><button onclick="window.location='../../'">Back</button></li> --> <!-- <li><button type="button" onclick="window.location='../../'">Back</button></li> -->
<li><button onclick="window.location='edit/'">Edit</button></li> <li><button type="button" onclick="window.location='edit/'">Edit</button></li>
<li><button onclick="window.location='people/'">People</button></li> <li><button type="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='{% url 'ietf.secr.groups.views.search' %}?primary_area={{ area.id }}'">Groups</button></li>
</ul> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->
</div> <!-- module --> </div> <!-- module -->

View file

@ -1,18 +1,18 @@
<!doctype html> <!DOCTYPE html>
{% load staticfiles %} {% load staticfiles %}
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"/> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% block title %}{% endblock %}</title> <title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" href="{% block stylesheet %}{% static 'secr/css/base.css' %}{% endblock %}" /> <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/forms.css' %}">
<link rel="stylesheet" href="{% static 'secr/css/custom.css' %}" /> <link rel="stylesheet" href="{% static 'secr/css/custom.css' %}">
<link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}"> <link rel="stylesheet" href="{% static 'ietf/css/ietf.css' %}">
{% if not server_mode == "production" %} {% if not server_mode == "production" %}
<link rel="stylesheet" href="{% static 'secr/css/test.css' %}" /> <link rel="stylesheet" href="{% static 'secr/css/test.css' %}">
{% endif %} {% endif %}
{% block extrastyle %}{% endblock %} {% block extrastyle %}{% endblock %}
@ -20,7 +20,7 @@
<script src="{% static 'ietf/js/ietf.js' %}"></script> <script src="{% static 'ietf/js/ietf.js' %}"></script>
{% endblock %} {% endblock %}
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %} {% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE">{% endblock %}
</head> </head>
<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}"> <body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}">
@ -41,6 +41,7 @@
<!-- Breadcrumbs --> <!-- Breadcrumbs -->
<div class="breadcrumbs"> <div class="breadcrumbs">
<table> <table>
<tbody>
<tr> <tr>
<td class="text-start"> <td class="text-start">
{% block breadcrumbs %}<a href="/secr/">Home</a>{% endblock %} {% block breadcrumbs %}<a href="/secr/">Home</a>{% endblock %}
@ -49,6 +50,7 @@
{% block instructions %}{% endblock %} {% block instructions %}{% endblock %}
</td> </td>
</tr> </tr>
</tbody>
</table> </table>
</div> </div>
<!-- END Breadcrumbs --> <!-- END Breadcrumbs -->
@ -65,6 +67,7 @@
<!-- Content --> <!-- Content -->
<div id="content" class="{% block coltype %}colM{% endblock %}"> <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 pretitle %}{% endblock %}
{% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %} {% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %}
{% block content %} {% block content %}
@ -72,7 +75,7 @@
{{ content }} {{ content }}
{% endblock %} {% endblock %}
{% block sidebar %}{% endblock %} {% block sidebar %}{% endblock %}
<br class="clear" /> <br class="clear">
</div> </div>
<!-- END Content --> <!-- END Content -->

View file

@ -1,17 +1,17 @@
<!doctype html> <!DOCTYPE html>
{% load staticfiles %} {% load staticfiles %}
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"/> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% block title %}{% endblock %}</title> <title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" href="{% static 'ietf/css/ietf.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="{% block stylesheet %}{% static 'secr/css/base.css' %}{% endblock %}">
<link rel="stylesheet" href="{% static 'secr/css/forms.css' %}" /> <link rel="stylesheet" href="{% static 'secr/css/forms.css' %}">
<link rel="stylesheet" href="{% static 'secr/css/custom.css' %}" /> <link rel="stylesheet" href="{% static 'secr/css/custom.css' %}">
{% if not server_mode == "production" %} {% if not server_mode == "production" %}
<link rel="stylesheet" href="{% static 'secr/css/test.css' %}" /> <link rel="stylesheet" href="{% static 'secr/css/test.css' %}">
{% endif %} {% endif %}
{% block extrastyle %}{% endblock %} {% block extrastyle %}{% endblock %}
@ -19,7 +19,7 @@
<script src="{% static 'ietf/js/ietf.js' %}"></script> <script src="{% static 'ietf/js/ietf.js' %}"></script>
{% endblock %} {% endblock %}
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %} {% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE">{% endblock %}
</head> </head>
<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}"> <body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}">
@ -40,6 +40,7 @@
<!-- Breadcrumbs --> <!-- Breadcrumbs -->
<div class="breadcrumbs"> <div class="breadcrumbs">
<table> <table>
<tbody>
<tr> <tr>
<td class="text-start"> <td class="text-start">
{% block breadcrumbs %}<a href="/secr/">Home</a>{% endblock %} {% block breadcrumbs %}<a href="/secr/">Home</a>{% endblock %}
@ -48,6 +49,7 @@
{% block instructions %}{% endblock %} {% block instructions %}{% endblock %}
</td> </td>
</tr> </tr>
</tbody>
</table> </table>
</div> </div>
<!-- END Breadcrumbs --> <!-- END Breadcrumbs -->
@ -64,6 +66,7 @@
<!-- Content --> <!-- Content -->
<div id="content" class="{% block coltype %}colM{% endblock %}"> <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 pretitle %}{% endblock %}
{% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %} {% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %}
{% block content %} {% block content %}
@ -71,7 +74,7 @@
{{ content }} {{ content }}
{% endblock %} {% endblock %}
{% block sidebar %}{% endblock %} {% block sidebar %}{% endblock %}
<br class="clear" /> <br class="clear">
</div> </div>
<!-- END Content --> <!-- END Content -->

View file

@ -7,6 +7,7 @@
{% block branding %} {% block branding %}
<table> <table>
<tbody>
<tr> <tr>
<td class="text-start"> <td class="text-start">
<h1 id="site-name">{% if user|has_role:"Secretariat" %} Secretariat Dashboard {% else %} IETF Dashboard {% endif %}</h1> <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> <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> </td>
</tr> </tr>
</tbody>
</table> </table>
{% endblock %} {% endblock %}
@ -31,7 +33,7 @@
</div> </div>
<div id="footer-logo"> <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>
</div> </div>
{% endblock %} {% endblock %}

View file

@ -7,6 +7,7 @@
{% block branding %} {% block branding %}
<table> <table>
<tbody>
<tr> <tr>
<td class="text-start"> <td class="text-start">
<h1 id="site-name">{% if user|has_role:"Secretariat" %} Secretariat Dashboard {% else %} WG Chair Dashboard {% endif %}</h1> <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> <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> </td>
</tr> </tr>
</tbody>
</table> </table>
{% endblock %} {% endblock %}
@ -31,7 +33,7 @@
</div> </div>
<div id="footer-logo"> <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>
</div> </div>
{% endblock %} {% endblock %}

View file

@ -16,7 +16,7 @@
<div> <div>
<p> <p>
<input type="hidden" name="post" value="yes"> <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> <a href="#" onclick="history.go(-1);return false;" class="button cancel-link">Take me back</a>
</p> </p>
</div> </div>

View file

@ -16,7 +16,7 @@
<div> <div>
<p> <p>
<input type="hidden" name="post" value="yes"> <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> <a href="#" onclick="history.go(-1);return false;" class="button cancel-link">Take me back</a>
</p> </p>
</div> </div>

View file

@ -12,7 +12,9 @@
<h2>Console</h2> <h2>Console</h2>
<table class="full-width amstable" id="announce-table"> <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> </table>
</div> <!-- module --> </div> <!-- module -->

View file

@ -4,7 +4,7 @@
{% block title %}Groups - People{% endblock %} {% block title %}Groups - People{% endblock %}
{% block extrahead %}{{ block.super }} {% 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 'ietf/js/jquery-ui.js' %}"></script>
<script src="{% static 'secr/js/utils.js' %}"></script> <script src="{% static 'secr/js/utils.js' %}"></script>
{% endblock %} {% endblock %}
@ -22,10 +22,10 @@
<table class="full-width"> <table class="full-width">
<thead> <thead>
<tr> <tr>
<th>Role</th> <th scope="col">Role</th>
<th>Name</th> <th scope="col">Name</th>
<th>Email</th> <th scope="col">Email</th>
<th>Action</th> <th scope="col">Action</th>
</tr> </tr>
</thead> </thead>
{% if group.role_set.all %} {% if group.role_set.all %}
@ -49,19 +49,21 @@
{{ form.non_field_errors }} {{ form.non_field_errors }}
{{ form.group_acronym }} {{ form.group_acronym }}
<table class="full-width"> <table class="full-width">
<tbody>
<tr> <tr>
<td>{{ form.name.errors }}{{ form.name }}</td> <td>{{ form.name.errors }}<label for="{{ form.name.id_for_label }}" aria-label="Name"></label>{{ form.name }}</td>
<td>{{ form.person.errors }}{{ form.person }}{% if form.person.help_text %}<br>{{ form.person.help_text }}{% endif %}</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 }}{{ form.email }}{% if form.email.help_text %}<br>{{ form.email.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><input type="submit" name="submit" value="Add" /></td> <td><button type="submit" name="submit">Add</button></td>
</tr> </tr>
</tbody>
</table> </table>
</form> </form>
</div> <!-- inline-related --> </div> <!-- inline-related -->
<div class="button-group"> <div class="button-group">
<ul> <ul>
<li><button onclick="window.location='../'">Back</button></li> <li><button type="button" onclick="window.location='../'">Back</button></li>
</ul> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->

View file

@ -19,7 +19,10 @@
<h2>Groups - Search</h2> <h2>Groups - Search</h2>
<form enctype="multipart/form-data" method="post">{% csrf_token %} <form enctype="multipart/form-data" method="post">{% csrf_token %}
<table class="full-width amstable"> <table class="full-width amstable">
<tbody>
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ form.as_table }} {{ form.as_table }}
</tbody>
</table> </table>
{% include "includes/buttons_search.html" %} {% include "includes/buttons_search.html" %}

View file

@ -18,7 +18,7 @@
<div id="groups-view-col1"> <div id="groups-view-col1">
<h2>Groups - View</h2> <h2>Groups - View</h2>
<table > <table >
<tbody>
<tr><td>Group Acronym:</td><td>{{ group.acronym }}</td></tr> <tr><td>Group Acronym:</td><td>{{ group.acronym }}</td></tr>
<tr><td>Group Name:</td><td>{{ group.name }}</td></tr> <tr><td>Group Name:</td><td>{{ group.name }}</td></tr>
<tr><td>Status:</td><td>{{ group.state }}</td></tr> <tr><td>Status:</td><td>{{ group.state }}</td></tr>
@ -56,6 +56,7 @@
{% endif %} {% endif %}
<tr><td>Comments:</td><td>{{ group.comments }}</td></tr> <tr><td>Comments:</td><td>{{ group.comments }}</td></tr>
<tr><td>Last Modified Date:</td><td>{{ group.time }}</td></tr> <tr><td>Last Modified Date:</td><td>{{ group.time }}</td></tr>
</tbody>
</table> </table>
@ -109,11 +110,11 @@
<div class="button-group"> <div class="button-group">
<ul> <ul>
<li><button onclick="window.location='edit/'">Edit</button></li> <li><button type="button" onclick="window.location='edit/'">Edit</button></li>
<li><button onclick="window.location='people/'">People</button></li> <li><button type="button" onclick="window.location='people/'">People</button></li>
{% comment %} {% comment %}
<li><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.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.rfcs.views.search" id=group.group_acronym.acronym_id %}'">RFCs</button></li>
{% endcomment %} {% endcomment %}
</ul> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->

View file

@ -3,10 +3,10 @@
<table class="full-width"> <table class="full-width">
<thead> <thead>
<tr> <tr>
<th>Date</th> <th scope="col">Date</th>
<th>Time</th> <th scope="col">Time</th>
<th>Action</th> <th scope="col">Action</th>
<th>Name</th> <th scope="col">Name</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>

View file

@ -1,5 +1,5 @@
<div class="button-group"> <div class="button-group">
<ul> <ul>
<li><button onclick="window.location='../'">Back</button></li> <li><button type="button" onclick="window.location='../'">Back</button></li>
</ul> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->

View file

@ -1,11 +1,11 @@
<table id="group-search-results" class="center" cellspacing="0"> <table id="group-search-results" class="center" cellspacing="0">
<thead> <thead>
<tr> <tr>
<th>Group Name</th> <th scope="col">Group Name</th>
<th>Group Acronym</th> <th scope="col">Group Acronym</th>
<th>Status</th> <th scope="col">Status</th>
<th>Type</th> <th scope="col">Type</th>
<th>Meeting Scheduled</th> <th scope="col">Meeting Scheduled</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>

View file

@ -2,12 +2,12 @@
<p>Use this to process meeting materials files that have been converted to PDF and uploaded to the server.</p> <p>Use this to process meeting materials files that have been converted to PDF and uploaded to the server.</p>
<ul class="none"> <ul class="none">
<li> <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>
&nbsp;&nbsp;<span class="{% if ppt_count > 0 %}alert{% endif %}">{{ ppt_count }} PowerPoint files waiting to be converted</span> &nbsp;&nbsp;<span class="{% if ppt_count > 0 %}alert{% endif %}">{{ ppt_count }} PowerPoint files waiting to be converted</span>
</li> </li>
</ul> </ul>
<p>Use this to input session recording information.</p> <p>Use this to input session recording information.</p>
<ul class="none"> <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> </li>
</ul> </ul>

View file

@ -1,9 +1,9 @@
<table class="full-width"> <table class="full-width">
<thead> <thead>
<tr> <tr>
<th>Name</th> <th scope="col">Name</th>
<th>Email</th> <th scope="col">Email</th>
<th>ID</th> <th scope="col">ID</th>
</tr> </tr>
</thead> </thead>
{% if results %} {% if results %}

View file

@ -5,7 +5,7 @@
{{ form.non_field_errors }} {{ form.non_field_errors }}
{% endif %} {% endif %}
<table id="sessions-new-table"> <table id="sessions-new-table">
<tbody>
<tr class="bg1"><td>Working Group Name:</td><td>{{ group.name }} ({{ group.acronym }})</td></tr> <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="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> <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> <tr class="bg1"><td>Conflicts to Avoid:</td>
<td> <td>
<table> <table>
<tbody>
<tr> <tr>
<td colspan="2">Other WGs that included {{ group.name }} in their conflict lists:</td> <td colspan="2">Other WGs that included {{ group.name }} in their conflict lists:</td>
<td>{{ session_conflicts.inbound|default:"None" }}</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 %} {% 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>{{ cname|title }}</td>
<td>{{ cselector }} <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 }} {{ cfield.errors }}{{ cfield }}
</td> </td>
</tr> </tr>
@ -64,6 +65,7 @@
<td colspan="2">BOF Sessions:</td> <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> <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> </tr>
</tbody>
</table> </table>
</td> </td>
</tr> </tr>
@ -77,22 +79,23 @@
</tr> </tr>
<tr class="bg1"> <tr class="bg1">
<td>Times during which this WG can <strong>not</strong> meet:</td> <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> <td>{{ form.timeranges.errors }}{{ form.timeranges }}</td>
</tr> </tr>
<tr class="bg2"> <tr class="bg2">
<td> <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.) (Immediately before or after another WG, no break in between, in the same room.)
</td> </td>
<td>{{ form.adjacent_with_wg.errors }}{{ form.adjacent_with_wg }}</td> <td>{{ form.adjacent_with_wg.errors }}{{ form.adjacent_with_wg }}</td>
</tr> </tr>
<tr class="bg1"> <tr class="bg1">
<td> <td>
Joint session with:<br /> Joint session with:<br>
(To request one session for multiple WGs together.) (To request one session for multiple WGs together.)
</td> </td>
<td>{{ form.joint_with_groups_selector }} <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 }} {{ form.joint_with_groups.errors }}{{ form.joint_with_groups }}
</td> </td>
</tr> </tr>
@ -106,9 +109,10 @@
{% endif %} {% endif %}
<tr class="bg2"> <tr class="bg2">
<td>Special Requests:<br />&nbsp;<br />i.e. restrictions on meeting times / days, etc.<br /> (limit 200 characters)</td> <td>Special Requests:<br>&nbsp;<br>i.e. restrictions on meeting times / days, etc.<br> (limit 200 characters)</td>
<td>{{ form.comments.errors }}{{ form.comments }}</td> <td>{{ form.comments.errors }}{{ form.comments }}</td>
</tr> </tr>
</tbody>
</table> </table>
<div class="button-group"> <div class="button-group">

View file

@ -1,6 +1,6 @@
{% load ams_filters %} {% load ams_filters %}
<table class="full-width"> <table class="full-width">
<tbody>
<tr class="row1"><td>Working Group Name:</td><td>{{ group.name }} ({{ group.acronym }})</td></tr> <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="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> <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> <td>
{% if session_conflicts.outbound %} {% if session_conflicts.outbound %}
<table> <table>
<tbody>
{% for conflict in session_conflicts.outbound %} {% for conflict in session_conflicts.outbound %}
<tr><td>{{ conflict.name|title }}: </td><td>{{ conflict.groups }}</td></tr> <tr><td>{{ conflict.name|title }}: </td><td>{{ conflict.groups }}</td></tr>
{% endfor %} {% endfor %}
</tbody>
</table> </table>
{% else %}<i>None</i>{% endif %} {% else %}<i>None</i>{% endif %}
</td> </td>
@ -57,4 +59,5 @@
</tr> </tr>
{% endif %} {% endif %}
<tr class="row1"><td>Special Requests:</td><td>{{ session.comments }}</td></tr> <tr class="row1"><td>Special Requests:</td><td>{{ session.comments }}</td></tr>
</tbody>
</table> </table>

View file

@ -2,5 +2,5 @@
<li><a href="https://www.ietf.org/instructions/meeting_materials_tool.html" target="_blank">Instructions</a>.</li> <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>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>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 %} <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> </ul>

View file

@ -7,9 +7,10 @@
{% if user|has_role:"Secretariat" %} {% if user|has_role:"Secretariat" %}
<table class="menu"> <table class="menu">
<tbody>
<tr> <tr>
<td> <td>
<h3>IESG</h3> <h2>IESG</h2>
<ul> <ul>
<li> <a href="{% url 'ietf.secr.announcement.views.main' %}"><b>Announcement</b></a></li> <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> <li> <a href="{% url 'ietf.secr.telechat.views.main' %}"><b>Telechat</b></a></li>
@ -17,7 +18,7 @@
</ul> </ul>
</td> </td>
<td> <td>
<h3>IDs and WGs Process</h3> <h2>IDs and WGs Process</h2>
<ul> <ul>
<li> <a href="{% url "ietf.secr.areas.views.list_areas" %}"><b>Areas</b></a></li> <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> <li> <a href="{% url 'ietf.secr.groups.views.search' %}"><b>Groups</b></a></li>
@ -28,7 +29,7 @@
</tr> </tr>
<tr> <tr>
<td> <td>
<h3>Meetings and Proceedings</h3> <h2>Meetings and Proceedings</h2>
<ul> <ul>
<li> <a href="{% url "ietf.secr.sreq.views.main" %}"><b>Session Requests</b></a></li> <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> <li> <a href="{% url 'ietf.secr.proceedings.views.main' %}"><b>Meeting Materials Manager (Proceedings)</b></a></li>
@ -37,20 +38,22 @@
</ul> </ul>
</td> </td>
<td> <td>
<h3>IPR</h3> <h2>IPR</h2>
<ul> <ul>
<li> <a href="{% url 'ietf.ipr.views.admin' state='pending' %}"><b>IPR Admin</b></a></li> <li> <a href="{% url 'ietf.ipr.views.admin' state='pending' %}"><b>IPR Admin</b></a></li>
</ul> </ul>
</td> </td>
</tr> </tr>
</tbody>
</table> </table>
{% else %} {% else %}
<table class="menu"> <table class="menu">
<tbody>
<tr> <tr>
<td> <td>
<h3>Section 1</h3> <h2>Section 1</h2>
<ul> <ul>
<li> <a href="{% url "ietf.secr.sreq.views.main" %}"><b>Session Requests</b></a></li> <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> <li> <a href="{% url 'ietf.secr.proceedings.views.main' %}"><b>Meeting Material Manager</b></a></li>
@ -58,17 +61,18 @@
</ul> </ul>
</td> </td>
<td> <td>
<h3>Section 2</h3> <h2>Section 2</h2>
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td>
<h3>Section 3</h3> <h2>Section 3</h2>
</td> </td>
<td> <td>
<h3>Section 4</h3> <h2>Section 4</h2>
</td> </td>
</tr> </tr>
</tbody>
</table> </table>
{% endif %} {% endif %}

View file

@ -18,7 +18,10 @@
<h2>Proceedings - Add</h2> <h2>Proceedings - Add</h2>
<form id="proceedings-add-form" enctype="multipart/form-data" method="post">{% csrf_token %} <form id="proceedings-add-form" enctype="multipart/form-data" method="post">{% csrf_token %}
<table id="proceedings-add-table"> <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 }} {{ form.as_table }}
</tbody>
</table> </table>
{% include "includes/buttons_save_cancel.html"%} {% include "includes/buttons_save_cancel.html"%}
</form> </form>

View file

@ -4,7 +4,7 @@
{% block title %}Meetings{% endblock %} {% block title %}Meetings{% endblock %}
{% block extrahead %}{{ block.super }} {% 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 'ietf/js/jquery-ui.js' %}"></script>
<script src="{% static 'secr/js/utils.js' %}"></script> <script src="{% static 'secr/js/utils.js' %}"></script>
<script src="{% static 'secr/js/dynamic_inlines.js' %}"></script> <script src="{% static 'secr/js/dynamic_inlines.js' %}"></script>

View file

@ -21,8 +21,8 @@
<p>Use this to generate blue sheets for meeting sessions.</p> <p>Use this to generate blue sheets for meeting sessions.</p>
<ul class="none"> <ul class="none">
<li> <li>
<form style="display:inline" method="post" action="{% url "ietf.secr.meetings.views.blue_sheet_generate" meeting_id=meeting.number%}">{% csrf_token %} <form class="d-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"> <button type="submit">Generate Blue Sheets</button>
</form> </form>
&nbsp;&nbsp;Last run: &nbsp;&nbsp;Last run:
{% if last_run %} {% if last_run %}
@ -35,15 +35,14 @@
<p>Use this to download the blue sheets from the server.</p> <p>Use this to download the blue sheets from the server.</p>
<ul class="none"> <ul class="none">
<li> <li>
<button onclick="window.location='{{ url }}'">Download Blue Sheets</button> <button type="button" onclick="window.location='{{ url }}'">Download Blue Sheets</button>
</li> </li>
</ul> </ul>
<hr /> <hr>
<p> <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>. 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> </p>
</div> <!-- module --> </div> <!-- module -->
{% endblock %} {% endblock %}

View file

@ -19,7 +19,10 @@
<form action="." method="post">{% csrf_token %} <form action="." method="post">{% csrf_token %}
<h2>Meetings - Edit</h2> <h2>Meetings - Edit</h2>
<table id="proceedings-edit-table"> <table id="proceedings-edit-table">
<tbody>
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ form.as_table }} {{ form.as_table }}
</tbody>
</table> </table>
{% include "includes/buttons_save_cancel.html"%} {% include "includes/buttons_save_cancel.html"%}
@ -28,4 +31,3 @@
</div> <!-- module --> </div> <!-- module -->
{% endblock %} {% endblock %}

View file

@ -29,9 +29,12 @@
<br> <br>
<form method="post">{% csrf_token %} <form method="post">{% csrf_token %}
<table> <table>
{{ form }} <tbody>
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ form.as_table }}
</tbody>
</table> </table>
<input type="submit" value="Select" /> <button type="submit">Select</button>
</form> </form>
</div> <!-- inline-related --> </div> <!-- inline-related -->
</div> <!-- module --> </div> <!-- module -->

View file

@ -7,7 +7,10 @@
<h3>Session: {{ slot.name }}</h3> <h3>Session: {{ slot.name }}</h3>
<form id="misc-session-edit-form" enctype="multipart/form-data" action="." method="post">{% csrf_token %} <form id="misc-session-edit-form" enctype="multipart/form-data" action="." method="post">{% csrf_token %}
<table class="full-width amstable"> <table class="full-width amstable">
<tbody>
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ form.as_table }} {{ form.as_table }}
</tbody>
</table> </table>
<div class="button-group"> <div class="button-group">

View file

@ -9,17 +9,17 @@
<table id="misc-sessions" class="full-width"> <table id="misc-sessions" class="full-width">
<thead> <thead>
<tr> <tr>
<th>Day</th> <th scope="col">Day</th>
<th>Time</th> <th scope="col">Time</th>
<th>Name</th> <th scope="col">Name</th>
<th>Short Name</th> <th scope="col">Short Name</th>
<th>Group</th> <th scope="col">Group</th>
<th>Location</th> <th scope="col">Location</th>
<th>Show Loc.</th> <th scope="col">Show Loc.</th>
<th>Type</th> <th scope="col">Type</th>
<th></th> <th scope="col"></th>
<th></th> <th scope="col"></th>
<th></th> <th scope="col"></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -51,21 +51,23 @@
{% else %} {% else %}
<h3>No timeslots exist for this meeting. Add rooms with the "duplicate timeslots" option enabled to copy timeslots from the last meeting.</h3> <h3>No timeslots exist for this meeting. Add rooms with the "duplicate timeslots" option enabled to copy timeslots from the last meeting.</h3>
{% endif %} {% endif %}
<br /><hr /> <br><hr>
<div> <div>
<form id="timeslot-form" method="post">{% csrf_token %} <form id="timeslot-form" method="post">{% csrf_token %}
<table class="full-width amstable"> <table class="full-width amstable">
<tbody>
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ form.as_table }} {{ 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> </table>
</form> </form>
</div> </div>
<div class="button-group"> <div class="button-group">
<ul> <ul>
<li><button onclick="window.location='../'">Back</button></li> <li><button type="button" onclick="window.location='../'">Back</button></li>
</ul> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->

View file

@ -19,8 +19,8 @@
<h2>IETF {{ meeting.number }} - Send Notifications</h2> <h2>IETF {{ meeting.number }} - Send Notifications</h2>
<form id="id_notification_form" action="." method="post">{% csrf_token %} <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>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> <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?');"> <button type="submit" name="submit" onclick="return window.confirm('Are you sure you want to send notifications?');">Send Now</button>
</form> </form>
{% include "includes/buttons_back.html" %} {% include "includes/buttons_back.html" %}
@ -28,26 +28,3 @@
</div> <!-- module --> </div> <!-- module -->
{% endblock %} {% endblock %}

View file

@ -20,24 +20,26 @@
<form id="meetings-schedule-form" method="post">{% csrf_token %} <form id="meetings-schedule-form" method="post">{% csrf_token %}
<div class="inline-related{% if forloop.last %} last-related{% endif %}"> <div class="inline-related{% if forloop.last %} last-related{% endif %}">
<table class="full-width amstable"> <table class="full-width amstable">
<tbody>
<tr> <tr>
<th>Day:</th> <th scope="row">Day:</th>
<td>{% if timeslot %}{{ timeslot.time|date:"l" }}{% endif %}</td> <td>{% if timeslot %}{{ timeslot.time|date:"l" }}{% endif %}</td>
</tr> </tr>
<tr> <tr>
<th>Time:</th> <th scope="row">Time:</th>
<td>{% if timeslot %}{{ timeslot.time|time:"H:i" }}{% endif %}</td> <td>{% if timeslot %}{{ timeslot.time|time:"H:i" }}{% endif %}</td>
</tr> </tr>
<tr> <tr>
<th>Room:</th> <th scope="row">Room:</th>
<td>{% if timeslot %}{{ timeslot.location.name }}{% endif %}</td> <td>{% if timeslot %}{{ timeslot.location.name }}{% endif %}</td>
</tr> </tr>
<tr> <tr>
<th>Status:</th> <th scope="row">Status:</th>
<td>{{ current_status_name }}</td> <td>{{ current_status_name }}</td>
</tr> </tr>
{{ form }} <!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ form.as_table }}
</tbody>
</table> </table>
</div> <!-- inline-related --> </div> <!-- inline-related -->

View file

@ -8,6 +8,7 @@
<div class="inline-group"> <div class="inline-group">
<div class="tabular inline-related"> <div class="tabular inline-related">
<!-- [html-validate-disable-block wcag/h32 -- FIXME: no submit button] -->
<form id="meetings-meta-rooms" method="post">{% csrf_token %} <form id="meetings-meta-rooms" method="post">{% csrf_token %}
{{ formset.management_form }} {{ formset.management_form }}
{{ formset.non_form_errors }} {{ formset.non_form_errors }}
@ -16,9 +17,9 @@
<table id="id_rooms_table" class="full-width"> <table id="id_rooms_table" class="full-width">
<thead> <thead>
<tr> <tr>
<th></th> <th scope="col"></th>
{% for field in formset.forms.0.visible_fields %} {% for field in formset.forms.0.visible_fields %}
<th>{{ field.label|capfirst }}</th> <th scope="col">{{ field.label|capfirst }}</th>
{% endfor %} {% endfor %}
</tr> </tr>
</thead> </thead>

View file

@ -9,13 +9,13 @@
<table class="table table-sm table-striped ipr-table tablesorter"> <table class="table table-sm table-striped ipr-table tablesorter">
<thead> <thead>
<tr> <tr>
<th>Group</th> <th scope="col">Group</th>
<th>Time</th> <th scope="col">Time</th>
<th>Room</th> <th scope="col">Room</th>
<th>Agenda Note</th> <th scope="col">Agenda Note</th>
<th>Status</th> <th scope="col">Status</th>
<th></th> <th scope="col"></th>
<th></th> <th scope="col"></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -40,7 +40,7 @@
<form method="post"> <form method="post">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="pk" value="{{ session.pk }}"> <input type="hidden" name="pk" value="{{ session.pk }}">
<input type="submit" name="cancel" value="Cancel"> <button type="submit" name="cancel">Cancel</button>
</form> </form>
{% endif %} {% endif %}
</td> </td>

View file

@ -9,11 +9,11 @@
<table class="full-width"> <table class="full-width">
<thead> <thead>
<tr> <tr>
<th>Day</th> <th scope="col">Day</th>
<th>Time</th> <th scope="col">Time</th>
<th>Name</th> <th scope="col">Name</th>
<th></th> <th scope="col"></th>
<th></th> <th scope="col"></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -31,24 +31,26 @@
{% else %} {% else %}
<h3>No timeslots exist for this meeting. Add rooms with the "duplicate timeslots" option enabled to copy timeslots from the last meeting.</h3> <h3>No timeslots exist for this meeting. Add rooms with the "duplicate timeslots" option enabled to copy timeslots from the last meeting.</h3>
{% endif %} {% endif %}
<br /><hr /> <br><hr>
<form method="post">{% csrf_token %} <form method="post">{% csrf_token %}
{{ form.non_field_errors }} {{ form.non_field_errors }}
<table id="timeslot-form" class="full-width"> <table id="timeslot-form" class="full-width">
<tbody>
<tr> <tr>
<td>Day<br>{{ form.day.errors }}{{ form.day }}</td> <td>Day<br>{{ form.day.errors }}{{ form.day }}</td>
<td>Time<br>{{ form.time.errors }}{{ form.time }}</td> <td>Time<br>{{ form.time.errors }}{{ form.time }}</td>
<td>Duration<br>{{ form.duration.errors }}{{ form.duration }}</td> <td>Duration<br>{{ form.duration.errors }}{{ form.duration }}</td>
<td>Name<br>{{ form.name.errors }}{{ form.name }}</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> </tr>
</tbody>
</table> </table>
</form> </form>
<div class="button-group"> <div class="button-group">
<ul> <ul>
<li><button onclick="window.location='../'">Back</button></li> <li><button type="button" onclick="window.location='../'">Back</button></li>
</ul> </ul>
</div> </div>

View file

@ -7,7 +7,10 @@
<p><h3>TimeSlot:</h3></p> <p><h3>TimeSlot:</h3></p>
<form id="times-edit-form" enctype="multipart/form-data" action="." method="post">{% csrf_token %} <form id="times-edit-form" enctype="multipart/form-data" action="." method="post">{% csrf_token %}
<table class="full-width amstable"> <table class="full-width amstable">
<tbody>
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ form.as_table }} {{ form.as_table }}
</tbody>
</table> </table>
{% include "includes/buttons_save_cancel.html" %} {% include "includes/buttons_save_cancel.html" %}

View file

@ -20,6 +20,7 @@
<ul class="errorlist"><li> THIS IS A FROZEN PROCEEDING</li></ul> <ul class="errorlist"><li> THIS IS A FROZEN PROCEEDING</li></ul>
{% endif %} {% endif %}
<table class="full-width" id="proceedings-view-first-col"> <table class="full-width" id="proceedings-view-first-col">
<tbody>
<tr><td>Start Date:</td><td> {{ meeting.date }}</td></tr> <tr><td>Start Date:</td><td> {{ meeting.date }}</td></tr>
<tr><td>City:</td><td> {{ meeting.city }} </td></tr> <tr><td>City:</td><td> {{ meeting.city }} </td></tr>
<tr><td>Country:</td><td> {{ meeting.country }} </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>Venue Address:</td><td> {{ meeting.venue_addr }} </td></tr>
<tr><td>Break Area:</td><td> {{ meeting.break_area }} </td></tr> <tr><td>Break Area:</td><td> {{ meeting.break_area }} </td></tr>
<tr><td>Registration Area:</td><td> {{ meeting.reg_area }} </td></tr> <tr><td>Registration Area:</td><td> {{ meeting.reg_area }} </td></tr>
</tbody>
</table> </table>
<div class="button-group"> <div class="button-group">
<ul> <ul>
<li><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.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 type="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 type="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.meeting.views.list_schedules" num=meeting.number %}'">Agenda List</button></li>
<li> <li>
<!-- [html-validate-disable-block wcag/h32 -- FIXME: no submit button] -->
<form id="id_schedule_selector"> <form id="id_schedule_selector">
<select name="forma" onchange="location = this.options[this.selectedIndex].value;"> <select name="forma" onchange="location = this.options[this.selectedIndex].value;">
<option value="">Select a schedule...</option> <option value="">Select a schedule...</option>
@ -48,7 +51,7 @@
</form> </form>
</li> </li>
{% if meeting.schedule %} {% 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 %} {% endif %}
</ul> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->

View file

@ -12,7 +12,7 @@
</tr> </tr>
{% for meeting in meetings %} {% for meeting in meetings %}
<tr class="{% cycle 'row1' 'row2' %}"> <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> <td><a href="https://datatracker.ietf.org/wg/{{ meeting.group.acronym }}">{{ meeting.group.acronym }}</a></td>
{% if meeting.schedule %} {% if meeting.schedule %}
<td class="text-center"><a href="{{ meeting.schedule.get_absolute_url }}">Agenda</a></td> <td class="text-center"><a href="{{ meeting.schedule.get_absolute_url }}">Agenda</a></td>

View file

@ -19,13 +19,13 @@
<table id="proceedings-list-table" class="full-width{% if user|has_role:"Secretariat" %} secretariat{% endif %}"> <table id="proceedings-list-table" class="full-width{% if user|has_role:"Secretariat" %} secretariat{% endif %}">
<thead> <thead>
<tr> <tr>
<th>IETF Meeting</th> <th scope="col">IETF Meeting</th>
</tr> </tr>
</thead> </thead>
{% if meetings %} {% if meetings %}
<tbody> <tbody>
{% for meeting in meetings %} {% 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> <td>
<a href="{% url 'ietf.secr.proceedings.views.select' meeting_num=meeting.number %}">{{ meeting.number }}</a> <a href="{% url 'ietf.secr.proceedings.views.select' meeting_num=meeting.number %}">{{ meeting.number }}</a>
</td> </td>
@ -37,7 +37,7 @@
{% if user|has_role:"Secretariat" %} {% if user|has_role:"Secretariat" %}
<div class="button-group"> <div class="button-group">
<ul id="proceedings-meeting-buttons"> <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> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->
{% endif %} {% endif %}
@ -48,14 +48,14 @@
<table id="proceedings-interim-table" class="full-width{% if user|has_role:"Secretariat" %} secretariat{% endif %}"> <table id="proceedings-interim-table" class="full-width{% if user|has_role:"Secretariat" %} secretariat{% endif %}">
<thead> <thead>
<tr> <tr>
<th>Interim Meeting</th> <th scope="col">Interim Meeting</th>
</tr> </tr>
</thead> </thead>
{% if interim_meetings %} {% if interim_meetings %}
<tbody> <tbody>
{% for meeting in interim_meetings %} {% for meeting in interim_meetings %}
<tr class = "{% cycle 'row1' 'row2' %}"> <tr class="{% cycle 'row1' 'row2' %}">
<td>{{ meeting.group.acronym }}</td> <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> <td><a href="{% url "ietf.meeting.views.session_details" num=meeting.number acronym=meeting.group.acronym %}">{{ meeting.date }}</a></td>
</tr> </tr>
@ -66,7 +66,7 @@
</div> <!-- scroll --> </div> <!-- scroll -->
<div class="button-group"> <div class="button-group">
<ul id="proceedings-interim-buttons"> <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> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->
</div> </div>
@ -81,7 +81,7 @@
<div class="button-group"> <div class="button-group">
<ul id="proceedings-button-list"> <ul id="proceedings-button-list">
<li><button onclick="window.location='../'">Back</button></li> <li><button type="button" onclick="window.location='../'">Back</button></li>
</ul> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->
</div> <!-- module --> </div> <!-- module -->

View file

@ -4,7 +4,7 @@
{% block title %}Proceedings{% endblock %} {% block title %}Proceedings{% endblock %}
{% block extrastyle %}{{ block.super }} {% 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' %}"> <link rel="stylesheet" href="{% static 'ietf/css/select2.css' %}">
{% endblock %} {% endblock %}
@ -32,7 +32,10 @@
<h2>Recording Metadata</h2> <h2>Recording Metadata</h2>
<form id="recording-form" enctype="multipart/form-data" action="." method="post">{% csrf_token %} <form id="recording-form" enctype="multipart/form-data" action="." method="post">{% csrf_token %}
<table class="center" id="proceedings-upload-table"> <table class="center" id="proceedings-upload-table">
<tbody>
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ form.as_table }} {{ form.as_table }}
</tbody>
</table> </table>
<div class="button-group"> <div class="button-group">
@ -49,11 +52,11 @@
<table class="center"> <table class="center">
<thead> <thead>
<tr> <tr>
<th>Group</th> <th scope="col">Group</th>
<th>Session</th> <th scope="col">Session</th>
<th>Name</th> <th scope="col">Name</th>
<th>URL</th> <th scope="col">URL</th>
<th>Edit</th> <th scope="col">Edit</th>
</tr> </tr>
</thead> </thead>
{% if sessions %} {% if sessions %}
@ -93,7 +96,7 @@
<table class="center"> <table class="center">
<thead> <thead>
<tr> <tr>
<th>Filename</th> <th scope="col">Filename</th>
</tr> </tr>
</thead> </thead>
{% if unmatched_recordings %} {% if unmatched_recordings %}

View file

@ -27,7 +27,10 @@
<p><h3>Edit Recording Metadata:</h3></p> <p><h3>Edit Recording Metadata:</h3></p>
<form id="recording-form" method="post">{% csrf_token %} <form id="recording-form" method="post">{% csrf_token %}
<table> <table>
<tbody>
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ form.as_table }} {{ form.as_table }}
</tbody>
</table> </table>
{% include "includes/buttons_save_cancel.html" %} {% include "includes/buttons_save_cancel.html" %}

View file

@ -22,16 +22,16 @@
<table class="center"> <table class="center">
<form action="modify/" method="post">{% csrf_token %} <form action="modify/" method="post">{% csrf_token %}
<tr> <tr>
<input type="hidden" name="frozen" value="{{ proceeding.frozen }}" /> <input type="hidden" name="frozen" value="{{ proceeding.frozen }}">
{% if not proceeding.frozen %} {% if not proceeding.frozen %}
<tr> <tr>
<td>Active Proceeding</td> <td>Active Proceeding</td>
<td><input type="submit" name="submit" value="Freeze" /></td> <td><button type="submit" name="submit">Freeze</button></td>
{% endif %} {% endif %}
{% if proceeding.frozen %} {% if proceeding.frozen %}
<tr> <tr>
<td>Frozen Proceeding</td> <td>Frozen Proceeding</td>
<td><input type="submit" name="submit" value="Activate" /></td> <td><button type="submit" name="submit">Activate</button></td>
{% endif %} {% endif %}
</tr> </tr>
</form> </form>
@ -39,10 +39,9 @@
<div class="button-group"> <div class="button-group">
<ul> <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> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->
</div> <!-- module --> </div> <!-- module -->
{% endblock %} {% endblock %}

View file

@ -19,34 +19,38 @@
<ul class="errorlist"><li> THIS IS A FROZEN PROCEEDING</li></ul> <ul class="errorlist"><li> THIS IS A FROZEN PROCEEDING</li></ul>
{% endif %} {% endif %}
<table class="full-width" id="proceedings-view-first-col"> <table class="full-width" id="proceedings-view-first-col">
<tbody>
<tr><td>Meeting Start Date:</td><td> {{ meeting.date }}</td></tr> <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 End Date:</td><td> {{ meeting.end_date }} </td></tr>
<tr><td>Meeting City:</td><td> {{ meeting.city }} </td></tr> <tr><td>Meeting City:</td><td> {{ meeting.city }} </td></tr>
<tr><td>Meeting Country:</td><td> {{ meeting.country }} </td></tr> <tr><td>Meeting Country:</td><td> {{ meeting.country }} </td></tr>
</tbody>
</table> </table>
<div class="inline-related"> <div class="inline-related">
<h2>Dates</h2> <h2>Dates</h2>
<table class="full-width" id="proceedings-view-first-col"> <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 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 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>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 Start:</td><td> {{ meeting.pr_from_date }} </td></tr>
<tr><td>Progress Report End:</td><td> {{ meeting.pr_to_date }} </td></tr> <tr><td>Progress Report End:</td><td> {{ meeting.pr_to_date }} </td></tr>
</tbody>
</table> </table>
</div><!-- inline-related--> </div><!-- inline-related-->
<div class="button-group"> <div class="button-group">
{% if meeting.frozen == 0 %} {% if meeting.frozen == 0 %}
<ul> <ul>
<li><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='{% 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 type="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='status/'">Proceedings {{ meeting.number }} Status</button></li>
</ul> </ul>
{% endif %} {% endif %}
{% if meeting.frozen == 1 %} {% if meeting.frozen == 1 %}
<ul> <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> </ul>
{% endif %} {% endif %}
</div> <!-- button-group --> </div> <!-- button-group -->

View file

@ -14,9 +14,9 @@
<div class="module" > <div class="module" >
<h2>Proceedings</h2> <h2>Proceedings</h2>
<hr /> <hr>
<h2>{{ message }}</h2> <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 --> </div> <!-- module -->
{% endblock %} {% endblock %}

View file

@ -4,7 +4,7 @@
{% block title %}Roles{% endblock %} {% block title %}Roles{% endblock %}
{% block extrahead %}{{ block.super }} {% 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 'ietf/js/jquery-ui.js' %}"></script>
<script src="{% static 'secr/js/utils.js' %}"></script> <script src="{% static 'secr/js/utils.js' %}"></script>
@ -16,7 +16,7 @@
$('#id_group').change(function(){ $('#id_group').change(function(){
var loadUrl = "/secr/roles/ajax/get-roles/" + $(this).val() + "/"; 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(); var text = $(this).val();
$("#id_group_acronym").val(text); $("#id_group_acronym").val(text);
$("#roles-list").html(ajax_load).load(loadUrl); $("#roles-list").html(ajax_load).load(loadUrl);
@ -59,13 +59,15 @@
{% with role_form as form %} {% with role_form as form %}
{{ role_form.non_field_errors }} {{ role_form.non_field_errors }}
<table class="full-width"> <table class="full-width">
<tbody>
<tr> <tr>
<td>{{ form.group_acronym.errors }}{{ form.group_acronym }}</td> <td>{{ form.group_acronym.errors }}{{ form.group_acronym }}</td>
<td>{{ form.name.errors }}{{ form.name }}</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.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>{{ 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> </tr>
</tbody>
</table> </table>
{% endwith %} {% endwith %}
</div> <!-- inline-related --> </div> <!-- inline-related -->
@ -73,7 +75,7 @@
<div class="button-group"> <div class="button-group">
<ul> <ul>
<li><button onclick="window.location='../'">Back</button></li> <li><button type="button" onclick="window.location='../'">Back</button></li>
</ul> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->

View file

@ -1,10 +1,10 @@
<table class="full-width"> <table class="full-width">
<thead> <thead>
<tr> <tr>
<th>Role</th> <th scope="col">Role</th>
<th>Name</th> <th scope="col">Name</th>
<th>Email</th> <th scope="col">Email</th>
<th>Action</th> <th scope="col">Action</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>

View file

@ -27,7 +27,7 @@
<div class="button-group"> <div class="button-group">
<ul> <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> <li><button type="submit" name="submit" value="Continue">Continue</button></li>
</ul> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->
@ -40,8 +40,10 @@
<h2>Name</h2> <h2>Name</h2>
<form id="rolodex-add-form" enctype="multipart/form-data" method="post">{% csrf_token %} <form id="rolodex-add-form" enctype="multipart/form-data" method="post">{% csrf_token %}
<table class="full-width amstable"> <table class="full-width amstable">
<tbody>
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ form.as_table }} {{ form.as_table }}
</tbody>
</table> </table>
{% include "includes/buttons_proceed.html" %} {% include "includes/buttons_proceed.html" %}

View file

@ -8,13 +8,16 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1>Adding {{ name }}</h1> <h2>Adding {{ name }}</h2>
<form method="post" id="rolodex-add-form">{% csrf_token %} <form method="post" id="rolodex-add-form">{% csrf_token %}
<div class="module"> <div class="module">
<h2>Rolodex - Add</h2> <h3>Rolodex - Add</h3>
<table class="full-width amstable"> <table class="full-width amstable">
<tbody>
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ form.as_table }} {{ form.as_table }}
</tbody>
</table> </table>
</div> <!-- module --> </div> <!-- module -->

View file

@ -23,7 +23,7 @@
</ul> </ul>
</li></ul> </li></ul>
<form method="post">{% csrf_token %} <form method="post">{% csrf_token %}
<input type="hidden" name="post" value="yes" /> <input type="hidden" name="post" value="yes">
<input type="submit" value="Yes, I'm sure" /> <button type="submit">Yes, I'm sure</button>
</form> </form>
{% endblock %} {% endblock %}

View file

@ -18,7 +18,10 @@
<div class="module"> <div class="module">
<h2>Rolodex - Edit</h2> <h2>Rolodex - Edit</h2>
<table id="rolodex-edit-table" class="full-width amstable"> <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 }} {{ person_form.as_table }}
</tbody>
</table> </table>
<div class="inline-group"> <div class="inline-group">
@ -29,10 +32,10 @@
<table id="rolodex-email-table" class="full-width"> <table id="rolodex-email-table" class="full-width">
<thead> <thead>
<tr> <tr>
<th></th> <th scope="col"></th>
{% for field in email_formset.forms.0 %} {% for field in email_formset.forms.0 %}
{% if not field.is_hidden %} {% if not field.is_hidden %}
<th>{{ field.label }}</th> <th scope="col">{{ field.label }}</th>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</tr> </tr>

View file

@ -16,8 +16,10 @@
<h2>Rolodex - Search <span class="unlocked"><a href="add/" class="addlink">Add</a></span></h2> <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 %} <form id="rolodex-search-form" action="." method="post">{% csrf_token %}
<table class="full-width amstable"> <table class="full-width amstable">
<tbody>
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ form.as_table }} {{ form.as_table }}
</tbody>
</table> </table>
{% include "includes/buttons_search.html" %} {% include "includes/buttons_search.html" %}

View file

@ -13,27 +13,28 @@
<table id="rolodex-view-table" class="full-width"> <table id="rolodex-view-table" class="full-width">
<tbody>
<tr><td>Name:</td><td>{{ person.name }}</td></tr> <tr><td>Name:</td><td>{{ person.name }}</td></tr>
<tr><td>Ascii Name:</td><td>{{ person.ascii }}</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>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>User:</td><td>{{ person.user }}</td></tr>
<tr><td></td><td></td></tr> <tr><td></td><td></td></tr>
{% for email in person.emails %} {% for email in person.emails %}
<tr><td>Email {{ forloop.counter }}:</td><td>{{ email }}</td></tr> <tr><td>Email {{ forloop.counter }}:</td><td>{{ email }}</td></tr>
{% endfor %} {% endfor %}
</tbody>
</table> </table>
<br /> <br>
<div class="inline-related"> <div class="inline-related">
<h2><b>Roles</b></h2> <h2><b>Roles</b></h2>
<table id="rolodex-role-table" class="full-width"> <table id="rolodex-role-table" class="full-width">
<thead> <thead>
<tr> <tr>
<th>Role Name</th> <th scope="col">Role Name</th>
<th>Group / Area</th> <th scope="col">Group / Area</th>
<th>Email</th> <th scope="col">Email</th>
</tr> </tr>
</thead> </thead>
{% if roles %} {% if roles %}
@ -58,14 +59,14 @@
<div class="button-group"> <div class="button-group">
<ul> <ul>
<li><button onclick="window.location='../'">Search</button></li> <li><button type="button" onclick="window.location='../'">Search</button></li>
<li><button onclick="window.location='edit/'">Edit</button></li> <li><button type="button" onclick="window.location='edit/'">Edit</button></li>
{% comment %} {% comment %}
Removed per Glen Removed per Glen
<li><button onclick="window.location='../../delete/{{ person.person_or_org_tag }}'">Delete</button></li> <li><button type="button" onclick="window.location='../../delete/{{ person.person_or_org_tag }}'">Delete</button></li>
{% endcomment %} {% endcomment %}
</ul> </ul>
</div> <!-- view-buttons --> </div> <!-- view-buttons -->
</div> <!-- view-container --> </div> <!-- view-container -->
{% endblock %} {% endblock %}

View file

@ -32,15 +32,13 @@
{% if group.features.acts_like_wg and form.session_forms.forms_to_keep|length > 2 %} {% if group.features.acts_like_wg and form.session_forms.forms_to_keep|length > 2 %}
<br> <br>
<span class="alert"> <p class="alert">
<p>
<b> <b>
Note: Your request for a third session must be approved by an area director before 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 being submitted to agenda@ietf.org. Click "Submit" below to email an approval
request to the area directors. request to the area directors.
</b> </b>
</p> </p>
</span>
<br> <br>
{% endif %} {% endif %}

View file

@ -20,7 +20,7 @@
<div class="button-group"> <div class="button-group">
<ul> <ul>
<li><button onclick="window.location='../'">Back</button></li> <li><button type="button" onclick="window.location='../'">Back</button></li>
</ul> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->

View file

@ -28,8 +28,8 @@
<div class="inline-related"> <div class="inline-related">
<br> <br>
<ul class="session-buttons"> <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 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 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="window.location='{% url "ietf.secr.sreq.views.new" acronym=group.acronym %}?previous'">Retrieve all information from previous meeting</button></li>
</ul> </ul>
</div> </div>
{% include "includes/sessions_request_form.html" %} {% include "includes/sessions_request_form.html" %}

View file

@ -19,7 +19,10 @@
<p>Enter the message that you would like displayed to the WG Chair when this tool is locked.</p> <p>Enter the message that you would like displayed to the WG Chair when this tool is locked.</p>
<form method="post">{% csrf_token %} <form method="post">{% csrf_token %}
<table> <table>
<tbody>
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ form.as_table }} {{ form.as_table }}
</tbody>
</table> </table>
<div class="button-group"> <div class="button-group">
<ul> <ul>

View file

@ -29,12 +29,12 @@
<div class="button-group"> <div class="button-group">
<ul> <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 %} {% 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 %} {% 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 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 onclick="window.location='{% url "ietf.secr.sreq.views.main" %}'">Back</button></li> <li><button type="button" onclick="window.location='{% url "ietf.secr.sreq.views.main" %}'">Back</button></li>
</ul> </ul>
</div> <!-- button-group --> </div> <!-- button-group -->
</div> <!-- module --> </div> <!-- module -->

View file

@ -5,7 +5,7 @@
{% block extrahead %}{{ block.super }} {% block extrahead %}{{ block.super }}
<script src="{% static 'secr/js/utils.js' %}"></script> <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 %} {% endblock %}
{% block breadcrumbs %}{{ block.super }} {% block breadcrumbs %}{{ block.super }}

View file

@ -10,43 +10,44 @@
{% if document %} {% if document %}
{% if not nav_start %}<a href="./previous/">&laquo; Previous</a>{% endif %} {% if not nav_start %}<a href="./previous/">&laquo; Previous</a>{% endif %}
{% if not nav_end %}<span class="right-nav"><a href="./next/">Next &raquo;</a></span>{% endif %} {% if not nav_end %}<span class="right-nav"><a href="./next/">Next &raquo;</a></span>{% endif %}
<br /> <br>
<h3> <h3>
{% for line in header %} {% for line in header %}
{{ line }}<br /> {{ line }}<br>
{% endfor %} {% endfor %}
</h3> </h3>
<br /> <br>
<h3>{{ document.name }}-{{ document.rev }} ({{ document.intended_std_level }})</h3> <h3>{{ document.name }}-{{ document.rev }} ({{ document.intended_std_level }})</h3>
{% if conflictdoc %}References: <a href="{{ conflictdoc.get_absolute_url }}">{{ conflictdoc }}</a><br />{% endif %} {% if conflictdoc %}References: <a href="{{ conflictdoc.get_absolute_url }}">{{ conflictdoc }}</a><br>{% endif %}
<a href="#writeup">Ballot Writeup</a><br /> <a href="#writeup">Ballot Writeup</a><br>
Token: {{ document.ad.name }}<br /> Token: {{ document.ad.name }}<br>
{% if document.type_id == "draft" %} {% if document.type_id == "draft" %}
Consensus: {{ document|consensus }}<br /> Consensus: {{ document|consensus }}<br>
Has downref: {% if downrefs %}Yes{% else %}No{% endif %}<br /> Has downref: {% if downrefs %}Yes{% else %}No{% endif %}<br>
{% endif %} {% endif %}
Number of Open Positions: {{ open_positions }}<br /> Number of Open Positions: {{ open_positions }}<br>
<br /> <br>
<div> <div>
<form method="post">{% csrf_token %} <form method="post">{% csrf_token %}
{{ formset.management_form }} {{ formset.management_form }}
<table id="telechat-positions-table"> <table id="telechat-positions-table">
<tbody>
<tr> <tr>
<th>Area Director</th> <th scope="col">Area Director</th>
{% for position in document.active_ballot.ballot_type.positions.all %} {% for position in document.active_ballot.ballot_type.positions.all %}
<th>{{ position.name }}</th> <th scope="col">{{ position.name }}</th>
{% endfor %} {% endfor %}
</tr> </tr>
{% for form in formset.forms %} {% 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> <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 %} {% with form.position as field %}
{% for choice in field.field.choices %} {% 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 %} {% endfor %}
{% endwith %} {% endwith %}
</tr> </tr>
{% endfor %} {% endfor %}
</tbody>
</table> </table>
<div class="telechat-button"> <div class="telechat-button">
<ul><li><button type="submit" name="submit" value="update_ballot">Update Ballot</button></li></ul> <ul><li><button type="submit" name="submit" value="update_ballot">Update Ballot</button></li></ul>
@ -54,22 +55,26 @@
</form> </form>
</div> </div>
<hr /><br /> <hr><br>
<!-- [html-validate-disable-block wcag/h32 -- FIXME: no submit button] -->
<form method="post">{% csrf_token %} <form method="post">{% csrf_token %}
<table> <table>
<tbody>
<!-- [html-validate-disable-block element-required-attributes -- FIXME: as_table renders without scope] -->
{{ state_form.as_table }} {{ state_form.as_table }}
</tbody>
</table> </table>
<div class="telechat-button"> <div class="telechat-button">
<ul><li><button type="submit" name="submit" value="update_state">Update State</button></li></ul> <ul><li><button type="submit" name="submit" value="update_state">Update State</button></li></ul>
</div> </div>
</form> </form>
<hr /><br /> <hr><br>
{% if document.type_id == "charter" %} {% if document.type_id == "charter" %}
{% include "telechat/group.html" %} {% include "telechat/group.html" %}
<br /><hr /><br /> <br><hr><br>
{% endif %} {% endif %}
<h2 id="writeup">Ballot Writeup</h2> <h2 id="writeup">Ballot Writeup</h2>
@ -82,12 +87,12 @@
{% for ref in downrefs %} {% for ref in downrefs %}
<p>Add {{ref.target.document.canonical_name}} <p>Add {{ref.target.document.canonical_name}}
({{ref.target.document.std_level}} - {{ref.target.document.stream.desc}}) ({{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 %} {% 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 %} {% endif %}
{% if not ref.target.document.stream %} {% 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 %} {% endif %}
{% endfor %}</p> {% endfor %}</p>
{% endif %} {% endif %}

View file

@ -9,12 +9,12 @@
<div id="telechat-content"> <div id="telechat-content">
<span class="telechat-warn"><h3>This feature is pending</h3></span> <span class="telechat-warn"><h3>This feature is pending</h3></span>
<h3>Roll Call</h3> <h3>Roll Call</h3>
<br /> <br>
<form method="post">{% csrf_token %} <form method="post">{% csrf_token %}
{% for person in people %} {% 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 %} {% endfor %}
<input type="submit" value="Update" /> <button type="submit">Update</button>
</form> </form>
</div> </div>

View file

@ -149,6 +149,27 @@ table tbody.meta {
max-width: 300px; 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 // Add some padding when there are multiple buttons in a line than can wrap
.buttonlist .btn { .buttonlist .btn {
margin-top: map.get($spacers, 2); margin-top: map.get($spacers, 2);

View file

@ -34,9 +34,9 @@ var agenda_materials; // public interface
data = "<p>Error retrieving " + data_src data = "<p>Error retrieving " + data_src
+ ": Missing content-type in response header</p>"; + ": Missing content-type in response header</p>";
} else if (t.indexOf("text/plain") > -1) { } 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) { } 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) { } else if(t.indexOf("text/html") > -1) {
// nothing to do here // nothing to do here
} else { } else {

View file

@ -124,7 +124,7 @@ function format_tooltip_notice(start, end) {
// Format tooltip table // Format tooltip table
function format_tooltip_table(start, end) { function format_tooltip_table(start, end) {
var current_timezone = get_current_tz_cb(); 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 !== "") { if (window.meeting_timezone !== "") {
out += '<tr><th class="timehead">Meeting timezone</th><td>' + out += '<tr><th class="timehead">Meeting timezone</th><td>' +
format_time(start, window.meeting_timezone, 0) + '</td><td>' + format_time(start, window.meeting_timezone, 0) + '</td><td>' +

View file

@ -182,7 +182,7 @@ $(function () {
.attr("tabindex", 0) .attr("tabindex", 0)
.after($(` .after($(`
<div class="col-xl-2 ps-0 small"> <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> </nav>
</div> </div>
`)) `))

View file

@ -64,7 +64,7 @@ var attachmentWidget = {
} else { } else {
html += ' ' + field.val(); html += ' ' + field.val();
} }
html += '<span style="display: none;" class="removeField">'; html += '<span class="d-none removeField">';
html += container.attr('id'); html += container.attr('id');
html += '</span>'; html += '</span>';
container.hide(); container.hide();

View file

@ -70,7 +70,7 @@ $(document)
.addClass("sort"); .addClass("sort");
// $(header_row) // $(header_row)
// .children("th, td") // .children("th, td")
// .wrapInner("<span class='tablesorter-th'></span>"); // .wrapInner('<span class="tablesorter-th"></span>');
// // .each((i, e) => field_magic(i, e, fields)); // // .each((i, e) => field_magic(i, e, fields));
if ($(header_row) if ($(header_row)

View file

@ -6,8 +6,8 @@
<img class="col-2 mb-5" <img class="col-2 mb-5"
src="{% static 'ietf/images/ietflogo.png' %}" src="{% static 'ietf/images/ietflogo.png' %}"
alt="IETF"> alt="IETF">
<div class='alert alert-warning my-3'> <div class="alert alert-warning my-3">
<h2>Authentication Required</h2> <h1>Authentication Required</h1>
<hr> <hr>
<p> <p>
The server could not verify that you are authorized to view this page using The server could not verify that you are authorized to view this page using

View file

@ -6,8 +6,8 @@
<img class="col-2 mb-5" <img class="col-2 mb-5"
src="{% static 'ietf/images/ietflogo.png' %}" src="{% static 'ietf/images/ietflogo.png' %}"
alt="IETF"> alt="IETF">
<div class='alert alert-warning my-3'> <div class="alert alert-warning my-3">
<h2>Restricted Access</h2> <h1>Restricted Access</h1>
<hr> <hr>
<p> <p>
{{ exception }} {{ exception }}

View file

@ -6,8 +6,8 @@
<img class="col-2 mb-5" <img class="col-2 mb-5"
src="{% static 'ietf/images/ietflogo.png' %}" src="{% static 'ietf/images/ietflogo.png' %}"
alt="IETF"> alt="IETF">
<div class='alert alert-warning my-3'> <div class="alert alert-warning my-3">
<h2>The page you were looking for couldn't be found</h2> <h1>The page you were looking for couldn't be found</h1>
<hr> <hr>
<p> <p>
The requested URL was not found on this server. If you entered the URL The requested URL was not found on this server. If you entered the URL

View file

@ -6,8 +6,8 @@
<img class="col-2 mb-5" <img class="col-2 mb-5"
src="{% static 'ietf/images/ietflogo.png' %}" src="{% static 'ietf/images/ietflogo.png' %}"
alt="IETF"> alt="IETF">
<div class='alert alert-warning my-3'> <div class="alert alert-warning my-3">
<h2>Internal Server Error</h2> <h1>Internal Server Error</h1>
<hr> <hr>
<p> <p>
The server encountered an internal error and was unable to complete The server encountered an internal error and was unable to complete

View file

@ -135,14 +135,8 @@ $ curl 'https://datatracker.ietf.org/api/v1/doc/document/?limit=0&amp;name__cont
A simplified Documents API, intended for cases where only a limited set of A simplified Documents API, intended for cases where only a limited set of
document attributes are necessary for an application is document attributes are necessary for an application is
available for all documents at the relative url <code>doc.json</code>, e.g., 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> <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>.
<a href="{% url 'ietf.doc.views_doc.document_json' name='draft-ietf-poised95-std-proc-3' %}"> 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>.
<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>.
No API key is needed to access this. No API key is needed to access this.
</p> </p>
<p> <p>
@ -255,9 +249,7 @@ $ curl -S -F "apikey=DgAAAMLSi3coaE5TjrRs518xO8eBRlCmFF3eQcC8_SjUTtRGLGiJh7-1SYP
rather than having general access or requiring username/password rather than having general access or requiring username/password
login, see for example details for login, see for example details for
<code>{% url 'ietf.doc.views_ballot.api_set_position' %}</code> <code>{% url 'ietf.doc.views_ballot.api_set_position' %}</code>
<a href="#iesg-position-api"> <a href="#iesg-position-api">above</a>.
above
</a>.
Personal API keys are available from your Personal API keys are available from your
<a href="{% url 'ietf.ietfauth.views.apikey_index' %}"> <a href="{% url 'ietf.ietfauth.views.apikey_index' %}">
Account API Keys Account API Keys

View file

@ -1,5 +1,5 @@
{# Copyright The IETF Trust 2015-2022, All Rights Reserved #} {# Copyright The IETF Trust 2015-2022, All Rights Reserved #}
<!doctype html> <!DOCTYPE html>
{% load ietf_filters static %} {% load ietf_filters static %}
{% load origin %} {% load origin %}
{% origin %} {% origin %}
@ -58,11 +58,13 @@
</a> </a>
{% endif %} {% endif %}
<div class="d-flex d-none d-lg-block"> <div class="d-flex d-none d-lg-block">
<label aria-label="Document search">
<input class="form-control select2-field" <input class="form-control select2-field"
id="navbar-doc-search" id="navbar-doc-search"
data-ajax--url="{% url 'ietf.doc.views_search.ajax_select2_search_docs' model_name='docalias' doc_type='draft' %}" data-ajax--url="{% url 'ietf.doc.views_search.ajax_select2_search_docs' model_name='docalias' doc_type='draft' %}"
type="text" type="text"
data-placeholder="Document search"> data-placeholder="Document search">
</label>
</div> </div>
<button class="navbar-toggler" <button class="navbar-toggler"
type="button" type="button"

View file

@ -224,4 +224,4 @@
</a> </a>
</li> </li>
{% endif %} {% endif %}
{% if flavor == "top" %}</ul>{% endif %} {% if flavor == "top" %}</ul></li>{% endif %}

View file

@ -27,8 +27,10 @@
</p> </p>
<table class="table table-sm table-striped tablesorter"> <table class="table table-sm table-striped tablesorter">
<thead> <thead>
<th data-sort="doc">Document</th> <tr>
<th>Manage</th> <th scope="col" data-sort="doc">Document</th>
<th scope="col">Manage</th>
</tr>
</thead> </thead>
<tbody> <tbody>
{% for d in individually_added %} {% for d in individually_added %}
@ -38,7 +40,7 @@
<form method="post" id="remove_document_{{ d.pk }}"> <form method="post" id="remove_document_{{ d.pk }}">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="document" value="{{ d.pk }}"> <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> </form>
</td> </td>
</tr> </tr>
@ -78,10 +80,10 @@
<table class="table table-sm table-striped tablesorter"> <table class="table table-sm table-striped tablesorter">
<thead> <thead>
<tr> <tr>
<th data-sort="rule">Rule</th> <th scope="col" data-sort="rule">Rule</th>
<th data-sort="value">Value</th> <th scope="col" data-sort="value">Value</th>
<th data-sort="num">Matching Documents</th> <th scope="col" data-sort="num">Matching Documents</th>
<th>Manage</th> <th scope="col">Manage</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -104,7 +106,7 @@
<form method="post"> <form method="post">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="rule" value="{{ rule.pk }}"> <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> </form>
</td> </td>
</tr> </tr>

View file

@ -9,6 +9,6 @@
<p> <p>
Add {{ name }} to the list? Add {{ name }} to the list?
</p> </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> </form>
{% endblock %} {% endblock %}

View file

@ -9,7 +9,9 @@
<p> <p>
Remove {{ name }} from the list? Remove {{ name }} from the list?
</p> </p>
<input type="submit" <button type="submit"
class="btn btn-primary" class="btn btn-primary"
value="Remove tracking of document"> value="Remove tracking of document">
Remove tracking of document
</button>
</form> </form>

View file

@ -15,13 +15,13 @@
<table class="table table-sm tablesorter"> <table class="table table-sm tablesorter">
<thead> <thead>
<tr> <tr>
<th data-sort="num">#</th> <th scope="col" data-sort="num">#</th>
<th data-sort="query">SQL</th> <th scope="col" data-sort="query">SQL</th>
<th data-sort="num">Count</th> <th scope="col" data-sort="num">Count</th>
<th data-sort="where">WHERE</th> <th scope="col" data-sort="where">WHERE</th>
<th data-sort="num">View/Templ.</th> <th scope="col" data-sort="num">View/Templ.</th>
<th data-sort="num">Time</th> <th scope="col" data-sort="num">Time</th>
<th data-sort="num">Acc.</th> <th scope="col" data-sort="num">Acc.</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -61,9 +61,9 @@
<table class="table table-sm"> <table class="table table-sm">
<thead> <thead>
<tr> <tr>
<th>File (line)</th> <th scope="col">File (line)</th>
<th>Method</th> <th scope="col">Method</th>
<th>Code</th> <th scope="col">Code</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -103,7 +103,7 @@
</div> </div>
</div> </div>
{% else %} {% 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. Add <code>ietf.context_processors.sql_debug</code> to <code>settings.DEV_TEMPLATE_CONTEXT_PROCESSORS</code> to turn on the SQL statement table.
</small> </small>
{% endif %} {% endif %}

View file

@ -14,11 +14,11 @@
{% csrf_token %} {% csrf_token %}
<pre class="border p-3 mb-3">{{ announcement }}</pre> <pre class="border p-3 mb-3">{{ announcement }}</pre>
{% if action == "to_announcement_list" %} {% 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 &amp; close ballot</button>
{% elif action == "to_rfc_editor" %} {% 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 &amp; close ballot</button>
{% elif action == "do_not_publish" %} {% 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) &amp; close ballot"</button>
{% endif %} {% endif %}
<a class="btn btn-secondary float-end" <a class="btn btn-secondary float-end"
href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}"> href="{% url "ietf.doc.views_doc.document_main" name=doc.canonical_name %}">

View file

@ -36,20 +36,18 @@
<button type="submit" <button type="submit"
class="btn btn-primary" class="btn btn-primary"
name="send_mail" name="send_mail"
value="Save and send email">Save & send email</button> value="Save and send email">Save &amp; send email</button>
<input type="submit" class="btn btn-primary" value="Save"> <button type="submit" class="btn btn-primary">Save</button>
{% if doc.type_id == "draft" or doc.type_id == "conflrev" %} {% if doc.type_id == "draft" or doc.type_id == "conflrev" %}
{% if doc.stream.slug != "irtf" %} {% if doc.stream.slug != "irtf" %}
{% if ballot_deferred %} {% if ballot_deferred %}
<input type="submit" <button type="submit"
class="btn btn-warning" class="btn btn-warning"
name="Undefer" name="Undefer">Undefer ballot</button>
value="Undefer ballot">
{% else %} {% else %}
<input type="submit" <button type="submit"
class="btn btn-danger" class="btn btn-danger"
name="Defer" name="Defer">Defer ballot</button>
value="Defer ballot">
{% endif %} {% endif %}
{% endif %} {% endif %}
{% endif %} {% endif %}

Some files were not shown because too many files have changed in this diff Show more