Najpierw: Jak utworzyć wydarzenie?
Import gotowego szablonu do wydarzenia (event) polega na tym, że użytkownik na stronie Templates (Szablony) otwiera przyciskiem "Dodaj więcej" modal biblioteki Dodaj szablony, wybiera jeden lub więcej gotowych szablonów i klika "Dodaj". W RZECZYWISTYM kodzie jest to JEDYNA dostępna dla użytkownika droga importu (dodawanie z gotowej biblioteki). Choć w kodzie zdefiniowane są metody importu z pliku (.aktemplate) (TemplateFileService.ImportFromFileAsync/ExportToFileAsync) oraz loader dołączonych szablonów (LoadBundledTemplateJsonAsync), ŻADEN interfejs ich nie wywołuje — czyli funkcja importu z pliku obecnie NIE ISTNIEJE w interfejsie.
- Użytkownik musi być zalogowany i musi być wybrane wydarzenie (event) — jeśli w AddTemplateToCurrentEvent currentEventInfo jest null, operacja po cichu się nie powiedzie (RepositoryResponse.Success=false).
- W bibliotece (AllLocalPhotoTemplates / AllLocalWideoGifTemplates) muszą znajdować się gotowe szablony; ta lista jest wypełniana z serwera/CloudSync oraz z domyślnych szablonów, a gdy jest pusta, w modalu wyświetlane jest Brak szablonów.
Krok po kroku
Krok 1 · Otwórz stronę Szablony
Settings → Templates (/templates)
W Ustawieniach przejdź do strony Szablony (Templates). Strona otwiera się pod ścieżką /templates, a u góry widoczne są dwie karty (Zdjęcie, Video & GIF) oraz sekcja Aktywne szablony.
🔎 Elementy na ekranie: Karty: Zdjęcie, Video & GIF; nagłówek Aktywne szablony + odznaka licznika

Krok 2 · Wybierz właściwą kartę
Templates (/templates) → pasek kart
Wybierz kartę odpowiednio do typu importowanego szablonu: dla wydruku zdjęcia Zdjęcie, dla wyniku wideo/GIF Video & GIF. Wybrana karta określa, która lista biblioteki (foto vs wideo) zostanie pokazana w modalu.
🔎 Elementy na ekranie: karta Zdjęcie, karta Video & GIF
Krok 3 · Naciśnij przycisk Dodaj więcej
Templates (/templates) → akcje nagłówka sekcji
Kliknij przycisk Dodaj więcej po prawej stronie nagłówka sekcji. Wywołuje to OpenBrowseModal() w VM edytora i otwiera modal biblioteki 'Dodaj szablony' (z karty zdjęcia — bibliotekę foto, z karty wideo — bibliotekę wideo).
🔎 Elementy na ekranie: przycisk Dodaj więcej (btn-outline); obok przycisk Utwórz nowy (fioletowy)
Krok 4 · Przejrzyj modal biblioteki Dodaj szablony
BrowseLibraryModal — modal Dodaj szablony
W otwartym modalu Dodaj szablony przejrzyj karty gotowych szablonów. Karty układają się w układzie masonry, a przewijanie w dół doładowuje kolejne stronami po 30 (infinite scroll). Szablony już dodane do wydarzenia są oznaczone odznaką Dodano i nie można ich wybrać.
🔎 Elementy na ekranie: tytuł modalu Dodaj szablony, podtytuł Wybierz szablony do dodania; na kartach pole wyboru i odznaka Dodano; na każdej karcie nazwa + format (OutputSize.DisplayName)

Krok 5 · Wybierz jeden lub więcej szablonów
BrowseLibraryModal — siatka kart
Kliknij kartę(-y) szablonu, którą chcesz dodać. Każde kliknięcie włącza/wyłącza zaznaczenie karty (pole wyboru wypełnia się na fioletowo). Karty ze statusem Dodano nie są klikalne (są pomijane w OnCardClick). Liczba na dolnym przycisku Dodaj pokazuje tylko liczbę zaznaczonych, jeszcze nie dodanych kart.
🔎 Elementy na ekranie: fioletowe pole wyboru na karcie (browse-selected), przycisk 'Dodaj (N)' w stopce

Krok 6 · Zaimportuj do wydarzenia przyciskiem Dodaj
BrowseLibraryModal — stopka
Naciśnij przycisk 'Dodaj (N)' w stopce. Dla każdego wybranego szablonu wywoływane jest AddTemplateToCurrentEvent(templateLocalId); tworzy to junction (TemplateEventJunction) między szablonem a bieżącym wydarzeniem i wiąże szablon z wydarzeniem. Zaznaczenie zostaje wyczyszczone, a modal się zamyka.
🔎 Elementy na ekranie: przycisk 'Dodaj (N)' (btn-update-now); przycisk Anuluj; po lewej czerwony przycisk 'Usuń (N)'
Krok 7 · (Krok pośredni) Wyskakujące okno z propozycją włączenia trybu
Okno dialogowe potwierdzenia (BlazorUserDialogService)
Jeśli tryb wyjściowy dodanego szablonu (Zdjęcie/GIF/Wideo) jest w wydarzeniu wyłączony, po zamknięciu modalu pojawia się okno potwierdzenia 'czy włączyć tryb?' (TemplateModeSuggestionService.CheckAndOfferAsync). Jeśli klikniesz 'Tak', odpowiednie ustawienie (np. PhotoOutputFormatActive / GifOutputFormatActive / WideoOutputFormatActive) zostaje włączone; jeśli klikniesz Nie, nic się nie zmienia. Szablon zdjęcia z wieloma klatkami (2+) może dodatkowo zaproponować tryb GIF.
🔎 Elementy na ekranie: tytuł okna informacyjnego (np. 'EnableGifModeTitle'), przyciski Tak / Nie

Krok 8 · Dodany szablon pojawia się w siatce Aktywne szablony
Templates (/templates) → siatka Aktywne szablony
Modal się zamyka, a wybrany(-e) szablon(y) trafia(-ją) do siatki Aktywne szablony danej karty. Jeśli trwa pobieranie/synchronizacja, w nagłówku pojawia się wskaźnik 'Importowanie...' oraz licznik X/Y; po zakończeniu karta jest w pełni widoczna.
🔎 Elementy na ekranie: odznaka licznika (X/Y) w nagłówku + etykieta Importowanie...; nowa karta szablonu w siatce

Krok 9 · Edytuj szablon (opcjonalnie)
Siatka Templates → akcje GalleryItemCard / TemplateEditor (/templateeditor)
Najedź na kartę w siatce Aktywne szablony i kliknij ikonę Edytuj (ołówek) lub bezpośrednio kartę → wywoływane jest LoadTemplateForEditing i następuje przejście do /templateeditor. Jeśli szablon jest 'pristine' (domyślny/wygenerowany przez kreatora, nigdy nie zmieniany), ma odznakę 'Zablokowane', a edycja tworzy w rzeczywistości kopię (tooltip Klonuj i edytuj); w zmienionych szablonach jest to bezpośrednio Edytuj. Ponadto na karcie dostępne są też akcje Duplikuj i Usuń.
🔎 Elementy na ekranie: akcje karty: Klonuj i edytuj / Edytuj, Duplikuj, Usuń, przenieś (przeciągnij); odznaka Zablokowane

Krok 10 · (Nie alternatywa importu) Tworzenie od zera
Templates (/templates) → kreator CreateNewTemplateModal
Zamiast importu gotowego szablonu przycisk Utwórz nowy otwiera kreator (CreateNewTemplateModal: typ → format → układ → styl) i tworzy szablon od zera. To NIE jest import, lecz proces tworzenia nowego szablonu; jest to coś odrębnego od importu z gotowej biblioteki.
🔎 Elementy na ekranie: przycisk Utwórz nowy; kroki kreatora (Typ/Format/Układ/Styl)
Modal pozwala na zaznaczenie wielu pozycji: możesz zaznaczyć kilka kart i zaimportować je zbiorczo jednym Dodaj.
Liczba na przycisku 'Dodaj (N)' liczy tylko zaznaczone karty, które nie zostały jeszcze dodane (bez odznaki Dodano); już dodanej karty nie można zaznaczyć.
Z tego samego modalu, czerwonym przyciskiem 'Usuń (N)' na dole po lewej, możesz całkowicie usunąć zaznaczone szablony z biblioteki (junction wydarzenia + wpis w bibliotece) — wymaga to potwierdzenia w oknie dialogowym.
Edycja gotowego szablonu pristine (Zablokowane) nie narusza oryginału; automatycznie tworzy kopię i edytuje właśnie ją (Klonuj i edytuj).
Jeśli po dodaniu szablonu tryb wyjściowy jest wyłączony i pojawia się propozycja 'czy włączyć tryb?', kliknięcie Tak natychmiast włącza odpowiedni przełącznik na ekranie powitalnym kiosku oraz na stronie ustawień Mode.
Oczekiwanie importu z pliku (.aktemplate): kod (TemplateFileService.ImportFromFileAsync/ExportToFileAsync oraz loader dołączonych szablonów wwwroot/templates) istnieje, ale nie jest podpięty do żadnego przycisku interfejsu — dla użytkownika import z pliku NIE ISTNIEJE; jedyną drogą jest dodawanie z gotowej biblioteki.
Próba dodania, gdy nie jest wybrane wydarzenie: gdy currentEventInfo jest null, AddTemplateToCurrentEvent po cichu zwraca Success=false i szablon nie zostaje dodany.
Dodawanie z niewłaściwej karty: modal z karty Zdjęcie pokazuje bibliotekę foto, a modal z karty Video & GIF — bibliotekę wideo; szukany szablon może być na drugiej karcie.
Mylenie Utwórz nowy z importem: tworzy on szablon od zera za pomocą kreatora, a nie importuje gotowego szablonu.
Jak utworzyć szablon zdjęcia? · Jak edytować istniejący szablon?