Ir para o conteúdo

📘 Documentação do Plugin Obatala

📌 Visão Geral

O plugin Obatala foi desenvolvido para gerenciar funcionalidades administrativas e interfaces dentro da plataforma WordPress. Esta documentação descreve as principais classes do sistema — AdminMenu, Enqueuer e SettingsPage — explicando suas funções e interações.


📚 Conceitos Envolvidos

🧭 Gerenciamento de Menus Administrativos

A classe AdminMenu é responsável por adicionar menus e submenus personalizados ao painel administrativo do WordPress, oferecendo acesso às configurações e funcionalidades do plugin.

🎨 Enfileiramento de Scripts e Estilos

A classe Enqueuer é utilizada para carregar os arquivos JavaScript e CSS necessários ao funcionamento do plugin, tanto no painel quanto na interface pública.

⚙️ Páginas de Configuração

A classe SettingsPage permite que administradores personalizem o funcionamento do plugin, fornecendo uma interface gráfica para definição de opções via painel do WordPress.


🧩 Diagrama de Classes

classDiagram
    class AdminMenu {
        +init() void
        +add_admin_pages() void
        +render_main_page() void
        +render_page() void
        +enqueue_scripts() void
        -pages array
    }

    class Enqueuer {
        +init() void
        +enqueue_admin_scripts(hook) void
        -pages array
    }

    class SettingsPage {
        +register_settings() void
        +create_settings_page() void
        +some_setting_field_render() void
        +enable_feature_field_render() void
        +api_key_field_render() void
        -some_setting string
        -enable_feature bool
        -api_key string
    }

    AdminMenu --> SettingsPage : registra e exibe
    Enqueuer --> AdminMenu : enfileira scripts/estilos
    SettingsPage --> AdminMenu : renderiza configuração

🧠 Explicação do Diagrama

  • AdminMenu: Cria menus e páginas administrativas.

  • Enqueuer: Carrega scripts e estilos personalizados.

  • SettingsPage: Permite ao usuário configurar o plugin.

📦 Classes e Responsabilidades

🏛️ AdminMenu

Classe que registra menus e páginas do plugin.

📌 Função

Define o menu principal “Obatala” e seus submenus com acesso a diferentes funcionalidades do plugin.

🔧 Responsabilidades

  • init(): Inicializa o registro de menus e scripts.

  • add_admin_pages(): Adiciona páginas ao menu do WordPress.

  • render_main_page(): Exibe a tela principal.

  • render_page(): Carrega páginas secundárias com base no submenu.

  • enqueue_scripts(): Insere estilos e scripts necessários no painel.

🧩 Exemplo de Estrutura de Menu

private static $pages = [
    'main' => [
        'title' => 'Obatala',
        'menu_title' => 'Obatala',
        'capability' => 'manage_options',
        'slug' => 'obatala-main',
        'callback' => 'render_main_page',
        'icon' => 'dashicons-admin-site',
        'position' => 2
    ],
    'submenus' => [
        [
            'parent_slug' => 'obatala-main',
            'title' => 'Process Manager',
            'menu_title' => 'Process Manager',
            'capability' => 'manage_options',
            'slug' => 'process-manager',
            'callback' => 'render_page',
            'show_in_menu' => true
        ],
        [
            'parent_slug' => 'obatala-main',
            'title' => 'Process Viewer',
            'menu_title' => 'Process Viewer',
            'capability' => 'read',
            'slug' => 'process-viewer',
            'callback' => 'render_page',
            'show_in_menu' => true
        ],
    ]
];

🧱 Enqueuer

Classe que gerencia o carregamento de arquivos de estilo e script.

📌 Função

Evita carregamento desnecessário de recursos, otimizando desempenho e compatibilidade com o painel do WordPress.

🔧 Responsabilidades

  • init(): Registra o hook admin_enqueue_scripts.

  • enqueue_admin_scripts($hook): Valida se a página atual exige scripts do plugin e os enfileira.

🧩 Recursos Carregados

  • build/index.js: Código JavaScript principal.

  • css/style.css: Estilização personalizada.

  • css/react-flow.css: Estilos do editor de fluxo.

🧩 Lista de Páginas com Scripts

private static $pages = [
    'obatala_page_process-manager' => 'process-manager',
    'obatala_page_process-type-manager' => 'process-type-manager',
    'obatala_page_process-viewer' => 'process-viewer',
    'obatala_page_process-step-manager' => 'process-step-manager',
    'obatala_page_process-type-editor' => 'process-type-editor',
    'obatala_page_sector_manager' => 'sector_manager',
    'toplevel_page_obatala-main' => 'dashboard',
    'obatala_page_sector-details' => 'sector-details',
];

⚙️ SettingsPage

Classe que cria e renderiza campos configuráveis no painel de administração.

📌 Função

Permite ao administrador configurar opções como ativar/desativar funcionalidades ou informar chaves de API.

🔧 Responsabilidades

  • register_settings(): Registra os campos na API de opções do WP.

  • create_settings_page(): Gera a página e o formulário HTML.

  • some_setting_field_render(): Campo de texto.

  • enable_feature_field_render(): Checkbox de ativação.

  • api_key_field_render(): Campo de chave de API.

🧩 Exemplo de Registro de Campos

register_setting('obatala_settings_group', 'some_setting');
register_setting('obatala_settings_group', 'enable_feature');
register_setting('obatala_settings_group', 'api_key');

✅ Considerações Finais

  • As classes são organizadas conforme o padrão PSR-4.

  • A separação de responsabilidades garante melhor manutenção do código.

  • O uso de namespaces evita conflitos e promove clareza.

  • A documentação facilita o onboarding de novos desenvolvedores e a manutenção contínua do projeto.