Grafika strony glownej z biblioteki mediow, naglowek w panelu
Deploy PROD / deploy (push) Successful in 26s
Deploy PROD / deploy (push) Successful in 26s
GRAFIKA JAKO USTAWIENIE, NIE PLIK W REPOZYTORIUM
Nowe `ACADEMY_HERO_IMAGE_MEDIA_ID` (typ MEDIA) wskazuje zdjecie obok naglowka
strony glownej. Zdjecie jest materialem konkretnego klienta, zwykle z jego
logo, a model wdrozenia zabrania danych klienta w obrazie Docker: wbudowane
w kod pojawiloby sie na stronie kazdej kolejnej instancji. Ta sama regula co
przy logo i ikonie karty.
Plik idzie przez `/api/public/media/{id}`, jak obrazki w tresci strony. Pusta
albo nieliczbowa wartosc daje domyslny panel z motywem wodnym zamiast adresu
donikad: zepsuty obrazek w najbardziej widocznym miejscu strony wyglada gorzej
niz motyw domyslny.
Ramka dostaje proporcje zdjecia (16:9) zamiast sztywnej wysokosci: przy innym
ksztalcie `object-cover` obcinal brzegi, a tam zwykle stoi logo.
NAGLOWEK STRONY GLOWNEJ W PANELU
`ACADEMY_HERO_EYEBROW`, `_TITLE` i `_TEXT` istnialy w backendzie od poczatku,
ale nie bylo ich w panelu: tytul strony dalo sie zmienic wylacznie zapytaniem
do bazy. Ustawienia -> Strona glowna ma teraz karte z tymi polami i grafika.
ODMIANA LICZNIKOW
Etykiety licznikow mialy na sztywno forme dla "wielu", wiec na zywej stronie
widnialo "1 kursantow". Licznik jest pierwsza rzecza, ktora widzi gosc.
Uzyta istniejaca funkcja `plural` z `lib/dates.ts`, teraz wyeksportowana,
zamiast czwartej kopii tej samej funkcji.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -215,6 +215,8 @@ public final class PublicAcademyDtos {
|
||||
String heroEyebrow,
|
||||
String heroTitle,
|
||||
String heroText,
|
||||
/** Adres grafiki obok naglowka albo null, gdy strona ma domyslny motyw. */
|
||||
String heroImageUrl,
|
||||
String expertsTitle,
|
||||
String expertsText,
|
||||
String reviewsTitle,
|
||||
|
||||
@@ -122,6 +122,7 @@ public class PublicAcademyService {
|
||||
settings.get(SettingKey.ACADEMY_HERO_EYEBROW),
|
||||
settings.get(SettingKey.ACADEMY_HERO_TITLE),
|
||||
settings.get(SettingKey.ACADEMY_HERO_TEXT),
|
||||
heroImageUrl(),
|
||||
settings.get(SettingKey.ACADEMY_EXPERTS_TITLE),
|
||||
settings.get(SettingKey.ACADEMY_EXPERTS_TEXT),
|
||||
settings.get(SettingKey.ACADEMY_REVIEWS_TITLE),
|
||||
@@ -137,6 +138,23 @@ public class PublicAcademyService {
|
||||
sections.getOrDefault(PageSectionType.FAQ, List.of()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Adres grafiki obok naglowka.
|
||||
*
|
||||
* Plik idzie przez `/api/public/media/{id}`, jak obrazki w tresci strony:
|
||||
* klucz obiektu w MinIO nie opuszcza serwera, a typ pochodzi z bazy.
|
||||
* Wartosc, ktora nie jest liczba, daje null zamiast adresu donikad:
|
||||
* zepsuty obrazek w najbardziej widocznym miejscu strony wyglada gorzej
|
||||
* niz domyslny motyw.
|
||||
*/
|
||||
private String heroImageUrl() {
|
||||
String id = settings.get(SettingKey.ACADEMY_HERO_IMAGE_MEDIA_ID);
|
||||
if (id == null || !id.trim().matches("\\d+")) {
|
||||
return null;
|
||||
}
|
||||
return "/api/public/media/" + id.trim();
|
||||
}
|
||||
|
||||
/**
|
||||
* Liczby w naglowku.
|
||||
*
|
||||
|
||||
@@ -413,6 +413,20 @@ public enum SettingKey {
|
||||
"Kursy online i otwarte webinary z ekspertami. Jedno konto, certyfikaty, "
|
||||
+ "dostęp z dowolnego urządzenia.",
|
||||
"Zdanie pod nagłówkiem strony głównej Akademii"),
|
||||
/**
|
||||
* Grafika obok naglowka strony glownej Akademii.
|
||||
*
|
||||
* Identyfikator pliku z biblioteki mediow, nie adres i nie plik w repozytorium.
|
||||
* Zdjecie jest zwykle materialem konkretnego klienta (z jego logo), a model
|
||||
* wdrozenia zabrania danych klienta w obrazie Docker: wbudowane w kod
|
||||
* pojawiloby sie na stronie kazdej kolejnej instancji. Ta sama regula co przy
|
||||
* logo i ikonie karty.
|
||||
*
|
||||
* Puste oznacza domyslny panel z motywem wodnym, co jest poprawnym stanem.
|
||||
*/
|
||||
ACADEMY_HERO_IMAGE_MEDIA_ID(SettingType.MEDIA, "",
|
||||
"Grafika obok nagłówka strony głównej Akademii. Puste pokazuje domyślny motyw.",
|
||||
Requirement.OPTIONAL_EMPTY),
|
||||
ACADEMY_EXPERTS_TITLE(SettingType.STRING, "Uczysz się od praktyków",
|
||||
"Nagłówek sekcji z prowadzącymi. Same osoby dodaje się w zakładce Strona główna."),
|
||||
ACADEMY_EXPERTS_TEXT(SettingType.STRING, "",
|
||||
|
||||
Reference in New Issue
Block a user