Download the PHP package betocampoy/champs-onboarding without Composer

On this page you can find all versions of the php package betocampoy/champs-onboarding. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package champs-onboarding

betocampoy/champs-onboarding

Onboarding guiado (tours de interface) para projetos Symfony 7.4, integrado ao champs-frontend.

O pacote traz as próprias entidades e tabelas (champs_onboarding_*). O projeto consumidor não precisa adaptar nenhuma entidade: o progresso é gravado pelo userIdentifier do usuário logado (UserInterface::getUserIdentifier()).

Estrutura

Instalação durante o desenvolvimento (repositório path)

No composer.json do projeto (ex.: MEMOD):

Quando estabilizar, troque o path por vcs apontando para o GitHub e use tags de versão.

Registro do bundle

config/bundles.php:

config/packages/champs_onboarding.yaml (opcional):

Exige betocampoy/champs-frontend ^1.7.

Banco de dados

O mapeamento Doctrine é registrado pelo próprio bundle. Basta gerar e rodar a migration:

Leia a migration gerada. Ela deve criar só champs_onboarding_tour, champs_onboarding_step e champs_onboarding_progress. Se o banco do projeto já tiver drift em relação ao mapeamento, o diff arrasta junto ALTER/DROP de tabelas do projeto: nesse caso, limpe à mão.

Rotas

config/routes/champs_onboarding.yaml:

Método Rota Uso
GET /onboarding/tour?route=app_x Tour a exibir nesta rota (retoma ou inicia)
GET /onboarding/tour/{slug} Abre/reabre manualmente (botão "?")
POST /onboarding/progress {tour, step, action} com action next, complete ou skip
GET /onboarding/available?route=app_x Tours da página para o menu de ajuda

No next, step é o passo em que o usuário estava ao clicar. No último passo, next conclui o tour. Erros de regra voltam como JSON {error} em português (401 sem login, 404 tour inexistente, 403 sem acesso, 422 ação/passo/corpo inválido, 409 tour não iniciado).

As rotas só existem pelo import acima. O config/routes.yaml padrão do Symfony 7.4 (resource: routing.controllers) importaria todo controller com #[Route], inclusive os do bundle e sem prefixo; o ExcludeFromRoutingControllersPass tira os controllers do bundle dessa descoberta.

Quem vê cada tour (elegibilidade)

Tour::requiredAttribute é um atributo de segurança (null = qualquer usuário logado). A regra fica num único serviço, TourEligibilityCheckerInterface, usado tanto nos endpoints quanto no monitoramento (worker/comando, sem sessão).

O padrão (AuthorizationEligibilityChecker) chama isGrantedForUser($user, $atributo, $tour):

Para outra regra (ex.: excluir usuários desativados), implemente a interface no projeto (pode receber o AuthorizationEligibilityChecker e complementar) e aponte o alias:

Segmento (estatísticas por tenant, unidade, plano...)

Os tours são globais. Para filtrar e agrupar as estatísticas, implemente UserSegmentResolverInterface (resolve($user): ?string e label($segment): string) e aponte o alias do mesmo jeito. O segmento é gravado em champs_onboarding_progress.segment: quando o usuário usa o tour, quando muda um dos watch_fields e em cada champs:onboarding:sync (que também corrige segmentos desatualizados). Sem implementação, fica tudo sem segmento.

Tour obrigatório

Marque mandatory = true no tour. A partir daí:

Quando o usuário não tem pendência, isso fica guardado na sessão por cache_seconds. Um tour obrigatório criado depois leva até esse tempo para começar a ser cobrado de quem já está logado.

Tours monitorados

Marque monitored = true no tour. O bundle cria uma linha não iniciado (pending) para cada usuário elegível e vai atualizando conforme o usuário abre, conclui ou pula. Assim o dashboard mostra também quem nunca abriu o tour.

Sem user_class, o monitoramento fica desligado e o resto do bundle funciona normalmente.

Elegível = o TourEligibilityCheckerInterface diz que sim (ver acima).

watch_fields: campos, associações to-one ou coleções (ManyToMany/OneToMany) do User. Mudança em qualquer um ressincroniza o usuário. Inclua tudo de que a elegibilidade e o segmento dependem (ex.: [tenant, authRoles, status]).

Carga inicial: ao salvar um tour monitorado (ou mudar monitored, active ou requiredAttribute), o TourMonitoringListener despacha SyncMonitoredTour no Messenger.

Mudanças fora do User (ex.: o tenant contratou um módulo): despache SyncMonitoredUsers($segmento) para ressincronizar os usuários daquele segmento (ou null para todos).

Roteie as duas mensagens para um transport assíncrono:

Sem roteamento, a mensagem é processada na hora (síncrona).

Ciclo de vida do usuário (listener do Doctrine na user_class, sem código no projeto):

Evento O que acontece
Usuário criado Cria pending nos tours monitorados que ele pode ver
Algum watch_fields alterado Cria pending nos que passou a ver, remove pending dos que deixou de ver e atualiza o segmento
Identifier alterado (ex.: e-mail) Renomeia as linhas: o progresso acompanha o usuário
Usuário excluído Remove todas as linhas dele

Histórico de quem já abriu o tour nunca é apagado por mudança de acesso. Uma falha no monitoramento só é registrada no log: nunca impede salvar o usuário.

Comando (para ressincronizar ou depois de importar usuários direto no banco):

Estatísticas

OnboardingStats entrega os dados do dashboard:

segment = null nos dois primeiros = todos os segmentos.

Front (champs-frontend ≥ 1.8)

O módulo Onboarding.js do champs-core-js já vem no initCore(). No layout das páginas logadas:

Âncoras dos passos (o valor é o campo anchor do TourStep):

Textos traduzidos, atributos e eventos: ver o README do champs-core-js (seção Onboarding).

Cadastro de tours (admin)

Telas em /onboarding/admin/tours (prefixo do import de rotas), só para admin_role: lista com busca e números de uso, cadastro do tour, passos (criar, editar, subir/descer, excluir) e Testar tour (modo teste do Onboarding.js: nada é gravado, funciona com tour inativo).

Próximas etapas


All versions of champs-onboarding with dependencies

PHP Build Version
Package Version
Requires php Version >=8.2
symfony/framework-bundle Version ^7.4
symfony/security-bundle Version ^7.4
symfony/twig-bundle Version ^7.4
doctrine/orm Version ^3.0
doctrine/doctrine-bundle Version ^2.13
betocampoy/champs-frontend Version ^1.10
symfony/messenger Version ^7.4
symfony/console Version ^7.4
symfony/form Version ^7.4
symfony/validator Version ^7.4
symfony/translation Version ^7.4
symfony/finder Version ^7.4
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package betocampoy/champs-onboarding contains the following files

Loading the files please wait ...