fix folder renaming
This commit is contained in:
@@ -268,7 +268,9 @@ function openRenameFolderModal() {
|
|||||||
showToast("Please select a valid folder to rename.");
|
showToast("Please select a valid folder to rename.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
document.getElementById("newRenameFolderName").value = selectedFolder;
|
// Extract the basename for display.
|
||||||
|
const parts = selectedFolder.split("/");
|
||||||
|
document.getElementById("newRenameFolderName").value = parts[parts.length - 1];
|
||||||
document.getElementById("renameFolderModal").style.display = "block";
|
document.getElementById("renameFolderModal").style.display = "block";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -279,23 +281,29 @@ document.getElementById("cancelRenameFolder").addEventListener("click", function
|
|||||||
|
|
||||||
document.getElementById("submitRenameFolder").addEventListener("click", function () {
|
document.getElementById("submitRenameFolder").addEventListener("click", function () {
|
||||||
const selectedFolder = window.currentFolder || "root";
|
const selectedFolder = window.currentFolder || "root";
|
||||||
const newFolderName = document.getElementById("newRenameFolderName").value.trim();
|
const newNameBasename = document.getElementById("newRenameFolderName").value.trim();
|
||||||
if (!newFolderName || newFolderName === selectedFolder) {
|
if (!newNameBasename || newNameBasename === selectedFolder.split("/").pop()) {
|
||||||
showToast("Please enter a valid new folder name.");
|
showToast("Please enter a valid new folder name.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// Get the parent folder path.
|
||||||
|
const parentPath = getParentFolder(selectedFolder);
|
||||||
|
// Build the full new folder path.
|
||||||
|
// If the parent is "root", new folder is just newNameBasename.
|
||||||
|
const newFolderFull = parentPath === "root" ? newNameBasename : parentPath + "/" + newNameBasename;
|
||||||
|
|
||||||
fetch("renameFolder.php", {
|
fetch("renameFolder.php", {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: { "Content-Type": "application/json" },
|
headers: { "Content-Type": "application/json" },
|
||||||
body: JSON.stringify({ oldFolder: selectedFolder, newFolder: newFolderName })
|
body: JSON.stringify({ oldFolder: selectedFolder, newFolder: newFolderFull })
|
||||||
})
|
})
|
||||||
.then(response => response.json())
|
.then(response => response.json())
|
||||||
.then(data => {
|
.then(data => {
|
||||||
console.log("Rename response:", data);
|
console.log("Rename response:", data);
|
||||||
if (data.success) {
|
if (data.success) {
|
||||||
showToast("Folder renamed successfully!");
|
showToast("Folder renamed successfully!");
|
||||||
window.currentFolder = newFolderName;
|
window.currentFolder = newFolderFull;
|
||||||
loadFolderList(newFolderName);
|
loadFolderList(newFolderFull);
|
||||||
} else {
|
} else {
|
||||||
showToast("Error: " + (data.error || "Could not rename folder"));
|
showToast("Error: " + (data.error || "Could not rename folder"));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,6 +65,28 @@ if (file_exists($newPath)) {
|
|||||||
|
|
||||||
// Attempt to rename the folder.
|
// Attempt to rename the folder.
|
||||||
if (rename($oldPath, $newPath)) {
|
if (rename($oldPath, $newPath)) {
|
||||||
|
// Update metadata.
|
||||||
|
$metadataFile = META_DIR . META_FILE;
|
||||||
|
if (file_exists($metadataFile)) {
|
||||||
|
$metadata = json_decode(file_get_contents($metadataFile), true);
|
||||||
|
$updated = false;
|
||||||
|
// Loop through each key in the metadata.
|
||||||
|
foreach ($metadata as $key => $value) {
|
||||||
|
// Check if the key is the folder itself or is inside the folder.
|
||||||
|
if ($key === $oldFolder || strpos($key, $oldFolder . "/") === 0) {
|
||||||
|
// Construct the new key by replacing the $oldFolder prefix with $newFolder.
|
||||||
|
$newKey = $newFolder . substr($key, strlen($oldFolder));
|
||||||
|
// Optional: remove a leading slash if it appears.
|
||||||
|
$newKey = ltrim($newKey, "/");
|
||||||
|
$metadata[$newKey] = $value;
|
||||||
|
unset($metadata[$key]);
|
||||||
|
$updated = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($updated) {
|
||||||
|
file_put_contents($metadataFile, json_encode($metadata, JSON_PRETTY_PRINT));
|
||||||
|
}
|
||||||
|
}
|
||||||
echo json_encode(['success' => true]);
|
echo json_encode(['success' => true]);
|
||||||
} else {
|
} else {
|
||||||
echo json_encode(['success' => false, 'error' => 'Failed to rename folder.']);
|
echo json_encode(['success' => false, 'error' => 'Failed to rename folder.']);
|
||||||
|
|||||||
Reference in New Issue
Block a user