diff --git a/README.md b/README.md index 10ec74e..31e461d 100644 --- a/README.md +++ b/README.md @@ -143,17 +143,23 @@ FileRise is a lightweight, secure, self-hosted web application for uploading, sy **Light mode:**  +**Dark mode default:** + + **Dark editor:**  -**Dark preview** - +**Light preview** + **Restore or Delete Trash:** - + -**Login page:** - +**Dark Login page:** + + +**Gallery view:** + **iphone screenshots:**
diff --git a/extractZip.php b/extractZip.php index 582e2a2..38ea290 100644 --- a/extractZip.php +++ b/extractZip.php @@ -80,8 +80,9 @@ $srcMetadata = file_exists($srcMetaFile) ? json_decode(file_get_contents($srcMet $destMetadata = file_exists($destMetaFile) ? json_decode(file_get_contents($destMetaFile), true) : []; $errors = []; -$safeFileNamePattern = '/^[A-Za-z0-9_\-\.\(\) ]+$/'; $allSuccess = true; +$extractedFiles = array(); // Array to collect names of extracted files +$safeFileNamePattern = '/^[A-Za-z0-9_\-\.\(\) ]+$/'; // ---------- Process Each File ---------- foreach ($files as $zipFileName) { @@ -115,6 +116,14 @@ foreach ($files as $zipFileName) { $errors[] = "Failed to extract $originalName."; $allSuccess = false; } else { + // Collect extracted file names from this zip. + for ($i = 0; $i < $zip->numFiles; $i++) { + $entryName = $zip->getNameIndex($i); + $extractedFileName = basename($entryName); + if ($extractedFileName) { + $extractedFiles[] = $extractedFileName; + } + } // Update metadata for each extracted file if the zip file has metadata. if (isset($srcMetadata[$originalName])) { $zipMeta = $srcMetadata[$originalName]; @@ -138,7 +147,7 @@ if (file_put_contents($destMetaFile, json_encode($destMetadata, JSON_PRETTY_PRIN } if ($allSuccess) { - echo json_encode(["success" => true]); + echo json_encode(["success" => true, "extractedFiles" => $extractedFiles]); } else { echo json_encode(["success" => false, "error" => implode(" ", $errors)]); } diff --git a/fileManager.js b/fileManager.js index c045b7c..9689027 100644 --- a/fileManager.js +++ b/fileManager.js @@ -756,7 +756,12 @@ export function handleExtractZipSelected(e) { .then(response => response.json()) .then(data => { if (data.success) { - showToast("Zip file(s) extracted successfully!"); + // If the server returned a list of extracted files, join them into a string. + let toastMessage = "Zip file(s) extracted successfully!"; + if (data.extractedFiles && Array.isArray(data.extractedFiles) && data.extractedFiles.length) { + toastMessage = "Extracted: " + data.extractedFiles.join(", "); + } + showToast(toastMessage); loadFileList(window.currentFolder); } else { showToast("Error extracting zip: " + (data.error || "Unknown error")); diff --git a/resources/dark-editor.png b/resources/dark-editor.png index 1e50eba..a0bba3c 100644 Binary files a/resources/dark-editor.png and b/resources/dark-editor.png differ diff --git a/resources/dark-gallery.png b/resources/dark-gallery.png new file mode 100644 index 0000000..16002d7 Binary files /dev/null and b/resources/dark-gallery.png differ diff --git a/resources/dark-login.png b/resources/dark-login.png new file mode 100644 index 0000000..1894c8d Binary files /dev/null and b/resources/dark-login.png differ diff --git a/resources/dark-mode-default.png b/resources/dark-mode-default.png new file mode 100644 index 0000000..8f3e7bc Binary files /dev/null and b/resources/dark-mode-default.png differ diff --git a/resources/dark-mode.png b/resources/dark-mode.png index 0f1e9fa..46cf91a 100644 Binary files a/resources/dark-mode.png and b/resources/dark-mode.png differ diff --git a/resources/dark-preview.png b/resources/dark-preview.png index 6793834..56a3aa5 100644 Binary files a/resources/dark-preview.png and b/resources/dark-preview.png differ diff --git a/resources/light-mode.png b/resources/light-mode.png index 342ff8d..871d3cf 100644 Binary files a/resources/light-mode.png and b/resources/light-mode.png differ diff --git a/resources/light-preview.png b/resources/light-preview.png new file mode 100644 index 0000000..c811d56 Binary files /dev/null and b/resources/light-preview.png differ diff --git a/resources/light-share.png b/resources/light-share.png new file mode 100644 index 0000000..e998528 Binary files /dev/null and b/resources/light-share.png differ diff --git a/resources/light-trash.png b/resources/light-trash.png new file mode 100644 index 0000000..1c89664 Binary files /dev/null and b/resources/light-trash.png differ diff --git a/resources/login-page.png b/resources/login-page.png deleted file mode 100644 index d5c4bec..0000000 Binary files a/resources/login-page.png and /dev/null differ diff --git a/resources/restore-delete.png b/resources/restore-delete.png deleted file mode 100644 index b5f7cbc..0000000 Binary files a/resources/restore-delete.png and /dev/null differ diff --git a/styles.css b/styles.css index ab92cf7..fc7ce67 100644 --- a/styles.css +++ b/styles.css @@ -1051,30 +1051,6 @@ body.dark-mode .custom-prev-next-btn:hover:not(:disabled) { background-color: #555; } -.folder-option:hover { - background-color: #f0f0f0; - padding: 2px 4px; -} - -.folder-option.selected { - background-color: #d0d0d0; - border-radius: 4px; - padding: 2px 4px; -} - -body.dark-mode .folder-option.selected { - background-color: #444; - color: #fff; - border-radius: 4px; - padding: 2px 4px; -} - -body.dark-mode .folder-option:hover { - background-color: #333; - color: #fff; - padding: 2px 4px; -} - #customToast { position: fixed; top: 20px; @@ -1279,15 +1255,38 @@ body.dark-mode #fileListContainer { width: 30px; } -.folder-option { - cursor: pointer; - -} - #folderTreeContainer { display: block; } +.folder-option { + cursor: pointer; +} + +.folder-option:hover { + background-color: #f0f0f0; + padding: 2px 4px; +} + +.folder-option.selected { + background-color: #d0d0d0; + border-radius: 4px; + padding: 2px 4px; +} + +body.dark-mode .folder-option.selected { + background-color: #444; + color: #fff; + border-radius: 4px; + padding: 2px 4px; +} + +body.dark-mode .folder-option:hover { + background-color: #333; + color: #fff; + padding: 2px 4px; +} + /* =========================================================== FILE MANAGER INLINE STYLE REMOVAL - New Classes =========================================================== */ @@ -1958,6 +1957,9 @@ body.dark-mode #folderContextMenu { #uploadFolderRow { background-color: transparent; } +#sidebarDropArea { + display: none; +} body.dark-mode #sidebarDropArea, body.dark-mode #uploadFolderRow { @@ -2009,4 +2011,5 @@ body.dark-mode .card { .custom-folder-card-body { padding-top: 5px !important; + padding-right: 0 !important; } \ No newline at end of file