Compare commits
No commits in common. "main" and "v0.0.1" have entirely different histories.
202
composer.lock
generated
202
composer.lock
generated
@ -1,202 +0,0 @@
|
|||||||
{
|
|
||||||
"_readme": [
|
|
||||||
"This file locks the dependencies of your project to a known state",
|
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
|
||||||
"This file is @generated automatically"
|
|
||||||
],
|
|
||||||
"content-hash": "9c1f409919e0313a1dae929c5af48954",
|
|
||||||
"packages": [
|
|
||||||
{
|
|
||||||
"name": "monolog/monolog",
|
|
||||||
"version": "3.3.1",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/Seldaek/monolog.git",
|
|
||||||
"reference": "9b5daeaffce5b926cac47923798bba91059e60e2"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/9b5daeaffce5b926cac47923798bba91059e60e2",
|
|
||||||
"reference": "9b5daeaffce5b926cac47923798bba91059e60e2",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=8.1",
|
|
||||||
"psr/log": "^2.0 || ^3.0"
|
|
||||||
},
|
|
||||||
"provide": {
|
|
||||||
"psr/log-implementation": "3.0.0"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"aws/aws-sdk-php": "^3.0",
|
|
||||||
"doctrine/couchdb": "~1.0@dev",
|
|
||||||
"elasticsearch/elasticsearch": "^7 || ^8",
|
|
||||||
"ext-json": "*",
|
|
||||||
"graylog2/gelf-php": "^1.4.2 || ^2@dev",
|
|
||||||
"guzzlehttp/guzzle": "^7.4.5",
|
|
||||||
"guzzlehttp/psr7": "^2.2",
|
|
||||||
"mongodb/mongodb": "^1.8",
|
|
||||||
"php-amqplib/php-amqplib": "~2.4 || ^3",
|
|
||||||
"phpstan/phpstan": "^1.9",
|
|
||||||
"phpstan/phpstan-deprecation-rules": "^1.0",
|
|
||||||
"phpstan/phpstan-strict-rules": "^1.4",
|
|
||||||
"phpunit/phpunit": "^9.5.26",
|
|
||||||
"predis/predis": "^1.1 || ^2",
|
|
||||||
"ruflin/elastica": "^7",
|
|
||||||
"symfony/mailer": "^5.4 || ^6",
|
|
||||||
"symfony/mime": "^5.4 || ^6"
|
|
||||||
},
|
|
||||||
"suggest": {
|
|
||||||
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
|
|
||||||
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
|
|
||||||
"elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
|
|
||||||
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
|
|
||||||
"ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
|
|
||||||
"ext-mbstring": "Allow to work properly with unicode symbols",
|
|
||||||
"ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
|
|
||||||
"ext-openssl": "Required to send log messages using SSL",
|
|
||||||
"ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
|
|
||||||
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
|
|
||||||
"mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
|
|
||||||
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
|
|
||||||
"rollbar/rollbar": "Allow sending log messages to Rollbar",
|
|
||||||
"ruflin/elastica": "Allow sending log messages to an Elastic Search server"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-main": "3.x-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Monolog\\": "src/Monolog"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Jordi Boggiano",
|
|
||||||
"email": "j.boggiano@seld.be",
|
|
||||||
"homepage": "https://seld.be"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
|
|
||||||
"homepage": "https://github.com/Seldaek/monolog",
|
|
||||||
"keywords": [
|
|
||||||
"log",
|
|
||||||
"logging",
|
|
||||||
"psr-3"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/Seldaek/monolog/issues",
|
|
||||||
"source": "https://github.com/Seldaek/monolog/tree/3.3.1"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://github.com/Seldaek",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2023-02-06T13:46:10+00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "phlaym/photoprism-api",
|
|
||||||
"version": "dev-main",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://phlaym.net/git/phlaym/photoprism-api.git",
|
|
||||||
"reference": "6fde23d5511f276b9689bed941905be88a127f31"
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"monolog/monolog": "^3.3",
|
|
||||||
"php": "^7.2 || ^8.0"
|
|
||||||
},
|
|
||||||
"default-branch": true,
|
|
||||||
"type": "library",
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Phlaym\\PhotoprismApi\\": "src/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Max Nuding",
|
|
||||||
"email": "max.nuding@icloud.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "An API for interacting with PhotoPrism",
|
|
||||||
"time": "2023-02-19T08:43:49+00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "psr/log",
|
|
||||||
"version": "3.0.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/php-fig/log.git",
|
|
||||||
"reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
|
|
||||||
"reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=8.0.0"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "3.x-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Psr\\Log\\": "src"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "PHP-FIG",
|
|
||||||
"homepage": "https://www.php-fig.org/"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Common interface for logging libraries",
|
|
||||||
"homepage": "https://github.com/php-fig/log",
|
|
||||||
"keywords": [
|
|
||||||
"log",
|
|
||||||
"psr",
|
|
||||||
"psr-3"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/php-fig/log/tree/3.0.0"
|
|
||||||
},
|
|
||||||
"time": "2021-07-14T16:46:02+00:00"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"packages-dev": [],
|
|
||||||
"aliases": [],
|
|
||||||
"minimum-stability": "stable",
|
|
||||||
"stability-flags": {
|
|
||||||
"phlaym/photoprism-api": 20
|
|
||||||
},
|
|
||||||
"prefer-stable": false,
|
|
||||||
"prefer-lowest": false,
|
|
||||||
"platform": {
|
|
||||||
"php": "^8.0"
|
|
||||||
},
|
|
||||||
"platform-dev": [],
|
|
||||||
"plugin-api-version": "2.3.0"
|
|
||||||
}
|
|
56
index.html
56
index.html
@ -3,7 +3,6 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="theme-color" content="#ffffff" />
|
<meta name="theme-color" content="#ffffff" />
|
||||||
<title>Fotogallerie</title>
|
|
||||||
<script>
|
<script>
|
||||||
const darkModePreference = window.matchMedia("(prefers-color-scheme: dark)");
|
const darkModePreference = window.matchMedia("(prefers-color-scheme: dark)");
|
||||||
document.querySelector('head meta[name=theme-color]').content = darkModePreference ? '#000' : '#fff';
|
document.querySelector('head meta[name=theme-color]').content = darkModePreference ? '#000' : '#fff';
|
||||||
@ -14,14 +13,12 @@
|
|||||||
--background: #fff;
|
--background: #fff;
|
||||||
--border-light: #999;
|
--border-light: #999;
|
||||||
--border-dark: #000;
|
--border-dark: #000;
|
||||||
--overlay-background: #ffffff47;
|
|
||||||
}
|
}
|
||||||
.dark {
|
.dark {
|
||||||
--foreground: #fff;
|
--foreground: #fff;
|
||||||
--background: #000;
|
--background: #000;
|
||||||
--border-dark: #999;
|
--border-dark: #999;
|
||||||
--border-light: #fff;
|
--border-light: #fff;
|
||||||
--overlay-background: #00000066;
|
|
||||||
}
|
}
|
||||||
body {
|
body {
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
@ -99,21 +96,6 @@
|
|||||||
.hidden {
|
.hidden {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
#pauseIndicator {
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
z-index: 1;
|
|
||||||
font-size: xx-large;
|
|
||||||
font-size: xxx-large;
|
|
||||||
background-color: var(--overlay-background);
|
|
||||||
height: 1.5em;
|
|
||||||
width: 1.5em;
|
|
||||||
text-align: center;
|
|
||||||
vertical-align: baseline;
|
|
||||||
backdrop-filter: blur(10px);
|
|
||||||
-webkit-backdrop-filter: blur(10px);
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
@ -166,7 +148,6 @@
|
|||||||
leftElement.classList.add('left');
|
leftElement.classList.add('left');
|
||||||
rightElement.classList.remove('right');
|
rightElement.classList.remove('right');
|
||||||
window.isPaused = false;
|
window.isPaused = false;
|
||||||
document.getElementById('pauseIndicator').classList.add('hidden');
|
|
||||||
} else {
|
} else {
|
||||||
const { left: leftElement, right: rightElement} = getImagePositions();
|
const { left: leftElement, right: rightElement} = getImagePositions();
|
||||||
leftElement.style.transitionDelay = '0s';
|
leftElement.style.transitionDelay = '0s';
|
||||||
@ -174,13 +155,6 @@
|
|||||||
leftElement.classList.remove('left');
|
leftElement.classList.remove('left');
|
||||||
rightElement.classList.add('right');
|
rightElement.classList.add('right');
|
||||||
window.isPaused = true;
|
window.isPaused = true;
|
||||||
|
|
||||||
const pauseIndicator = document.getElementById('pauseIndicator');
|
|
||||||
const imageRect = getImagePositions().left.getBoundingClientRect();
|
|
||||||
pauseIndicator.style.top = imageRect.top + 'px';
|
|
||||||
pauseIndicator.style.left = imageRect.left + 'px';
|
|
||||||
|
|
||||||
document.getElementById('pauseIndicator').classList.remove('hidden');
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'ArrowRight':
|
case 'ArrowRight':
|
||||||
@ -196,8 +170,8 @@
|
|||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
first.style.transitionDelay = window.showTimeSeconds + 's';
|
first.style.transitionDelay = window.showTimeSeconds + 's';
|
||||||
second.style.transitionDelay = window.showTimeSeconds + 's';
|
second.style.transitionDelay = window.showTimeSeconds + 's';
|
||||||
}, 50);
|
});
|
||||||
}, 50);
|
});
|
||||||
break;
|
break;
|
||||||
case 'r': {
|
case 'r': {
|
||||||
window.shuffle = !window.shuffle;
|
window.shuffle = !window.shuffle;
|
||||||
@ -255,7 +229,6 @@
|
|||||||
|
|
||||||
document.getElementById('first').style.transitionDelay = window.showTimeSeconds + 's';
|
document.getElementById('first').style.transitionDelay = window.showTimeSeconds + 's';
|
||||||
document.getElementById('second').style.transitionDelay = window.showTimeSeconds + 's';
|
document.getElementById('second').style.transitionDelay = window.showTimeSeconds + 's';
|
||||||
//document.getElementById('pauseIndicator').style.top = '';
|
|
||||||
|
|
||||||
if (controls.elements['submit'].value === 'save') {
|
if (controls.elements['submit'].value === 'save') {
|
||||||
return;
|
return;
|
||||||
@ -267,13 +240,12 @@
|
|||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
document.getElementById('first').classList.add('left');
|
document.getElementById('first').classList.add('left');
|
||||||
document.getElementById('second').classList.remove('right');
|
document.getElementById('second').classList.remove('right');
|
||||||
}, 50);
|
});
|
||||||
controls.elements['submit'].value = 'save';
|
controls.elements['submit'].value = 'save';
|
||||||
controls.elements['submit'].innerText = 'Speichern';
|
controls.elements['submit'].innerText = 'Speichern';
|
||||||
});
|
});
|
||||||
|
|
||||||
let remainingTransitions = document.querySelectorAll('img').length;
|
let remainingTransitions = document.querySelectorAll('img').length;
|
||||||
let delay = 20;
|
|
||||||
addEventListener('transitionend', (event) => {
|
addEventListener('transitionend', (event) => {
|
||||||
if (event.target.tagName !== 'IMG') {
|
if (event.target.tagName !== 'IMG') {
|
||||||
return;
|
return;
|
||||||
@ -283,11 +255,8 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
remainingTransitions = document.querySelectorAll('img').length;
|
remainingTransitions = document.querySelectorAll('img').length;
|
||||||
let leftElement = document.querySelector('.left');
|
const leftElement = document.querySelector('.left');
|
||||||
let rightElement = document.querySelector('img:not([class~=left])');
|
const rightElement = document.querySelector('img:not([class~=left])');
|
||||||
if (leftElement === null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
leftElement.classList.add('instant');
|
leftElement.classList.add('instant');
|
||||||
leftElement.style.transitionDelay = '0s';
|
leftElement.style.transitionDelay = '0s';
|
||||||
// Wait until 'instant' and transitionDelay are applied
|
// Wait until 'instant' and transitionDelay are applied
|
||||||
@ -300,17 +269,12 @@
|
|||||||
leftElement.style.transitionDelay = window.showTimeSeconds + 's';
|
leftElement.style.transitionDelay = window.showTimeSeconds + 's';
|
||||||
// Wait until 'instant' is removed and transitionDelay applied
|
// Wait until 'instant' is removed and transitionDelay applied
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
// Check if the element is in the right place.
|
|
||||||
// If not, our client is too slow and needs an additional delay
|
|
||||||
if (getComputedStyle(leftElement).translate !== '200%') {
|
|
||||||
delay = Math.max(Math.floor(delay * 1.1), delay + 10);
|
|
||||||
}
|
|
||||||
leftElement.classList.remove('right');
|
leftElement.classList.remove('right');
|
||||||
rightElement.classList.add('left');
|
rightElement.classList.add('left');
|
||||||
loadNextPhoto(leftElement);
|
loadNextPhoto(leftElement);
|
||||||
}, delay);
|
});
|
||||||
}, delay);
|
});
|
||||||
}, delay);
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -337,7 +301,6 @@
|
|||||||
console.error('Error fetching photo', data['error']);
|
console.error('Error fetching photo', data['error']);
|
||||||
} else {
|
} else {
|
||||||
document.getElementById('headline').innerText = `Zeige Album: ${data.album}`;
|
document.getElementById('headline').innerText = `Zeige Album: ${data.album}`;
|
||||||
document.title = data.album;
|
|
||||||
element.src = data.src;
|
element.src = data.src;
|
||||||
window.photoCount = data.count;
|
window.photoCount = data.count;
|
||||||
window.displayed.push(offset);
|
window.displayed.push(offset);
|
||||||
@ -354,7 +317,7 @@
|
|||||||
const second = document.getElementById('second');
|
const second = document.getElementById('second');
|
||||||
|
|
||||||
let leftElement, rightElement;
|
let leftElement, rightElement;
|
||||||
if (first.className.includes('left') || second.className.includes('right')) {
|
if (first.className.includes('left')) {
|
||||||
leftElement = first;
|
leftElement = first;
|
||||||
rightElement = second;
|
rightElement = second;
|
||||||
} else {
|
} else {
|
||||||
@ -411,7 +374,6 @@
|
|||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="pauseIndicator" class="hidden">⏸</div>
|
|
||||||
<form id="controls">
|
<form id="controls">
|
||||||
<h3 id="headline">Zeige Album: </h3>
|
<h3 id="headline">Zeige Album: </h3>
|
||||||
<label for="random">Zufällig</label>
|
<label for="random">Zufällig</label>
|
||||||
|
12
update.sh
Executable file → Normal file
12
update.sh
Executable file → Normal file
@ -7,15 +7,13 @@ if [[ $SUCCESS != 0 ]]
|
|||||||
then
|
then
|
||||||
CURRENT='v0.0.0'
|
CURRENT='v0.0.0'
|
||||||
fi
|
fi
|
||||||
if [[ $LATEST_RELEASE == $CURRENT || $LATEST_RELEASE < $CURRENT ]]
|
if [[ $LATEST_RELEASE < $CURRENT ]]
|
||||||
then
|
then
|
||||||
echo "New version ${LATEST_RELEASE} is up to date with currently installed ${CURRENT}"
|
echo "New version ${LATEST_RELEASE} is up to date with currently installed ${CURRENT}"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "New version '${LATEST_RELEASE}' detected, updating from '${CURRENT}'"
|
echo "New version ${LATEST_RELEASE} detected, updating from ${CURRENT}"
|
||||||
sudo -u www-data wget "https://phlaym.net/git/phlaym/photoprism-slideshow/archive/${LATEST_RELEASE}.tar.gz" -O release.tar.gz
|
wget "https://phlaym.net/git/phlaym/photoprism-slideshow/archive/${LATEST_RELEASE}.tar.gz" -O release.tar.gz
|
||||||
sudo -u www-data tar xvf release.tar.gz --strip-components=1
|
|
||||||
sudo -u www-data composer install
|
tar xvf release.tar.gz
|
||||||
sudo -u www-data rm release.tar.gz
|
|
||||||
echo $LATEST_RELEASE > version.txt
|
|
Loading…
Reference in New Issue
Block a user