getAvailableServices(false); foreach($integrations as $service => $integration) { // if ($integration->isSetUp() && !empty($integration->enabledContentTypes())) { if (!empty($integration->enabledContentTypes())) { add_submenu_page( 'jvb-integrations', $integration->getTitle() . ' Defaults', $integration->getTitle(), 'manage_options', 'jvb-integration-'.$service, [$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_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('form')->enqueueIconStyles(); $queue = [ 'api' => rest_url('jvb/v1/'), 'redirect' => wp_login_url(home_url(add_query_arg(null, null))), 'labels' => jvbGetLabels(), ]; 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'), // ] // ); } /** * Render the main integrations page */ public function renderPage(): void { ?>

Integrations

displayNotices(); ?>
getAvailableServices(false); foreach ($integrations as $service => $integration): $integration->renderConnection(); endforeach; ?>
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