|
|
| Line 1: |
Line 1: |
| /* Any JavaScript here will be loaded for all users on every page load. */ | | /* Any JavaScript here will be loaded for all users on every page load. */ |
| document.addEventListener("DOMContentLoaded", function () {
| | mw.hook('wikipage.content').add(function() { |
| document.querySelectorAll("form[name^='poll_']").forEach(function (form) {
| | document.querySelectorAll('.poll-loading-msg').forEach(el => el.style.display = 'none'); |
| var pollChoices = form.querySelectorAll(".poll-choice");
| | document.querySelectorAll('[id^="poll-display_"]').forEach(el => el.style.display = 'block'); |
| if (pollChoices.length === 0 || form.dataset.processed) return; // Avoid duplicate processing
| |
| | |
| var select = document.createElement("select");
| |
| select.name = "poll_choice";
| |
| select.classList.add("poll-dropdown");
| |
| | |
| // Add a default "Choose an option" entry
| |
| var defaultOption = document.createElement("option");
| |
| defaultOption.textContent = "Choose an option...";
| |
| defaultOption.value = "";
| |
| defaultOption.disabled = true;
| |
| defaultOption.selected = true;
| |
| select.appendChild(defaultOption);
| |
| | |
| pollChoices.forEach(function (choice) {
| |
| var input = choice.querySelector("input[type='radio']");
| |
| var labelText = choice.textContent.trim();
| |
| | |
| if (input && labelText) {
| |
| var option = document.createElement("option");
| |
| option.value = input.value;
| |
| option.textContent = labelText;
| |
| select.appendChild(option);
| |
| }
| |
| });
| |
| | |
| // Remove existing radio buttons and replace with dropdown
| |
| var pollContainer = pollChoices[0].parentNode;
| |
| pollContainer.innerHTML = ""; // Clear existing choices
| |
| pollContainer.appendChild(select);
| |
| | |
| // Ensure form submits correct value when dropdown is changed
| |
| select.addEventListener("change", function () {
| |
| var hiddenInput = form.querySelector("input[name='poll_choice']");
| |
| if (!hiddenInput) {
| |
| hiddenInput = document.createElement("input");
| |
| hiddenInput.type = "hidden";
| |
| hiddenInput.name = "poll_choice";
| |
| form.appendChild(hiddenInput);
| |
| }
| |
| hiddenInput.value = select.value;
| |
| });
| |
| | |
| form.dataset.processed = "true"; // Mark as processed
| |
| });
| |
| }); | | }); |