upgraded to file manager
This commit is contained in:
parent
36e534be13
commit
4a71f92328
9 changed files with 134 additions and 103 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -1,5 +1,3 @@
|
|||
/local/net
|
||||
/favicon.ico
|
||||
/local/media/urls
|
||||
/local/notes/files
|
||||
/local/media/videos
|
||||
/local/filemgr/files
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ require "$_shared/header.php";
|
|||
<h4>Private</h4>
|
||||
<a href="vw">Vaultwarden</a><br>
|
||||
<a href="grafana">Grafana</a><br>
|
||||
<a href="local/notes">Notes</a><br>
|
||||
<a href="local/media/get.php">Media viewer</a><br>
|
||||
<a href="local/filemgr">File manager</a><br>
|
||||
<a href="local/filemgr/get-media.php">Media viewer</a><br>
|
||||
<!--<a href="local/media/load.php">Media downloader</a><br>-->
|
||||
<?php
|
||||
require "$_shared/footer.php";
|
||||
|
|
|
|||
16
local/filemgr/get-media.php
Normal file
16
local/filemgr/get-media.php
Normal 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
42
local/filemgr/index.php
Normal 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
72
local/filemgr/write.php
Normal 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";
|
||||
?>
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
<?php
|
||||
$_shared = $_SERVER["DOCUMENT_ROOT"]."/templates";
|
||||
require "$_shared/lib.php";
|
||||
$_title = "Media viewer";
|
||||
require "$_shared/header.php";
|
||||
$urls_base = __DIR__ . "/urls";
|
||||
if (isset($_GET["list"])) {
|
||||
$file = "$urls_base/" . $_GET["list"];
|
||||
$urls = json_decode(file_get_contents($file));
|
||||
header("Location: " . $urls[array_rand($urls)]);
|
||||
} else {
|
||||
foreach (scandir($urls_base) as $list) {
|
||||
if ($list === '.' || $list === '..')
|
||||
continue;
|
||||
echo "<a href='" . $_SERVER['PHP_SELF'] . "?list=$list'>Try $list</a><br>";
|
||||
}
|
||||
}
|
||||
require "$_shared/footer.php";
|
||||
?>
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
<?php
|
||||
$_shared = $_SERVER["DOCUMENT_ROOT"]."/templates";
|
||||
require "$_shared/lib.php";
|
||||
$_title = "Notes";
|
||||
require "$_shared/header.php";
|
||||
$name = $_GET["name"];
|
||||
$baseDir = __DIR__."/files/$name";
|
||||
echo "<a href='write.php?name=$name'>New note</a><br>\n";
|
||||
foreach (scandir($baseDir) as $entry) {
|
||||
if ($entry === ".") continue;
|
||||
$path = "$baseDir/$entry";
|
||||
$newName = trim("$name/$entry", "/");
|
||||
if (is_dir($path)) {
|
||||
$elem["type"] = "dirs";
|
||||
$elem["href"] = ".?name=$newName";
|
||||
} else if (substr($entry, -5) === ".note") {
|
||||
$elem["type"] = "notes";
|
||||
$entry = substr($entry, 0, -5);
|
||||
$elem["href"] = "write.php?name=$newName";
|
||||
} else {
|
||||
$elem["type"] = "files";
|
||||
$elem["href"] = "files/$newName";
|
||||
}
|
||||
$elem["entry"] = $entry;
|
||||
$elem["date"] = filemtime($path);
|
||||
$elems[] = $elem;
|
||||
}
|
||||
usort($elems, function($a, $b) {
|
||||
return $a["type"] <=> $b["type"] ?: $b["date"] <=> $a["date"];
|
||||
});
|
||||
foreach ($elems as $elem) {
|
||||
if ($elem["type"] !== $type) {
|
||||
$type = $elem["type"];
|
||||
echo "<h4>$type</h4>\n";
|
||||
}
|
||||
$text = date("Y-m-d\TH:i", $elem["date"])." ".$elem["entry"];
|
||||
echo "<a href='".$elem["href"]."'>$text</a><br>\n";
|
||||
}
|
||||
require "$_shared/footer.php";
|
||||
?>
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
<?php
|
||||
$_shared = $_SERVER["DOCUMENT_ROOT"]."/templates";
|
||||
require "$_shared/lib.php";
|
||||
switch ($_SERVER["REQUEST_METHOD"]) {
|
||||
case "GET":
|
||||
$name = $_GET["name"];
|
||||
$file = __DIR__."/files/$name";
|
||||
if (!is_dir($file)) {
|
||||
$name = dirname($name);
|
||||
$title = substr(basename($file), 0, -5);
|
||||
$note = file_get_contents($file);
|
||||
$date = date("Y-m-d\TH:i", filemtime($file));
|
||||
}
|
||||
break;
|
||||
case "POST":
|
||||
$name = $_POST["name"];
|
||||
$file = __DIR__."/files/$name/".$_POST["title"].".note";
|
||||
file_put_contents($file, $_POST["note"]);
|
||||
$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">
|
||||
<input name="name" type="hidden" value="<?=$name?>">
|
||||
<input name="date" type="datetime-local" class="content" value="<?=$date?>">
|
||||
<input name="title" class="content" placeholder="Title" value="<?=$title?>" required>
|
||||
<button type="submit" class="content">Save</button>
|
||||
<textarea name="note" class="note content" placeholder="Note"><?=$note?></textarea>
|
||||
</form>
|
||||
<?php
|
||||
require "$_shared/footer.php";
|
||||
?>
|
||||
|
|
@ -12,7 +12,7 @@ body {
|
|||
color: #ffffff;
|
||||
background: #000000;
|
||||
}
|
||||
.content {
|
||||
input, button, textarea {
|
||||
color: #ffffff;
|
||||
background-color: #303030;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue