Software /
code /
prosody-modules
Changeset
5742:18bae78282a6
mod_invites_page: Move the JS script to its own file
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Thu, 16 Nov 2023 16:16:55 +0100 |
parents | 5741:8cd617c0b701 |
children | 5743:0f103a6e9ba4 |
files | mod_invites_page/html/invite.html mod_invites_page/static/invite.js |
diffstat | 2 files changed, 71 insertions(+), 73 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_invites_page/html/invite.html Thu Nov 16 16:15:26 2023 +0100 +++ b/mod_invites_page/html/invite.html Thu Nov 16 16:16:55 2023 +0100 @@ -105,78 +105,6 @@ <script src="/share/bootstrap4/js/bootstrap.min.js"></script> <script src="{static}/qrcode.min.js"></script> <script src="{static}/platform.min.js"></script> - <script> - (function () { - // If QR lib loaded ok, show QR button on desktop devices - if(window.QRCode) { - new QRCode(document.getElementById("qr-invite-page"), document.location.href); - document.getElementById('qr-button-container').classList.remove("d-none"); - } - - // Detect current platform and show/hide appropriate clients - if(window.platform) { - var platform_friendly = null; - var platform_classname = null; - - switch(platform.os.family) { - case "Ubuntu": - case "Linux": - case "Fedora": - case "Red Hat": - case "SuSE": - platform_friendly = platform.os.family + " (Linux)"; - platform_classname = "linux"; - break; - case "Windows Phone": - platform_friendly = "Windows Phone"; - platform_classname = "windows-phone"; - break; - default: - if(platform.os.family.startsWith("Windows")) { - platform_friendly = "Windows"; - platform_classname = "windows"; - } else { - platform_friendly = platform.os.family; - platform_classname = platform_friendly.toLowerCase(); - } - } - - if(platform_friendly && platform_classname) { - if(document.querySelectorAll('.client-card .client-platform-badge-'+platform_classname).length == 0) { - // No clients recognised for this platform, do nothing - return; - } - // Hide clients not for this platform - const client_cards = document.getElementsByClassName('client-card'); - for (let card of client_cards) { - if (card.classList.contains('app-platform-'+platform_classname)) - card.classList.add('supported-platform'); - else if (!card.classList.contains('app-platform-web')) - card.hidden = true; - const badges = card.querySelectorAll('.client-platform-badge'); - for (let badge of badges) { - if (badge.classList.contains('client-platform-badge-'+platform_classname)) { - badge.classList.add("badge-success"); - badge.classList.remove("badge-info"); - } else { - badge.classList.add("badge-secondary"); - badge.classList.remove("badge-info"); - } - } - } - const show_all_clients_button_container = document.getElementById('show-all-clients-button-container'); - show_all_clients_button_container.querySelector('.platform-name').innerHTML = platform_friendly; - show_all_clients_button_container.classList.remove("d-none"); - document.getElementById('show-all-clients-button').addEventListener('click', function (e) { - for (let card of client_cards) - card.hidden = false; - show_all_clients_button_container.hidden = true; - e.preventDefaults(); - }); - } - } - })(); - - </script> + <script src="{static}/invite.js"></script> </body> </html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_invites_page/static/invite.js Thu Nov 16 16:16:55 2023 +0100 @@ -0,0 +1,70 @@ +(function () { + // If QR lib loaded ok, show QR button on desktop devices + if(window.QRCode) { + new QRCode(document.getElementById("qr-invite-page"), document.location.href); + document.getElementById('qr-button-container').classList.remove("d-none"); + } + + // Detect current platform and show/hide appropriate clients + if(window.platform) { + var platform_friendly = null; + var platform_classname = null; + + switch(platform.os.family) { + case "Ubuntu": + case "Linux": + case "Fedora": + case "Red Hat": + case "SuSE": + platform_friendly = platform.os.family + " (Linux)"; + platform_classname = "linux"; + break; + case "Windows Phone": + platform_friendly = "Windows Phone"; + platform_classname = "windows-phone"; + break; + default: + if(platform.os.family.startsWith("Windows")) { + platform_friendly = "Windows"; + platform_classname = "windows"; + } else { + platform_friendly = platform.os.family; + platform_classname = platform_friendly.toLowerCase(); + } + } + + if(platform_friendly && platform_classname) { + if(document.querySelectorAll('.client-card .client-platform-badge-'+platform_classname).length == 0) { + // No clients recognised for this platform, do nothing + return; + } + // Hide clients not for this platform + const client_cards = document.getElementsByClassName('client-card'); + for (let card of client_cards) { + if (card.classList.contains('app-platform-'+platform_classname)) + card.classList.add('supported-platform'); + else if (!card.classList.contains('app-platform-web')) + card.hidden = true; + const badges = card.querySelectorAll('.client-platform-badge'); + for (let badge of badges) { + if (badge.classList.contains('client-platform-badge-'+platform_classname)) { + badge.classList.add("badge-success"); + badge.classList.remove("badge-info"); + } else { + badge.classList.add("badge-secondary"); + badge.classList.remove("badge-info"); + } + } + } + const show_all_clients_button_container = document.getElementById('show-all-clients-button-container'); + show_all_clients_button_container.querySelector('.platform-name').innerHTML = platform_friendly; + show_all_clients_button_container.classList.remove("d-none"); + document.getElementById('show-all-clients-button').addEventListener('click', function (e) { + for (let card of client_cards) + card.hidden = false; + show_all_clients_button_container.hidden = true; + e.preventDefaults(); + }); + } + } +})();