First usable stage

This commit is contained in:
2021-05-22 18:43:31 +02:00
commit b618ee182b
36 changed files with 2251 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>Faq you</title>
<meta http-equiv="refresh" content="0;URL='/file'" />
</head>
</html>

View File

@@ -0,0 +1,166 @@
/* Sakura.css v1.0.0
* ================
* Minimal css theme.
* Project: https://github.com/oxalorg/sakura
*/
/* Body */
html {
font-size: 62.5%;
font-family: serif; }
body {
font-size: 1.8rem;
line-height: 1.618;
max-width: 38em;
margin: auto;
color: #4a4a4a;
background-color: #f9f9f9;
padding: 13px; }
@media (max-width: 684px) {
body {
font-size: 1.53rem; } }
@media (max-width: 382px) {
body {
font-size: 1.35rem; } }
h1, h2, h3, h4, h5, h6 {
line-height: 1.1;
font-family: Verdana, Geneva, sans-serif;
font-weight: 700;
overflow-wrap: break-word;
word-wrap: break-word;
-ms-word-break: break-all;
word-break: break-word;
-ms-hyphens: auto;
-moz-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto; }
h1 {
font-size: 2.35em; }
h2 {
font-size: 2.00em; }
h3 {
font-size: 1.75em; }
h4 {
font-size: 1.5em; }
h5 {
font-size: 1.25em; }
h6 {
font-size: 1em; }
small, sub, sup {
font-size: 75%; }
hr {
border-color: #2c8898; }
a {
text-decoration: none;
color: #2c8898; }
a:hover {
color: #982c61;
border-bottom: 2px solid #4a4a4a; }
ul {
padding-left: 1.4em; }
li {
margin-bottom: 0.4em; }
blockquote {
font-style: italic;
margin-left: 1.5em;
padding-left: 1em;
border-left: 3px solid #2c8898; }
img {
height: auto;
max-width: 100%; }
/* Pre and Code */
pre {
background-color: #f1f1f1;
display: block;
padding: 1em;
overflow-x: auto; }
code {
font-size: 0.9em;
padding: 0 0.5em;
background-color: #f1f1f1;
white-space: pre-wrap; }
pre > code {
padding: 0;
background-color: transparent;
white-space: pre; }
/* Tables */
table {
text-align: justify;
width: 100%;
border-collapse: collapse; }
td, th {
padding: 0.5em;
border-bottom: 1px solid #f1f1f1; }
/* Buttons, forms and input */
input, textarea {
border: 1px solid #4a4a4a; }
input:focus, textarea:focus {
border: 1px solid #2c8898; }
textarea {
width: 100%; }
.button, button, input[type="submit"], input[type="reset"], input[type="button"] {
display: inline-block;
padding: 5px 10px;
text-align: center;
text-decoration: none;
white-space: nowrap;
background-color: #2c8898;
color: #f9f9f9;
border-radius: 1px;
border: 1px solid #2c8898;
cursor: pointer;
box-sizing: border-box; }
.button[disabled], button[disabled], input[type="submit"][disabled], input[type="reset"][disabled], input[type="button"][disabled] {
cursor: default;
opacity: .5; }
.button:focus, .button:hover, button:focus, button:hover, input[type="submit"]:focus, input[type="submit"]:hover, input[type="reset"]:focus, input[type="reset"]:hover, input[type="button"]:focus, input[type="button"]:hover {
background-color: #982c61;
border-color: #982c61;
color: #f9f9f9;
outline: 0; }
textarea, select, input[type] {
color: #4a4a4a;
padding: 6px 10px;
/* The 6px vertically centers text on FF, ignored by Webkit */
margin-bottom: 10px;
background-color: #f1f1f1;
border: 1px solid #f1f1f1;
border-radius: 4px;
box-shadow: none;
box-sizing: border-box; }
textarea:focus, select:focus, input[type]:focus {
border: 1px solid #2c8898;
outline: 0; }
input[type="checkbox"]:focus {
outline: 1px dotted #2c8898; }
label, legend, fieldset {
display: block;
margin-bottom: .5rem;
font-weight: 600; }

View File

@@ -0,0 +1,33 @@
# Configuration file
quarkus:
http:
port: 8910
proxy:
proxy-address-forwarding: true
native:
container-build: true
container-runtime: docker
enable-all-security-services: true
enable-https-url-handler: true
oidc:
application-type: web-app
auth-server-url: <url>
client-id: <id>
credentials:
secret: <secret>
tls:
verification: none
token:
refresh-expired: true
api:
file:
directory: /lalafin # Files need to be in {directory}/file
ignored: {} # Files ending with these suffixes will not show up
routes:
- path: / # Root corresonds to the endpoint /file/
roles: {} # Only users with these roles will have access to this route (empty = ALL)
folder:
tokens: {} # List of tokens to make some routes available trhough the public folders API

View File

@@ -0,0 +1,49 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="mobile-web-app-capable" content="yes" />
<link rel="stylesheet" href="/style/sakura.css">
<title>{info.filename}</title>
</head>
<body>
<h1>{info.filename}</h1>
{#if !info.filename is '/'}
<a href="{info.directUrl}/..">back</a>
<span style="float:right;">
<a href="{info.viewUrl}/">viewer</a>
</span>
{/if}
<hr />
<table style="table-layout: fixed; text-align: center">
{#each info.content}
{#if count.mod(3) == 1}
<tr>
{/if}
<td>
{#if it.thumbnailUrl}
{#if it.type is 'file'}
{#if it.viewUrl}
<a href="{it.viewUrl}">
{#else}
<a href="{it.publicApiUrl}">
{/if}
{#else}
<a href="{it.directUrl}">
{/if}<img src="{it.thumbnailUrl}" loading="lazy" /></a><br />
{/if}
{#if it.type is 'file'}
<a href="{it.publicApiUrl}">
{#else}
<a href="{it.directUrl}">
{/if}{it.filename}</a>
</td>
{#if count.mod(3) == 0}
</tr>
{/if}
{/each}
</table>
<hr />
</body>
</html>

View File

@@ -0,0 +1,67 @@
<!doctype html>
<html style="height: 100%">
<head>
<meta charset="utf-8" />
<meta name="mobile-web-app-capable" content="yes" />
<link rel="stylesheet" href="/style/sakura.css" />
<title>{info.filename}</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/detect_swipe/2.1.1/jquery.detect_swipe.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.5/jszip.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/epubjs/dist/epub.min.js"></script>
</head>
<body style="max-width: 100%; padding: 0px; display: flex; flex-flow: column; height: 100%;">
<div style="flex: 0 1 auto;margin: 13px 13px 0px 13px;">
<table style="table-layout: fixed;">
<tr>
<td style="text-align: left; padding-top: 0; padding-bottom: 0;"><a href="{info.directUrl}/..">back</a></td>
<td style="text-align: right; padding-top: 0; padding-bottom: 0;"><a href="#" onclick="rendition.prev()">&lt;</a> <a href="#" onclick="rendition.next()">&gt;</a></td>
</tr>
</table>
<hr />
</div>
<div id="epub" style="flex: 1 0 auto; margin: 0px 13px 0px 13px;"></div>
<div style="flex: 0 1 auto; margin: 0px 13px 13px 13px;">
<hr />
</div>
<script>
var book = ePub("{info.directUrl}");
var rendition = book.renderTo("epub", { method: "default", width: "100%", height: "100%", minSpreadWidth: "1000" });
function setEvents(doc) {
doc.addEventListener("keyup", function(e){
if ((e.keyCode || e.which) == 37) {
rendition.prev();
}
if ((e.keyCode || e.which) == 39) {
rendition.next();
}
}, false);
doc.addEventListener("wheel", function(e) {
if (e.deltaY < 0) {
rendition.prev();
} else {
rendition.next();
}
}, false);
$(doc).on("swipeleft", function(event) {
rendition.next();
});
$(doc).on("swiperight", function(event) {
rendition.prev();
});
$(doc).on("swipeup", function(event) {
rendition.prev();
});
$(doc).on("swipedown", function(event) {
rendition.next();
});
}
rendition.on("rendered", (e0,i) => {
setEvents(i.document);
});
setEvents(document);
rendition.display();
</script>
</body>
</html>

View File

@@ -0,0 +1,22 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="mobile-web-app-capable" content="yes" />
<link rel="stylesheet" href="/style/sakura.css" />
<title>{info.filename}</title>
</head>
<body>
<table style="table-layout: fixed;">
<tr>
<td style="text-align: left; padding-top: 0; padding-bottom: 0;"><a href="{info.directUrl}/..">back</a></td>
<td style="text-align: center; padding-top: 0; padding-bottom: 0;">{currpage}/{totpage}</td>
<td style="text-align: right; padding-top: 0; padding-bottom: 0;">{#if currpage > 1}<a href="{prevuri}">&lt;</a> {/if}{#if currpage < totpage}<a href="{nexturi}">&gt;</a>{/if}</td>
</tr>
</table>
<hr />
{#if currpage < totpage}<a href="{nexturi}">{/if}<img style="position: absolute; left: 50%; transform: translate(-50%, 0);" src="{image}" />{#if currpage < totpage}</a>{/if}
<hr />
</body>
</html>