N°8772 - Form dependencies manager implementation

- Form SDK implementation
- Basic Forms
- Dynamics Forms
- Basic Blocks + Data Model Block
- Form Compilation
- Turbo integration
This commit is contained in:
Benjamin Dalsass
2025-12-30 11:42:55 +01:00
committed by GitHub
parent 3955b4eb22
commit 4c1ad0f4f2
813 changed files with 115243 additions and 489 deletions

View File

@@ -849,5 +849,221 @@ Call $this->AddInitialAttributeFlags($sAttCode, $iFlags) for all the initial att
</methods>
</class>
</classes>
<property_trees _delta="define" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://www.combodo.com/itop-schema/3.3">
<property_tree id="DashletGroupBy" xsi:type="Combodo-PropertyTree">
<extends>Dashlet</extends>
<nodes>
<node id="title">
<label>UI:DashletGroupBy:Prop-Title</label>
<value-type xsi:type="Combodo-ValueType-Label"/><!-- LabelFormBlock -->
</node>
<node id="query">
<label>UI:DashletGroupBy:Prop-Query</label>
<value-type xsi:type="Combodo-ValueType-OQL">
<data-transform>
<xml-node-empty-not-allowed/> <!-- mandatory quoi ! -->
</data-transform>
</value-type>
</node>
<node id="group_by">
<label>UI:DashletGroupBy:Prop-GroupBy</label>
<value-type xsi:type="Combodo-ValueType-ClassAttributeGroupBy"> <!-- par défaut, il proposera le state attribute de la classe -->
<class>{{query.selected_class}}</class>
<data-transform>
<xml-node-empty-not-allowed/>
</data-transform>
</value-type>
</node>
<node id="style"> <!-- possible de le cacher, etc.... celui-ci nous met dedans -->
<label>UI:DashletGroupBy:Prop-Style</label>
<value-type xsi:type="Combodo-ValueType-Choice">
<data-transform>
<xml-node-empty-defaults-to>bars</xml-node-empty-defaults-to>
</data-transform>
<values>
<value id="bars">
<label>UI:DashletGroupByBars:Label</label>
</value>
<value id="pie">
<label>UI:DashletGroupByPie:Label</label>
</value>
<value id="table">
<label>UI:DashletGroupByTable:Label</label>
</value>
</values>
</value-type>
</node>
<node id="aggregation_function">
<label>UI:DashletGroupBy:Prop-Function</label>
<value-type xsi:type="Combodo-ValueType-AggregateFunction"> <!-- par défaut : count -->
<data-transform>
<xml-node-empty-not-allowed/> <!-- mandatory quoi ! -->
</data-transform>
<class>{{query.selected_class}}</class> <!-- pour savoir si il y a des attributs additionnables -->
</value-type>
</node>
<node id="aggregation_attribute">
<label>UI:DashletGroupBy:Prop-FunctionAttribute</label>
<relevance-condition>{{aggregation_function.value != 'count'}}</relevance-condition>
<value-type xsi:type="Combodo-ValueType-ClassAttribute">
<data-transform>
<xml-node-empty-not-allowed/> <!-- mandatory quoi ! -->
</data-transform>
<class>{{query.selected_class}}</class>
<category>numeric</category>
</value-type>
</node>
<node id="order_by">
<label>UI:DashletGroupBy:Prop-OrderField</label>
<value-type xsi:type="Combodo-ValueType-ChoiceFromInput">
<values>
<value id="attribute">
<label>{{aggregation_attribute.label}}</label>
</value>
<value id="function">
<label>{{aggregation_function.label}}</label>
</value>
</values>
</value-type>
</node>
<node id="limit">
<label>UI:DashletGroupBy:Prop-Limit</label>
<relevance-condition>{{order_by.value = 'function'}}</relevance-condition>
<value-type xsi:type="Combodo-ValueType-Integer"/>
</node>
<node id="order_direction">
<label>UI:DashletGroupBy:Prop-OrderDirection</label>
<value-type xsi:type="Combodo-ValueType-Choice">
<data-transform>
<xml-node-empty-not-allowed/>
</data-transform>
<values>
<value id="asc">
<label>UI:DashletGroupBy:Order:asc</label>
</value>
<value id="desc">
<label>UI:DashletGroupBy:Order:desc</label>
</value>
</values>
</value-type>
<display-default>desc</display-default>
</node>
</nodes>
</property_tree>
<property_tree id="DashletBadge" xsi:type="Combodo-PropertyTree">
<extends>Dashlet</extends>
<nodes>
<node id="class">
<label>UI:DashletBadge:Prop-Class</label>
<value-type xsi:type="Combodo-ValueType-Class">
<categories-csv>bizmodel</categories-csv>
</value-type>
</node>
</nodes>
</property_tree>
<property_tree id="DashletHeaderDynamic" xsi:type="Combodo-PropertyTree">
<extends>Dashlet</extends>
<nodes>
<node id="title">
<label>UI:DashletHeaderDynamic:Prop-Title</label>
<value-type xsi:type="Combodo-ValueType-Label">
<not-blank/>
</value-type>
</node>
<node id="icon">
<label>UI:DashletHeaderDynamic:Prop-Icon</label>
<value-type xsi:type="Combodo-ValueType-Icon">
</value-type>
</node>
<node id="subtitle">
<label>UI:DashletHeaderDynamic:Prop-Subtitle</label>
<value-type xsi:type="Combodo-ValueType-Label"/>
</node>
<node id="query">
<label>UI:DashletHeaderDynamic:Prop-Query</label>
<value-type xsi:type="Combodo-ValueType-OQL">
<data-transform>
<xml-node-empty-not-allowed/>
</data-transform>
</value-type>
</node>
<node id="group_by">
<label>UI:DashletHeaderDynamic:Prop-GroupBy</label>
<value-type xsi:type="Combodo-ValueType-ClassAttribute">
<data-transform>
<xml-node-empty-not-allowed/>
</data-transform>
<class>{{query.selected_class}}</class>
<category>enum</category>
</value-type>
</node>
<node id="values">
<label>UI:DashletHeaderDynamic:Prop-Values</label>
<value-type xsi:type="Combodo-ValueType-CollectionOfValues">
<data-transform>
<xml-format xsi:type="xml-format-csv"/>
</data-transform>
<value-type xsi:type="Combodo-ValueType-ClassAttributeValue">
<class>{{query.selected_class}}</class>
<attribute>{{group_by.value}}</attribute>
</value-type>
</value-type>
</node>
</nodes>
</property_tree>
<property_tree id="DashletHeaderStatic" xsi:type="Combodo-PropertyTree">
<extends>Dashlet</extends>
<nodes>
<node id="title">
<label>UI:DashletHeaderStatic:Prop-Title</label>
<value-type xsi:type="Combodo-ValueType-Label"/>
</node>
<node id="icon">
<label>UI:DashletHeaderStatic:Prop-Icon</label>
<value-type xsi:type="Combodo-ValueType-Icon"/>
</node>
</nodes>
</property_tree>
<property_tree id="DashletObjectList" xsi:type="Combodo-PropertyTree">
<extends>Dashlet</extends>
<nodes>
<node id="title">
<label>UI:DashletObjectList:Prop-Title</label>
<value-type xsi:type="Combodo-ValueType-Label">
</value-type>
</node>
<node id="query">
<label>UI:DashletObjectList:Prop-Query</label>
<value-type xsi:type="Combodo-ValueType-OQL"/>
</node>
<node id="menu">
<label>UI:DashletObjectList:Prop-Menu</label>
<value-type xsi:type="Combodo-ValueType-Boolean">
<on>
<!-- not so cute, but matches exactly 3.2 implementation of boolean fields -->
<label>UI:UserManagement:ActionAllowed:Yes</label>
<value>true</value>
</on>
<off>
<label>UI:UserManagement:ActionAllowed:No</label>
<value>false</value>
</off>
</value-type>
</node>
</nodes>
</property_tree>
<property_tree id="DashletPlainText" xsi:type="Combodo-PropertyTree">
<extends>Dashlet</extends>
<nodes>
<node id="text">
<label>UI:DashletPlainText:Prop-Text</label>
<constraints>
<not_blank/>
</constraints>
<value-type xsi:type="Combodo-ValueType-Text"/>
</node>
</nodes>
</property_tree>
</property_trees>
</meta>
</itop_design>

View File

@@ -1900,6 +1900,12 @@ SQL;
return $response;
}
public static function QuoteForPHP(string $sValue): string
{
$sEscaped = str_replace(['\\', "'"], ['\\\\', "\\'"], $sValue);
return "'$sEscaped'";
}
/**
* Get a standard list of character sets
*