(modal)
| 6063 | } |
| 6064 | |
| 6065 | async function renderUserHubFlagsForSelected(modal) { |
| 6066 | const flagsHost = modal.querySelector('#adminUserHubFlagsRow'); |
| 6067 | const selectEl = modal.querySelector('#adminUserHubSelect'); |
| 6068 | if (!flagsHost || !selectEl) return; |
| 6069 | |
| 6070 | const username = (selectEl.value || "").trim(); |
| 6071 | if (!username) { |
| 6072 | flagsHost.innerHTML = ` |
| 6073 | <div class="small text-muted"> |
| 6074 | ${tf("select_user_for_flags", "Select a user above to view account-level switches.")} |
| 6075 | </div> |
| 6076 | `; |
| 6077 | return; |
| 6078 | } |
| 6079 | |
| 6080 | const flagsCache = await getUserFlagsCacheForHub(); |
| 6081 | const flags = flagsCache[username] || {}; |
| 6082 | const meta = __userMetaCache[username] || {}; |
| 6083 | const isAdmin = !!meta.isAdmin; |
| 6084 | |
| 6085 | const disabledAttr = isAdmin ? 'disabled data-admin="1" title="Admin: full access"' : ''; |
| 6086 | const adminNote = isAdmin |
| 6087 | ? `<span class="muted" style="margin-left:4px;">(${tf("admin_full_access", "Admin: full access")})</span>` |
| 6088 | : ''; |
| 6089 | |
| 6090 | flagsHost.innerHTML = ` |
| 6091 | <div class="table-responsive"> |
| 6092 | <table class="table table-sm mb-0" style="width:100%;"> |
| 6093 | <thead> |
| 6094 | <tr> |
| 6095 | <th style="width:24%;">${t("user")}</th> |
| 6096 | <th class="text-center">${t("read_only")}</th> |
| 6097 | <th class="text-center">${t("disable_upload")}</th> |
| 6098 | <th class="text-center">${t("can_share")}</th> |
| 6099 | <th class="text-center">${t("bypass_ownership")}</th> |
| 6100 | </tr> |
| 6101 | </thead> |
| 6102 | <tbody> |
| 6103 | <tr data-username="${escapeHTML(username)}"> |
| 6104 | <td><strong>${escapeHTML(username)}</strong>${adminNote}</td> |
| 6105 | <td class="text-center"> |
| 6106 | <div class="form-check fr-toggle d-inline-block"> |
| 6107 | <input type="checkbox" |
| 6108 | class="form-check-input fr-toggle-input" |
| 6109 | id="hubFlagReadOnly" |
| 6110 | data-flag="readOnly" |
| 6111 | ${flags.readOnly ? "checked" : ""} |
| 6112 | ${disabledAttr}> |
| 6113 | <label class="form-check-label" for="hubFlagReadOnly"></label> |
| 6114 | </div> |
| 6115 | </td> |
| 6116 | <td class="text-center"> |
| 6117 | <div class="form-check fr-toggle d-inline-block"> |
| 6118 | <input type="checkbox" |
| 6119 | class="form-check-input fr-toggle-input" |
| 6120 | id="hubFlagDisableUpload" |
| 6121 | data-flag="disableUpload" |
| 6122 | ${flags.disableUpload ? "checked" : ""} |
no test coverage detected