upgraded to file manager

This commit is contained in:
bogale 2026-10-01 16:47:43 +09:00
commit 4a71f92328
9 changed files with 134 additions and 103 deletions

View file

@ -0,0 +1,16 @@
<?php
$_shared = $_SERVER["DOCUMENT_ROOT"]."/templates";
require "$_shared/lib.php";
$_title = "Media viewer";
require "$_shared/header.php";
$urlsBase = __DIR__."/files/media/urls";
if (isset($_GET["list"])) {
$file = "$urlsBase/".$_GET["list"];
$urls = json_decode(file_get_contents($file));
header("Location: ".$urls[array_rand($urls)]);
} else foreach (scandir($urlsBase) as $list) {
if ($list[0] === '.') continue;
echo "<a href='?list=$list'>Hub $list</a><br>\n";
}
require "$_shared/footer.php";
?>

42
local/filemgr/index.php Normal file
View file

@ -0,0 +1,42 @@
<?php
$_shared = $_SERVER["DOCUMENT_ROOT"]."/templates";
require "$_shared/lib.php";
$_title = "Notes";
require "$_shared/header.php";
$elems = [];
$name = $_GET["name"] ?? "";
$baseDir = __DIR__."/files/$name";
echo "<a href='write.php?name=$name'>Create</a><br>\t";
echo "<a href='.?name=".dirname($name)."'>Up</a><br>\n";
foreach (scandir($baseDir) as $entry) {
if ($entry[0] === ".") continue;
$path = "$baseDir/$entry";
$elem = [ "name" => trim("$name/$entry", "/") ];
if (is_dir($path)) {
$elem["type"] = "dirs";
$elem["href"] = "?name=".$elem["name"];
} else {
$elem["type"] = "files";
$elem["href"] = "files/".$elem["name"];
}
$elem["entry"] = $entry;
$elem["date"] = filemtime($path);
$elems[] = $elem;
}
usort($elems, function($a, $b) {
return $b["type"] <=> $a["type"] ?: $b["date"] <=> $a["date"];
});
$type = null;
foreach ($elems as $elem) {
if ($elem["type"] !== $type) {
$type = $elem["type"];
echo "<h4>$type</h4>\n";
}
echo date("Y-m-d\TH:i", $elem["date"])."\t".$elem["entry"]."\t";
echo "<a href='".$elem["href"]."'>View</a>\t";
if ($elem["type"] !== "dirs")
echo "<a href='write.php?name=".$elem["name"]."'>Edit</a>\t";
echo "<a href='write.php?name=".$elem["name"]."&delete'>Delele</a><br>\n";
}
require "$_shared/footer.php";
?>

72
local/filemgr/write.php Normal file
View file

@ -0,0 +1,72 @@
<?php
$_shared = $_SERVER["DOCUMENT_ROOT"]."/templates";
require "$_shared/lib.php";
switch ($_SERVER["REQUEST_METHOD"]) {
case "GET":
$name = $_GET["name"] ?? "";
$file = __DIR__."/files/$name";
$is_file = !is_dir($file);
if (isset($_GET["delete"])) {
$is_file ? unlink($file) : rmdir($file);
header("Location: .?name=".dirname($name));
exit;
}
$title = $is_file ? basename($file) : "";
$note = $is_file ? file_get_contents($file) : "";
$date = $is_file ? date("Y-m-d\TH:i", filemtime($file)) : null;
break;
case "POST":
$name = $_POST["name"];
$file = __DIR__."/files/$name";
$is_file = !is_dir($file);
if ($is_file) {
$oldFile = $file;
$file = dirname($file);
$name = dirname($name);
}
$file .= "/".$_POST["title"];
switch ($_POST["type"]) {
case "note":
if ($is_file) unlink($oldFile);
file_put_contents($file, $_POST["note"]);
break;
case "file":
if ($is_file) rename($oldFile, $file);
else move_uploaded_file($_FILES["file"]["tmp_name"], $file);
break;
case "dir":
mkdir($file);
break;
}
$date = $_POST["date"];
if ($date == "") $date = null;
else $date = strtotime($date);
touch($file, $date);
header("Location: .?name=$name");
exit;
}
$_title = "Notes";
require "$_shared/header.php";
?>
<form method="post" enctype="multipart/form-data">
<input name="name" value="<?=$name?>" hidden>
<input name="date" type="datetime-local" value="<?=$date?>">
<input name="type" type="radio" value="note" checked>note
<input name="type" type="radio" value="file">file<br>
<input name="title" placeholder="title" value="<?=$title?>" required>
<input name="type" type="radio" value="dir">dir
<button type="submit">Save</button><br>
<input name="file" type="file" hidden>
<textarea name="note" class="note"><?=$note?></textarea>
</form>
<script>
document.querySelectorAll("[name='type']").forEach(function(radio) {
radio.addEventListener("change", () => {
document.querySelector("[name='note']").hidden = radio.value !== "note";
document.querySelector("[name='file']").hidden = radio.value !== "file";
});
});
</script>
<?php
require "$_shared/footer.php";
?>