changeset 5719: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 8cd617c0b701
children 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();
+			});
+		}
+	}
+})();