(dropdownId, preferredFolder = "", sourceId = "")
| 1031 | } |
| 1032 | |
| 1033 | export async function loadCopyMoveFolderListForModal(dropdownId, preferredFolder = "", sourceId = "") { |
| 1034 | const folderSelect = document.getElementById(dropdownId); |
| 1035 | if (!folderSelect) return; |
| 1036 | folderSelect.innerHTML = ""; |
| 1037 | |
| 1038 | if (window.userFolderOnly) { |
| 1039 | const username = localStorage.getItem("username") || "root"; |
| 1040 | try { |
| 1041 | const url = withBase("/api/folder/getFolderList.php") |
| 1042 | + "?restricted=1&counts=0" |
| 1043 | + (sourceId ? `&sourceId=${encodeURIComponent(sourceId)}` : ""); |
| 1044 | const response = await fetch(url); |
| 1045 | let folders = await response.json(); |
| 1046 | if (Array.isArray(folders) && folders.length && typeof folders[0] === "object" && folders[0].folder) { |
| 1047 | folders = folders.map(item => item.folder); |
| 1048 | } |
| 1049 | folders = folders.filter(folder => |
| 1050 | folder.toLowerCase() !== "trash" && |
| 1051 | (folder === username || folder.indexOf(username + "/") === 0) |
| 1052 | ); |
| 1053 | |
| 1054 | const rootOption = document.createElement("option"); |
| 1055 | rootOption.value = username; |
| 1056 | rootOption.textContent = formatFolderName(username); |
| 1057 | folderSelect.appendChild(rootOption); |
| 1058 | |
| 1059 | folders.forEach(folder => { |
| 1060 | if (folder !== username) { |
| 1061 | const option = document.createElement("option"); |
| 1062 | option.value = folder; |
| 1063 | option.textContent = formatFolderName(folder); |
| 1064 | folderSelect.appendChild(option); |
| 1065 | } |
| 1066 | }); |
| 1067 | selectPreferredFolderOption(folderSelect, preferredFolder); |
| 1068 | } catch (error) { |
| 1069 | console.error("Error loading folder list for modal:", error); |
| 1070 | } |
| 1071 | return; |
| 1072 | } |
| 1073 | |
| 1074 | try { |
| 1075 | const url = withBase("/api/folder/getFolderList.php") |
| 1076 | + "?counts=0" |
| 1077 | + (sourceId ? `&sourceId=${encodeURIComponent(sourceId)}` : ""); |
| 1078 | const response = await fetch(url); |
| 1079 | let folders = await response.json(); |
| 1080 | if (Array.isArray(folders) && folders.length && typeof folders[0] === "object" && folders[0].folder) { |
| 1081 | folders = folders.map(item => item.folder); |
| 1082 | } |
| 1083 | folders = folders.filter(folder => folder !== "root" && folder.toLowerCase() !== "trash"); |
| 1084 | |
| 1085 | const rootOption = document.createElement("option"); |
| 1086 | rootOption.value = "root"; |
| 1087 | rootOption.textContent = getRootLabel(sourceId); |
| 1088 | folderSelect.appendChild(rootOption); |
| 1089 | |
| 1090 | if (Array.isArray(folders) && folders.length > 0) { |
no test coverage detected