Antes: Como Criar um Evento?
Importar um modelo predefinido para um evento faz-se selecionando um ou mais modelos predefinidos no modal da biblioteca Adicionar modelos — aberto com o botão "Adicionar mais" na página Templates (Modelos) — e premindo "Adicionar". No código REAL, esta é a ÚNICA via de importação disponível para o utilizador (adicionar a partir da biblioteca predefinida). Embora na base de código estejam definidos métodos de importação a partir de um ficheiro (.aktemplate) (TemplateFileService.ImportFromFileAsync/ExportToFileAsync) e um carregador de modelos empacotados (LoadBundledTemplateJsonAsync), NENHUMA interface os invoca — ou seja, a funcionalidade de importação a partir de ficheiro atualmente NÃO EXISTE na interface.
- O utilizador tem de ter sessão iniciada e um evento selecionado — se currentEventInfo for null, AddTemplateToCurrentEvent falha silenciosamente (RepositoryResponse.Success=false).
- A biblioteca (AllLocalPhotoTemplates / AllLocalVídeoGifTemplates) tem de conter modelos predefinidos; esta lista é preenchida a partir do servidor/CloudSync e dos modelos por omissão e, se estiver vazia, o modal mostra Ainda não há modelos.
Passo a passo
Passo 1 · Abrir a página de modelos
Settings → Templates (/templates)
A partir das Definições, aceda à página Modelos (Templates). A página abre na rota /templates e, no topo, aparecem dois separadores (Foto, Video & GIF) e a secção Modelos ativos.
🔎 Elementos no ecrã: Separadores: Foto, Video & GIF; título Modelos ativos + emblema de contador

Passo 2 · Selecionar o separador correto
Templates (/templates) → barra de separadores
Selecione o separador de acordo com o tipo de modelo que vai importar: Foto para saída de fotografia, Video & GIF para saída de vídeo/GIF. O separador selecionado determina a lista da biblioteca (foto vs vídeo) apresentada no modal.
🔎 Elementos no ecrã: separador Foto, separador Video & GIF
Passo 3 · Premir o botão Adicionar mais
Templates (/templates) → ações do cabeçalho da secção
Clique no botão Adicionar mais à direita do cabeçalho da secção. Isto invoca OpenBrowseModal() no VM do editor e abre o modal da biblioteca 'Adicionar modelos' (biblioteca de fotos a partir do separador de foto, biblioteca de vídeos a partir do separador de vídeo).
🔎 Elementos no ecrã: botão Adicionar mais (btn-outline); ao lado, botão Criar novo (roxo)
Passo 4 · Explorar o modal da biblioteca Adicionar modelos
BrowseLibraryModal — modal Adicionar modelos
No modal Adicionar modelos que se abre, examine os cartões dos modelos predefinidos. Os cartões surgem numa disposição masonry e, ao deslocar para baixo, carregam-se mais em páginas de 30 (scroll infinito). Os modelos já adicionados ao evento apresentam o emblema Adicionado e não podem ser selecionados.
🔎 Elementos no ecrã: título do modal Adicionar modelos, subtítulo Selecione os modelos para adicionar; caixa de seleção nos cartões e emblema Adicionado; em cada cartão, o nome + formato (OutputSize.DisplayName)

Passo 5 · Selecionar um ou mais modelos
BrowseLibraryModal — grelha de cartões
Clique no(s) cartão(ões) do(s) modelo(s) que pretende adicionar. Cada clique ativa/desativa a seleção do cartão (a caixa de seleção fica roxa). Os cartões com Adicionado não podem ser clicados (são ignorados em OnCardClick). O número no botão Adicionar em baixo mostra apenas a quantidade de cartões selecionados ainda não adicionados.
🔎 Elementos no ecrã: caixa de seleção roxa no cartão (browse-selected), botão 'Adicionar (N)' no rodapé

Passo 6 · Importar para o evento com o botão Adicionar
BrowseLibraryModal — rodapé
Prima o botão 'Adicionar (N)' no rodapé. Para cada modelo selecionado, é invocado AddTemplateToCurrentEvent(templateLocalId); isto cria um junction (TemplateEventJunction) entre o modelo e o evento atual e associa o modelo ao evento. A seleção é limpa e o modal fecha-se.
🔎 Elementos no ecrã: botão 'Adicionar (N)' (btn-update-now); botão Cancelar; à esquerda, botão vermelho 'Eliminar (N)'
Passo 7 · (Passo intermédio) Popup de sugestão para ativar o modo
Diálogo de confirmação (BlazorUserDialogService)
Se o modo de saída do modelo adicionado (Foto/GIF/Vídeo) estiver desativado no evento, depois de o modal fechar surge o popup de confirmação 'ativar o modo?' (TemplateModeSuggestionService.CheckAndOfferAsync). Se responder 'Sim', a definição correspondente (por ex. PhotoOutputFormatActive / GifOutputFormatActive / VídeoOutputFormatActive) é ativada; se responder Não, nada muda. Um modelo de foto com vários fotogramas (2+) pode também sugerir o modo GIF.
🔎 Elementos no ecrã: título do diálogo de informação (por ex. 'EnableGifModeTitle'), botões Sim / Não

Passo 8 · O modelo adicionado aparece na grelha Modelos ativos
Templates (/templates) → grelha de Modelos ativos
O modal fecha-se e o(s) modelo(s) selecionado(s) surge(m) na grelha Modelos ativos do separador. Se o pull/sincronização ainda estiver em curso, o indicador 'Importando...' e um contador X/Y aparecem no título; quando estiver pronto, o cartão fica totalmente visível.
🔎 Elementos no ecrã: emblema de contador (X/Y) no título + etiqueta Importando...; novo cartão de modelo na grelha

Passo 9 · Editar o modelo (opcional)
grelha de Templates → ações de GalleryItemCard / TemplateEditor (/templateeditor)
Na grelha Modelos ativos, passe o cursor sobre um cartão e clique no ícone Editar (lápis) ou diretamente no cartão → é invocado LoadTemplateForEditing e passa-se para /templateeditor. Se o modelo estiver 'pristine' (gerado por omissão/pelo assistente, nunca modificado), tem o emblema 'Bloqueado' e a edição cria, na verdade, uma cópia (tooltip Clonar e editar); nos modelos modificados, é diretamente Editar. O cartão dispõe ainda das ações Duplicar e Remover.
🔎 Elementos no ecrã: Ações do cartão: Clonar e editar / Editar, Duplicar, Remover, mover (arrastar); emblema Bloqueado

Passo 10 · (Não é uma importação alternativa) Criar de raiz
Templates (/templates) → assistente CreateNewTemplateModal
Em vez da importação a partir da biblioteca, o botão Criar novo abre um assistente (CreateNewTemplateModal: tipo → formato → disposição → estilo) e produz o modelo de raiz. Isto NÃO é uma importação, mas sim o fluxo de criação de um novo modelo; é distinto da importação a partir da biblioteca predefinida.
🔎 Elementos no ecrã: botão Criar novo; passos do assistente (Tipo/Formato/Disposição/Estilo)
O modal permite seleção múltipla: pode marcar vários cartões e importá-los em lote com um único Adicionar.
O número no botão 'Adicionar (N)' conta apenas os cartões selecionados ainda não adicionados (sem o emblema Adicionado); um cartão já adicionado não pode ser selecionado.
No mesmo modal, com o botão vermelho 'Eliminar (N)' no canto inferior esquerdo, pode eliminar completamente os modelos selecionados da biblioteca (junction do evento + registo da biblioteca) — isto pede um diálogo de confirmação.
Editar um modelo predefinido pristine (Bloqueado) não danifica o original; cria automaticamente uma cópia e edita-a (Clonar e editar).
Depois de adicionar um modelo, se o modo de saída estiver desativado, responder Sim à sugestão 'ativar o modo?' ativa de imediato o respetivo interruptor no ecrã de boas-vindas do quiosque e na página de definições Mode.
Esperar uma importação a partir de ficheiro (.aktemplate): o código (TemplateFileService.ImportFromFileAsync/ExportToFileAsync e o carregador empacotado wwwroot/templates) existe, mas não está ligado a nenhum botão da interface — para o utilizador NÃO há importação a partir de ficheiro; a única via é adicionar a partir da biblioteca predefinida.
Tentar adicionar sem um evento selecionado: quando currentEventInfo é null, AddTemplateToCurrentEvent devolve silenciosamente Success=false e o modelo não é adicionado.
Adicionar a partir do separador errado: o modal do separador Foto mostra a biblioteca de fotos e o modal do separador Video & GIF mostra a biblioteca de vídeos; o modelo que procura pode estar no outro separador.
Confundir Criar novo com uma importação: este produz um modelo de raiz com o assistente, não importa um modelo predefinido.
Como Criar um Modelo de Fotografia? · Como Editar um Modelo Existente?