fixed html inline and slideshow frontend

This commit is contained in:
Elmar Kresse
2023-01-31 12:37:55 +01:00
parent c6657ede34
commit efbff89fa6
11 changed files with 772 additions and 207 deletions

View File

@ -1,10 +1,113 @@
<!DOCTYPE html>
<html lang="en">
<html lang="de">
<head>
<meta charset="UTF-8">
<title>$Title$</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<link href="../css/uploadfile.css" rel="stylesheet">
<title>Medien hinzufügen</title>
<!-- Bootstrap core CSS -->
<link href="../css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="../css/icons/bootstrap-icons.css">
<script src="../js/bootstrap.bundle.min.js"></script>
</head>
<body>
$END$
<div class="card border-0">
<div class="card-body">
<nav class="navbar navbar-expand-lg navbar-dark bg-dark rounded-3">
<div class="container-fluid">
<a class="navbar-brand" href="dashboard.php">DBR</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="dashboard.php">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="addSlider.php">Medien hinzufügen</a>
</li>
<li class="nav-item">
<a class="nav-link" href="listSlider.php">Datein verwalten</a>
</li>
</ul>
<div class="d-flex">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="logout.php">Ausloggen <i
class="bi-box-arrow-right text-light"></i></a>
</li>
</ul>
</div>
</div>
</div>
</nav>
</div>
</div>
<div class="card border-0">
<div class="card-body">
<div class="container d-grid gap-3">
<div class="p-2 bg-light border">
<div class="input-group mb-3">
<span class="input-group-text" id="basic-addon1">Gruppe</span>
<input type="text" id="group" class="form-control" placeholder="Gruppe" aria-label="Gruppe"
aria-describedby="basic-addon1" value="">
</div>
<div id="mulitplefileuploader">Upload</div>
<div id="status"></div>
</div>
<div class="p-2 bg-light border">
<p class="card-text">
<h3>Erlaubte Inhalte:</h3>
'png', 'jpg', 'jpeg', 'gif', 'html', 'mp4', 'avi'
</p>
</div>
</div>
</div>
</div>
<script src="../js/jquery-1.11.0.js"></script>
<script src="../js/jquery.uploadfile.min.js"></script>
<script>
$(document).ready(function () {
const settings = {
url: "/api/collections/media/records",
method: "POST",
allowedTypes: "jpg,png,gif,doc,pdf,zip,mp4,html,jpeg,avi",
fileName: "media",
formData: {
"group": function () {
return document.getElementById("group").value
},
"duration": "7000",
"enabled": true
},
multiple: true,
onSuccess: function (files, data, xhr) {
$("#status").html("<font color='green'>Upload is success</font>");
},
onError: function (files, status, errMsg) {
$("#status").html("<font color='red'>Upload is Failed</font>");
}
};
$("#mulitplefileuploader").uploadFile(settings);
});
</script>
</body>
</html>

View File

@ -45,23 +45,28 @@
<script type="module">
import PocketBase from './js/pocketbase/pocketbase.esm.js'
const sliderArrayQuery = [];
const pb = new PocketBase('http://127.0.0.1:8090');
const media = pb.collection('media').getFullList(200, {
const media = pb.collection('media').getFullList(2000, {
sort: '-created',
});
media.then(
it => it.forEach((arrObj) => {
sliderArrayQuery.push(new Slider(arrObj.collectionId, arrObj.collectionName, arrObj.created, arrObj.duration, arrObj.enabled, arrObj.id, arrObj.media, arrObj.updated))
media.then(
it => it.forEach((arrObj) => {
sliderArrayQuery.push(new Slider(arrObj.collectionId, arrObj.collectionName, arrObj.created, arrObj.duration, arrObj.enabled, arrObj.id, arrObj.media, arrObj.updated))
})
).then(_ => {
let sliderArray = sliderArrayQuery.filter(mediaObjekt => {
return mediaObjekt.enabled === true
})
let slideshow = new Slideshow('#image_container', sliderArray, '', true, true, 0)
startSlideShow(slideshow)
})
;
let sliderArray = sliderArrayQuery.filter(mediaObjekt => {return mediaObjekt.enabled === true})
let slideshow = new Slideshow('#image_container', sliderArray, '', true, true, 0)
startSlideShow(slideshow)
})
);
</script>
<script src="js/slideshow.js"></script>

View File

@ -126,7 +126,7 @@ class MultipleUploader {
for (const [ index, file] of Object.entries( this.#$imagesUploadInput.files ))
{
if ( index != deletedIndex )
if ( index !== deletedIndex )
dt.items.add( file )
}

View File

@ -119,7 +119,7 @@ function show() {
if (slideshow.sliderArray[counter].media.endsWith('.html')) {
wrapper.style.backgroundImage = ``;
wrapper.id = "test";
wrapper.id = "image";
const makeIframe = document.createElement("iframe");
makeIframe.setAttribute('src', "/api/files/" + slideshow.sliderArray[counter].collectionId + "/" + slideshow.sliderArray[counter].id + "/" + slideshow.sliderArray[counter].media);
makeIframe.setAttribute("scrolling", "no");
@ -127,6 +127,9 @@ function show() {
makeIframe.style.height = "100vh";
makeIframe.style.overflow = "hidden";
makeIframe.style.border = "none";
makeIframe.style.position = "relative";
makeIframe.style.zIndex = "7";
wrapper_blur.style.height = "0";
if (wrapper.dataset.loaded === 'false') {
wrapper.dataset.loaded = 'true';
@ -136,6 +139,7 @@ function show() {
} else {
if (slideshow.sliderArray[counter].media.endsWith('.mp4')) {
wrapper.style.backgroundImage = ``;
wrapper.id = "image";
const vid = document.createElement('video');
vid.setAttribute('loop', 'true');
vid.setAttribute('autoplay', 'true');
@ -154,6 +158,8 @@ function show() {
}
} else {
wrapper.innerHTML = ' ';
wrapper.id = "image";
wrapper_blur.style.height = "100%";
let url = '/api/files/' + slideshow.sliderArray[counter].collectionId + "/" + slideshow.sliderArray[counter].id + "/" + slideshow.sliderArray[counter].media;
let i = new Image();
i.src = url;