From 9acc6a8bd438c9c81a076499dc638272ce148cfa Mon Sep 17 00:00:00 2001 From: Anne-Cath Date: Wed, 30 Jul 2025 16:41:31 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B04693=20-=20Restore=20API=20to=20add=20sa?= =?UTF-8?q?as=20entries=20in=20the=20backoffice=20pages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/applicationextension.inc.php | 17 +++++++++++++++++ core/metamodel.class.php | 1 + sources/Application/WebPage/iTopWebPage.php | 5 +++++ .../ApplicationExtensionTest.php | 4 ++++ ...application-extension-usages-in-snippets.xml | 13 +++++++++++++ 5 files changed, 40 insertions(+) diff --git a/application/applicationextension.inc.php b/application/applicationextension.inc.php index d1aa296e4..957b359e0 100644 --- a/application/applicationextension.inc.php +++ b/application/applicationextension.inc.php @@ -1457,6 +1457,23 @@ interface iBackofficeStyleExtension public function GetStyle(): string; } +/** + * Implement this interface to add saas file (SCSS) to the backoffice pages. + * example: return "css/setup.scss" + * + * @api + * @package BackofficeUIExtensibilityAPI + * @since 3.3.0 + */ +interface iBackofficeSaasExtension +{ + /** + * @api + * @see \iTopWebPage::$a_styles + * @return string + */ + public function GetSaas(): string; +} /** * Implement this interface to add Dict entries * diff --git a/core/metamodel.class.php b/core/metamodel.class.php index df39031c3..dff836711 100644 --- a/core/metamodel.class.php +++ b/core/metamodel.class.php @@ -7674,6 +7674,7 @@ abstract class MetaModel 'iBackofficeReadyScriptExtension', 'iBackofficeLinkedStylesheetsExtension', 'iBackofficeStyleExtension', + 'iBackofficeSaasExtension', 'iBackofficeDictEntriesExtension', 'iBackofficeDictEntriesPrefixesExtension', 'iPortalUIExtension', diff --git a/sources/Application/WebPage/iTopWebPage.php b/sources/Application/WebPage/iTopWebPage.php index 66fdac763..385885b45 100644 --- a/sources/Application/WebPage/iTopWebPage.php +++ b/sources/Application/WebPage/iTopWebPage.php @@ -904,6 +904,11 @@ HTML; $this->add_style($oExtensionInstance->GetStyle()); } + /** @var \iBackofficeStyleExtension $oExtensionInstance */ + foreach (MetaModel::EnumPlugins('iBackofficeSaasExtension') as $oExtensionInstance) { + $this->add_saas($oExtensionInstance->GetSaas()); + } + // TODO 3.0.0 not displayed ? $this->GetContentLayout()->SetExtraHtmlContent(utils::FilterXSS($this->s_content)); diff --git a/tests/php-unit-tests/unitary-tests/application/applicationextension/ApplicationExtensionTest.php b/tests/php-unit-tests/unitary-tests/application/applicationextension/ApplicationExtensionTest.php index 30d2341f1..5d366ec8a 100644 --- a/tests/php-unit-tests/unitary-tests/application/applicationextension/ApplicationExtensionTest.php +++ b/tests/php-unit-tests/unitary-tests/application/applicationextension/ApplicationExtensionTest.php @@ -123,6 +123,10 @@ class ApplicationExtensionTest extends ItopCustomDatamodelTestCase \iBackofficeStyleExtension::class, static::ENUM_API_CALL_METHOD_ENUMPLUGINS, ], + \iBackofficeSaasExtension::class => [ + \iBackofficeSaasExtension::class, + static::ENUM_API_CALL_METHOD_ENUMPLUGINS, + ], \iBackofficeDictEntriesExtension::class => [ \iBackofficeDictEntriesExtension::class, static::ENUM_API_CALL_METHOD_ENUMPLUGINS, diff --git a/tests/php-unit-tests/unitary-tests/application/applicationextension/Delta/application-extension-usages-in-snippets.xml b/tests/php-unit-tests/unitary-tests/application/applicationextension/Delta/application-extension-usages-in-snippets.xml index c50abe52b..ae4768bae 100644 --- a/tests/php-unit-tests/unitary-tests/application/applicationextension/Delta/application-extension-usages-in-snippets.xml +++ b/tests/php-unit-tests/unitary-tests/application/applicationextension/Delta/application-extension-usages-in-snippets.xml @@ -233,6 +233,19 @@ class ExampleFor_iBackofficeStyleExtension implements \iBackofficeStyleExtension } CSS; } +} + ]]> + + + core + 0 +