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 +