215 lines
8.0 KiB
JavaScript
215 lines
8.0 KiB
JavaScript
// folderManager.js
|
|
import {
|
|
loadFileList
|
|
} from './fileManager.js';
|
|
|
|
|
|
export function renameFolder() {
|
|
const folderSelect = document.getElementById("folderSelect");
|
|
const selectedFolder = folderSelect.value;
|
|
const newFolderName = prompt("Enter the new folder name:", selectedFolder);
|
|
if (newFolderName && newFolderName !== selectedFolder) {
|
|
fetch("renameFolder.php", {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ oldName: selectedFolder, newName: newFolderName })
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.success) {
|
|
alert("Folder renamed successfully!");
|
|
loadFolderList("root");
|
|
} else {
|
|
alert("Error: " + (data.error || "Could not rename folder"));
|
|
}
|
|
})
|
|
.catch(error => console.error("Error renaming folder:", error));
|
|
}
|
|
}
|
|
|
|
export function deleteFolder() {
|
|
const folderSelect = document.getElementById("folderSelect");
|
|
const selectedFolder = folderSelect.value;
|
|
if (!selectedFolder || selectedFolder === "root") {
|
|
alert("Please select a valid folder to delete.");
|
|
return;
|
|
}
|
|
|
|
// Only prompt once.
|
|
if (!confirm("Are you sure you want to delete folder " + selectedFolder + "?")) {
|
|
return;
|
|
}
|
|
|
|
// Proceed with deletion.
|
|
fetch("deleteFolder.php", {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ folder: selectedFolder })
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.success) {
|
|
alert("Folder deleted successfully!");
|
|
// Refresh both folder dropdowns.
|
|
loadFolderList("root");
|
|
loadCopyMoveFolderList();
|
|
} else {
|
|
alert("Error: " + (data.error || "Could not delete folder"));
|
|
}
|
|
})
|
|
.catch(error => console.error("Error deleting folder:", error));
|
|
}
|
|
|
|
|
|
// Updates the copy/move folder dropdown.
|
|
export async function loadCopyMoveFolderList() {
|
|
try {
|
|
const response = await fetch('getFolderList.php');
|
|
const folders = await response.json();
|
|
const folderSelect = document.getElementById('copyMoveFolderSelect');
|
|
folderSelect.innerHTML = ''; // Clear existing options
|
|
|
|
// Always add a "Root" option as the default.
|
|
const rootOption = document.createElement('option');
|
|
rootOption.value = 'root';
|
|
rootOption.textContent = '(Root)';
|
|
folderSelect.appendChild(rootOption);
|
|
|
|
if (Array.isArray(folders) && folders.length > 0) {
|
|
folders.forEach(folder => {
|
|
const option = document.createElement('option');
|
|
option.value = folder;
|
|
option.textContent = folder;
|
|
folderSelect.appendChild(option);
|
|
});
|
|
}
|
|
} catch (error) {
|
|
console.error('Error loading folder list:', error);
|
|
}
|
|
}
|
|
|
|
|
|
// Optional helper to load folder lists (alias for loadCopyMoveFolderList).
|
|
|
|
export function loadFolderList(selectedFolder) {
|
|
const folderSelect = document.getElementById("folderSelect");
|
|
folderSelect.innerHTML = "";
|
|
const rootOption = document.createElement("option");
|
|
rootOption.value = "root";
|
|
rootOption.textContent = "(Root)";
|
|
folderSelect.appendChild(rootOption);
|
|
|
|
fetch("getFolderList.php")
|
|
.then(response => response.json())
|
|
.then(folders => {
|
|
folders.forEach(function (folder) {
|
|
let option = document.createElement("option");
|
|
option.value = folder;
|
|
option.textContent = folder;
|
|
folderSelect.appendChild(option);
|
|
});
|
|
|
|
// Set the selected folder if provided, else default to "root"
|
|
if (selectedFolder && [...folderSelect.options].some(opt => opt.value === selectedFolder)) {
|
|
folderSelect.value = selectedFolder;
|
|
} else {
|
|
folderSelect.value = "root";
|
|
}
|
|
|
|
// Update global currentFolder and title, then load the file list
|
|
window.currentFolder = folderSelect.value;
|
|
document.getElementById("fileListTitle").textContent =
|
|
window.currentFolder === "root" ? "Files in (Root)" : "Files in (" + window.currentFolder + ")";
|
|
loadFileList(window.currentFolder);
|
|
})
|
|
.catch(error => console.error("Error loading folder list:", error));
|
|
}
|
|
|
|
// Event listener for folder dropdown changes
|
|
document.getElementById("folderSelect").addEventListener("change", function () {
|
|
window.currentFolder = this.value;
|
|
document.getElementById("fileListTitle").textContent =
|
|
window.currentFolder === "root" ? "Files in (Root)" : "Files in (" + window.currentFolder + ")";
|
|
loadFileList(window.currentFolder);
|
|
});
|
|
|
|
// Event listener for creating a folder
|
|
document.getElementById("createFolderBtn").addEventListener("click", function () {
|
|
let folderName = prompt("Enter folder name:");
|
|
if (folderName) {
|
|
fetch("createFolder.php", {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ folder: folderName })
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.success) {
|
|
alert("Folder created successfully!");
|
|
loadFolderList(folderName);
|
|
loadCopyMoveFolderList();
|
|
} else {
|
|
alert("Error: " + (data.error || "Could not create folder"));
|
|
}
|
|
})
|
|
.catch(error => console.error("Error creating folder:", error));
|
|
}
|
|
});
|
|
|
|
// Event listener for renaming a folder
|
|
document.getElementById("renameFolderBtn").addEventListener("click", function () {
|
|
const folderSelect = document.getElementById("folderSelect");
|
|
const selectedFolder = folderSelect.value;
|
|
if (!selectedFolder || selectedFolder === "root") {
|
|
alert("Please select a valid folder to rename.");
|
|
return;
|
|
}
|
|
let newFolderName = prompt("Enter new folder name for '" + selectedFolder + "':", selectedFolder);
|
|
if (newFolderName && newFolderName !== selectedFolder) {
|
|
fetch("renameFolder.php", {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ oldFolder: selectedFolder, newFolder: newFolderName })
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.success) {
|
|
alert("Folder renamed successfully!");
|
|
loadCopyMoveFolderList()
|
|
loadFolderList(newFolderName);
|
|
} else {
|
|
alert("Error: " + (data.error || "Could not rename folder"));
|
|
}
|
|
})
|
|
.catch(error => console.error("Error renaming folder:", error));
|
|
}
|
|
});
|
|
|
|
// Event listener for deleting a folder
|
|
document.getElementById("deleteFolderBtn").addEventListener("click", function () {
|
|
const folderSelect = document.getElementById("folderSelect");
|
|
const selectedFolder = folderSelect.value;
|
|
if (!selectedFolder || selectedFolder === "root") {
|
|
alert("Please select a valid folder to delete.");
|
|
return;
|
|
}
|
|
if (confirm("Are you sure you want to delete folder " + selectedFolder + "?")) {
|
|
fetch("deleteFolder.php", {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ folder: selectedFolder })
|
|
})
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (data.success) {
|
|
alert("Folder deleted successfully!");
|
|
loadFolderList("root");
|
|
} else {
|
|
alert("Error: " + (data.error || "Could not delete folder"));
|
|
}
|
|
})
|
|
.catch(error => console.error("Error deleting folder:", error));
|
|
}
|
|
});
|
|
|
|
|