adminController = $adminController; } /** * Register admin menu hooks. * * @return void */ public function registerMenus(): void { $capability = 'manage_options'; add_menu_page( __('1 Click Form Sync', '1-click-form-sync'), __('1 Click Form Sync', '1-click-form-sync'), $capability, '1-click-form-sync', [$this->adminController, 'renderDashboard'], 'dashicons-media-spreadsheet', 58 ); add_submenu_page( '1-click-form-sync', __('Dashboard', '1-click-form-sync'), __('Dashboard', '1-click-form-sync'), $capability, '1-click-form-sync', [$this->adminController, 'renderDashboard'] ); add_submenu_page( '1-click-form-sync', __('Google Connections', '1-click-form-sync'), __('Connections', '1-click-form-sync'), $capability, '1-click-form-sync-connections', [$this->adminController, 'renderConnections'] ); add_submenu_page( '1-click-form-sync', __('Settings', '1-click-form-sync'), __('Settings', '1-click-form-sync'), $capability, '1-click-form-sync-settings', [$this->adminController, 'renderSettings'] ); add_submenu_page( '1-click-form-sync', __('Submissions', '1-click-form-sync'), __('Submissions', '1-click-form-sync'), $capability, '1-click-form-sync-submissions', [$this->adminController, 'renderSubmissions'] ); add_submenu_page( '1-click-form-sync', __('Activity Log', '1-click-form-sync'), __('Activity Log', '1-click-form-sync'), $capability, '1-click-form-sync-logs', [$this->adminController, 'renderLogs'] ); add_submenu_page( '1-click-form-sync', __('Retry Queue', '1-click-form-sync'), __('Retry Queue', '1-click-form-sync'), $capability, '1-click-form-sync-queue', [$this->adminController, 'renderQueue'] ); add_submenu_page( null, __('Setup Wizard', '1-click-form-sync'), __('Setup Wizard', '1-click-form-sync'), $capability, '1-click-form-sync-wizard', [$this->adminController, 'renderWizard'] ); add_submenu_page( null, __('Integration Guide', '1-click-form-sync'), __('Integration Guide', '1-click-form-sync'), $capability, '1-click-form-sync-guide', [$this->adminController, 'renderGuide'] ); add_submenu_page( '1-click-form-sync', __('System Status', '1-click-form-sync'), __('System Status', '1-click-form-sync'), $capability, '1-click-form-sync-status', [$this->adminController, 'renderStatus'] ); // Register submenu under Forminator main admin menu if Forminator is active and enabled. $forminatorActive = class_exists('Forminator') || class_exists('Forminator_API') || function_exists('forminator'); $enabledProviders = get_option('oneclickformsync_enabled_form_providers', ['elementor', 'wpforms', 'forminator']); $forminatorEnabled = is_array($enabledProviders) && in_array('forminator', $enabledProviders, true); if ($forminatorActive && $forminatorEnabled) { $forminatorParentSlug = 'forminator'; if (isset($GLOBALS['menu']) && is_array($GLOBALS['menu'])) { foreach ($GLOBALS['menu'] as $menuItem) { if (isset($menuItem[2]) && strpos($menuItem[2], 'forminator') !== false) { $forminatorParentSlug = $menuItem[2]; break; } } } add_submenu_page( $forminatorParentSlug, __('Google Sheet', '1-click-form-sync'), __('Google Sheet', '1-click-form-sync'), $capability, '1-click-form-sync-forminator', [$this->adminController, 'renderForminatorSettings'] ); } } }