datatracker/ietf/templates/meeting/interim_session_buttons.html
Lars Eggert 5598762608
fix: add more HTML validation & fixes (#3891)
* Update vnu.jar

* Fix py2 -> py3 issue

* Run pyupgrade

* test: Add default-jdk to images

* test: Add option to also validate HTML with vnu.jar

Since it's already installed in bin. Don't do this by default, since it
increases the time needed for tests by ~50%.

* fix: Stop the urlizer from urlizing in linkified mailto: text

* More HTML fixes

* More HTML validation fixes

* And more HTML fixes

* Fix floating badge

* Ignore unicode errors

* Only URLize docs that are existing

* Final fixes

* Don't URLize everything during test-crawl

* Feed HTML into vnu using python rather than Java to speed things up

* Allow test-crawl to start vnu on a different port

* Increase retry count to vnu. Restore batch size to 30.

* More HTML validation fixes

* Use urllib3 to make requests to vnu, since overriding requests_mock is tricky

* Undo commit of unmodified file

* Also urlize ftp links

* Fix matching of file name

* More HTML fixes

* Add `is_valid_url` filter

* weekday -> data-weekday

* urlencode URLs

* Add and use vnu_fmt_message. Bump vnu max buffer.

* Simplify doc_exists

* Don't add tab link to mail archive if the URL is invalid

* Run urlize_ietf_docs before linkify

Reduces the possibility of generating incorrect HTML

* Undo superfluous change

* Runner fixes

* Consolidate vnu message filtering into vnu_filter_message

* Correctly handle multiple persons with same name

* Minimze diff

* Fix HTML nits

* Print source snippet in vnu_fmt_message

* Only escape if there is something to escape

* Fix snippet

* Skip crufty old IPR declarations

* Only include modal when needed. Add handles.

* Fix wordwrap+linkification

* Update ietf/doc/templatetags/ietf_filters.py

* Update ietf/doc/templatetags/tests_ietf_filters.py

* Don't right-align second column
2022-05-03 13:55:48 -05:00

161 lines
7.9 KiB
HTML

{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin %}
{% load static %}
{% load textfilters %}
{% origin %}
{% with item=session.official_timeslotassignment acronym=session.historic_group.acronym %}
<div role="group" class="btn-group btn-group-sm">
{% if session.agenda and show_agenda %}
{% include "meeting/session_agenda_include.html" with slug=item.slug session=session timeslot=item.timeslot only %}
{# Note: if called with show_agenda=True, calling template must load agenda_materials.js, needed by session_agenda_include.html #}
{# agenda pop-up button #}
<a class="btn btn-outline-primary"
data-bs-toggle="modal"
data-bs-target="#modal-{{ item.slug }}"
aria-label="Show meeting materials"
title="Show meeting materials">
<i class="bi bi-arrows-fullscreen"></i>
</a>
{# materials tar file #}
<a class="btn btn-outline-primary"
href="/meeting/{{ meeting.number }}/agenda/{{ acronym }}-drafts.tgz"
aria-label="Download meeting materials as .tar archive"
title="Download meeting materials as .tar archive">
<i class="bi bi-file-zip"></i>
</a>
{# materials PDF file #}
<a class="btn btn-outline-primary"
href="/meeting/{{ meeting.number }}/agenda/{{ acronym }}-drafts.pdf"
aria-label="Download meeting materials as PDF file"
title="Download meeting materials as PDF file">
<i class="bi bi-file-pdf"></i>
</a>
{% endif %}
{# etherpad #}
{% if use_codimd %}
<a class="btn btn-outline-primary"
href="{{ session.notes_url }}"
aria-label="Notepad for note-takers"
title="Notepad for note-takers">
<i class="bi bi-journal-text"></i>
</a>
{% endif %}
{# show stream buttons up till end of session, then show archive buttons #}
{% if now < item.timeslot.end_time %}
{# Jabber #}
<a class="btn btn-outline-primary"
href="xmpp:{{ session.jabber_room_name }}@jabber.ietf.org?join"
aria-label="Jabber room for {{ session.jabber_room_name }}"
title="Jabber room for {{ session.jabber_room_name }}">
<i class="bi bi-lightbulb"></i>
</a>
{# Remote call-in #}
{% if session.agenda_note|first_url|conference_url %}
<a class="btn btn-outline-primary"
href="{{ session.agenda_note|first_url }}"
aria-label="Online conference"
title="Online conference">
<i class="bi bi-people"></i>
</a>
{% elif session.remote_instructions|first_url|conference_url %}
<a class="btn btn-outline-primary"
href="{{ session.remote_instructions|first_url }}"
aria-label="Online conference"
title="Online conference">
<i class="bi bi-people"></i>
</a>
{% elif item.timeslot.location.webex_url %}
<a class="btn btn-outline-primary"
href="{{ item.timeslot.location.webex_url|format:session }}"
aria-label="Webex session"
title="Webex session">
<i class="bi bi-people"></i>
</a>
{# Video stream (meetecho) #}
{% elif item.timeslot.location.video_stream_url %}
<a class="btn btn-outline-primary"
href="{{ item.timeslot.location.video_stream_url|format:session }}"
aria-label="Meetecho video stream"
title="Meetecho video stream">
<i class="bi bi-camera-video"></i>
</a>
{% else %}
<a class="btn btn-outline-primary text-secondary disabled"
href="#"
aria-label="No online conference info found in remote instructions or agenda note"
title="No online conference info found in remote instructions or agenda note">
<i class="bi bi-people"></i>
</a>
{% endif %}
{# iCalendar item #}
<a class="btn btn-outline-primary"
href="{% url 'ietf.meeting.views.agenda_ical' num=meeting.number session_id=session.id %}"
aria-label="icalendar entry for {{ acronym }} session on {{ item.timeslot.utc_start_time|date:'Y-m-d H:i' }} UTC"
title="icalendar entry for {{ acronym }} session on {{ item.timeslot.utc_start_time|date:'Y-m-d H:i' }} UTC">
<i class="bi bi-calendar"></i>
</a>
{% else %}
{# Jabber #}
<a class="btn btn-outline-primary"
href="https://www.ietf.org/jabber/logs/{{ session.jabber_room_name }}?C=M;O=D"
aria-label="Jabber logs for {{ session.jabber_room_name }}"
title="Jabber logs for {{ session.jabber_room_name }}">
<i class="bi bi-file-text"></i>
</a>
{% with session.recordings as recordings %}
{% if recordings %}
{# There's no guaranteed order, so this is a bit messy: #}
{# Audio #}
{% for r in recordings %}
{% with href=r.get_href %}
{% if 'audio' in href %}
<a class="btn btn-outline-primary"
href="{{ href }}"
aria-label="{{ r.title }}"
title="{{ r.title }}">
<i class="bi bi-file-play"></i>
</a>
{% endif %}
{% endwith %}
{% endfor %}
{# YouTube #}
{% for r in recordings %}
{% with href=r.get_href %}
{% if 'youtu' in href %}
<a class="btn btn-outline-primary"
href="{{ href }}"
aria-label="{{ r.title }}"
title="{{ r.title }}">
<i class="bi bi-file-slides"></i>
</a>
{% endif %}
{% endwith %}
{% endfor %}
{# Any other recordings #}
{% for r in recordings %}
{% with href=r.get_href %}
{% if not 'audio' in href and not 'youtu' in href %}
<a class="btn btn-outline-primary"
href="{{ href }}"
aria-label="{{ r.title }}"
title="{{ r.title }}">
<i class="bi bi-file-play"></i>
</a>
{% endif %}
{% endwith %}
{% endfor %}
{% elif item.timeslot.location.video_stream_url %}
<a class="btn btn-outline-primary"
href="http://www.meetecho.com/ietf{{ meeting.number }}/recordings#{{ acronym.upper }}"
aria-label="Meetecho session recording"
title="Meetecho session recording">
<i class="bi bi-file-slides"></i>
</a>
{% elif show_empty %}
{# <i class="bi"></i> #}
{% endif %}
{% endwith %}
{% endif %}
</div>
{% endwith %}