From 4e71125790d6b2f67c38d15a83ee51fc0affb22b Mon Sep 17 00:00:00 2001 From: wurstsalat Date: Thu, 16 Jan 2025 23:23:31 +0100 Subject: [PATCH] Extensions: Show specs in extension table --- .../layouts/shortcodes/xeps-table.html | 27 +++++++++++++++++++ themes/xmpp.org/static/js/scripts.js | 9 ++++++- tools/prepare_xep_list.py | 16 +++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/themes/xmpp.org/layouts/shortcodes/xeps-table.html b/themes/xmpp.org/layouts/shortcodes/xeps-table.html index f5622c46d..1ae5d2f37 100644 --- a/themes/xmpp.org/layouts/shortcodes/xeps-table.html +++ b/themes/xmpp.org/layouts/shortcodes/xeps-table.html @@ -97,6 +97,7 @@

Filter XEPs

Number Name + Type Status Date @@ -119,6 +120,32 @@

Filter XEPs

XEP-{{- $number_str -}} {{- .title -}} + + {{- if .supersededby -}} + + {{- end -}} + {{- .type -}} {{- .status -}} {{- .last_revision_date -}} diff --git a/themes/xmpp.org/static/js/scripts.js b/themes/xmpp.org/static/js/scripts.js index cc496a8ff..7dfd8bd82 100644 --- a/themes/xmpp.org/static/js/scripts.js +++ b/themes/xmpp.org/static/js/scripts.js @@ -66,7 +66,9 @@ document.addEventListener("DOMContentLoaded", () => { } } - initialize_bootstrap_tooltips() + initialize_bootstrap_popovers(); + + initialize_bootstrap_tooltips(); software_resize_extensions_collapse(); }); @@ -76,6 +78,11 @@ function initialize_bootstrap_tooltips() { const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl)) } +function initialize_bootstrap_popovers() { + const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]') + const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl)) +} + // Page /extensions/ function filter_xeps() { const xeplist = document.getElementById("xeplist"); diff --git a/tools/prepare_xep_list.py b/tools/prepare_xep_list.py index 0bebcc546..779748de4 100755 --- a/tools/prepare_xep_list.py +++ b/tools/prepare_xep_list.py @@ -68,6 +68,20 @@ def fix_status(status: str) -> str: if tag.text is not None: tag_list.append(tag.text) # noqa: PERF401 + supersedes_list: list[str] = [] + supersedes = xep.find("supersedes") + if supersedes is not None: + for spec in supersedes.findall("spec"): + if spec.text is not None: + supersedes_list.append(spec.text) # noqa: PERF401 + + supersededby_list: list[str] = [] + supersededby = xep.find("supersededby") + if supersededby is not None: + for spec in supersededby.findall("spec"): + if spec.text is not None: + supersededby_list.append(spec.text) # noqa: PERF401 + date = None version = None initials = None @@ -100,6 +114,8 @@ def fix_status(status: str) -> str: "type": xep_type, "abstract": abstract, "tags": tag_list, + "supersedes": supersedes_list, + "supersededby": supersededby_list, }, ) xeps_sorted = sorted(xeps, key=lambda xep: xep["number"])