N°4693 - Restore API to add saas entries in the backoffice pages

This commit is contained in:
Anne-Cath
2025-07-30 16:41:31 +02:00
parent 4d794fe656
commit 9acc6a8bd4
5 changed files with 40 additions and 0 deletions

View File

@@ -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
*

View File

@@ -7674,6 +7674,7 @@ abstract class MetaModel
'iBackofficeReadyScriptExtension',
'iBackofficeLinkedStylesheetsExtension',
'iBackofficeStyleExtension',
'iBackofficeSaasExtension',
'iBackofficeDictEntriesExtension',
'iBackofficeDictEntriesPrefixesExtension',
'iPortalUIExtension',

View File

@@ -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));

View File

@@ -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,

View File

@@ -233,6 +233,19 @@ class ExampleFor_iBackofficeStyleExtension implements \iBackofficeStyleExtension
}
CSS;
}
}
]]></content>
</snippet>
<snippet id="ExampleFor_iBackofficeSaasExtension" _delta="define">
<placement>core</placement>
<rank>0</rank>
<content><![CDATA[
class ExampleFor_iBackofficeSaasExtension implements \iBackofficeSaasExtension
{
public function GetSaas(): string
{
return "css/setup.scss";
}
}
]]></content>
</snippet>