()
| 9935 | } |
| 9936 | |
| 9937 | export async function openUserFlagsModal() { |
| 9938 | const isDark = document.body.classList.contains("dark-mode"); |
| 9939 | const overlayBg = isDark ? "rgba(0,0,0,0.7)" : "rgba(0,0,0,0.3)"; |
| 9940 | const contentBg = isDark ? "#2c2c2c" : "#fff"; |
| 9941 | const contentFg = isDark ? "#e0e0e0" : "#000"; |
| 9942 | const borderCol = isDark ? "#555" : "#ccc"; |
| 9943 | |
| 9944 | let modal = document.getElementById("userFlagsModal"); |
| 9945 | if (!modal) { |
| 9946 | modal = document.createElement("div"); |
| 9947 | modal.id = "userFlagsModal"; |
| 9948 | modal.style.cssText = ` |
| 9949 | position:fixed; inset:0; background:${overlayBg}; |
| 9950 | display:flex; align-items:center; justify-content:center; z-index:3600; |
| 9951 | `; |
| 9952 | modal.innerHTML = ` |
| 9953 | <div class="modal-content" |
| 9954 | style="background:${contentBg}; color:${contentFg}; |
| 9955 | padding:16px; max-width:900px; width:95%; |
| 9956 | position:relative; |
| 9957 | border:1px solid ${borderCol};"> |
| 9958 | <span id="closeUserFlagsModal" |
| 9959 | class="editor-close-btn" |
| 9960 | style="right:8px; top:8px;">×</span> |
| 9961 | |
| 9962 | <h3>${tf("user_permissions", "User Permissions")}</h3> |
| 9963 | <p class="muted" style="margin-top:-6px;"> |
| 9964 | ${tf("user_flags_help", "Non Admin User Account-level switches. These are NOT per-folder grants.")} |
| 9965 | </p> |
| 9966 | |
| 9967 | <div id="userFlagsBody" |
| 9968 | style="max-height:60vh; overflow:auto; margin:8px 0;"> |
| 9969 | ${t("loading")}… |
| 9970 | </div> |
| 9971 | |
| 9972 | <div style="display:flex; justify-content:flex-end; gap:8px;"> |
| 9973 | <button type="button" id="cancelUserFlags" class="btn btn-secondary">${t("cancel")}</button> |
| 9974 | <button type="button" id="saveUserFlags" class="btn btn-primary">${t("save_permissions")}</button> |
| 9975 | </div> |
| 9976 | </div> |
| 9977 | `; |
| 9978 | document.body.appendChild(modal); |
| 9979 | |
| 9980 | document.getElementById("closeUserFlagsModal").onclick = () => (modal.style.display = "none"); |
| 9981 | document.getElementById("cancelUserFlags").onclick = () => (modal.style.display = "none"); |
| 9982 | document.getElementById("saveUserFlags").onclick = saveUserFlags; |
| 9983 | } else { |
| 9984 | modal.style.background = overlayBg; |
| 9985 | const content = modal.querySelector(".modal-content"); |
| 9986 | if (content) { |
| 9987 | content.style.background = contentBg; |
| 9988 | content.style.color = contentFg; |
| 9989 | content.style.border = `1px solid ${borderCol}`; |
| 9990 | } |
| 9991 | } |
| 9992 | |
| 9993 | modal.style.display = "flex"; |
| 9994 | loadUserFlagsList(); |
no test coverage detected