Skip to content

Commit 8bfb226

Browse files
committed
Preparation for first Tool
1 parent a5fe247 commit 8bfb226

File tree

9 files changed

+138
-13
lines changed

9 files changed

+138
-13
lines changed

config/container.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@
7373
$container->add(League\Plates\Engine::class)
7474
->addArgument(__DIR__.'/../template')
7575
->addMethodCall('loadExtension', [\App\PlatesExtension\Translator\TranslationExtension::class])
76-
->addMethodCall('loadExtension', [\App\PlatesExtension\Authentication\AuthenticationExtension::class]);
76+
->addMethodCall('loadExtension', [\App\PlatesExtension\Authentication\AuthenticationExtension::class])
77+
->addMethodCall('loadExtension', [\App\PlatesExtension\Dynamics\DynamicTextExtension::class]);
7778

7879
$container->add(\App\PlatesExtension\Translator\TranslationExtension::class)
7980
->addArgument(\App\PlatesExtension\Translator\Translation::class);
@@ -87,6 +88,8 @@
8788
$container->add(\App\PlatesExtension\Authentication\AuthenticationExtension::class)
8889
->addArgument(\App\Service\Authentication\AccountService::class);
8990

91+
$container->add(\App\PlatesExtension\Dynamics\DynamicTextExtension::class);
92+
9093
$responseFactory = (new \Laminas\Diactoros\ResponseFactory());
9194
$jsonStrategy = (new \League\Route\Strategy\JsonStrategy($responseFactory))->setContainer($container);
9295
$applicationStrategy = (new \League\Route\Strategy\ApplicationStrategy())->setContainer($container);

public/index.php

-1
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,4 @@
1111
$container->get(\Monolog\Logger::class))
1212
);
1313

14-
1514
require_once __DIR__.'/../config/routes.php';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace App\PlatesExtension\Dynamics;
4+
5+
use League\Plates\Engine;
6+
use League\Plates\Extension\ExtensionInterface;
7+
8+
#[\AllowDynamicProperties]
9+
class DynamicTextExtension implements ExtensionInterface
10+
{
11+
12+
13+
public function register(Engine $engine)
14+
{
15+
$engine->registerFunction('timeOfDayGreeting', [$this, 'timeOfDayGreeting']);
16+
}
17+
18+
public function timeOfDayGreeting(): string
19+
{
20+
21+
$currentTime = (int)(new \DateTime())->format('H');
22+
23+
if ($currentTime >= 22) {
24+
return 'user-greeting-night';
25+
} else if (($currentTime >= 18)) {
26+
return 'user-greeting-evening';
27+
} else if (($currentTime >= 12)) {
28+
return 'user-greeting-day';
29+
} else if ($currentTime >= 5) {
30+
return 'user-greeting-morning';
31+
} else if ($currentTime >= 0) {
32+
return 'user-greeting-night';
33+
} else {
34+
return 'user-greeting-hello';
35+
}
36+
37+
}
38+
39+
}

src/App/PlatesExtension/Translator/JsonTranslation.php

+9-1
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,21 @@
55
class JsonTranslation implements TranslationInterface
66
{
77

8-
private array $translationList;
8+
private array $translationList = [];
99

1010
public function __construct(private readonly string $translationFile = 'de')
1111
{
1212
$this->translationList = json_decode(file_get_contents(__DIR__.'/../../../../translations/' . $this->translationFile . '.json'), true);
1313
}
1414

15+
public function loadTranslationFile(string $location)
16+
{
17+
array_merge(
18+
$this->translationList,
19+
json_decode(file_get_contents($location, true))
20+
);
21+
}
22+
1523
/**
1624
* @throws TranslationNotFoundException
1725
*/

src/App/Software.php

+2
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ public static function initEnvironment(string $location = __DIR__ . '/../../.env
5454
if (!isset($_ENV['SOFTWARE_PRODUCTION'])) {
5555
$_ENV['SOFTWARE_PRODUCTION'] = false;
5656
}
57+
58+
date_default_timezone_set($_ENV['SOFTWARE_TIMEZONE']);
5759
}
5860

5961
}

template/element/navigation.php

+9-9
Original file line numberDiff line numberDiff line change
@@ -10,36 +10,36 @@
1010
<ul class="navbar-nav me-auto">
1111
<?php if($this->getAccountInformation() === FALSE): ?>
1212
<li class="nav-item">
13-
<a class="nav-link" href="/">Startseite</a>
13+
<a class="nav-link" href="/"><?= $this->e($this->translate('navigation-startpage')) ?></a>
1414
</li>
1515
<?php else: ?>
1616
<li class="nav-item">
17-
<a class="nav-link" href="/overview">Dashboard</a>
17+
<a class="nav-link" href="/overview"><?= $this->e($this->translate('navigation-dashboard')) ?></a>
1818
</li>
1919
<?php endif; ?>
2020
<li class="nav-item">
21-
<a class="nav-link" href="#">Produkte</a>
21+
<a class="nav-link" href="#"><?= $this->e($this->translate('navigation-products')) ?></a>
2222
</li>
2323
</ul>
2424

2525
<ul class="navbar-nav ms-start">
2626
<?php if($this->getAccountInformation() === FALSE): ?>
2727
<li class="nav-item">
28-
<a class="nav-link" href="/authentication/login">Anmelden</a>
28+
<a class="nav-link" href="/authentication/login"><?= $this->e($this->translate('navigation-login')) ?></a>
2929
</li>
3030
<li class="nav-item">
31-
<a class="nav-link btn btn-primary" href="/authentication/registration">Registrieren</a>
31+
<a class="nav-link btn btn-primary" href="/authentication/registration"><?= $this->e($this->translate('navigation-register')) ?></a>
3232
</li>
3333
<?php else: ?>
3434
<li class="nav-item dropdown">
3535
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
36-
Angemeldet als <b><?= $this->getAccountInformation()['name'] ?></b>
36+
<?= $this->e($this->translate('navigation-logged-in-as')) ?> <b><?= $this->getAccountInformation()['name'] ?></b>
3737
</a>
3838
<ul class="dropdown-menu">
39-
<li><a class="dropdown-item" href="#">Kontoeinstellungen</a></li>
40-
<li><a class="dropdown-item" href="#">Lizenzierungen</a></li>
39+
<li><a class="dropdown-item" href="#"><?= $this->e($this->translate('navigation-account-settings')) ?></a></li>
40+
<li><a class="dropdown-item" href="#"><?= $this->e($this->translate('navigation-account-licenses')) ?></a></li>
4141
<hr>
42-
<li><a class="dropdown-item" href="/authentication/logout">Abmelden</a></li>
42+
<li><a class="dropdown-item" href="/authentication/logout"><?= $this->e($this->translate('navigation-logout')) ?></a></li>
4343
</ul>
4444
</li>
4545
<a class="nav-link">
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<div class="col-md-4 mb-3">
2+
<div class="card">
3+
<div class="card-body">
4+
<div class="row">
5+
<div class="col-8">
6+
<h5 class="text-start"><?= $this->e($title) ?></h5>
7+
</div>
8+
<div class="col-4">
9+
<span class="badge text-bg-secondary text-end float-end">
10+
<?= $this->e($this->translate('products-user-license-status-inclusive')) ?>
11+
</span>
12+
</div>
13+
</div>
14+
<span><?= $this->e($title) ?></span>
15+
</div>
16+
</div>
17+
</div>

template/login/overview.php

+33
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,39 @@
44

55
<div class="container mt-3">
66

7+
<div class="row">
8+
<div class="col-6">
9+
<h2><?= $this->e($this->translate($this->timeOfDayGreeting())) ?>, <?= $this->getAccountInformation()['name'] ?></h2>
10+
<small class="text-muted">
11+
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-info-circle" viewBox="0 0 16 16">
12+
<path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
13+
<path d="m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
14+
</svg>
15+
<?= $this->e($this->translate('managed-by-organisation')) ?> <a href="/account/organisation"><?= $this->e($this->translate('learn-more')) ?></a>
16+
</small>
17+
</div>
18+
</div>
19+
<hr>
720

21+
<h4><?= $this->e($this->translate('your-products-list-title')) ?></h4>
22+
<div class="row mt-3">
23+
<div class="col-md-4">
24+
<div class="card">
25+
<div class="card-body">
26+
<div class="row">
27+
<div class="col-8">
28+
<h5 class="text-start">URL-Kürzer</h5>
29+
</div>
30+
<div class="col-4">
31+
<span class="badge text-bg-secondary text-end float-end">
32+
<?= $this->e($this->translate('products-user-license-status-inclusive')) ?>
33+
</span>
34+
</div>
35+
</div>
36+
<span>Schafft kurze URLs zum einfachen Versenden von Webseiten</span>
37+
</div>
38+
</div>
39+
</div>
40+
</div>
841

942
</div>

translations/de.json

+25-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,30 @@
1717
"account-created": "Konto wurde angelegt",
1818
"login-account-disabled": "Dieses Konto ist deaktiviert",
1919
"login-wrong-combination": "Die Kombination aus E-Mail und Passwort konnte nicht gefunden werden",
20-
"login-account-successful": "Die Anmeldung war erfolgreich"
20+
"login-account-successful": "Die Anmeldung war erfolgreich",
21+
22+
"user-greeting-morning": "Guten Morgen",
23+
"user-greeting-day": "Guten Tag",
24+
"user-greeting-evening": "Guten Abend",
25+
"user-greeting-night": "Gute Nacht",
26+
"user-greeting-hello": "Hallo",
27+
28+
"managed-by-organisation": "Ihr Profil wird von Ihrer Organisation verwaltet.",
29+
"learn-more": "Weitere Informationen",
30+
"your-products-list-title": "Ihre Produkte",
31+
32+
"navigation-startpage": "Startseite",
33+
"navigation-dashboard": "Übersicht",
34+
"navigation-products": "Produkte",
35+
"navigation-login": "Anmelden",
36+
"navigation-register": "Registrieren",
37+
"navigation-logged-in-as": "Angemeldet als",
38+
"navigation-account-settings": "Kontoeinstellungen",
39+
"navigation-account-licenses": "Lizenzübersicht",
40+
"navigation-account-logout": "Abmelden",
41+
42+
"products-user-license-status-inclusive": "Inklusive",
43+
"products-user-license-status-licensed": "Lizenziert",
44+
"products-user-license-status-expired": "Abgelaufen"
2145

2246
}

0 commit comments

Comments
 (0)