// js/folderShareModal.js import { escapeHTML, showToast } from './domUtils.js'; import { t } from './i18n.js'; export function openFolderShareModal(folder) { // Remove any existing modal const existing = document.getElementById("folderShareModal"); if (existing) existing.remove(); // Build modal const modal = document.createElement("div"); modal.id = "folderShareModal"; modal.classList.add("modal"); modal.innerHTML = ` `; document.body.appendChild(modal); modal.style.display = "block"; // Close document.getElementById("closeFolderShareModal") .addEventListener("click", () => modal.remove()); // Toggle custom inputs document.getElementById("folderShareExpiration") .addEventListener("change", e => { document.getElementById("customFolderExpirationContainer") .style.display = e.target.value === "custom" ? "block" : "none"; }); // Generate link document.getElementById("generateFolderShareLinkBtn") .addEventListener("click", () => { const sel = document.getElementById("folderShareExpiration"); let value, unit; if (sel.value === "custom") { value = parseInt(document.getElementById("customFolderExpirationValue").value, 10); unit = document.getElementById("customFolderExpirationUnit").value; } else { value = parseInt(sel.value, 10); unit = "minutes"; } const password = document.getElementById("folderSharePassword").value; const allowUpload = document.getElementById("folderShareAllowUpload").checked ? 1 : 0; const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute("content"); if (!csrfToken) { showToast(t("csrf_error")); return; } fetch("/api/folder/createShareFolderLink.php", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json", "X-CSRF-Token": csrfToken }, body: JSON.stringify({ folder, expirationValue: value, expirationUnit: unit, password, allowUpload }) }) .then(r => r.json()) .then(data => { if (data.token && data.link) { document.getElementById("folderShareLinkInput").value = data.link; document.getElementById("folderShareLinkDisplay").style.display = "block"; showToast(t("share_link_generated")); } else { showToast(t("error_generating_share_link") + ": " + (data.error||t("unknown_error"))); } }) .catch(err => { console.error(err); showToast(t("error_generating_share_link") + ": " + t("unknown_error")); }); }); // Copy document.getElementById("copyFolderShareLinkBtn") .addEventListener("click", () => { const inp = document.getElementById("folderShareLinkInput"); inp.select(); document.execCommand("copy"); showToast(t("link_copied")); }); }