Sonderzeichenumgebaut auf deutsch
This commit is contained in:
@@ -1,514 +1 @@
|
|||||||
[Sat Apr 4 13:05:02 2026] PHP 8.5.4 Development Server (http://127.0.0.1:8000) started
|
[Sun Apr 5 12:58:24 2026] PHP 8.5.4 Development Server (http://127.0.0.1:8000) started
|
||||||
[Sat Apr 4 13:05:02 2026] 127.0.0.1:56847 Accepted
|
|
||||||
[Sat Apr 4 13:05:02 2026] 127.0.0.1:56847 [200]: GET /
|
|
||||||
[Sat Apr 4 13:05:02 2026] 127.0.0.1:56847 Closing
|
|
||||||
[Sat Apr 4 13:05:06 2026] 127.0.0.1:60094 Accepted
|
|
||||||
[Sat Apr 4 13:05:08 2026] 127.0.0.1:60094 [200]: GET /
|
|
||||||
[Sat Apr 4 13:05:08 2026] 127.0.0.1:60094 Closing
|
|
||||||
[Sat Apr 4 13:05:08 2026] 127.0.0.1:55506 Accepted
|
|
||||||
[Sat Apr 4 13:05:08 2026] 127.0.0.1:55506 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:05:08 2026] 127.0.0.1:55506 Closing
|
|
||||||
[Sat Apr 4 13:05:08 2026] 127.0.0.1:52560 Accepted
|
|
||||||
[Sat Apr 4 13:05:08 2026] 127.0.0.1:49223 Accepted
|
|
||||||
[Sat Apr 4 13:05:08 2026] 127.0.0.1:52560 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:05:08 2026] 127.0.0.1:49223 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:05:08 2026] 127.0.0.1:52560 Closing
|
|
||||||
[Sat Apr 4 13:05:08 2026] 127.0.0.1:49223 Closing
|
|
||||||
[Sat Apr 4 13:05:08 2026] 127.0.0.1:64599 Accepted
|
|
||||||
[Sat Apr 4 13:05:10 2026] 127.0.0.1:64599 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:05:10 2026] 127.0.0.1:64599 Closing
|
|
||||||
[Sat Apr 4 13:05:10 2026] 127.0.0.1:63078 Accepted
|
|
||||||
[Sat Apr 4 13:05:20 2026] 127.0.0.1:63078 [200]: GET /monatsvorhersage.php
|
|
||||||
[Sat Apr 4 13:05:20 2026] 127.0.0.1:63078 Closing
|
|
||||||
[Sat Apr 4 13:05:20 2026] 127.0.0.1:64746 Accepted
|
|
||||||
[Sat Apr 4 13:05:20 2026] 127.0.0.1:57663 Accepted
|
|
||||||
[Sat Apr 4 13:05:20 2026] 127.0.0.1:64746 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:05:39 2026] 127.0.0.1:57663 [200]: GET /monatsvorhersage_old.php
|
|
||||||
[Sat Apr 4 13:05:39 2026] 127.0.0.1:57663 Closing
|
|
||||||
[Sat Apr 4 13:05:39 2026] 127.0.0.1:60792 Accepted
|
|
||||||
[Sat Apr 4 13:05:39 2026] 127.0.0.1:64746 Closing
|
|
||||||
[Sat Apr 4 13:05:39 2026] 127.0.0.1:51819 Accepted
|
|
||||||
[Sat Apr 4 13:05:39 2026] 127.0.0.1:60792 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:05:39 2026] 127.0.0.1:51819 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:05:39 2026] 127.0.0.1:60792 Closing
|
|
||||||
[Sat Apr 4 13:05:39 2026] 127.0.0.1:51819 Closing
|
|
||||||
[Sat Apr 4 13:05:40 2026] 127.0.0.1:55510 Accepted
|
|
||||||
[Sat Apr 4 13:05:40 2026] 127.0.0.1:55510 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:05:40 2026] 127.0.0.1:55510 Closing
|
|
||||||
[Sat Apr 4 13:05:40 2026] 127.0.0.1:61999 Accepted
|
|
||||||
[Sat Apr 4 13:05:40 2026] 127.0.0.1:56212 Accepted
|
|
||||||
[Sat Apr 4 13:05:40 2026] 127.0.0.1:61999 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:05:40 2026] 127.0.0.1:56212 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:05:40 2026] 127.0.0.1:61999 Closing
|
|
||||||
[Sat Apr 4 13:05:40 2026] 127.0.0.1:56212 Closing
|
|
||||||
[Sat Apr 4 13:05:40 2026] 127.0.0.1:64580 Accepted
|
|
||||||
[Sat Apr 4 13:05:40 2026] 127.0.0.1:64580 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:05:40 2026] 127.0.0.1:64580 Closing
|
|
||||||
[Sat Apr 4 13:05:40 2026] 127.0.0.1:55814 Accepted
|
|
||||||
[Sat Apr 4 13:05:42 2026] 127.0.0.1:55814 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:05:42 2026] 127.0.0.1:55814 Closing
|
|
||||||
[Sat Apr 4 13:05:42 2026] 127.0.0.1:62833 Accepted
|
|
||||||
[Sat Apr 4 13:07:52 2026] 127.0.0.1:62833 Closed without sending a request; it was probably just an unused speculative preconnection
|
|
||||||
[Sat Apr 4 13:07:52 2026] 127.0.0.1:62833 Closing
|
|
||||||
[Sat Apr 4 13:07:52 2026] 127.0.0.1:51688 Accepted
|
|
||||||
[Sat Apr 4 13:08:11 2026] 127.0.0.1:51688 [200]: GET /monatsvorhersage_old.php?year=2026&month=8
|
|
||||||
[Sat Apr 4 13:08:11 2026] 127.0.0.1:51688 Closing
|
|
||||||
[Sat Apr 4 13:08:11 2026] 127.0.0.1:51110 Accepted
|
|
||||||
[Sat Apr 4 13:08:11 2026] 127.0.0.1:51110 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:08:11 2026] 127.0.0.1:51110 Closing
|
|
||||||
[Sat Apr 4 13:08:12 2026] 127.0.0.1:61842 Accepted
|
|
||||||
[Sat Apr 4 13:08:12 2026] 127.0.0.1:61842 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:08:12 2026] 127.0.0.1:61842 Closing
|
|
||||||
[Sat Apr 4 13:08:12 2026] 127.0.0.1:64415 Accepted
|
|
||||||
[Sat Apr 4 13:08:12 2026] 127.0.0.1:62641 Accepted
|
|
||||||
[Sat Apr 4 13:08:12 2026] 127.0.0.1:64415 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:08:12 2026] 127.0.0.1:62641 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:08:12 2026] 127.0.0.1:64415 Closing
|
|
||||||
[Sat Apr 4 13:08:12 2026] 127.0.0.1:62641 Closing
|
|
||||||
[Sat Apr 4 13:08:12 2026] 127.0.0.1:63695 Accepted
|
|
||||||
[Sat Apr 4 13:08:12 2026] 127.0.0.1:63695 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:08:12 2026] 127.0.0.1:63695 Closing
|
|
||||||
[Sat Apr 4 13:08:12 2026] 127.0.0.1:65119 Accepted
|
|
||||||
[Sat Apr 4 13:08:14 2026] 127.0.0.1:65119 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:08:14 2026] 127.0.0.1:65119 Closing
|
|
||||||
[Sat Apr 4 13:08:14 2026] 127.0.0.1:50310 Accepted
|
|
||||||
[Sat Apr 4 13:09:39 2026] 127.0.0.1:50310 Closed without sending a request; it was probably just an unused speculative preconnection
|
|
||||||
[Sat Apr 4 13:09:39 2026] 127.0.0.1:50310 Closing
|
|
||||||
[Sat Apr 4 13:11:39 2026] 127.0.0.1:51038 Accepted
|
|
||||||
[Sat Apr 4 13:11:59 2026] 127.0.0.1:51038 [200]: GET /monatsvorhersage_old.php?month=8&year=2026
|
|
||||||
[Sat Apr 4 13:11:59 2026] 127.0.0.1:51038 Closing
|
|
||||||
[Sat Apr 4 13:15:49 2026] 127.0.0.1:61379 Accepted
|
|
||||||
[Sat Apr 4 13:16:07 2026] 127.0.0.1:61379 [200]: GET /monatsvorhersage_old.php?year=2026&month=8
|
|
||||||
[Sat Apr 4 13:16:07 2026] 127.0.0.1:61379 Closing
|
|
||||||
[Sat Apr 4 13:16:07 2026] 127.0.0.1:57225 Accepted
|
|
||||||
[Sat Apr 4 13:16:07 2026] 127.0.0.1:57225 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:16:07 2026] 127.0.0.1:57225 Closing
|
|
||||||
[Sat Apr 4 13:16:08 2026] 127.0.0.1:54279 Accepted
|
|
||||||
[Sat Apr 4 13:16:08 2026] 127.0.0.1:63941 Accepted
|
|
||||||
[Sat Apr 4 13:16:08 2026] 127.0.0.1:50404 Accepted
|
|
||||||
[Sat Apr 4 13:16:08 2026] 127.0.0.1:54279 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:16:08 2026] 127.0.0.1:63941 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:16:08 2026] 127.0.0.1:50404 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:16:08 2026] 127.0.0.1:54279 Closing
|
|
||||||
[Sat Apr 4 13:16:08 2026] 127.0.0.1:63941 Closing
|
|
||||||
[Sat Apr 4 13:16:08 2026] 127.0.0.1:50404 Closing
|
|
||||||
[Sat Apr 4 13:16:08 2026] 127.0.0.1:65327 Accepted
|
|
||||||
[Sat Apr 4 13:16:08 2026] 127.0.0.1:65327 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:16:08 2026] 127.0.0.1:65327 Closing
|
|
||||||
[Sat Apr 4 13:16:08 2026] 127.0.0.1:59854 Accepted
|
|
||||||
[Sat Apr 4 13:16:10 2026] 127.0.0.1:59854 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:16:10 2026] 127.0.0.1:59854 Closing
|
|
||||||
[Sat Apr 4 13:16:10 2026] 127.0.0.1:56915 Accepted
|
|
||||||
[Sat Apr 4 13:17:37 2026] 127.0.0.1:56915 Closed without sending a request; it was probably just an unused speculative preconnection
|
|
||||||
[Sat Apr 4 13:17:37 2026] 127.0.0.1:56915 Closing
|
|
||||||
[Sat Apr 4 13:19:31 2026] 127.0.0.1:62466 Accepted
|
|
||||||
[Sat Apr 4 13:19:49 2026] 127.0.0.1:62466 [200]: GET /monatsvorhersage_old.php?year=2026&month=8
|
|
||||||
[Sat Apr 4 13:19:49 2026] 127.0.0.1:62466 Closing
|
|
||||||
[Sat Apr 4 13:19:49 2026] 127.0.0.1:56563 Accepted
|
|
||||||
[Sat Apr 4 13:19:49 2026] 127.0.0.1:56563 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:19:49 2026] 127.0.0.1:56563 Closing
|
|
||||||
[Sat Apr 4 13:19:50 2026] 127.0.0.1:64763 Accepted
|
|
||||||
[Sat Apr 4 13:19:50 2026] 127.0.0.1:57365 Accepted
|
|
||||||
[Sat Apr 4 13:19:50 2026] 127.0.0.1:65177 Accepted
|
|
||||||
[Sat Apr 4 13:19:50 2026] 127.0.0.1:64763 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:19:50 2026] 127.0.0.1:57365 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:19:50 2026] 127.0.0.1:65177 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:19:50 2026] 127.0.0.1:64763 Closing
|
|
||||||
[Sat Apr 4 13:19:50 2026] 127.0.0.1:57365 Closing
|
|
||||||
[Sat Apr 4 13:19:50 2026] 127.0.0.1:65177 Closing
|
|
||||||
[Sat Apr 4 13:19:50 2026] 127.0.0.1:55468 Accepted
|
|
||||||
[Sat Apr 4 13:19:50 2026] 127.0.0.1:55468 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:19:50 2026] 127.0.0.1:55468 Closing
|
|
||||||
[Sat Apr 4 13:19:50 2026] 127.0.0.1:59829 Accepted
|
|
||||||
[Sat Apr 4 13:19:52 2026] 127.0.0.1:59829 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:19:52 2026] 127.0.0.1:59829 Closing
|
|
||||||
[Sat Apr 4 13:19:52 2026] 127.0.0.1:59742 Accepted
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:59742 [200]: GET /monatsvorhersage_old.php?year=2026&month=4
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:59742 Closing
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:56911 Accepted
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:56911 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:56911 Closing
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:56768 Accepted
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:55966 Accepted
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:63374 Accepted
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:56768 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:55966 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:63374 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:56768 Closing
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:55966 Closing
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:63374 Closing
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:49904 Accepted
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:49904 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:49904 Closing
|
|
||||||
[Sat Apr 4 13:20:29 2026] 127.0.0.1:58593 Accepted
|
|
||||||
[Sat Apr 4 13:20:31 2026] 127.0.0.1:58593 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:20:31 2026] 127.0.0.1:58593 Closing
|
|
||||||
[Sat Apr 4 13:20:31 2026] 127.0.0.1:52115 Accepted
|
|
||||||
[Sat Apr 4 13:21:39 2026] 127.0.0.1:52115 Closed without sending a request; it was probably just an unused speculative preconnection
|
|
||||||
[Sat Apr 4 13:21:39 2026] 127.0.0.1:52115 Closing
|
|
||||||
[Sat Apr 4 13:23:23 2026] 127.0.0.1:64731 Accepted
|
|
||||||
[Sat Apr 4 13:23:41 2026] 127.0.0.1:64731 [200]: GET /monatsvorhersage_old.php?year=2026&month=4
|
|
||||||
[Sat Apr 4 13:23:41 2026] 127.0.0.1:64731 Closing
|
|
||||||
[Sat Apr 4 13:23:41 2026] 127.0.0.1:58328 Accepted
|
|
||||||
[Sat Apr 4 13:23:41 2026] 127.0.0.1:58328 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:23:41 2026] 127.0.0.1:58328 Closing
|
|
||||||
[Sat Apr 4 13:23:41 2026] 127.0.0.1:58441 Accepted
|
|
||||||
[Sat Apr 4 13:23:41 2026] 127.0.0.1:54768 Accepted
|
|
||||||
[Sat Apr 4 13:23:41 2026] 127.0.0.1:62374 Accepted
|
|
||||||
[Sat Apr 4 13:23:41 2026] 127.0.0.1:58441 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:23:41 2026] 127.0.0.1:54768 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:23:41 2026] 127.0.0.1:62374 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:23:41 2026] 127.0.0.1:58441 Closing
|
|
||||||
[Sat Apr 4 13:23:41 2026] 127.0.0.1:54768 Closing
|
|
||||||
[Sat Apr 4 13:23:41 2026] 127.0.0.1:62374 Closing
|
|
||||||
[Sat Apr 4 13:23:42 2026] 127.0.0.1:63045 Accepted
|
|
||||||
[Sat Apr 4 13:23:42 2026] 127.0.0.1:63045 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:23:42 2026] 127.0.0.1:63045 Closing
|
|
||||||
[Sat Apr 4 13:23:42 2026] 127.0.0.1:58545 Accepted
|
|
||||||
[Sat Apr 4 13:23:43 2026] 127.0.0.1:58545 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:23:43 2026] 127.0.0.1:58545 Closing
|
|
||||||
[Sat Apr 4 13:23:43 2026] 127.0.0.1:62655 Accepted
|
|
||||||
[Sat Apr 4 13:25:25 2026] 127.0.0.1:62655 Closed without sending a request; it was probably just an unused speculative preconnection
|
|
||||||
[Sat Apr 4 13:25:25 2026] 127.0.0.1:62655 Closing
|
|
||||||
[Sat Apr 4 13:25:56 2026] 127.0.0.1:61286 Accepted
|
|
||||||
[Sat Apr 4 13:26:14 2026] 127.0.0.1:61286 [200]: GET /monatsvorhersage_old.php?year=2026&month=4
|
|
||||||
[Sat Apr 4 13:26:14 2026] 127.0.0.1:61286 Closing
|
|
||||||
[Sat Apr 4 13:26:14 2026] 127.0.0.1:50887 Accepted
|
|
||||||
[Sat Apr 4 13:26:14 2026] 127.0.0.1:50887 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:26:14 2026] 127.0.0.1:50887 Closing
|
|
||||||
[Sat Apr 4 13:26:14 2026] 127.0.0.1:51178 Accepted
|
|
||||||
[Sat Apr 4 13:26:14 2026] 127.0.0.1:62601 Accepted
|
|
||||||
[Sat Apr 4 13:26:14 2026] 127.0.0.1:50633 Accepted
|
|
||||||
[Sat Apr 4 13:26:14 2026] 127.0.0.1:51178 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:26:14 2026] 127.0.0.1:62601 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:26:14 2026] 127.0.0.1:50633 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:26:14 2026] 127.0.0.1:51178 Closing
|
|
||||||
[Sat Apr 4 13:26:14 2026] 127.0.0.1:62601 Closing
|
|
||||||
[Sat Apr 4 13:26:14 2026] 127.0.0.1:50633 Closing
|
|
||||||
[Sat Apr 4 13:26:15 2026] 127.0.0.1:64777 Accepted
|
|
||||||
[Sat Apr 4 13:26:15 2026] 127.0.0.1:64777 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:26:15 2026] 127.0.0.1:64777 Closing
|
|
||||||
[Sat Apr 4 13:26:15 2026] 127.0.0.1:54587 Accepted
|
|
||||||
[Sat Apr 4 13:26:16 2026] 127.0.0.1:54587 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:26:16 2026] 127.0.0.1:54587 Closing
|
|
||||||
[Sat Apr 4 13:26:16 2026] 127.0.0.1:59843 Accepted
|
|
||||||
[Sat Apr 4 13:27:02 2026] 127.0.0.1:59843 [200]: GET /monatsvorhersage_old.php?year=2026&month=4
|
|
||||||
[Sat Apr 4 13:27:02 2026] 127.0.0.1:59843 Closing
|
|
||||||
[Sat Apr 4 13:27:02 2026] 127.0.0.1:60256 Accepted
|
|
||||||
[Sat Apr 4 13:27:02 2026] 127.0.0.1:60256 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:27:02 2026] 127.0.0.1:60256 Closing
|
|
||||||
[Sat Apr 4 13:27:03 2026] 127.0.0.1:50709 Accepted
|
|
||||||
[Sat Apr 4 13:27:03 2026] 127.0.0.1:50709 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:27:03 2026] 127.0.0.1:50709 Closing
|
|
||||||
[Sat Apr 4 13:27:03 2026] 127.0.0.1:55625 Accepted
|
|
||||||
[Sat Apr 4 13:27:03 2026] 127.0.0.1:61166 Accepted
|
|
||||||
[Sat Apr 4 13:27:03 2026] 127.0.0.1:55625 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:27:03 2026] 127.0.0.1:61166 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:27:03 2026] 127.0.0.1:55625 Closing
|
|
||||||
[Sat Apr 4 13:27:03 2026] 127.0.0.1:61166 Closing
|
|
||||||
[Sat Apr 4 13:27:03 2026] 127.0.0.1:56924 Accepted
|
|
||||||
[Sat Apr 4 13:27:03 2026] 127.0.0.1:56924 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:27:03 2026] 127.0.0.1:56924 Closing
|
|
||||||
[Sat Apr 4 13:27:03 2026] 127.0.0.1:58839 Accepted
|
|
||||||
[Sat Apr 4 13:27:04 2026] 127.0.0.1:58839 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:27:04 2026] 127.0.0.1:58839 Closing
|
|
||||||
[Sat Apr 4 13:27:04 2026] 127.0.0.1:59023 Accepted
|
|
||||||
[Sat Apr 4 13:28:04 2026] 127.0.0.1:59023 Closed without sending a request; it was probably just an unused speculative preconnection
|
|
||||||
[Sat Apr 4 13:28:04 2026] 127.0.0.1:59023 Closing
|
|
||||||
[Sat Apr 4 13:28:24 2026] 127.0.0.1:65445 Accepted
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:65445 [200]: GET /monatsvorhersage_old.php?year=2026&month=6
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:65445 Closing
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:57680 Accepted
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:57680 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:57680 Closing
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:64580 Accepted
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:59058 Accepted
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:59321 Accepted
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:64580 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:59058 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:59321 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:64580 Closing
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:59058 Closing
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:59321 Closing
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:57091 Accepted
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:57091 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:28:43 2026] 127.0.0.1:57091 Closing
|
|
||||||
[Sat Apr 4 13:28:44 2026] 127.0.0.1:64529 Accepted
|
|
||||||
[Sat Apr 4 13:28:45 2026] 127.0.0.1:64529 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:28:45 2026] 127.0.0.1:64529 Closing
|
|
||||||
[Sat Apr 4 13:28:45 2026] 127.0.0.1:57521 Accepted
|
|
||||||
[Sat Apr 4 13:29:45 2026] 127.0.0.1:57521 Closed without sending a request; it was probably just an unused speculative preconnection
|
|
||||||
[Sat Apr 4 13:29:45 2026] 127.0.0.1:57521 Closing
|
|
||||||
[Sat Apr 4 13:29:45 2026] 127.0.0.1:60715 Accepted
|
|
||||||
[Sat Apr 4 13:30:04 2026] 127.0.0.1:60715 [200]: GET /monatsvorhersage_old.php?year=2026&month=7
|
|
||||||
[Sat Apr 4 13:30:04 2026] 127.0.0.1:60715 Closing
|
|
||||||
[Sat Apr 4 13:30:04 2026] 127.0.0.1:63768 Accepted
|
|
||||||
[Sat Apr 4 13:30:04 2026] 127.0.0.1:63768 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:30:04 2026] 127.0.0.1:63768 Closing
|
|
||||||
[Sat Apr 4 13:30:04 2026] 127.0.0.1:53424 Accepted
|
|
||||||
[Sat Apr 4 13:30:04 2026] 127.0.0.1:63669 Accepted
|
|
||||||
[Sat Apr 4 13:30:04 2026] 127.0.0.1:61253 Accepted
|
|
||||||
[Sat Apr 4 13:30:04 2026] 127.0.0.1:53424 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:30:04 2026] 127.0.0.1:63669 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:30:04 2026] 127.0.0.1:61253 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:30:04 2026] 127.0.0.1:53424 Closing
|
|
||||||
[Sat Apr 4 13:30:04 2026] 127.0.0.1:63669 Closing
|
|
||||||
[Sat Apr 4 13:30:04 2026] 127.0.0.1:61253 Closing
|
|
||||||
[Sat Apr 4 13:30:05 2026] 127.0.0.1:64094 Accepted
|
|
||||||
[Sat Apr 4 13:30:05 2026] 127.0.0.1:64094 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:30:05 2026] 127.0.0.1:64094 Closing
|
|
||||||
[Sat Apr 4 13:30:05 2026] 127.0.0.1:51726 Accepted
|
|
||||||
[Sat Apr 4 13:30:06 2026] 127.0.0.1:51726 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:30:06 2026] 127.0.0.1:51726 Closing
|
|
||||||
[Sat Apr 4 13:30:06 2026] 127.0.0.1:52200 Accepted
|
|
||||||
[Sat Apr 4 13:30:50 2026] 127.0.0.1:52200 [200]: GET /monatsvorhersage_old.php?year=2026&month=11
|
|
||||||
[Sat Apr 4 13:30:50 2026] 127.0.0.1:52200 Closing
|
|
||||||
[Sat Apr 4 13:30:50 2026] 127.0.0.1:62487 Accepted
|
|
||||||
[Sat Apr 4 13:30:50 2026] 127.0.0.1:62487 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:30:50 2026] 127.0.0.1:62487 Closing
|
|
||||||
[Sat Apr 4 13:30:50 2026] 127.0.0.1:60781 Accepted
|
|
||||||
[Sat Apr 4 13:30:50 2026] 127.0.0.1:60781 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:30:50 2026] 127.0.0.1:60781 Closing
|
|
||||||
[Sat Apr 4 13:30:50 2026] 127.0.0.1:53275 Accepted
|
|
||||||
[Sat Apr 4 13:30:50 2026] 127.0.0.1:49256 Accepted
|
|
||||||
[Sat Apr 4 13:30:50 2026] 127.0.0.1:53275 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:30:50 2026] 127.0.0.1:49256 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:30:50 2026] 127.0.0.1:53275 Closing
|
|
||||||
[Sat Apr 4 13:30:50 2026] 127.0.0.1:49256 Closing
|
|
||||||
[Sat Apr 4 13:30:51 2026] 127.0.0.1:63389 Accepted
|
|
||||||
[Sat Apr 4 13:30:51 2026] 127.0.0.1:63389 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:30:51 2026] 127.0.0.1:63389 Closing
|
|
||||||
[Sat Apr 4 13:30:51 2026] 127.0.0.1:61832 Accepted
|
|
||||||
[Sat Apr 4 13:30:52 2026] 127.0.0.1:61832 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:30:52 2026] 127.0.0.1:61832 Closing
|
|
||||||
[Sat Apr 4 13:30:52 2026] 127.0.0.1:59473 Accepted
|
|
||||||
[Sat Apr 4 13:31:32 2026] 127.0.0.1:59473 [200]: GET /monatsvorhersage_old.php?year=2026&month=12
|
|
||||||
[Sat Apr 4 13:31:32 2026] 127.0.0.1:59473 Closing
|
|
||||||
[Sat Apr 4 13:31:32 2026] 127.0.0.1:65461 Accepted
|
|
||||||
[Sat Apr 4 13:31:32 2026] 127.0.0.1:65461 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:31:32 2026] 127.0.0.1:65461 Closing
|
|
||||||
[Sat Apr 4 13:31:32 2026] 127.0.0.1:62904 Accepted
|
|
||||||
[Sat Apr 4 13:31:32 2026] 127.0.0.1:62904 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:31:32 2026] 127.0.0.1:62904 Closing
|
|
||||||
[Sat Apr 4 13:31:32 2026] 127.0.0.1:54230 Accepted
|
|
||||||
[Sat Apr 4 13:31:32 2026] 127.0.0.1:56692 Accepted
|
|
||||||
[Sat Apr 4 13:31:32 2026] 127.0.0.1:54230 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:31:32 2026] 127.0.0.1:56692 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:31:32 2026] 127.0.0.1:54230 Closing
|
|
||||||
[Sat Apr 4 13:31:32 2026] 127.0.0.1:56692 Closing
|
|
||||||
[Sat Apr 4 13:31:33 2026] 127.0.0.1:55075 Accepted
|
|
||||||
[Sat Apr 4 13:31:33 2026] 127.0.0.1:55075 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:31:33 2026] 127.0.0.1:55075 Closing
|
|
||||||
[Sat Apr 4 13:31:33 2026] 127.0.0.1:64547 Accepted
|
|
||||||
[Sat Apr 4 13:31:34 2026] 127.0.0.1:64547 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:31:34 2026] 127.0.0.1:64547 Closing
|
|
||||||
[Sat Apr 4 13:31:34 2026] 127.0.0.1:55972 Accepted
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:55972 [200]: GET /monatsvorhersage_old.php?year=2026&month=6
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:55972 Closing
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:59385 Accepted
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:59385 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:59385 Closing
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:57529 Accepted
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:57529 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:57529 Closing
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:52680 Accepted
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:53823 Accepted
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:52680 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:53823 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:52680 Closing
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:53823 Closing
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:55373 Accepted
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:55373 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:32:38 2026] 127.0.0.1:55373 Closing
|
|
||||||
[Sat Apr 4 13:32:39 2026] 127.0.0.1:57222 Accepted
|
|
||||||
[Sat Apr 4 13:32:40 2026] 127.0.0.1:57222 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:32:40 2026] 127.0.0.1:57222 Closing
|
|
||||||
[Sat Apr 4 13:32:40 2026] 127.0.0.1:65119 Accepted
|
|
||||||
[Sat Apr 4 13:33:49 2026] 127.0.0.1:65119 Closed without sending a request; it was probably just an unused speculative preconnection
|
|
||||||
[Sat Apr 4 13:33:49 2026] 127.0.0.1:65119 Closing
|
|
||||||
[Sat Apr 4 13:38:06 2026] 127.0.0.1:58712 Accepted
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:58712 [200]: GET /monatsvorhersage_old.php?year=2026&month=6
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:58712 Closing
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:49291 Accepted
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:49291 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:49291 Closing
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:54898 Accepted
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:64556 Accepted
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:52911 Accepted
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:54898 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:64556 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:52911 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:54898 Closing
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:64556 Closing
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:52911 Closing
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:52036 Accepted
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:52036 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:52036 Closing
|
|
||||||
[Sat Apr 4 13:38:25 2026] 127.0.0.1:51944 Accepted
|
|
||||||
[Sat Apr 4 13:38:27 2026] 127.0.0.1:51944 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:38:27 2026] 127.0.0.1:51944 Closing
|
|
||||||
[Sat Apr 4 13:38:27 2026] 127.0.0.1:51201 Accepted
|
|
||||||
[Sat Apr 4 13:40:25 2026] 127.0.0.1:51201 Closed without sending a request; it was probably just an unused speculative preconnection
|
|
||||||
[Sat Apr 4 13:40:25 2026] 127.0.0.1:51201 Closing
|
|
||||||
[Sat Apr 4 13:44:22 2026] 127.0.0.1:62240 Accepted
|
|
||||||
[Sat Apr 4 13:44:45 2026] 127.0.0.1:62240 [200]: GET /monatsvorhersage_old.php?year=2026&month=6
|
|
||||||
[Sat Apr 4 13:44:45 2026] 127.0.0.1:62240 Closing
|
|
||||||
[Sat Apr 4 13:44:45 2026] 127.0.0.1:56366 Accepted
|
|
||||||
[Sat Apr 4 13:44:45 2026] 127.0.0.1:56366 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:44:45 2026] 127.0.0.1:56366 Closing
|
|
||||||
[Sat Apr 4 13:44:46 2026] 127.0.0.1:61203 Accepted
|
|
||||||
[Sat Apr 4 13:44:46 2026] 127.0.0.1:60789 Accepted
|
|
||||||
[Sat Apr 4 13:44:46 2026] 127.0.0.1:58216 Accepted
|
|
||||||
[Sat Apr 4 13:44:46 2026] 127.0.0.1:61203 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:44:46 2026] 127.0.0.1:60789 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:44:46 2026] 127.0.0.1:58216 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:44:46 2026] 127.0.0.1:61203 Closing
|
|
||||||
[Sat Apr 4 13:44:46 2026] 127.0.0.1:60789 Closing
|
|
||||||
[Sat Apr 4 13:44:46 2026] 127.0.0.1:58216 Closing
|
|
||||||
[Sat Apr 4 13:44:46 2026] 127.0.0.1:51748 Accepted
|
|
||||||
[Sat Apr 4 13:44:46 2026] 127.0.0.1:51748 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:44:46 2026] 127.0.0.1:51748 Closing
|
|
||||||
[Sat Apr 4 13:44:46 2026] 127.0.0.1:58822 Accepted
|
|
||||||
[Sat Apr 4 13:44:48 2026] 127.0.0.1:58822 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:44:48 2026] 127.0.0.1:58822 Closing
|
|
||||||
[Sat Apr 4 13:44:48 2026] 127.0.0.1:59663 Accepted
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:59663 [200]: GET /monatsvorhersage_old.php?year=2026&month=3
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:59663 Closing
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:58444 Accepted
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:58444 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:58444 Closing
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:54748 Accepted
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:50160 Accepted
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:63963 Accepted
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:54748 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:50160 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:63963 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:54748 Closing
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:50160 Closing
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:63963 Closing
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:49669 Accepted
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:49669 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:45:47 2026] 127.0.0.1:49669 Closing
|
|
||||||
[Sat Apr 4 13:45:48 2026] 127.0.0.1:62598 Accepted
|
|
||||||
[Sat Apr 4 13:45:49 2026] 127.0.0.1:62598 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:45:49 2026] 127.0.0.1:62598 Closing
|
|
||||||
[Sat Apr 4 13:45:49 2026] 127.0.0.1:64872 Accepted
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:64872 [200]: GET /monatsvorhersage_old.php?year=2026&month=3
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:64872 Closing
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:52271 Accepted
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:52271 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:52271 Closing
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:60145 Accepted
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:60145 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:60145 Closing
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:64268 Accepted
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:54962 Accepted
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:64268 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:54962 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:64268 Closing
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:54962 Closing
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:60276 Accepted
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:60276 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:47:10 2026] 127.0.0.1:60276 Closing
|
|
||||||
[Sat Apr 4 13:47:11 2026] 127.0.0.1:57233 Accepted
|
|
||||||
[Sat Apr 4 13:47:12 2026] 127.0.0.1:57233 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:47:12 2026] 127.0.0.1:57233 Closing
|
|
||||||
[Sat Apr 4 13:47:12 2026] 127.0.0.1:57496 Accepted
|
|
||||||
[Sat Apr 4 13:48:32 2026] 127.0.0.1:57496 Closed without sending a request; it was probably just an unused speculative preconnection
|
|
||||||
[Sat Apr 4 13:48:32 2026] 127.0.0.1:57496 Closing
|
|
||||||
[Sat Apr 4 13:52:34 2026] 127.0.0.1:59903 Accepted
|
|
||||||
[Sat Apr 4 13:53:02 2026] 127.0.0.1:59903 [200]: GET /monatsvorhersage_old.php?year=2026&month=3
|
|
||||||
[Sat Apr 4 13:53:02 2026] 127.0.0.1:59903 Closing
|
|
||||||
[Sat Apr 4 13:53:02 2026] 127.0.0.1:57051 Accepted
|
|
||||||
[Sat Apr 4 13:53:02 2026] 127.0.0.1:57051 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:53:02 2026] 127.0.0.1:57051 Closing
|
|
||||||
[Sat Apr 4 13:53:02 2026] 127.0.0.1:55642 Accepted
|
|
||||||
[Sat Apr 4 13:53:02 2026] 127.0.0.1:55642 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:53:02 2026] 127.0.0.1:55642 Closing
|
|
||||||
[Sat Apr 4 13:53:02 2026] 127.0.0.1:58427 Accepted
|
|
||||||
[Sat Apr 4 13:53:02 2026] 127.0.0.1:55928 Accepted
|
|
||||||
[Sat Apr 4 13:53:02 2026] 127.0.0.1:58427 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:53:02 2026] 127.0.0.1:55928 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:53:02 2026] 127.0.0.1:58427 Closing
|
|
||||||
[Sat Apr 4 13:53:02 2026] 127.0.0.1:55928 Closing
|
|
||||||
[Sat Apr 4 13:53:03 2026] 127.0.0.1:61870 Accepted
|
|
||||||
[Sat Apr 4 13:53:03 2026] 127.0.0.1:61870 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:53:03 2026] 127.0.0.1:61870 Closing
|
|
||||||
[Sat Apr 4 13:53:03 2026] 127.0.0.1:54335 Accepted
|
|
||||||
[Sat Apr 4 13:53:04 2026] 127.0.0.1:54335 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:53:04 2026] 127.0.0.1:54335 Closing
|
|
||||||
[Sat Apr 4 13:53:04 2026] 127.0.0.1:62912 Accepted
|
|
||||||
[Sat Apr 4 13:54:05 2026] 127.0.0.1:62912 Closed without sending a request; it was probably just an unused speculative preconnection
|
|
||||||
[Sat Apr 4 13:54:05 2026] 127.0.0.1:62912 Closing
|
|
||||||
[Sat Apr 4 13:54:06 2026] 127.0.0.1:49467 Accepted
|
|
||||||
[Sat Apr 4 13:54:33 2026] 127.0.0.1:49467 [200]: GET /monatsvorhersage_old.php?year=2026&month=3
|
|
||||||
[Sat Apr 4 13:54:33 2026] 127.0.0.1:49467 Closing
|
|
||||||
[Sat Apr 4 13:54:33 2026] 127.0.0.1:54734 Accepted
|
|
||||||
[Sat Apr 4 13:54:33 2026] 127.0.0.1:54734 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:54:34 2026] 127.0.0.1:54734 Closing
|
|
||||||
[Sat Apr 4 13:54:34 2026] 127.0.0.1:60887 Accepted
|
|
||||||
[Sat Apr 4 13:54:34 2026] 127.0.0.1:51648 Accepted
|
|
||||||
[Sat Apr 4 13:54:34 2026] 127.0.0.1:58048 Accepted
|
|
||||||
[Sat Apr 4 13:54:34 2026] 127.0.0.1:60887 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:54:34 2026] 127.0.0.1:51648 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:54:34 2026] 127.0.0.1:58048 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:54:34 2026] 127.0.0.1:60887 Closing
|
|
||||||
[Sat Apr 4 13:54:34 2026] 127.0.0.1:51648 Closing
|
|
||||||
[Sat Apr 4 13:54:34 2026] 127.0.0.1:58048 Closing
|
|
||||||
[Sat Apr 4 13:54:34 2026] 127.0.0.1:64802 Accepted
|
|
||||||
[Sat Apr 4 13:54:34 2026] 127.0.0.1:64802 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:54:34 2026] 127.0.0.1:64802 Closing
|
|
||||||
[Sat Apr 4 13:54:34 2026] 127.0.0.1:63820 Accepted
|
|
||||||
[Sat Apr 4 13:54:36 2026] 127.0.0.1:63820 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:54:36 2026] 127.0.0.1:63820 Closing
|
|
||||||
[Sat Apr 4 13:54:36 2026] 127.0.0.1:52071 Accepted
|
|
||||||
[Sat Apr 4 13:55:40 2026] 127.0.0.1:52071 Closed without sending a request; it was probably just an unused speculative preconnection
|
|
||||||
[Sat Apr 4 13:55:40 2026] 127.0.0.1:52071 Closing
|
|
||||||
[Sat Apr 4 13:57:33 2026] 127.0.0.1:51514 Accepted
|
|
||||||
[Sat Apr 4 13:58:01 2026] 127.0.0.1:51514 [200]: GET /monatsvorhersage_old.php?year=2026&month=3
|
|
||||||
[Sat Apr 4 13:58:01 2026] 127.0.0.1:51514 Closing
|
|
||||||
[Sat Apr 4 13:58:01 2026] 127.0.0.1:64035 Accepted
|
|
||||||
[Sat Apr 4 13:58:01 2026] 127.0.0.1:64035 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 13:58:01 2026] 127.0.0.1:64035 Closing
|
|
||||||
[Sat Apr 4 13:58:02 2026] 127.0.0.1:62594 Accepted
|
|
||||||
[Sat Apr 4 13:58:02 2026] 127.0.0.1:62594 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 13:58:02 2026] 127.0.0.1:62594 Closing
|
|
||||||
[Sat Apr 4 13:58:02 2026] 127.0.0.1:57161 Accepted
|
|
||||||
[Sat Apr 4 13:58:02 2026] 127.0.0.1:64207 Accepted
|
|
||||||
[Sat Apr 4 13:58:02 2026] 127.0.0.1:57161 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 13:58:02 2026] 127.0.0.1:64207 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 13:58:02 2026] 127.0.0.1:57161 Closing
|
|
||||||
[Sat Apr 4 13:58:02 2026] 127.0.0.1:64207 Closing
|
|
||||||
[Sat Apr 4 13:58:02 2026] 127.0.0.1:62295 Accepted
|
|
||||||
[Sat Apr 4 13:58:02 2026] 127.0.0.1:62295 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 13:58:02 2026] 127.0.0.1:62295 Closing
|
|
||||||
[Sat Apr 4 13:58:02 2026] 127.0.0.1:58421 Accepted
|
|
||||||
[Sat Apr 4 13:58:03 2026] 127.0.0.1:58421 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 13:58:03 2026] 127.0.0.1:58421 Closing
|
|
||||||
[Sat Apr 4 13:58:03 2026] 127.0.0.1:64749 Accepted
|
|
||||||
[Sat Apr 4 13:59:29 2026] 127.0.0.1:64749 Closed without sending a request; it was probably just an unused speculative preconnection
|
|
||||||
[Sat Apr 4 13:59:29 2026] 127.0.0.1:64749 Closing
|
|
||||||
[Sat Apr 4 14:00:30 2026] 127.0.0.1:59949 Accepted
|
|
||||||
[Sat Apr 4 14:00:58 2026] 127.0.0.1:59949 [200]: GET /monatsvorhersage_old.php?year=2026&month=3
|
|
||||||
[Sat Apr 4 14:00:58 2026] 127.0.0.1:59949 Closing
|
|
||||||
[Sat Apr 4 14:00:58 2026] 127.0.0.1:58547 Accepted
|
|
||||||
[Sat Apr 4 14:00:58 2026] 127.0.0.1:58547 [200]: GET /css/style.css
|
|
||||||
[Sat Apr 4 14:00:58 2026] 127.0.0.1:58547 Closing
|
|
||||||
[Sat Apr 4 14:00:59 2026] 127.0.0.1:52032 Accepted
|
|
||||||
[Sat Apr 4 14:00:59 2026] 127.0.0.1:59328 Accepted
|
|
||||||
[Sat Apr 4 14:00:59 2026] 127.0.0.1:61499 Accepted
|
|
||||||
[Sat Apr 4 14:00:59 2026] 127.0.0.1:52032 [200]: GET /js/astronomy.browser.min.js
|
|
||||||
[Sat Apr 4 14:00:59 2026] 127.0.0.1:59328 [200]: GET /images/star16x16.png
|
|
||||||
[Sat Apr 4 14:00:59 2026] 127.0.0.1:61499 [200]: GET /images/star16x16_rays.png
|
|
||||||
[Sat Apr 4 14:00:59 2026] 127.0.0.1:52032 Closing
|
|
||||||
[Sat Apr 4 14:00:59 2026] 127.0.0.1:59328 Closing
|
|
||||||
[Sat Apr 4 14:00:59 2026] 127.0.0.1:61499 Closing
|
|
||||||
[Sat Apr 4 14:00:59 2026] 127.0.0.1:52843 Accepted
|
|
||||||
[Sat Apr 4 14:00:59 2026] 127.0.0.1:52843 [200]: GET /images/moons/moon4geocron.png
|
|
||||||
[Sat Apr 4 14:00:59 2026] 127.0.0.1:52843 Closing
|
|
||||||
[Sat Apr 4 14:00:59 2026] 127.0.0.1:63369 Accepted
|
|
||||||
[Sat Apr 4 14:01:01 2026] 127.0.0.1:63369 [200]: GET /favicon.ico
|
|
||||||
[Sat Apr 4 14:01:01 2026] 127.0.0.1:63369 Closing
|
|
||||||
[Sat Apr 4 14:01:01 2026] 127.0.0.1:61071 Accepted
|
|
||||||
[Sat Apr 4 14:02:40 2026] 127.0.0.1:61071 Closed without sending a request; it was probably just an unused speculative preconnection
|
|
||||||
[Sat Apr 4 14:02:40 2026] 127.0.0.1:61071 Closing
|
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
.codex-temp/
|
||||||
+4
-4
@@ -1,13 +1,13 @@
|
|||||||
# Dokumentation
|
# Dokumentation
|
||||||
|
|
||||||
Hier liegen die internen Anleitungen und technischen Hilfen fuer das Projekt.
|
Hier liegen die internen Anleitungen und technischen Hilfen für das Projekt.
|
||||||
|
|
||||||
## Verfuegbar
|
## Verfügbar
|
||||||
|
|
||||||
- [`docs/README_PROJEKT.md`](README_PROJEKT.md)
|
- [`docs/README_PROJEKT.md`](README_PROJEKT.md)
|
||||||
Grundsaetzliche Erklaerung der Website, ihrer Bereiche und Datenfluesse
|
Grundsätzliche Erklärung der Website, ihrer Bereiche und Datenflüsse
|
||||||
- [`docs/README_LOCAL_WEBSERVER.md`](README_LOCAL_WEBSERVER.md)
|
- [`docs/README_LOCAL_WEBSERVER.md`](README_LOCAL_WEBSERVER.md)
|
||||||
Lokale Startanleitung fuer den PHP-Webserver auf den bekannten Arbeitsplaetzen
|
Lokale Startanleitung für den PHP-Webserver auf den bekannten Arbeitsplätzen
|
||||||
- [`docs/README_RECHTESYSTEM.md`](README_RECHTESYSTEM.md)
|
- [`docs/README_RECHTESYSTEM.md`](README_RECHTESYSTEM.md)
|
||||||
Beschreibung des aktuellen Rollen- und Seitenrechtesystems
|
Beschreibung des aktuellen Rollen- und Seitenrechtesystems
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Lokaler PHP-Webserver
|
# Lokaler PHP-Webserver
|
||||||
|
|
||||||
Diese Anleitung enthaelt die lokalen Startbefehle fuer mehrere Rechner.
|
Diese Anleitung enthält die lokalen Startbefehle für mehrere Rechner.
|
||||||
|
|
||||||
## ARBEITSPLATZTM
|
## ARBEITSPLATZTM
|
||||||
|
|
||||||
@@ -80,4 +80,4 @@ Ctrl + C
|
|||||||
|
|
||||||
## Hinweis
|
## Hinweis
|
||||||
|
|
||||||
Der Webserver nutzt den eingebauten PHP-Entwicklungsserver und ist fuer lokale Entwicklung gedacht.
|
Der Webserver nutzt den eingebauten PHP-Entwicklungsserver und ist für lokale Entwicklung gedacht.
|
||||||
|
|||||||
+32
-20
@@ -1,6 +1,6 @@
|
|||||||
# Projektueberblick
|
# Projektüberblick
|
||||||
|
|
||||||
Diese Datei beschreibt die Website grundsaetzlich: Worum es geht, welche Bereiche es gibt und wie die wichtigsten Bausteine zusammenspielen.
|
Diese Datei beschreibt die Website grundsätzlich: Worum es geht, welche Bereiche es gibt und wie die wichtigsten Bausteine zusammenspielen.
|
||||||
|
|
||||||
## Zweck der Website
|
## Zweck der Website
|
||||||
|
|
||||||
@@ -8,16 +8,16 @@ Diese Datei beschreibt die Website grundsaetzlich: Worum es geht, welche Bereich
|
|||||||
|
|
||||||
Die Seite verbindet:
|
Die Seite verbindet:
|
||||||
|
|
||||||
- oeffentliche Astronomie-Werkzeuge
|
- öffentliche Astronomie-Werkzeuge
|
||||||
- persoenliche Benutzerfunktionen
|
- persönliche Benutzerfunktionen
|
||||||
- Import- und Auswerteprozesse fuer astronomische Daten
|
- Import- und Auswerteprozesse für astronomische Daten
|
||||||
- Telegram-Anbindung fuer Benachrichtigungen und Tests
|
- Telegram-Anbindung für Benachrichtigungen und Tests
|
||||||
|
|
||||||
## Hauptbereiche
|
## Hauptbereiche
|
||||||
|
|
||||||
Die Website besteht im Kern aus vier Bereichen.
|
Die Website besteht im Kern aus vier Bereichen.
|
||||||
|
|
||||||
## 1. Oeffentliche Astronomie-Seiten
|
## 1. Öffentliche Astronomie-Seiten
|
||||||
|
|
||||||
Unter [`public/`](../public) liegen die eigentlichen Seiten der Website.
|
Unter [`public/`](../public) liegen die eigentlichen Seiten der Website.
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ Typische Inhalte sind:
|
|||||||
- Mond und Mondphasen
|
- Mond und Mondphasen
|
||||||
- Planetensichtbarkeit
|
- Planetensichtbarkeit
|
||||||
- Sternenhimmel
|
- Sternenhimmel
|
||||||
- Meteorstroeme
|
- Meteorströme
|
||||||
- Finsternisse und Bedeckungen
|
- Finsternisse und Bedeckungen
|
||||||
- Geocron und Geocron 3D
|
- Geocron und Geocron 3D
|
||||||
- Vorhersage-Seiten wie Monats- und Wochenvorhersage
|
- Vorhersage-Seiten wie Monats- und Wochenvorhersage
|
||||||
@@ -48,7 +48,7 @@ Wichtige Konto-Seiten:
|
|||||||
- [`public/settings.php`](../public/settings.php)
|
- [`public/settings.php`](../public/settings.php)
|
||||||
- [`public/my_favorites.php`](../public/my_favorites.php)
|
- [`public/my_favorites.php`](../public/my_favorites.php)
|
||||||
|
|
||||||
Benutzer koennen dort unter anderem:
|
Benutzer können dort unter anderem:
|
||||||
|
|
||||||
- ihr Konto verwalten
|
- ihr Konto verwalten
|
||||||
- Telegram verbinden
|
- Telegram verbinden
|
||||||
@@ -67,9 +67,9 @@ Aktuell gibt es:
|
|||||||
|
|
||||||
Wichtig:
|
Wichtig:
|
||||||
|
|
||||||
- `admin` und `master` haben Vollzugriff auf die geschuetzten Seiten
|
- `admin` und `master` haben Vollzugriff auf die geschützten Seiten
|
||||||
- normale Benutzer erhalten gezielte Seitenfreigaben
|
- normale Benutzer erhalten gezielte Seitenfreigaben
|
||||||
- das Header-Menue passt sich an die Seitenrechte an
|
- das Header-Menü passt sich an die Seitenrechte an
|
||||||
|
|
||||||
Die Details dazu stehen in:
|
Die Details dazu stehen in:
|
||||||
|
|
||||||
@@ -87,17 +87,17 @@ Wichtige Skripte liegen unter:
|
|||||||
Beispiele:
|
Beispiele:
|
||||||
|
|
||||||
- [`scripts/import/import_tcrb.php`](../scripts/import/import_tcrb.php)
|
- [`scripts/import/import_tcrb.php`](../scripts/import/import_tcrb.php)
|
||||||
Importiert AAVSO-WebObs-Daten fuer T CrB
|
Importiert AAVSO-WebObs-Daten für T CrB
|
||||||
- [`scripts/import/import_celestrak_active.php`](../scripts/import/import_celestrak_active.php)
|
- [`scripts/import/import_celestrak_active.php`](../scripts/import/import_celestrak_active.php)
|
||||||
Importiert Satellitendaten
|
Importiert Satellitendaten
|
||||||
- [`scripts/telegram/telegram_cron.php`](../scripts/telegram/telegram_cron.php)
|
- [`scripts/telegram/telegram_cron.php`](../scripts/telegram/telegram_cron.php)
|
||||||
Fuehrt Telegram-Aufgaben zeitgesteuert aus
|
Führt Telegram-Aufgaben zeitgesteuert aus
|
||||||
|
|
||||||
## T CrB
|
## T CrB
|
||||||
|
|
||||||
Ein aktueller Spezialbereich ist `T CrB`.
|
Ein aktueller Spezialbereich ist `T CrB`.
|
||||||
|
|
||||||
Dazu gehoeren:
|
Dazu gehören:
|
||||||
|
|
||||||
- Import der AAVSO-Daten
|
- Import der AAVSO-Daten
|
||||||
- Speicherung in der Datenbank
|
- Speicherung in der Datenbank
|
||||||
@@ -114,10 +114,10 @@ Wichtige Dateien:
|
|||||||
|
|
||||||
Die Website besitzt eine Telegram-Anbindung.
|
Die Website besitzt eine Telegram-Anbindung.
|
||||||
|
|
||||||
Damit koennen Benutzer:
|
Damit können Benutzer:
|
||||||
|
|
||||||
- ihr Konto mit Telegram verknuepfen
|
- ihr Konto mit Telegram verknüpfen
|
||||||
- spaeter Nachrichten oder Diagramme erhalten
|
- später Nachrichten oder Diagramme erhalten
|
||||||
|
|
||||||
Wichtige Bausteine:
|
Wichtige Bausteine:
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ Vereinfacht sieht der Ablauf so aus:
|
|||||||
1. Import-Skripte holen astronomische Daten aus externen Quellen
|
1. Import-Skripte holen astronomische Daten aus externen Quellen
|
||||||
2. Die Daten werden in der Datenbank gespeichert
|
2. Die Daten werden in der Datenbank gespeichert
|
||||||
3. Seiten unter `public/` lesen diese Daten aus und stellen sie dar
|
3. Seiten unter `public/` lesen diese Daten aus und stellen sie dar
|
||||||
4. Cron-Skripte koennen daraus Telegram-Nachrichten oder andere Folgeaktionen erzeugen
|
4. Cron-Skripte können daraus Telegram-Nachrichten oder andere Folgeaktionen erzeugen
|
||||||
|
|
||||||
## Technischer Aufbau
|
## Technischer Aufbau
|
||||||
|
|
||||||
@@ -151,16 +151,28 @@ Wichtige Verzeichnisse:
|
|||||||
- [`docs/`](.)
|
- [`docs/`](.)
|
||||||
Projektdokumentation
|
Projektdokumentation
|
||||||
|
|
||||||
## Fuer neue Arbeit an der Seite wichtig
|
## Für neue Arbeit an der Seite wichtig
|
||||||
|
|
||||||
Wenn neue Funktionen dazukommen, sollte man immer an diese Punkte denken:
|
Wenn neue Funktionen dazukommen, sollte man immer an diese Punkte denken:
|
||||||
|
|
||||||
- braucht die Seite einen Eintrag im Rechtesystem
|
- braucht die Seite einen Eintrag im Rechtesystem
|
||||||
- soll sie im Header-Menue erscheinen
|
- soll sie im Header-Menü erscheinen
|
||||||
- braucht sie Datenimport oder Cron
|
- braucht sie Datenimport oder Cron
|
||||||
- braucht sie Telegram-Anbindung
|
- braucht sie Telegram-Anbindung
|
||||||
- braucht sie Dokumentation in `docs`
|
- braucht sie Dokumentation in `docs`
|
||||||
|
|
||||||
|
## Schreibweise
|
||||||
|
|
||||||
|
Für deutsche Ausgabetexte in UI, Meldungen, Dialogen und Dokumentation sollen normale Umlaute und `ß` verwendet werden.
|
||||||
|
|
||||||
|
Für technische Bezeichner soll das nicht automatisch gelten, insbesondere bei:
|
||||||
|
|
||||||
|
- Dateinamen
|
||||||
|
- URLs und Pfaden
|
||||||
|
- Funktionsnamen
|
||||||
|
- Variablennamen
|
||||||
|
- Datenbankspalten, Keys und anderen Schnittstellen
|
||||||
|
|
||||||
## Passende Zusatzdokumente
|
## Passende Zusatzdokumente
|
||||||
|
|
||||||
- [`docs/README_LOCAL_WEBSERVER.md`](README_LOCAL_WEBSERVER.md)
|
- [`docs/README_LOCAL_WEBSERVER.md`](README_LOCAL_WEBSERVER.md)
|
||||||
|
|||||||
+34
-34
@@ -1,22 +1,22 @@
|
|||||||
# Rechtesystem
|
# Rechtesystem
|
||||||
|
|
||||||
Diese Anleitung beschreibt das aktuelle Rechtesystem fuer die Seiten unter `public/`.
|
Diese Anleitung beschreibt das aktuelle Rechtesystem für die Seiten unter `public/`.
|
||||||
|
|
||||||
## Grundidee
|
## Grundidee
|
||||||
|
|
||||||
Aktuell gilt:
|
Aktuell gilt:
|
||||||
|
|
||||||
- `admin` und `master` haben Vollzugriff auf alle Seiten unter `public/`
|
- `admin` und `master` haben Vollzugriff auf alle Seiten unter `public/`
|
||||||
- normale Benutzer sehen standardmaessig keine geschuetzten Seiten
|
- normale Benutzer sehen standardmäßig keine geschützten Seiten
|
||||||
- einzelne Seiten koennen pro Benutzer durch einen `master` freigegeben werden
|
- einzelne Seiten können pro Benutzer durch einen `master` freigegeben werden
|
||||||
- das Header-Menue passt sich an die hinterlegten Seitenrechte an
|
- das Header-Menü passt sich an die hinterlegten Seitenrechte an
|
||||||
|
|
||||||
## Rollen
|
## Rollen
|
||||||
|
|
||||||
Es gibt zurzeit diese Rollen:
|
Es gibt zurzeit diese Rollen:
|
||||||
|
|
||||||
- `user`
|
- `user`
|
||||||
Normale Benutzerrolle ohne automatischen Zugriff auf die geschuetzten Seiten
|
Normale Benutzerrolle ohne automatischen Zugriff auf die geschützten Seiten
|
||||||
- `admin`
|
- `admin`
|
||||||
Vollzugriff auf alle Seiten unter `public/`
|
Vollzugriff auf alle Seiten unter `public/`
|
||||||
- `master`
|
- `master`
|
||||||
@@ -29,15 +29,15 @@ Die Rollen-Helfer liegen in [`public/auth_helpers.php`](../public/auth_helpers.p
|
|||||||
Die zentrale Rechtebasis besteht aus drei Bausteinen:
|
Die zentrale Rechtebasis besteht aus drei Bausteinen:
|
||||||
|
|
||||||
- [`public/auth_helpers.php`](../public/auth_helpers.php)
|
- [`public/auth_helpers.php`](../public/auth_helpers.php)
|
||||||
Enthaelt Rollen-Helfer, Allowlist und die Liste der freigebbaren Seiten
|
Enthält Rollen-Helfer, Allowlist und die Liste der freigebbaren Seiten
|
||||||
- [`public/header.php`](../public/header.php)
|
- [`public/header.php`](../public/header.php)
|
||||||
Prueft beim Aufruf einer Seite den Zugriff und baut das Menue passend zu den Rechten
|
Prüft beim Aufruf einer Seite den Zugriff und baut das Menü passend zu den Rechten
|
||||||
- [`public/admin_users.php`](../public/admin_users.php)
|
- [`public/admin_users.php`](../public/admin_users.php)
|
||||||
Enthaelt die Benutzerverwaltung und die Seitenmatrix fuer `master`
|
Enthält die Benutzerverwaltung und die Seitenmatrix für `master`
|
||||||
|
|
||||||
## Datenbank
|
## Datenbank
|
||||||
|
|
||||||
Fuer die Seitenfreigaben wird diese Tabelle verwendet:
|
Für die Seitenfreigaben wird diese Tabelle verwendet:
|
||||||
|
|
||||||
- `app_user_page_permissions`
|
- `app_user_page_permissions`
|
||||||
|
|
||||||
@@ -54,10 +54,10 @@ Wichtige Spalten:
|
|||||||
|
|
||||||
Wichtig:
|
Wichtig:
|
||||||
|
|
||||||
- Nicht nur der Dateiname zaehlt.
|
- Nicht nur der Dateiname zählt.
|
||||||
- Unterordner-Seiten werden mit vollem relativen Pfad gespeichert.
|
- Unterordner-Seiten werden mit vollem relativen Pfad gespeichert.
|
||||||
|
|
||||||
## Oeffentliche Ausnahmen
|
## Öffentliche Ausnahmen
|
||||||
|
|
||||||
Einige Seiten bleiben ohne Seitenfreigabe erreichbar. Diese stehen in der Allowlist in [`public/auth_helpers.php`](../public/auth_helpers.php):
|
Einige Seiten bleiben ohne Seitenfreigabe erreichbar. Diese stehen in der Allowlist in [`public/auth_helpers.php`](../public/auth_helpers.php):
|
||||||
|
|
||||||
@@ -65,37 +65,37 @@ Einige Seiten bleiben ohne Seitenfreigabe erreichbar. Diese stehen in der Allowl
|
|||||||
- `register.php`
|
- `register.php`
|
||||||
- `logout.php`
|
- `logout.php`
|
||||||
|
|
||||||
## Wie der Zugriff geprueft wird
|
## Wie der Zugriff geprüft wird
|
||||||
|
|
||||||
Beim Laden einer Seite mit gemeinsamem Header passiert Folgendes:
|
Beim Laden einer Seite mit gemeinsamem Header passiert Folgendes:
|
||||||
|
|
||||||
1. `header.php` ermittelt den aktuellen `page_key`
|
1. `header.php` ermittelt den aktuellen `page_key`
|
||||||
2. Wenn der Benutzer `admin` oder `master` ist, ist der Zugriff erlaubt
|
2. Wenn der Benutzer `admin` oder `master` ist, ist der Zugriff erlaubt
|
||||||
3. Wenn die Seite in der Allowlist steht, ist der Zugriff erlaubt
|
3. Wenn die Seite in der Allowlist steht, ist der Zugriff erlaubt
|
||||||
4. Sonst wird in `app_user_page_permissions` geprueft, ob der Benutzer genau diese Seite sehen darf
|
4. Sonst wird in `app_user_page_permissions` geprüft, ob der Benutzer genau diese Seite sehen darf
|
||||||
5. Wenn nein, kommt `403 Zugriff verweigert`
|
5. Wenn nein, kommt `403 Zugriff verweigert`
|
||||||
|
|
||||||
Wichtig:
|
Wichtig:
|
||||||
|
|
||||||
- Eine einzelne Seitenfreigabe macht den Benutzer nicht zu `admin`
|
- Eine einzelne Seitenfreigabe macht den Benutzer nicht zu `admin`
|
||||||
- dadurch bleibt das Menue auf seine wirklich erlaubten Seiten beschraenkt
|
- dadurch bleibt das Menü auf seine wirklich erlaubten Seiten beschränkt
|
||||||
|
|
||||||
## Wie das Menue funktioniert
|
## Wie das Menü funktioniert
|
||||||
|
|
||||||
Das Header-Menue wird ebenfalls in [`public/header.php`](../public/header.php) aufgebaut.
|
Das Header-Menü wird ebenfalls in [`public/header.php`](../public/header.php) aufgebaut.
|
||||||
|
|
||||||
Dabei gilt:
|
Dabei gilt:
|
||||||
|
|
||||||
- ausgeloggte Besucher sehen nur `Anmelden` und `Registrieren`
|
- ausgeloggte Besucher sehen nur `Anmelden` und `Registrieren`
|
||||||
- `admin` und `master` sehen das volle Menue
|
- `admin` und `master` sehen das volle Menü
|
||||||
- normale Benutzer sehen nur die Menuepunkte, deren `href` in ihren Seitenfreigaben vorhanden ist
|
- normale Benutzer sehen nur die Menüpunkte, deren `href` in ihren Seitenfreigaben vorhanden ist
|
||||||
- auch der Kontobereich unten im Menue wird entsprechend gefiltert
|
- auch der Kontobereich unten im Menü wird entsprechend gefiltert
|
||||||
|
|
||||||
Damit das funktioniert, muessen Menuelink und `page_key` exakt zusammenpassen.
|
Damit das funktioniert, müssen Menülink und `page_key` exakt zusammenpassen.
|
||||||
|
|
||||||
Beispiel:
|
Beispiel:
|
||||||
|
|
||||||
- Menuelink: `geocron/index.php`
|
- Menülink: `geocron/index.php`
|
||||||
- Datenbankeintrag: `geocron/index.php`
|
- Datenbankeintrag: `geocron/index.php`
|
||||||
|
|
||||||
## Wie ein Master Seiten freigibt
|
## Wie ein Master Seiten freigibt
|
||||||
@@ -105,8 +105,8 @@ Die Freigaben werden in [`public/admin_users.php`](../public/admin_users.php) ve
|
|||||||
Ablauf:
|
Ablauf:
|
||||||
|
|
||||||
1. Als `master` anmelden
|
1. Als `master` anmelden
|
||||||
2. `Benutzerverwaltung` oeffnen
|
2. `Benutzerverwaltung` öffnen
|
||||||
3. Im Bereich `Seitenfreigaben` den gewuenschten Benutzer waehlen
|
3. Im Bereich `Seitenfreigaben` den gewünschten Benutzer wählen
|
||||||
4. Haken bei den erlaubten Seiten setzen
|
4. Haken bei den erlaubten Seiten setzen
|
||||||
5. Speichern
|
5. Speichern
|
||||||
|
|
||||||
@@ -121,20 +121,20 @@ Die Liste der freigebaren Seiten steht zentral in [`public/auth_helpers.php`](..
|
|||||||
|
|
||||||
- `manageablePublicPages()`
|
- `manageablePublicPages()`
|
||||||
|
|
||||||
Nur Seiten, die dort eingetragen sind, koennen:
|
Nur Seiten, die dort eingetragen sind, können:
|
||||||
|
|
||||||
- in der Matrix erscheinen
|
- in der Matrix erscheinen
|
||||||
- einzeln fuer Benutzer freigegeben werden
|
- einzeln für Benutzer freigegeben werden
|
||||||
- sauber im Menue gefiltert werden
|
- sauber im Menü gefiltert werden
|
||||||
|
|
||||||
## Neue Seite ins Rechtesystem aufnehmen
|
## Neue Seite ins Rechtesystem aufnehmen
|
||||||
|
|
||||||
Wenn eine neue Seite unter `public/` dazukommt, sind in der Regel diese Schritte noetig:
|
Wenn eine neue Seite unter `public/` dazukommt, sind in der Regel diese Schritte nötig:
|
||||||
|
|
||||||
1. Seite anlegen
|
1. Seite anlegen
|
||||||
2. Seite so bauen, dass sie den gemeinsamen Header nutzt
|
2. Seite so bauen, dass sie den gemeinsamen Header nutzt
|
||||||
3. In `manageablePublicPages()` eintragen
|
3. In `manageablePublicPages()` eintragen
|
||||||
4. Falls noetig als Menuepunkt in [`public/header.php`](../public/header.php) eintragen
|
4. Falls nötig als Menüpunkt in [`public/header.php`](../public/header.php) eintragen
|
||||||
5. Darauf achten, dass `href` und `page_key` exakt gleich sind
|
5. Darauf achten, dass `href` und `page_key` exakt gleich sind
|
||||||
|
|
||||||
Beispiel:
|
Beispiel:
|
||||||
@@ -143,13 +143,13 @@ Beispiel:
|
|||||||
'beispielseite.php' => 'Beispielseite',
|
'beispielseite.php' => 'Beispielseite',
|
||||||
```
|
```
|
||||||
|
|
||||||
Oder fuer Unterordner:
|
Oder für Unterordner:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
'tools/beispiel.php' => 'Beispielseite',
|
'tools/beispiel.php' => 'Beispielseite',
|
||||||
```
|
```
|
||||||
|
|
||||||
## Wichtige Regel fuer Unterordner
|
## Wichtige Regel für Unterordner
|
||||||
|
|
||||||
Bei Unterordnern niemals nur `index.php` verwenden.
|
Bei Unterordnern niemals nur `index.php` verwenden.
|
||||||
|
|
||||||
@@ -161,13 +161,13 @@ Falsch:
|
|||||||
|
|
||||||
- `index.php`
|
- `index.php`
|
||||||
|
|
||||||
Die Seitenerkennung dafuer macht `currentPublicPageKey()` in [`public/auth_helpers.php`](../public/auth_helpers.php).
|
Die Seitenerkennung dafür macht `currentPublicPageKey()` in [`public/auth_helpers.php`](../public/auth_helpers.php).
|
||||||
|
|
||||||
## Aktueller Stand
|
## Aktueller Stand
|
||||||
|
|
||||||
Der aktuelle Zustand ist bewusst streng:
|
Der aktuelle Zustand ist bewusst streng:
|
||||||
|
|
||||||
- standardmaessig nur `admin` oder `master`
|
- standardmäßig nur `admin` oder `master`
|
||||||
- normale Benutzer nur ueber explizite Seitenfreigaben
|
- normale Benutzer nur über explizite Seitenfreigaben
|
||||||
|
|
||||||
Spaeter kann entschieden werden, welche Seiten wieder standardmaessig fuer normale Benutzer sichtbar sein sollen.
|
Später kann entschieden werden, welche Seiten wieder standardmäßig für normale Benutzer sichtbar sein sollen.
|
||||||
|
|||||||
+15
-15
@@ -85,7 +85,7 @@ function sendActivationNotification(string $username, string $email, ?string $di
|
|||||||
'',
|
'',
|
||||||
'Benutzername: ' . $username,
|
'Benutzername: ' . $username,
|
||||||
'',
|
'',
|
||||||
'Viele Gruesse',
|
'Viele Grüße',
|
||||||
'Astronomiemuseum der Sternwarte Sonneberg',
|
'Astronomiemuseum der Sternwarte Sonneberg',
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -180,7 +180,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($targetUser && $targetUserId === $currentUserId && in_array($action, ['deactivate_user', 'change_role', 'delete_user'], true)) {
|
if ($targetUser && $targetUserId === $currentUserId && in_array($action, ['deactivate_user', 'change_role', 'delete_user'], true)) {
|
||||||
$errors[] = 'Das eigene Administrationskonto kann hier nicht deaktiviert, geloescht oder umgestellt werden.';
|
$errors[] = 'Das eigene Administrationskonto kann hier nicht deaktiviert, gelöscht oder umgestellt werden.';
|
||||||
}
|
}
|
||||||
|
|
||||||
$currentUserIsMaster = isMasterRole((string) ($currentUser['role'] ?? ''));
|
$currentUserIsMaster = isMasterRole((string) ($currentUser['role'] ?? ''));
|
||||||
@@ -206,7 +206,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
!$currentUserIsMaster &&
|
!$currentUserIsMaster &&
|
||||||
$targetUserIsMaster
|
$targetUserIsMaster
|
||||||
) {
|
) {
|
||||||
$errors[] = 'Nur ein Master-Benutzer darf die Rolle master vergeben oder aendern.';
|
$errors[] = 'Nur ein Master-Benutzer darf die Rolle master vergeben oder ändern.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@@ -214,7 +214,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$requestedRole === 'master' &&
|
$requestedRole === 'master' &&
|
||||||
$masterCount > 0
|
$masterCount > 0
|
||||||
) {
|
) {
|
||||||
$errors[] = 'Nur ein Master-Benutzer darf die Rolle master vergeben oder aendern.';
|
$errors[] = 'Nur ein Master-Benutzer darf die Rolle master vergeben oder ändern.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@@ -242,7 +242,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
(int)$targetUser['is_active'] === 1 &&
|
(int)$targetUser['is_active'] === 1 &&
|
||||||
$activeAdminCount <= 1
|
$activeAdminCount <= 1
|
||||||
) {
|
) {
|
||||||
$errors[] = 'Der letzte aktive privilegierte Benutzer kann nicht geloescht werden.';
|
$errors[] = 'Der letzte aktive privilegierte Benutzer kann nicht gelöscht werden.';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -309,7 +309,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$stmtDelete->execute([
|
$stmtDelete->execute([
|
||||||
':id' => $targetUserId,
|
':id' => $targetUserId,
|
||||||
]);
|
]);
|
||||||
$_SESSION['admin_users_flash_success'] = 'Benutzerkonto wurde geloescht. Zugehoerige Standorte und Satelliten wurden automatisch entfernt.';
|
$_SESSION['admin_users_flash_success'] = 'Benutzerkonto wurde gelöscht. Zugehörige Standorte und Satelliten wurden automatisch entfernt.';
|
||||||
redirectToAdminUsers();
|
redirectToAdminUsers();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -442,8 +442,8 @@ if ($currentUserIsMaster) {
|
|||||||
|
|
||||||
<div class="admin-users-layout">
|
<div class="admin-users-layout">
|
||||||
<section class="card admin-users-summary-card">
|
<section class="card admin-users-summary-card">
|
||||||
<h2>Uebersicht</h2>
|
<h2>Übersicht</h2>
|
||||||
<p class="hint">Hier kannst du Benutzerkonten freischalten, deaktivieren, loeschen und zwischen <strong>user</strong>, <strong>admin</strong> und <strong>master</strong> wechseln.</p>
|
<p class="hint">Hier kannst du Benutzerkonten freischalten, deaktivieren, löschen und zwischen <strong>user</strong>, <strong>admin</strong> und <strong>master</strong> wechseln.</p>
|
||||||
|
|
||||||
<?php if ($successMessage !== ''): ?>
|
<?php if ($successMessage !== ''): ?>
|
||||||
<p class="msg-success"><?= h($successMessage) ?></p>
|
<p class="msg-success"><?= h($successMessage) ?></p>
|
||||||
@@ -558,7 +558,7 @@ if ($currentUserIsMaster) {
|
|||||||
<input type="hidden" name="csrf_token" value="<?= h($_SESSION['admin_users_csrf']) ?>">
|
<input type="hidden" name="csrf_token" value="<?= h($_SESSION['admin_users_csrf']) ?>">
|
||||||
<input type="hidden" name="action" value="delete_user">
|
<input type="hidden" name="action" value="delete_user">
|
||||||
<input type="hidden" name="user_id" value="<?= (int)$userRow['id'] ?>">
|
<input type="hidden" name="user_id" value="<?= (int)$userRow['id'] ?>">
|
||||||
<button type="submit" class="btn btn-danger btn-sm"<?= $isSelf ? ' disabled' : '' ?>>Benutzer loeschen</button>
|
<button type="submit" class="btn btn-danger btn-sm"<?= $isSelf ? ' disabled' : '' ?>>Benutzer löschen</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@@ -572,7 +572,7 @@ if ($currentUserIsMaster) {
|
|||||||
<?php if ($currentUserIsMaster): ?>
|
<?php if ($currentUserIsMaster): ?>
|
||||||
<section class="card admin-users-table-card">
|
<section class="card admin-users-table-card">
|
||||||
<h2>Seitenfreigaben</h2>
|
<h2>Seitenfreigaben</h2>
|
||||||
<p class="hint">Nur Master-Benutzer duerfen hier festlegen, welche Seiten normale Nutzer im Menue sehen und direkt aufrufen duerfen.</p>
|
<p class="hint">Nur Master-Benutzer dürfen hier festlegen, welche Seiten normale Nutzer im Menü sehen und direkt aufrufen dürfen.</p>
|
||||||
<div class="admin-users-table-wrap">
|
<div class="admin-users-table-wrap">
|
||||||
<table class="data-table admin-users-table">
|
<table class="data-table admin-users-table">
|
||||||
<thead>
|
<thead>
|
||||||
@@ -616,7 +616,7 @@ if ($currentUserIsMaster) {
|
|||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
<td>
|
<td>
|
||||||
<?php if ($isPrivilegedUser): ?>
|
<?php if ($isPrivilegedUser): ?>
|
||||||
<span class="hint">Vollzugriff ueber Rolle</span>
|
<span class="hint">Vollzugriff über Rolle</span>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<button type="submit" class="btn btn-secondary btn-sm" form="<?= h($permissionFormId) ?>">Freigaben speichern</button>
|
<button type="submit" class="btn btn-secondary btn-sm" form="<?= h($permissionFormId) ?>">Freigaben speichern</button>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
@@ -643,11 +643,11 @@ if ($currentUserIsMaster) {
|
|||||||
|
|
||||||
<dialog class="admin-dialog" id="deleteUserDialog">
|
<dialog class="admin-dialog" id="deleteUserDialog">
|
||||||
<form method="dialog" class="admin-dialog-card">
|
<form method="dialog" class="admin-dialog-card">
|
||||||
<h3>Benutzer loeschen?</h3>
|
<h3>Benutzer löschen?</h3>
|
||||||
<p id="deleteUserDialogText">Soll dieser Benutzer wirklich geloescht werden?</p>
|
<p id="deleteUserDialogText">Soll dieser Benutzer wirklich gelöscht werden?</p>
|
||||||
<div class="admin-dialog-actions">
|
<div class="admin-dialog-actions">
|
||||||
<button type="button" class="btn btn-secondary" data-delete-choice="no">Abbrechen</button>
|
<button type="button" class="btn btn-secondary" data-delete-choice="no">Abbrechen</button>
|
||||||
<button type="button" class="btn btn-danger" data-delete-choice="yes">Loeschen</button>
|
<button type="button" class="btn btn-danger" data-delete-choice="yes">Löschen</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</dialog>
|
</dialog>
|
||||||
@@ -713,7 +713,7 @@ if ($currentUserIsMaster) {
|
|||||||
pendingDeleteForm = form;
|
pendingDeleteForm = form;
|
||||||
|
|
||||||
const username = form.getAttribute('data-username') || 'dieser Benutzer';
|
const username = form.getAttribute('data-username') || 'dieser Benutzer';
|
||||||
deleteDialogText.textContent = 'Benutzer "' + username + '" wirklich loeschen? Standorte und Satelliten dieses Kontos werden ebenfalls entfernt.';
|
deleteDialogText.textContent = 'Benutzer "' + username + '" wirklich löschen? Standorte und Satelliten dieses Kontos werden ebenfalls entfernt.';
|
||||||
deleteDialog.showModal();
|
deleteDialog.showModal();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -63,12 +63,12 @@ function manageablePublicPages(): array
|
|||||||
'jupitersystem.php' => 'Jupitersystem',
|
'jupitersystem.php' => 'Jupitersystem',
|
||||||
'tagbogen.php' => 'Tagbogen',
|
'tagbogen.php' => 'Tagbogen',
|
||||||
'sternenhimmel.php' => 'Sternenhimmel',
|
'sternenhimmel.php' => 'Sternenhimmel',
|
||||||
'meteorshowers.php' => 'Meteorstroeme',
|
'meteorshowers.php' => 'Meteorströme',
|
||||||
'geocron/index.php' => 'Geocron',
|
'geocron/index.php' => 'Geocron',
|
||||||
'geocron3d.php' => 'Geocron 3D',
|
'geocron3d.php' => 'Geocron 3D',
|
||||||
'mondfinsternis.php' => 'Mondfinsternis',
|
'mondfinsternis.php' => 'Mondfinsternis',
|
||||||
'sonnenfinsternis.php' => 'Sonnenfinsternis',
|
'sonnenfinsternis.php' => 'Sonnenfinsternis',
|
||||||
'bedeckung.php' => 'Bedeckungsphaenomene',
|
'bedeckung.php' => 'Bedeckungsphänomene',
|
||||||
'sternbedeckungen.php' => 'Mond-Stern-Bedeckungen',
|
'sternbedeckungen.php' => 'Mond-Stern-Bedeckungen',
|
||||||
'monatsvorhersage.php' => 'Monatsvorhersage',
|
'monatsvorhersage.php' => 'Monatsvorhersage',
|
||||||
'wochenvorhersage.php' => 'Wochenvorhersage',
|
'wochenvorhersage.php' => 'Wochenvorhersage',
|
||||||
|
|||||||
+3
-3
@@ -83,7 +83,7 @@ if (!in_array($publicScriptName, $publicAccessAllowlist, true) && !$canAccessCur
|
|||||||
<main class="container" style="padding-top: 4rem; padding-bottom: 4rem;">
|
<main class="container" style="padding-top: 4rem; padding-bottom: 4rem;">
|
||||||
<section class="card">
|
<section class="card">
|
||||||
<h1>Zugriff verweigert</h1>
|
<h1>Zugriff verweigert</h1>
|
||||||
<p>Diese Seite ist aktuell nur fuer Benutzer mit der Rolle <strong>admin</strong> oder <strong>master</strong> freigegeben.</p>
|
<p>Diese Seite ist aktuell nur für Benutzer mit der Rolle <strong>admin</strong> oder <strong>master</strong> freigegeben.</p>
|
||||||
<p><a class="btn btn-primary" href="<?= htmlspecialchars($publicBasePath . 'logout.php', ENT_QUOTES, 'UTF-8') ?>">Abmelden</a></p>
|
<p><a class="btn btn-primary" href="<?= htmlspecialchars($publicBasePath . 'logout.php', ENT_QUOTES, 'UTF-8') ?>">Abmelden</a></p>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
@@ -125,7 +125,7 @@ $menuGroups = [
|
|||||||
['href' => 'jupitersystem.php', 'label' => 'Jupitersystem'],
|
['href' => 'jupitersystem.php', 'label' => 'Jupitersystem'],
|
||||||
['href' => 'tagbogen.php', 'label' => 'Tagbogen'],
|
['href' => 'tagbogen.php', 'label' => 'Tagbogen'],
|
||||||
['href' => 'sternenhimmel.php', 'label' => 'Sternenhimmel'],
|
['href' => 'sternenhimmel.php', 'label' => 'Sternenhimmel'],
|
||||||
['href' => 'meteorshowers.php', 'label' => 'Meteorstroeme'],
|
['href' => 'meteorshowers.php', 'label' => 'Meteorströme'],
|
||||||
['href' => 'geocron/index.php', 'label' => 'Geocron'],
|
['href' => 'geocron/index.php', 'label' => 'Geocron'],
|
||||||
['href' => 'geocron3d.php', 'label' => 'Geocron 3D'],
|
['href' => 'geocron3d.php', 'label' => 'Geocron 3D'],
|
||||||
],
|
],
|
||||||
@@ -288,7 +288,7 @@ if ($loggedIn && !$hasFullAdminAccess && $pdoHeader !== null) {
|
|||||||
</a>
|
</a>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<div class="header-menu">
|
<div class="header-menu">
|
||||||
<button type="button" class="menu-toggle" id="menuToggle" aria-expanded="false" aria-controls="headerMenuPanel" aria-label="Menue oeffnen">
|
<button type="button" class="menu-toggle" id="menuToggle" aria-expanded="false" aria-controls="headerMenuPanel" aria-label="Menü öffnen">
|
||||||
<span></span>
|
<span></span>
|
||||||
<span></span>
|
<span></span>
|
||||||
<span></span>
|
<span></span>
|
||||||
|
|||||||
+15
-15
@@ -4,12 +4,12 @@ declare(strict_types=1);
|
|||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
$loggedIn = isset($_SESSION['user_id']);
|
$loggedIn = isset($_SESSION['user_id']);
|
||||||
$pageTitle = 'Meteorstroeme - AstroTools';
|
$pageTitle = 'Meteorströme - AstroTools';
|
||||||
$bodyClass = 'admin-page meteorshowers-page';
|
$bodyClass = 'admin-page meteorshowers-page';
|
||||||
$publicBasePath = './';
|
$publicBasePath = './';
|
||||||
$headerIntroPre = 'Beobachtung';
|
$headerIntroPre = 'Beobachtung';
|
||||||
$headerIntroTitle = 'Meteorstroeme';
|
$headerIntroTitle = 'Meteorströme';
|
||||||
$headerIntroSub = 'Liste der importierten Meteorstroeme aus der Datenbank mit Angaben in solarer Laenge.';
|
$headerIntroSub = 'Liste der importierten Meteorströme aus der Datenbank mit Angaben in solarer Länge.';
|
||||||
|
|
||||||
$config = require __DIR__ . '/../config/database.php';
|
$config = require __DIR__ . '/../config/database.php';
|
||||||
|
|
||||||
@@ -314,10 +314,10 @@ require __DIR__ . '/header.php';
|
|||||||
|
|
||||||
<?php
|
<?php
|
||||||
$statsCards = [
|
$statsCards = [
|
||||||
['label' => 'Importierte Meteorstroeme', 'value' => (string) count($allShowers)],
|
['label' => 'Importierte Meteorströme', 'value' => (string) count($allShowers)],
|
||||||
['label' => 'Davon aktuell aktiv', 'value' => (string) $activeCount],
|
['label' => 'Davon aktuell aktiv', 'value' => (string) $activeCount],
|
||||||
['label' => 'Hoechste ZHR', 'value' => $topZhr !== null ? (string) $topZhr : '-'],
|
['label' => 'Höchste ZHR', 'value' => $topZhr !== null ? (string) $topZhr : '-'],
|
||||||
['label' => 'Aktuelle solare Laenge', 'value' => number_format($todaySolarLongitude, 2, ',', '.') . '°'],
|
['label' => 'Aktuelle solare Länge', 'value' => number_format($todaySolarLongitude, 2, ',', '.') . '°'],
|
||||||
['label' => 'Datumsumrechnung', 'value' => (string) $displayYear],
|
['label' => 'Datumsumrechnung', 'value' => (string) $displayYear],
|
||||||
];
|
];
|
||||||
?>
|
?>
|
||||||
@@ -343,29 +343,29 @@ $statsCards = [
|
|||||||
id="q"
|
id="q"
|
||||||
name="q"
|
name="q"
|
||||||
value="<?= h($searchQuery) ?>"
|
value="<?= h($searchQuery) ?>"
|
||||||
placeholder="Code, Bezeichnung oder Mutterkoerper"
|
placeholder="Code, Bezeichnung oder Mutterkörper"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="mode">Anzeige</label>
|
<label for="mode">Anzeige</label>
|
||||||
<select id="mode" name="mode">
|
<select id="mode" name="mode">
|
||||||
<option value="all" <?= $showMode === 'all' ? 'selected' : '' ?>>Alle Meteorstroeme</option>
|
<option value="all" <?= $showMode === 'all' ? 'selected' : '' ?>>Alle Meteorströme</option>
|
||||||
<option value="active" <?= $showMode === 'active' ? 'selected' : '' ?>>Nur aktuell aktive</option>
|
<option value="active" <?= $showMode === 'active' ? 'selected' : '' ?>>Nur aktuell aktive</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-row">
|
<div class="input-row">
|
||||||
<button type="submit" class="btn btn-primary">Anzeigen</button>
|
<button type="submit" class="btn btn-primary">Anzeigen</button>
|
||||||
<a href="meteorshowers.php" class="btn btn-secondary">Zuruecksetzen</a>
|
<a href="meteorshowers.php" class="btn btn-secondary">Zurücksetzen</a>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="card">
|
<section class="card">
|
||||||
<h2>Liste der Meteorstroeme</h2>
|
<h2>Liste der Meteorströme</h2>
|
||||||
<p class="hint">Die Gradangaben in Aktivitaet und Maximum sind Werte der solaren Laenge. Zusaetzlich wird dafuer ein Kalenderdatum im Jahr <?= h((string) $displayYear) ?> angezeigt.</p>
|
<p class="hint">Die Gradangaben in Aktivität und Maximum sind Werte der solaren Länge. Zusätzlich wird dafür ein Kalenderdatum im Jahr <?= h((string) $displayYear) ?> angezeigt.</p>
|
||||||
<?php if ($showers === []): ?>
|
<?php if ($showers === []): ?>
|
||||||
<p class="hint">Keine Meteorstroeme fuer diese Auswahl gefunden.</p>
|
<p class="hint">Keine Meteorströme für diese Auswahl gefunden.</p>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<div class="table-wrap">
|
<div class="table-wrap">
|
||||||
<table class="data-table">
|
<table class="data-table">
|
||||||
@@ -376,11 +376,11 @@ $statsCards = [
|
|||||||
<th>IAU</th>
|
<th>IAU</th>
|
||||||
<th>Bezeichnung</th>
|
<th>Bezeichnung</th>
|
||||||
<th>ZHR</th>
|
<th>ZHR</th>
|
||||||
<th>Aktivitaet (solare Laenge)</th>
|
<th>Aktivität (solare Länge)</th>
|
||||||
<th>Maximum (solare Laenge)</th>
|
<th>Maximum (solare Länge)</th>
|
||||||
<th>Radiant</th>
|
<th>Radiant</th>
|
||||||
<th>v<sub>g</sub></th>
|
<th>v<sub>g</sub></th>
|
||||||
<th>Mutterkoerper</th>
|
<th>Mutterkörper</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ function runPythonApi(string $scriptPath, string $action, array $arguments): arr
|
|||||||
|
|
||||||
$decoded = json_decode($joined, true);
|
$decoded = json_decode($joined, true);
|
||||||
if (!is_array($decoded)) {
|
if (!is_array($decoded)) {
|
||||||
$lastError = $joined !== '' ? 'Python-Ausgabe war kein gueltiges JSON.' : 'Python lieferte keine Ausgabe zurueck.';
|
$lastError = $joined !== '' ? 'Python-Ausgabe war kein gültiges JSON.' : 'Python lieferte keine Ausgabe zurück.';
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ if ($isAjax) {
|
|||||||
if ($utcIso === '') {
|
if ($utcIso === '') {
|
||||||
echo json_encode([
|
echo json_encode([
|
||||||
'ok' => false,
|
'ok' => false,
|
||||||
'error' => 'utc_iso wurde nicht uebergeben.',
|
'error' => 'utc_iso wurde nicht übergeben.',
|
||||||
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
@@ -1071,7 +1071,7 @@ async function exportMoonPng() {
|
|||||||
const size = getMoonExportSize();
|
const size = getMoonExportSize();
|
||||||
const transparentBackground = useTransparentMoonExport();
|
const transparentBackground = useTransparentMoonExport();
|
||||||
if (!size) {
|
if (!size) {
|
||||||
updateMoonExportStatus('Bitte eine gueltige Bildgroesse eingeben.', 'error');
|
updateMoonExportStatus('Bitte eine gültige Bildgröße eingeben.', 'error');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+23
-23
@@ -130,7 +130,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$satelliteId = (int) ($_POST['satellite_id'] ?? 0);
|
$satelliteId = (int) ($_POST['satellite_id'] ?? 0);
|
||||||
|
|
||||||
if ($satelliteId <= 0) {
|
if ($satelliteId <= 0) {
|
||||||
$errors[] = 'Ungueltiger Satellit.';
|
$errors[] = 'Ungültiger Satellit.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($errors)) {
|
if (empty($errors)) {
|
||||||
@@ -178,7 +178,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$satelliteId = (int) ($_POST['satellite_id'] ?? 0);
|
$satelliteId = (int) ($_POST['satellite_id'] ?? 0);
|
||||||
|
|
||||||
if ($satelliteId <= 0) {
|
if ($satelliteId <= 0) {
|
||||||
$errors[] = 'Ungueltiger Satellit.';
|
$errors[] = 'Ungültiger Satellit.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($errors)) {
|
if (empty($errors)) {
|
||||||
@@ -203,7 +203,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
if (empty($errors)) {
|
if (empty($errors)) {
|
||||||
$satelliteCount = countUserRows($pdo, 'app_user_satellites', $userId);
|
$satelliteCount = countUserRows($pdo, 'app_user_satellites', $userId);
|
||||||
if ($satelliteCount <= 1) {
|
if ($satelliteCount <= 1) {
|
||||||
$errors[] = 'Der letzte Satellit kann nicht geloescht werden.';
|
$errors[] = 'Der letzte Satellit kann nicht gelöscht werden.';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -272,7 +272,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$satelliteId = (int) ($_POST['satellite_id'] ?? 0);
|
$satelliteId = (int) ($_POST['satellite_id'] ?? 0);
|
||||||
|
|
||||||
if ($satelliteId <= 0) {
|
if ($satelliteId <= 0) {
|
||||||
$errors[] = 'Ungueltiger Satellit.';
|
$errors[] = 'Ungültiger Satellit.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($errors)) {
|
if (empty($errors)) {
|
||||||
@@ -314,7 +314,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$minorplanetId = (int) ($_POST['minorplanet_id'] ?? 0);
|
$minorplanetId = (int) ($_POST['minorplanet_id'] ?? 0);
|
||||||
|
|
||||||
if ($minorplanetId <= 0) {
|
if ($minorplanetId <= 0) {
|
||||||
$errors[] = 'Ungueltiger Kleinplanet.';
|
$errors[] = 'Ungültiger Kleinplanet.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($errors)) {
|
if (empty($errors)) {
|
||||||
@@ -362,7 +362,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$minorplanetId = (int) ($_POST['minorplanet_id'] ?? 0);
|
$minorplanetId = (int) ($_POST['minorplanet_id'] ?? 0);
|
||||||
|
|
||||||
if ($minorplanetId <= 0) {
|
if ($minorplanetId <= 0) {
|
||||||
$errors[] = 'Ungueltiger Kleinplanet.';
|
$errors[] = 'Ungültiger Kleinplanet.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($errors)) {
|
if (empty($errors)) {
|
||||||
@@ -384,7 +384,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$minorplanetId = (int) ($_POST['minorplanet_id'] ?? 0);
|
$minorplanetId = (int) ($_POST['minorplanet_id'] ?? 0);
|
||||||
|
|
||||||
if ($minorplanetId <= 0) {
|
if ($minorplanetId <= 0) {
|
||||||
$errors[] = 'Ungueltiger Kleinplanet.';
|
$errors[] = 'Ungültiger Kleinplanet.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($errors)) {
|
if (empty($errors)) {
|
||||||
@@ -405,11 +405,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$isDefault = isset($_POST['is_default']) ? 1 : 0;
|
$isDefault = isset($_POST['is_default']) ? 1 : 0;
|
||||||
|
|
||||||
if ($name === '') {
|
if ($name === '') {
|
||||||
$errors[] = 'Bitte einen Namen fuer den Standort eingeben.';
|
$errors[] = 'Bitte einen Namen für den Standort eingeben.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($latitude === '' || !is_numeric($latitude)) {
|
if ($latitude === '' || !is_numeric($latitude)) {
|
||||||
$errors[] = 'Bitte einen gueltigen Breitengrad eingeben.';
|
$errors[] = 'Bitte einen gültigen Breitengrad eingeben.';
|
||||||
} else {
|
} else {
|
||||||
$lat = (float) $latitude;
|
$lat = (float) $latitude;
|
||||||
if ($lat < -90 || $lat > 90) {
|
if ($lat < -90 || $lat > 90) {
|
||||||
@@ -418,11 +418,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($longitude === '' || !is_numeric($longitude)) {
|
if ($longitude === '' || !is_numeric($longitude)) {
|
||||||
$errors[] = 'Bitte einen gueltigen Laengengrad eingeben.';
|
$errors[] = 'Bitte einen gültigen Längengrad eingeben.';
|
||||||
} else {
|
} else {
|
||||||
$lon = (float) $longitude;
|
$lon = (float) $longitude;
|
||||||
if ($lon < -180 || $lon > 180) {
|
if ($lon < -180 || $lon > 180) {
|
||||||
$errors[] = 'Der Laengengrad muss zwischen -180 und 180 liegen.';
|
$errors[] = 'Der Längengrad muss zwischen -180 und 180 liegen.';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -431,7 +431,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!validTimezone($timezone)) {
|
if (!validTimezone($timezone)) {
|
||||||
$errors[] = 'Bitte eine gueltige IANA-Zeitzone angeben, z. B. Europe/Berlin.';
|
$errors[] = 'Bitte eine gültige IANA-Zeitzone angeben, z. B. Europe/Berlin.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($errors)) {
|
if (empty($errors)) {
|
||||||
@@ -498,7 +498,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$locationId = (int) ($_POST['location_id'] ?? 0);
|
$locationId = (int) ($_POST['location_id'] ?? 0);
|
||||||
|
|
||||||
if ($locationId <= 0) {
|
if ($locationId <= 0) {
|
||||||
$errors[] = 'Ungueltiger Standort.';
|
$errors[] = 'Ungültiger Standort.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($errors)) {
|
if (empty($errors)) {
|
||||||
@@ -558,7 +558,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$locationId = (int) ($_POST['location_id'] ?? 0);
|
$locationId = (int) ($_POST['location_id'] ?? 0);
|
||||||
|
|
||||||
if ($locationId <= 0) {
|
if ($locationId <= 0) {
|
||||||
$errors[] = 'Ungueltiger Standort.';
|
$errors[] = 'Ungültiger Standort.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($errors)) {
|
if (empty($errors)) {
|
||||||
@@ -583,7 +583,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
if (empty($errors)) {
|
if (empty($errors)) {
|
||||||
$locationCount = countUserRows($pdo, 'app_user_locations', $userId);
|
$locationCount = countUserRows($pdo, 'app_user_locations', $userId);
|
||||||
if ($locationCount <= 1) {
|
if ($locationCount <= 1) {
|
||||||
$errors[] = 'Der letzte Standort kann nicht geloescht werden.';
|
$errors[] = 'Der letzte Standort kann nicht gelöscht werden.';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -638,12 +638,12 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$pdo->commit();
|
$pdo->commit();
|
||||||
$successMessage = 'Der Standort wurde geloescht.';
|
$successMessage = 'Der Standort wurde gelöscht.';
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
if ($pdo->inTransaction()) {
|
if ($pdo->inTransaction()) {
|
||||||
$pdo->rollBack();
|
$pdo->rollBack();
|
||||||
}
|
}
|
||||||
$errors[] = 'Der Standort konnte nicht geloescht werden.';
|
$errors[] = 'Der Standort konnte nicht gelöscht werden.';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -857,7 +857,7 @@ $loggedIn = true;
|
|||||||
<tr>
|
<tr>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
<th>Breitengrad</th>
|
<th>Breitengrad</th>
|
||||||
<th>Laengengrad</th>
|
<th>Längengrad</th>
|
||||||
<th>Hoehe</th>
|
<th>Hoehe</th>
|
||||||
<th>Zeitzone</th>
|
<th>Zeitzone</th>
|
||||||
<th>Standard</th>
|
<th>Standard</th>
|
||||||
@@ -882,7 +882,7 @@ $loggedIn = true;
|
|||||||
</form>
|
</form>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<?php if (count($locations) > 1): ?>
|
<?php if (count($locations) > 1): ?>
|
||||||
<form method="post" action="" class="favorites-loading-form" data-loading-message="Standort wird entfernt..." onsubmit="return confirm('Standort wirklich loeschen?');">
|
<form method="post" action="" class="favorites-loading-form" data-loading-message="Standort wird entfernt..." onsubmit="return confirm('Standort wirklich löschen?');">
|
||||||
<input type="hidden" name="action" value="delete_location">
|
<input type="hidden" name="action" value="delete_location">
|
||||||
<input type="hidden" name="location_id" value="<?= (int) $location['id'] ?>">
|
<input type="hidden" name="location_id" value="<?= (int) $location['id'] ?>">
|
||||||
<button type="submit" class="btn btn-sm btn-danger">Loeschen</button>
|
<button type="submit" class="btn btn-sm btn-danger">Loeschen</button>
|
||||||
@@ -927,7 +927,7 @@ $loggedIn = true;
|
|||||||
<input type="text" id="latitude" name="latitude" required value="<?= h($_POST['latitude'] ?? ($defaultLocation['latitude'] ?? '')) ?>">
|
<input type="text" id="latitude" name="latitude" required value="<?= h($_POST['latitude'] ?? ($defaultLocation['latitude'] ?? '')) ?>">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="longitude">Laengengrad</label>
|
<label for="longitude">Längengrad</label>
|
||||||
<input type="text" id="longitude" name="longitude" required value="<?= h($_POST['longitude'] ?? ($defaultLocation['longitude'] ?? '')) ?>">
|
<input type="text" id="longitude" name="longitude" required value="<?= h($_POST['longitude'] ?? ($defaultLocation['longitude'] ?? '')) ?>">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
@@ -1061,7 +1061,7 @@ $loggedIn = true;
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
<h2>Meine Satelliten</h2>
|
<h2>Meine Satelliten</h2>
|
||||||
<?php if (empty($trackedSatellites)): ?>
|
<?php if (empty($trackedSatellites)): ?>
|
||||||
<p class="hint">Du hast noch keine Satelliten ausgewaehlt.</p>
|
<p class="hint">Du hast noch keine Satelliten ausgewählt.</p>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<table class="data-table">
|
<table class="data-table">
|
||||||
<thead>
|
<thead>
|
||||||
@@ -1112,7 +1112,7 @@ $loggedIn = true;
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
<h2>Meine Kleinplaneten</h2>
|
<h2>Meine Kleinplaneten</h2>
|
||||||
<?php if (empty($trackedMinorplanets)): ?>
|
<?php if (empty($trackedMinorplanets)): ?>
|
||||||
<p class="hint">Du hast noch keine Kleinplaneten ausgewaehlt.</p>
|
<p class="hint">Du hast noch keine Kleinplaneten ausgewählt.</p>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<table class="data-table">
|
<table class="data-table">
|
||||||
<thead>
|
<thead>
|
||||||
@@ -1221,7 +1221,7 @@ $loggedIn = true;
|
|||||||
const lon = parseFloat(lonInput.value);
|
const lon = parseFloat(lonInput.value);
|
||||||
|
|
||||||
if (!Number.isFinite(lat) || !Number.isFinite(lon)) {
|
if (!Number.isFinite(lat) || !Number.isFinite(lon)) {
|
||||||
alert('Bitte zuerst einen gueltigen Standort waehlen.');
|
alert('Bitte zuerst einen gültigen Standort wählen.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,13 +32,13 @@ if (!empty($currentLocation) && is_array($currentLocation)) {
|
|||||||
<h2>Kein Standard-Standort gesetzt</h2>
|
<h2>Kein Standard-Standort gesetzt</h2>
|
||||||
<p class="hint">
|
<p class="hint">
|
||||||
Diese Seite verwendet den im Header geladenen Standard-Standort aus der Datenbank.
|
Diese Seite verwendet den im Header geladenen Standard-Standort aus der Datenbank.
|
||||||
Bitte waehle in den <a href="settings.php">Einstellungen</a> einen Standard-Standort aus.
|
Bitte wähle in den <a href="settings.php">Einstellungen</a> einen Standard-Standort aus.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<section class="card planetvis-card">
|
<section class="card planetvis-card">
|
||||||
<p class="planetvis-intro">
|
<p class="planetvis-intro">
|
||||||
Sichtbarkeit der Planeten und des Mondes ueber 24 Stunden fuer deinen Standard-Standort aus der Datenbank.
|
Sichtbarkeit der Planeten und des Mondes über 24 Stunden für deinen Standard-Standort aus der Datenbank.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="date-section">
|
<div class="date-section">
|
||||||
@@ -533,7 +533,7 @@ function renderChart(localDate) {
|
|||||||
document.getElementById('tt-body').innerHTML =
|
document.getElementById('tt-body').innerHTML =
|
||||||
`Uhrzeit: ${hStr(h)}<br>Aufgang: ${rStr}<br>Untergang: ${sStr}<br>` +
|
`Uhrzeit: ${hStr(h)}<br>Aufgang: ${rStr}<br>Untergang: ${sStr}<br>` +
|
||||||
(def.type === 'moon' ? `Beleuchtung: ${Math.round(def.illum * 100)}%<br>` : `Magnitude: ${mag}<br>`) +
|
(def.type === 'moon' ? `Beleuchtung: ${Math.round(def.illum * 100)}%<br>` : `Magnitude: ${mag}<br>`) +
|
||||||
`Status: ${above ? '<span class="tt-up">ueber Horizont</span>' : '<span class="tt-down">unter Horizont</span>'}`;
|
`Status: ${above ? '<span class="tt-up">über Horizont</span>' : '<span class="tt-down">unter Horizont</span>'}`;
|
||||||
tooltip.style.left = (e.clientX + 16) + 'px';
|
tooltip.style.left = (e.clientX + 16) + 'px';
|
||||||
tooltip.style.top = (e.clientY - 14) + 'px';
|
tooltip.style.top = (e.clientY - 14) + 'px';
|
||||||
tooltip.classList.add('vis');
|
tooltip.classList.add('vis');
|
||||||
|
|||||||
+14
-14
@@ -340,8 +340,8 @@ if (!empty($currentLocation) && is_array($currentLocation)) {
|
|||||||
<div class="satpass-tool">
|
<div class="satpass-tool">
|
||||||
<section class="card satpass-card">
|
<section class="card satpass-card">
|
||||||
<p class="satpass-intro">
|
<p class="satpass-intro">
|
||||||
Berechnet fuer den heutigen Tag den naechsten Ueberflug deiner ausgewaehlten Satelliten
|
Berechnet für den heutigen Tag den nächsten Überflug deiner ausgewählten Satelliten
|
||||||
und zeichnet deren Bahn auf einer Zenitkarte fuer deinen Standard-Standort.
|
und zeichnet deren Bahn auf einer Zenitkarte für deinen Standard-Standort.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@@ -349,14 +349,14 @@ if (!empty($currentLocation) && is_array($currentLocation)) {
|
|||||||
<section class="card satpass-card">
|
<section class="card satpass-card">
|
||||||
<h2>Kein Standard-Standort gesetzt</h2>
|
<h2>Kein Standard-Standort gesetzt</h2>
|
||||||
<p class="hint">
|
<p class="hint">
|
||||||
Bitte waehle in den <a href="settings.php">Einstellungen</a> einen Standard-Standort aus.
|
Bitte wähle in den <a href="settings.php">Einstellungen</a> einen Standard-Standort aus.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
<?php elseif (empty($satellitePayload)): ?>
|
<?php elseif (empty($satellitePayload)): ?>
|
||||||
<section class="card satpass-card">
|
<section class="card satpass-card">
|
||||||
<h2>Keine Satelliten ausgewaehlt</h2>
|
<h2>Keine Satelliten ausgewählt</h2>
|
||||||
<p class="hint">
|
<p class="hint">
|
||||||
Es sind noch keine ausgewaehlten Satelliten mit aktuellem TLE vorhanden.
|
Es sind noch keine ausgewählten Satelliten mit aktuellem TLE vorhanden.
|
||||||
Bitte fuege in <a href="my_favorites.php">Favoriten</a> Satelliten hinzu.
|
Bitte fuege in <a href="my_favorites.php">Favoriten</a> Satelliten hinzu.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
@@ -392,13 +392,13 @@ if (!empty($currentLocation) && is_array($currentLocation)) {
|
|||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="satSelect">Satellit</label>
|
<label for="satSelect">Satellit</label>
|
||||||
<select id="satSelect" class="satpass-select">
|
<select id="satSelect" class="satpass-select">
|
||||||
<option value="">– Satellit waehlen –</option>
|
<option value="">– Satellit wählen –</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="passSelect">Ueberflug</label>
|
<label for="passSelect">Überflug</label>
|
||||||
<select id="passSelect" class="satpass-select" disabled>
|
<select id="passSelect" class="satpass-select" disabled>
|
||||||
<option value="">– zuerst Satellit waehlen –</option>
|
<option value="">– zuerst Satellit wählen –</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div id="satpassPassInfo" class="satpass-pass-info"></div>
|
<div id="satpassPassInfo" class="satpass-pass-info"></div>
|
||||||
@@ -653,15 +653,15 @@ if (!empty($currentLocation) && is_array($currentLocation)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function buildObservationSummary(satName, pass, visibility) {
|
function buildObservationSummary(satName, pass, visibility) {
|
||||||
if (visibility.sky.key === 'day') return `${satName} ist bei diesem Ueberflug tagsueber nicht zu sehen.`;
|
if (visibility.sky.key === 'day') return `${satName} ist bei diesem Überflug tagsüber nicht zu sehen.`;
|
||||||
const visiblePhase = getVisiblePhase(pass);
|
const visiblePhase = getVisiblePhase(pass);
|
||||||
const pathText = buildPathDescription(visiblePhase.visiblePath);
|
const pathText = buildPathDescription(visiblePhase.visiblePath);
|
||||||
const shadowText = pass.shadowEntry
|
const shadowText = pass.shadowEntry
|
||||||
? ` Sie tritt um ${formatTime(pass.shadowEntry.time)} Uhr in den Erdschatten ein.` : '';
|
? ` Sie tritt um ${formatTime(pass.shadowEntry.time)} Uhr in den Erdschatten ein.` : '';
|
||||||
const magText = pass.peakMag !== null
|
const magText = pass.peakMag !== null
|
||||||
? ` Ihre maximale Helligkeit betraegt ${formatMag(pass.peakMag)} mag.` : '';
|
? ` Ihre maximale Helligkeit betraegt ${formatMag(pass.peakMag)} mag.` : '';
|
||||||
return `Die Rahmenbedingungen fuer die Beobachtung von ${satName} am ${formatDateLocal(pass.aosTime)} (${formatWeekdayShort(pass.aosTime)}) um ${formatTime(pass.aosTime)} Uhr sind ${visibility.label}. `
|
return `Die Rahmenbedingungen für die Beobachtung von ${satName} am ${formatDateLocal(pass.aosTime)} (${formatWeekdayShort(pass.aosTime)}) um ${formatTime(pass.aosTime)} Uhr sind ${visibility.label}. `
|
||||||
+ `Der Ueberflug ist ${formatDurationLong(visiblePhase.visibleDurationMs)} lang und bis ${formatTime(visiblePhase.visibleEndTime)} Uhr zu sehen. `
|
+ `Der Überflug ist ${formatDurationLong(visiblePhase.visibleDurationMs)} lang und bis ${formatTime(visiblePhase.visibleEndTime)} Uhr zu sehen. `
|
||||||
+ `${pathText} Die maximale Horizonthoehe betraegt ${pass.peakElevation.toFixed(0)}°.`
|
+ `${pathText} Die maximale Horizonthoehe betraegt ${pass.peakElevation.toFixed(0)}°.`
|
||||||
+ `${shadowText}${magText}`;
|
+ `${shadowText}${magText}`;
|
||||||
}
|
}
|
||||||
@@ -910,7 +910,7 @@ if (!empty($currentLocation) && is_array($currentLocation)) {
|
|||||||
timeZone: SITE_LOCATION.timezone, day:'2-digit', month:'2-digit', year:'numeric'
|
timeZone: SITE_LOCATION.timezone, day:'2-digit', month:'2-digit', year:'numeric'
|
||||||
}).format(new Date(WINDOW_END)) : '';
|
}).format(new Date(WINDOW_END)) : '';
|
||||||
|
|
||||||
satSelectEl.innerHTML = '<option value="">– Satellit waehlen –</option>';
|
satSelectEl.innerHTML = '<option value="">– Satellit wählen –</option>';
|
||||||
PYTHON_RESULTS.forEach((sat, satIdx) => {
|
PYTHON_RESULTS.forEach((sat, satIdx) => {
|
||||||
const upcomingCount = sat.passes.filter(p => p.losTime > now).length;
|
const upcomingCount = sat.passes.filter(p => p.losTime > now).length;
|
||||||
const opt = document.createElement('option');
|
const opt = document.createElement('option');
|
||||||
@@ -925,13 +925,13 @@ if (!empty($currentLocation) && is_array($currentLocation)) {
|
|||||||
passInfoEl.innerHTML = '';
|
passInfoEl.innerHTML = '';
|
||||||
if (isNaN(satIdx)) {
|
if (isNaN(satIdx)) {
|
||||||
passSelectEl.disabled = true;
|
passSelectEl.disabled = true;
|
||||||
passSelectEl.innerHTML = '<option value="">– zuerst Satellit waehlen –</option>';
|
passSelectEl.innerHTML = '<option value="">– zuerst Satellit wählen –</option>';
|
||||||
drawSky([], null, false);
|
drawSky([], null, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const sat = PYTHON_RESULTS[satIdx];
|
const sat = PYTHON_RESULTS[satIdx];
|
||||||
passSelectEl.disabled = false;
|
passSelectEl.disabled = false;
|
||||||
passSelectEl.innerHTML = '<option value="">– Ueberflug waehlen –</option>';
|
passSelectEl.innerHTML = '<option value="">– Überflug wählen –</option>';
|
||||||
sat.passes.forEach((p, passIdx) => {
|
sat.passes.forEach((p, passIdx) => {
|
||||||
const isPast = p.losTime <= now;
|
const isPast = p.losTime <= now;
|
||||||
const opt = document.createElement('option');
|
const opt = document.createElement('option');
|
||||||
|
|||||||
+7
-7
@@ -80,7 +80,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$email = trim($_POST['email'] ?? '');
|
$email = trim($_POST['email'] ?? '');
|
||||||
|
|
||||||
if ($email === '' || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
if ($email === '' || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
||||||
$errors[] = 'Bitte eine gueltige E-Mail-Adresse eingeben.';
|
$errors[] = 'Bitte eine gültige E-Mail-Adresse eingeben.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($displayName !== '' && mb_strlen($displayName) > 100) {
|
if ($displayName !== '' && mb_strlen($displayName) > 100) {
|
||||||
@@ -163,7 +163,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
':id' => $userId,
|
':id' => $userId,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$successMessage = 'Die Telegram-Verknuepfung wurde entfernt.';
|
$successMessage = 'Die Telegram-Verknüpfung wurde entfernt.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($action === 'update_tcrb_telegram_notifications') {
|
if ($action === 'update_tcrb_telegram_notifications') {
|
||||||
@@ -217,7 +217,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($newPassword !== $newPasswordRepeat) {
|
if ($newPassword !== $newPasswordRepeat) {
|
||||||
$errors[] = 'Die neuen Passwoerter stimmen nicht ueberein.';
|
$errors[] = 'Die neuen Passwörter stimmen nicht überein.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($errors)) {
|
if (empty($errors)) {
|
||||||
@@ -311,7 +311,7 @@ $telegramDeepLink = $telegramLinkIsActive && $telegramBotUsername !== ''
|
|||||||
<h2>Telegram verbinden</h2>
|
<h2>Telegram verbinden</h2>
|
||||||
<div class="form-stack">
|
<div class="form-stack">
|
||||||
<p class="hint">
|
<p class="hint">
|
||||||
Spaetere Bot-Nachrichten funktionieren nur mit einer verknuepften Chat-ID. Der Telegram-Username allein reicht Telegram fuer aktive Nachrichten an einen Nutzer nicht aus.
|
Spätere Bot-Nachrichten funktionieren nur mit einer verknüpften Chat-ID. Der Telegram-Username allein reicht Telegram für aktive Nachrichten an einen Nutzer nicht aus.
|
||||||
</p>
|
</p>
|
||||||
<table class="data-table mb-lg">
|
<table class="data-table mb-lg">
|
||||||
<tr><td>Status</td><td><?= $telegramHasConnection ? 'Verbunden' : 'Nicht verbunden' ?></td></tr>
|
<tr><td>Status</td><td><?= $telegramHasConnection ? 'Verbunden' : 'Nicht verbunden' ?></td></tr>
|
||||||
@@ -336,9 +336,9 @@ $telegramDeepLink = $telegramLinkIsActive && $telegramBotUsername !== ''
|
|||||||
</form>
|
</form>
|
||||||
|
|
||||||
<?php if ($telegramHasConnection): ?>
|
<?php if ($telegramHasConnection): ?>
|
||||||
<form method="post" action="" onsubmit="return confirm('Telegram-Verknuepfung wirklich entfernen?');">
|
<form method="post" action="" onsubmit="return confirm('Telegram-Verknüpfung wirklich entfernen?');">
|
||||||
<input type="hidden" name="action" value="disconnect_telegram">
|
<input type="hidden" name="action" value="disconnect_telegram">
|
||||||
<button type="submit" class="btn btn-danger">Verknuepfung loesen</button>
|
<button type="submit" class="btn btn-danger">Verknüpfung lösen</button>
|
||||||
</form>
|
</form>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
@@ -351,7 +351,7 @@ $telegramDeepLink = $telegramLinkIsActive && $telegramBotUsername !== ''
|
|||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<p class="hint">
|
<p class="hint">
|
||||||
Verbindung starten: <a href="<?= h($publicBasePath . 'telegram/connect.php') ?>">Telegram-Verknuepfung oeffnen</a>
|
Verbindung starten: <a href="<?= h($publicBasePath . 'telegram/connect.php') ?>">Telegram-Verknüpfung öffnen</a>
|
||||||
<?php if ($telegramDeepLink !== null): ?>
|
<?php if ($telegramDeepLink !== null): ?>
|
||||||
oder direkt im Bot:
|
oder direkt im Bot:
|
||||||
<a href="<?= h($telegramDeepLink) ?>" target="_blank" rel="noopener">@<?= h($telegramBotUsername) ?></a>
|
<a href="<?= h($telegramDeepLink) ?>" target="_blank" rel="noopener">@<?= h($telegramBotUsername) ?></a>
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ function runPythonApi(string $scriptPath, string $action, array $arguments): arr
|
|||||||
|
|
||||||
$decoded = json_decode($joined, true);
|
$decoded = json_decode($joined, true);
|
||||||
if (!is_array($decoded)) {
|
if (!is_array($decoded)) {
|
||||||
$lastError = $joined !== '' ? 'Python-Ausgabe war kein gueltiges JSON.' : 'Python lieferte keine Ausgabe zurueck.';
|
$lastError = $joined !== '' ? 'Python-Ausgabe war kein gültiges JSON.' : 'Python lieferte keine Ausgabe zurück.';
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -332,7 +332,7 @@ if (!empty($currentLocation) && is_array($currentLocation)) {
|
|||||||
<h2>Kein Standard-Standort gesetzt</h2>
|
<h2>Kein Standard-Standort gesetzt</h2>
|
||||||
<p class="hint">
|
<p class="hint">
|
||||||
Fuer die Berechnung wird der Standard-Standort aus der Datenbank verwendet.
|
Fuer die Berechnung wird der Standard-Standort aus der Datenbank verwendet.
|
||||||
Bitte waehle in den <a href="settings.php">Einstellungen</a> einen Standard-Standort aus.
|
Bitte wähle in den <a href="settings.php">Einstellungen</a> einen Standard-Standort aus.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
<?php elseif ($pageError !== null): ?>
|
<?php elseif ($pageError !== null): ?>
|
||||||
@@ -384,7 +384,7 @@ if (!empty($currentLocation) && is_array($currentLocation)) {
|
|||||||
<section class="card occult-card">
|
<section class="card occult-card">
|
||||||
<h2>Bereit zur Berechnung</h2>
|
<h2>Bereit zur Berechnung</h2>
|
||||||
<p class="hint">
|
<p class="hint">
|
||||||
Die Seite bleibt jetzt waehrend der Berechnung sichtbar. Waehle Datum und Grenzgroesse und starte die
|
Die Seite bleibt jetzt während der Berechnung sichtbar. Wähle Datum und Grenzgröße und starte die
|
||||||
Auswertung mit dem Button.
|
Auswertung mit dem Button.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
@@ -432,7 +432,7 @@ if (!empty($currentLocation) && is_array($currentLocation)) {
|
|||||||
<div class="occult-submit-progress-bar" aria-hidden="true">
|
<div class="occult-submit-progress-bar" aria-hidden="true">
|
||||||
<div class="occult-submit-progress-fill" id="occultSubmitProgressFill"></div>
|
<div class="occult-submit-progress-fill" id="occultSubmitProgressFill"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="occult-submit-progress-note">Geschaetzter Fortschritt waehrend der laufenden Serverberechnung.</div>
|
<div class="occult-submit-progress-note">Geschätzter Fortschritt während der laufenden Serverberechnung.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -232,7 +232,7 @@ function sendTelegramMessage(string $botToken, string $chatId, string $messageTe
|
|||||||
if (!is_array($decoded)) {
|
if (!is_array($decoded)) {
|
||||||
return [
|
return [
|
||||||
'ok' => false,
|
'ok' => false,
|
||||||
'description' => 'Telegram hat keine gueltige JSON-Antwort geliefert.',
|
'description' => 'Telegram hat keine gültige JSON-Antwort geliefert.',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -303,7 +303,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($action !== 'send_broadcast') {
|
if ($action !== 'send_broadcast') {
|
||||||
$errors[] = 'Die angeforderte Aktion ist ungueltig.';
|
$errors[] = 'Die angeforderte Aktion ist ungültig.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($messageText === '') {
|
if ($messageText === '') {
|
||||||
@@ -347,7 +347,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
}
|
}
|
||||||
} elseif ($sendMode === 'selected') {
|
} elseif ($sendMode === 'selected') {
|
||||||
if (empty($selectedRecipientIds)) {
|
if (empty($selectedRecipientIds)) {
|
||||||
$errors[] = 'Bitte mindestens einen Empfaenger auswaehlen.';
|
$errors[] = 'Bitte mindestens einen Empfänger auswählen.';
|
||||||
} else {
|
} else {
|
||||||
foreach ($selectedRecipientIds as $recipientId) {
|
foreach ($selectedRecipientIds as $recipientId) {
|
||||||
if (isset($recipientIndex[$recipientId])) {
|
if (isset($recipientIndex[$recipientId])) {
|
||||||
@@ -356,13 +356,13 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (empty($targetRecipients)) {
|
if (empty($targetRecipients)) {
|
||||||
$errors[] = 'Die ausgewaehlten Empfaenger konnten nicht geladen werden.';
|
$errors[] = 'Die ausgewählten Empfänger konnten nicht geladen werden.';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($sendMode === 'all') {
|
} elseif ($sendMode === 'all') {
|
||||||
$targetRecipients = $recipients;
|
$targetRecipients = $recipients;
|
||||||
} else {
|
} else {
|
||||||
$errors[] = 'Der Versandmodus ist ungueltig.';
|
$errors[] = 'Der Versandmodus ist ungültig.';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -418,7 +418,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<table class="data-table mb-lg">
|
<table class="data-table mb-lg">
|
||||||
<tr><td>Verknuepfte Master-Konten</td><td><?= count($recipients) ?></td></tr>
|
<tr><td>Verknüpfte Master-Konten</td><td><?= count($recipients) ?></td></tr>
|
||||||
<tr><td>Bot</td><td><?= h(($telegramConfig['bot_username'] ?? '') !== '' ? '@' . (string) $telegramConfig['bot_username'] : 'nicht konfiguriert') ?></td></tr>
|
<tr><td>Bot</td><td><?= h(($telegramConfig['bot_username'] ?? '') !== '' ? '@' . (string) $telegramConfig['bot_username'] : 'nicht konfiguriert') ?></td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
@@ -427,14 +427,14 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
<input type="hidden" name="csrf_token" value="<?= h($_SESSION['telegram_broadcast_csrf']) ?>">
|
<input type="hidden" name="csrf_token" value="<?= h($_SESSION['telegram_broadcast_csrf']) ?>">
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Empfaenger</label>
|
<label>Empfänger</label>
|
||||||
<label>
|
<label>
|
||||||
<input type="radio" name="send_mode" value="self" <?= $sendMode === 'self' ? 'checked' : '' ?>>
|
<input type="radio" name="send_mode" value="self" <?= $sendMode === 'self' ? 'checked' : '' ?>>
|
||||||
Nur an mich senden
|
Nur an mich senden
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<input type="radio" name="send_mode" value="selected" <?= $sendMode === 'selected' ? 'checked' : '' ?>>
|
<input type="radio" name="send_mode" value="selected" <?= $sendMode === 'selected' ? 'checked' : '' ?>>
|
||||||
An ausgewaehlte Nutzer senden
|
An ausgewählte Nutzer senden
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<input type="radio" name="send_mode" value="all" <?= $sendMode === 'all' ? 'checked' : '' ?>>
|
<input type="radio" name="send_mode" value="all" <?= $sendMode === 'all' ? 'checked' : '' ?>>
|
||||||
@@ -443,7 +443,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="recipient_ids">Auswahl fuer "ausgewaehlte Nutzer"</label>
|
<label for="recipient_ids">Auswahl für "ausgewählte Nutzer"</label>
|
||||||
<select id="recipient_ids" name="recipient_ids[]" multiple size="8">
|
<select id="recipient_ids" name="recipient_ids[]" multiple size="8">
|
||||||
<?php foreach ($recipients as $recipient): ?>
|
<?php foreach ($recipients as $recipient): ?>
|
||||||
<?php $recipientId = (int) $recipient['id']; ?>
|
<?php $recipientId = (int) $recipient['id']; ?>
|
||||||
@@ -472,7 +472,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h2>Empfaenger</h2>
|
<h2>Empfänger</h2>
|
||||||
<?php if (empty($recipients)): ?>
|
<?php if (empty($recipients)): ?>
|
||||||
<p class="hint">Noch keine verknuepften Master-Konten vorhanden.</p>
|
<p class="hint">Noch keine verknuepften Master-Konten vorhanden.</p>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ $publicBasePath = '../';
|
|||||||
$pageTitle = 'Telegram verbinden - AstroTools';
|
$pageTitle = 'Telegram verbinden - AstroTools';
|
||||||
$headerIntroPre = 'Konto';
|
$headerIntroPre = 'Konto';
|
||||||
$headerIntroTitle = 'Telegram verbinden';
|
$headerIntroTitle = 'Telegram verbinden';
|
||||||
$headerIntroSub = 'Bot-Verknuepfung fuer spaetere Benachrichtigungen.';
|
$headerIntroSub = 'Bot-Verknüpfung für spätere Benachrichtigungen.';
|
||||||
|
|
||||||
function h(?string $value): string
|
function h(?string $value): string
|
||||||
{
|
{
|
||||||
@@ -107,7 +107,7 @@ $deepLink = $botUsername !== ''
|
|||||||
<?php require __DIR__ . '/../header.php'; ?>
|
<?php require __DIR__ . '/../header.php'; ?>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h2>Telegram-Verknuepfung</h2>
|
<h2>Telegram-Verknüpfung</h2>
|
||||||
<p class="hint">
|
<p class="hint">
|
||||||
Diese Verbindung merkt sich die Chat-ID deines Telegram-Kontos, damit spaeter ein Bot dir Inhalte direkt schicken kann.
|
Diese Verbindung merkt sich die Chat-ID deines Telegram-Kontos, damit spaeter ein Bot dir Inhalte direkt schicken kann.
|
||||||
</p>
|
</p>
|
||||||
@@ -122,11 +122,11 @@ $deepLink = $botUsername !== ''
|
|||||||
|
|
||||||
<?php if ($deepLink !== null): ?>
|
<?php if ($deepLink !== null): ?>
|
||||||
<p>
|
<p>
|
||||||
<a class="btn btn-primary" href="<?= h($deepLink) ?>" target="_blank" rel="noopener">Bot in Telegram oeffnen</a>
|
<a class="btn btn-primary" href="<?= h($deepLink) ?>" target="_blank" rel="noopener">Bot in Telegram öffnen</a>
|
||||||
</p>
|
</p>
|
||||||
<div class="telegram-qr-block">
|
<div class="telegram-qr-block">
|
||||||
<div class="telegram-qr-image" id="telegramConnectQrLarge" data-telegram-link="<?= h($deepLink) ?>"></div>
|
<div class="telegram-qr-image" id="telegramConnectQrLarge" data-telegram-link="<?= h($deepLink) ?>"></div>
|
||||||
<p class="hint">QR-Code mit dem Handy scannen. Telegram oeffnet dann direkt den richtigen Bot mit deinem Verknuepfungslink.</p>
|
<p class="hint">QR-Code mit dem Handy scannen. Telegram öffnet dann direkt den richtigen Bot mit deinem Verknüpfungslink.</p>
|
||||||
</div>
|
</div>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<p class="hint">
|
<p class="hint">
|
||||||
@@ -144,7 +144,7 @@ $deepLink = $botUsername !== ''
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="hint">
|
<p class="hint">
|
||||||
Nach erfolgreicher Verknuepfung kannst du zurueck zu <a href="<?= h($publicBasePath . 'settings.php') ?>">Einstellungen</a>.
|
Nach erfolgreicher Verknüpfung kannst du zurück zu <a href="<?= h($publicBasePath . 'settings.php') ?>">Einstellungen</a>.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user