getAvailableServices() as $service) { $integration = $this->getService($service); if (!empty(Registrar::withIntegration($service)) && $integration->isSetUp() && method_exists($integration, 'getAllowedContent') && !empty($integration->getAllowedContent())) { add_submenu_page( 'jvb-integrations', $integration->getTitle() . ' Defaults', $integration->getTitle(), 'manage_options', 'jvb-integration-'.$integration->getServiceName(), [$integration, 'renderDefaults'] ); } } } /** * Enqueue admin assets */ public function enqueueAdminAssets(string $hook): void { // Check if we're on a JVB admin page if (!str_contains($hook, 'jvb')) { return; } wp_enqueue_style( 'jvb-dash', ); wp_enqueue_style( 'jvb-forms' ); wp_enqueue_script( 'jvb-admin-scripts', JVB_URL . 'assets/js/min/integrations.min.js', ['jvb-auth'], '1.0.0', true ); IconsManager::for()->enqueueIconStyles(); IconsManager::for('dash')->enqueueIconStyles(); IconsManager::for('forms')->enqueueIconStyles(); $queue = [ 'api' => rest_url('jvb/v1/'), 'redirect' => wp_login_url(home_url(add_query_arg(null, null))), 'labels' => Registrar::getLabels(), ]; wp_localize_script('jvb-auth', 'jvbSettings', $queue); // // wp_localize_script( // 'jvb-admin-scripts', // 'jvbSettings', // [ // 'api' => rest_url('jvb/v1/'), // 'currentUser' => get_current_user_id(), // 'nonce' => wp_create_nonce('wp_rest'), // ] // ); } public function renderDashPage():void { $this->renderPage(); } /** * Render the main integrations page */ public function renderPage(): void { ?>

Integrations

displayNotices(); ?>
getAvailableServices() as $service) { $integration = $this->getService($service); if (method_exists($integration, 'renderConnection')) { $integration->renderConnection(); } } ?>
renderStyles(); } ?>

' . esc_html($message) . '

'; } if (isset($_GET['error'])) { $message = sanitize_text_field($_GET['error']); echo '

' . esc_html($message) . '

'; } } /** * Render an individual integration card */ private function renderIntegrationCard(string $service, $integration): void { $is_connected = $integration->isSetUp(); $credentials = $integration->getCredentials(); $last_updated = $credentials['last_updated'] ?? 0; ?>

getTitle()); ?>

● Connected ● Disconnected
0): ?>
Last updated: getLastTestedTime(); if ($last_tested): ?>
Last tested:
renderCredentialsForm($service, $integration, $is_connected) ?>
renderConnectionSettings(); } else { echo '

This integration does not have configurable settings.

'; } ?>
Advanced Settings