From 4089ba01e0881c89a72332e13bc3a80b6bddec2a Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 29 Jun 2026 22:15:55 +0000
Subject: [PATCH] =DashboardManager overhaul. A bit easier to modify the output of pages. Still have to get the account pages to work as expected, as well as verify the integrations and others are working - but registrar/content pages work as expected. Also fixed up the table generation in CRUD.js and CRUDSkeleton.php

---
 inc/integrations/Integrations.php |   23 ++++++++++++++++++++++-
 1 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/inc/integrations/Integrations.php b/inc/integrations/Integrations.php
index ef1a135..7666081 100644
--- a/inc/integrations/Integrations.php
+++ b/inc/integrations/Integrations.php
@@ -28,6 +28,8 @@
  */
 abstract class Integrations
 {
+	//Flag to allow for custom settings (defaults, etc) for an integration in the dashboard
+	public static bool $hasExtraOptions = false;
 	/**
 	 * Queue types
 	 * These types match with IntegrationExecutor
@@ -66,7 +68,7 @@
 	 * Used for UI rendering in admin interfaces
 	 */
 	public string $title;  // Human-readable service name (e.g., 'Google My Business')
-	public string $icon;   // Phosphoricons icon slug
+	public string $icon = '';   // Phosphoricons icon slug
 
 	/**
 	 * Credentials & State
@@ -2714,6 +2716,20 @@
 		return $this->title;
 	}
 
+	public static function title():string
+	{
+		return (new static())->getTitle();
+	}
+	public static function icon():string
+	{
+		return (new static())->getIcon();
+	}
+
+	public static function hasExtraOptions():bool
+	{
+		return (new static())::$hasExtraOptions;
+	}
+
 	/*********************************************************************
 		RENDERING
 	 *********************************************************************/
@@ -3535,4 +3551,9 @@
 	{
 		return [];
 	}
+
+	public function getIcon():string
+	{
+		return $this->icon;
+	}
 }

--
Gitblit v1.10.0