@php /* * Personalização do aplicativo: tema, cores e módulos. * * O mesmo modal serve Android, TV e iOS, e por isso ele não depende de nada * da página que o inclui: só precisa de um botão com id btnModules. */ $theme = $appData->theme ?? 1; $table = $table ?? 'apps'; $themeCompatible = in_array((string) $theme, ['1', '2', '3']); /* cada fila tem as suas colunas: a de TV troca camera e mais pedidas por rede social, e por isso a lista vem da tabela e nao do tema */ $catalogo = [ 'radio' => [ 'base' => [ ['key' => 'mod_schedule', 'title' => 'Programação', 'desc' => 'Exibe a grade de programação da rádio no aplicativo.'], ['key' => 'mod_chat', 'title' => 'Bate-papo', 'desc' => 'Habilita a sala de bate-papo em tempo real.'], ['key' => 'mod_messages', 'title' => 'Mural de recados', 'desc' => 'Permite o envio de recados em texto e áudio.'], ['key' => 'mod_camera', 'title' => 'Câmera no estúdio', 'desc' => 'Exibe a transmissão de vídeo no aplicativo.'], ['key' => 'mod_requests', 'title' => 'Pedidos de música', 'desc' => 'Formulário de pedidos de música.'], ], 'novos' => [ ['key' => 'mod_top', 'title' => 'As mais pedidas', 'desc' => 'Lista as músicas mais pedidas cadastradas no painel.'], ['key' => 'mod_news', 'title' => 'Notícias', 'desc' => 'Exibe as postagens de notícias no aplicativo.'], ['key' => 'mod_events', 'title' => 'Eventos', 'desc' => 'Exibe os eventos cadastrados no painel.'], ['key' => 'mod_team', 'title' => 'Equipe', 'desc' => 'Mostra os membros da equipe cadastrados.'], ['key' => 'mod_gallery', 'title' => 'Galeria de fotos', 'desc' => 'Exibe as galerias de fotos no aplicativo.'], ['key' => 'mod_promo', 'title' => 'Promoções', 'desc' => 'Exibe as promoções cadastradas no painel.'], ['key' => 'mod_podcasts', 'title' => 'Podcasts', 'desc' => 'Lista os podcasts do cliente no aplicativo.'], ], ], 'tv' => [ 'base' => [ ['key' => 'mod_schedule', 'title' => 'Programação', 'desc' => 'Exibe a grade de programação no aplicativo.'], ['key' => 'mod_chat', 'title' => 'Bate-papo', 'desc' => 'Habilita a sala de bate-papo em tempo real.'], ['key' => 'mod_messages', 'title' => 'Mural de recados', 'desc' => 'Permite o envio de recados em texto e áudio.'], ['key' => 'mod_requests', 'title' => 'Pedidos de música', 'desc' => 'Formulário de pedidos de música.'], ['key' => 'mod_social', 'title' => 'Redes sociais', 'desc' => 'Mostra os perfis cadastrados no painel.'], ], 'novos' => [ ['key' => 'mod_news', 'title' => 'Notícias', 'desc' => 'Exibe as postagens de notícias no aplicativo.'], ['key' => 'mod_events', 'title' => 'Eventos', 'desc' => 'Exibe os eventos cadastrados no painel.'], ['key' => 'mod_team', 'title' => 'Equipe', 'desc' => 'Mostra os membros da equipe cadastrados.'], ['key' => 'mod_gallery', 'title' => 'Galeria de fotos', 'desc' => 'Exibe as galerias de fotos no aplicativo.'], ['key' => 'mod_promo', 'title' => 'Promoções', 'desc' => 'Exibe as promoções cadastradas no painel.'], ['key' => 'mod_podcasts', 'title' => 'Podcasts', 'desc' => 'Lista os podcasts do cliente no aplicativo.'], ], ], ]; $familia = $table === 'apps_tv' ? 'tv' : 'radio'; $modulesBase = $catalogo[$familia]['base']; $modulesNew = $catalogo[$familia]['novos']; /* o tema 3 tem os mesmos modulos do 2 */ $allModules = in_array((string) $theme, ['2', '3'], true) ? array_merge($modulesBase, $modulesNew) : $modulesBase; $colorSchema = [ '1' => [ 'p1' => ['label' => 'Cor 1', 'hint' => 'Fundo, ícones e botões principais'], 'p2' => ['label' => 'Cor 2', 'hint' => 'Textos sobre elementos coloridos'], 'p3' => ['label' => 'Cor 3', 'hint' => 'Cor secundária de destaque'], 'p4' => ['label' => 'Cor 4', 'hint' => 'Textos terciários'], ], '2' => [ 'p1' => ['label' => 'Cor 1', 'hint' => 'Textos e ícones'], 'p2' => ['label' => 'Cor 2', 'hint' => 'Cor do cabeçalho'], 'p3' => ['label' => 'Cor 3', 'hint' => 'Cor do fundo'], ], ]; /* o tema 3 usa os mesmos papeis de cor do 2 */ $colorSchema['3'] = $colorSchema['2']; $activeSchema = $colorSchema[(string) $theme] ?? $colorSchema['1']; $colorValues = []; foreach (['p1', 'p2', 'p3', 'p4'] as $key) { $raw = $appData->{$key} ?? ''; $colorValues[$key] = preg_match('/^#[0-9a-fA-F]{6}$/', $raw) ? strtoupper($raw) : '#000000'; } $modulesState = []; foreach (array_merge($modulesBase, $modulesNew) as $mod) { $modulesState[$mod['key']] = isset($appData->{$mod['key']}) ? (int) $appData->{$mod['key']} : 1; } @endphp