diff --git a/application/user.preferences.class.inc.php b/application/user.preferences.class.inc.php index ed1325d2a..dd1c8f322 100644 --- a/application/user.preferences.class.inc.php +++ b/application/user.preferences.class.inc.php @@ -249,9 +249,9 @@ class appUserPreferences extends DBObject ( "category" => "gui", "key_type" => "autoincrement", - "name_attcode" => "userid", + "name_attcode" => "login", "state_attcode" => "", - "reconc_keys" => array("userid"), + "reconc_keys" => array("userid","login"), "db_table" => "priv_app_preferences", "db_key_field" => "id", "db_finalclass_field" => "", @@ -260,8 +260,10 @@ class appUserPreferences extends DBObject MetaModel::Init_Params($aParams); MetaModel::Init_AddAttribute(new AttributeExternalKey("userid", array("targetclass"=>"User", "allowed_values"=>null, "sql"=>"userid", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array()))); MetaModel::Init_AddAttribute(new AttributePropertySet("preferences", array("allowed_values"=>null, "sql"=>"preferences", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); - MetaModel::Init_SetZListItems('list', array('preferences',)); - MetaModel::Init_SetZListItems('default_search', array('userid')); + MetaModel::Init_AddAttribute(new AttributeExternalField("org_id", array("allowed_values" => null, "extkey_attcode" => 'userid', "target_attcode" => "org_id"))); + MetaModel::Init_AddAttribute(new AttributeExternalField("login", array("allowed_values" => null, "extkey_attcode" => 'userid', "target_attcode" => "login"))); + MetaModel::Init_SetZListItems('list', array('org_id','preferences')); + MetaModel::Init_SetZListItems('default_search', array('userid','login','org_id')); } /** diff --git a/datamodels/2.x/itop-portal-base/portal/src/Brick/UserProfileBrick.php b/datamodels/2.x/itop-portal-base/portal/src/Brick/UserProfileBrick.php index f18ac65a4..0c97195e2 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Brick/UserProfileBrick.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Brick/UserProfileBrick.php @@ -63,6 +63,8 @@ class UserProfileBrick extends PortalBrick parent::RegisterTemplates($oTemplatesRegister); $oTemplatesRegister->RegisterTemplates(self::class, TemplateDefinitionDto::Create('page', static::TEMPLATES_BASE_PATH . 'user-profile/layout.html.twig'), + TemplateDefinitionDto::Create('user_info', static::TEMPLATES_BASE_PATH.'user-profile/user_info.html.twig'), + TemplateDefinitionDto::Create('user_info_ready_js', static::TEMPLATES_BASE_PATH.'user-profile/user_info.ready.js.twig'), ); } diff --git a/datamodels/2.x/itop-portal-base/portal/src/Controller/AbstractController.php b/datamodels/2.x/itop-portal-base/portal/src/Controller/AbstractController.php index d4ea7eb3f..6115b3c55 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Controller/AbstractController.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Controller/AbstractController.php @@ -45,6 +45,10 @@ abstract class AbstractController extends SymfonyAbstractController implements T $oTemplatesRegister->RegisterTemplates(self::class, TemplateDefinitionDto::Create('page', static::TEMPLATES_BASE_PATH . 'layout.html.twig'), TemplateDefinitionDto::Create('modal', static::TEMPLATES_BASE_PATH . 'modal/layout.html.twig'), + TemplateDefinitionDto::Create('loader', static::TEMPLATES_BASE_PATH.'helpers/loader.html.twig'), + TemplateDefinitionDto::Create('tagset_clic_handler_js', static::TEMPLATES_BASE_PATH.'helpers/tagset_clic_handler.js.twig'), + TemplateDefinitionDto::Create('session_message', static::TEMPLATES_BASE_PATH.'helpers/session_messages/session_message.html.twig'), + TemplateDefinitionDto::Create('session_messages', static::TEMPLATES_BASE_PATH.'helpers/session_messages/session_messages.html.twig'), ); } diff --git a/datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php b/datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php index 495dd0a11..94ac155d8 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php @@ -84,7 +84,13 @@ class ObjectController extends BrickController TemplateDefinitionDto::Create('page', static::TEMPLATES_BASE_PATH. 'bricks/object/layout.html.twig'), TemplateDefinitionDto::Create('modal', static::TEMPLATES_BASE_PATH. 'bricks/object/modal.html.twig'), TemplateDefinitionDto::Create('mode_create', static::TEMPLATES_BASE_PATH.'bricks/object/mode_create.html.twig', true, 'create'), - TemplateDefinitionDto::Create('mode_loader', static::TEMPLATES_BASE_PATH.'modal/mode_loader.html.twig', true, 'loader'), + TemplateDefinitionDto::Create('mode_edit', static::TEMPLATES_BASE_PATH.'bricks/object/mode_edit.html.twig', true, 'edit'), + TemplateDefinitionDto::Create('mode_search_hierarchy', static::TEMPLATES_BASE_PATH.'bricks/object/mode_search_hierarchy.html.twig', true, 'search_hierarchy'), + TemplateDefinitionDto::Create('mode_search_regular', static::TEMPLATES_BASE_PATH.'bricks/object/mode_search_regular.html.twig', true, 'search_regular'), + TemplateDefinitionDto::Create('mode_view', static::TEMPLATES_BASE_PATH.'bricks/object/mode_view.html.twig', true, 'view'), + TemplateDefinitionDto::Create('mode_apply_stimulus', static::TEMPLATES_BASE_PATH.'bricks/object/mode_apply_stimulus.html.twig', true, 'apply_stimulus'), + TemplateDefinitionDto::Create('mode_loader', static::TEMPLATES_BASE_PATH.'modal/mode_loader.html.twig'), + TemplateDefinitionDto::Create('plugins_buttons', static::TEMPLATES_BASE_PATH.'bricks/object/plugins_buttons.html.twig'), ); } diff --git a/datamodels/2.x/itop-portal-base/portal/src/Helper/ApplicationHelper.php b/datamodels/2.x/itop-portal-base/portal/src/Helper/ApplicationHelper.php index 64e70c98e..cbd7c6a4f 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Helper/ApplicationHelper.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Helper/ApplicationHelper.php @@ -100,9 +100,9 @@ class ApplicationHelper try { // Allowed profiles - if ($oBrick->GetAllowedProfilesOql() !== null && $oBrick->GetAllowedProfilesOql() !== '') + if (utils::IsNotNullOrEmptyString($oBrick->GetAllowedProfilesOql())) { - $oSearch = DBObjectSearch::FromOQL($oBrick->GetAllowedProfilesOql()); + $oSearch = DBObjectSearch::FromOQL_AllData($oBrick->GetAllowedProfilesOql()); $oSet = new DBObjectSet($oSearch); while ($oProfile = $oSet->Fetch()) { @@ -111,9 +111,9 @@ class ApplicationHelper } // Denied profiles - if ($oBrick->GetDeniedProfilesOql() !== null && $oBrick->GetDeniedProfilesOql() !== '') + if (utils::IsNotNullOrEmptyString($oBrick->GetDeniedProfilesOql())) { - $oSearch = DBObjectSearch::FromOQL($oBrick->GetDeniedProfilesOql()); + $oSearch = DBObjectSearch::FromOQL_AllData($oBrick->GetDeniedProfilesOql()); $oSet = new DBObjectSet($oSearch); while ($oProfile = $oSet->Fetch()) { diff --git a/datamodels/2.x/itop-portal-base/portal/src/Service/TemplatesProvider/TemplatesProviderService.php b/datamodels/2.x/itop-portal-base/portal/src/Service/TemplatesProvider/TemplatesProviderService.php index 1907ac865..b89baeac6 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Service/TemplatesProvider/TemplatesProviderService.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Service/TemplatesProvider/TemplatesProviderService.php @@ -180,6 +180,7 @@ class TemplatesProviderService * * @return string|null * @throws \ReflectionException + * @throws \Exception */ public function GetTemplatePath(string $sProviderClass, string $sTemplateId, bool $bIsInitial = false): ?string { diff --git a/datamodels/2.x/itop-portal-base/portal/templates/bricks/browse/layout.html.twig b/datamodels/2.x/itop-portal-base/portal/templates/bricks/browse/layout.html.twig index d84b38fea..bdf1e63b1 100644 --- a/datamodels/2.x/itop-portal-base/portal/templates/bricks/browse/layout.html.twig +++ b/datamodels/2.x/itop-portal-base/portal/templates/bricks/browse/layout.html.twig @@ -4,7 +4,7 @@ {% block pPageReadyScripts %} {{ parent() }} - {% include 'itop-portal-base/portal/templates/helpers/tagset_clic_handler.js.twig' %} + {% include template('tagset_clic_handler_js') %} {% endblock %} diff --git a/datamodels/2.x/itop-portal-base/portal/templates/bricks/browse/mode_mosaic.html.twig b/datamodels/2.x/itop-portal-base/portal/templates/bricks/browse/mode_mosaic.html.twig index dc367005b..fba854bbd 100644 --- a/datamodels/2.x/itop-portal-base/portal/templates/bricks/browse/mode_mosaic.html.twig +++ b/datamodels/2.x/itop-portal-base/portal/templates/bricks/browse/mode_mosaic.html.twig @@ -19,7 +19,7 @@
{% block bBrowseMosaicOverlay %}
- {% include 'itop-portal-base/portal/templates/helpers/loader.html.twig' %} + {% include template('loader') %}
{% endblock %}
diff --git a/datamodels/2.x/itop-portal-base/portal/templates/bricks/browse/mode_tree.html.twig b/datamodels/2.x/itop-portal-base/portal/templates/bricks/browse/mode_tree.html.twig index 566a4ef4f..4ef51700e 100644 --- a/datamodels/2.x/itop-portal-base/portal/templates/bricks/browse/mode_tree.html.twig +++ b/datamodels/2.x/itop-portal-base/portal/templates/bricks/browse/mode_tree.html.twig @@ -34,7 +34,7 @@
- {% include 'itop-portal-base/portal/templates/helpers/loader.html.twig' %} + {% include template('loader') %}
{% endblock %} diff --git a/datamodels/2.x/itop-portal-base/portal/templates/bricks/manage/layout.html.twig b/datamodels/2.x/itop-portal-base/portal/templates/bricks/manage/layout.html.twig index f8f9da614..b1ebbf34d 100644 --- a/datamodels/2.x/itop-portal-base/portal/templates/bricks/manage/layout.html.twig +++ b/datamodels/2.x/itop-portal-base/portal/templates/bricks/manage/layout.html.twig @@ -18,5 +18,5 @@ {% block pPageReadyScripts %} {{ parent() }} - {% include 'itop-portal-base/portal/templates/helpers/tagset_clic_handler.js.twig' %} + {% include template('tagset_clic_handler_js') %} {% endblock %} diff --git a/datamodels/2.x/itop-portal-base/portal/templates/bricks/object/mode_create.html.twig b/datamodels/2.x/itop-portal-base/portal/templates/bricks/object/mode_create.html.twig index bdad93978..6952b2ae5 100644 --- a/datamodels/2.x/itop-portal-base/portal/templates/bricks/object/mode_create.html.twig +++ b/datamodels/2.x/itop-portal-base/portal/templates/bricks/object/mode_create.html.twig @@ -30,7 +30,7 @@ {# Misc. buttons #} {% if form.buttons is defined and (form.buttons.actions is defined or form.buttons.links is defined) %}
- {% include 'itop-portal-base/portal/templates/bricks/object/plugins_buttons.html.twig' with {'aButtons': form.buttons} %} + {% include template('plugins_buttons', 'Combodo\\iTop\\Portal\\Controller\\ObjectController') with {'aButtons': form.buttons} %}
{% endif %} {# Transition buttons #} diff --git a/datamodels/2.x/itop-portal-base/portal/templates/bricks/object/mode_view.html.twig b/datamodels/2.x/itop-portal-base/portal/templates/bricks/object/mode_view.html.twig index 2001e657f..5986725b2 100644 --- a/datamodels/2.x/itop-portal-base/portal/templates/bricks/object/mode_view.html.twig +++ b/datamodels/2.x/itop-portal-base/portal/templates/bricks/object/mode_view.html.twig @@ -6,7 +6,7 @@ {# Misc. buttons #} {% if form.buttons is defined and (form.buttons.actions is defined or form.buttons.links is defined) %}
- {% include 'itop-portal-base/portal/templates/bricks/object/plugins_buttons.html.twig' with {'aButtons': form.buttons} %} + {% include template('plugins_buttons', 'Combodo\\iTop\\Portal\\Controller\\ObjectController') with {'aButtons': form.buttons} %}
{% endif %} diff --git a/datamodels/2.x/itop-portal-base/portal/templates/bricks/user-profile/layout.html.twig b/datamodels/2.x/itop-portal-base/portal/templates/bricks/user-profile/layout.html.twig index 0c1a84fdd..a4c01639d 100644 --- a/datamodels/2.x/itop-portal-base/portal/templates/bricks/user-profile/layout.html.twig +++ b/datamodels/2.x/itop-portal-base/portal/templates/bricks/user-profile/layout.html.twig @@ -55,7 +55,7 @@ {% set oContactForm = forms.contact %} {% set oPreferencesForm = forms.preferences %} {% set oPasswordForm = forms.password %} - {% include 'itop-portal-base/portal/templates/bricks/user-profile/user_info.html.twig' %} + {% include template('user_info', 'Combodo\\iTop\\Portal\\Brick\\UserProfileBrick') %} {% else %}
@@ -80,7 +80,7 @@ {% set oContactForm = forms.contact %} {% set oPreferencesForm = forms.preferences %} {% set oPasswordForm = forms.password %} - {% include 'itop-portal-base/portal/templates/bricks/user-profile/user_info.ready.js.twig' %} + {% include template('user_info_ready_js', 'Combodo\\iTop\\Portal\\Brick\\UserProfileBrick') %} {% endif %} {% endblock %} diff --git a/datamodels/2.x/itop-portal-base/portal/templates/helpers/session_messages/session_messages.html.twig b/datamodels/2.x/itop-portal-base/portal/templates/helpers/session_messages/session_messages.html.twig index 191407e4a..4b15bdbaf 100644 --- a/datamodels/2.x/itop-portal-base/portal/templates/helpers/session_messages/session_messages.html.twig +++ b/datamodels/2.x/itop-portal-base/portal/templates/helpers/session_messages/session_messages.html.twig @@ -1,5 +1,5 @@
{% for aSessionMessage in app['session_message_helper'] %} - {% include 'itop-portal-base/portal/templates/helpers/session_messages/session_message.html.twig' with {aSessionMessage: aSessionMessage} %} + {% include template('session_message') with {aSessionMessage: aSessionMessage} %} {% endfor %}
\ No newline at end of file diff --git a/datamodels/2.x/itop-portal-base/portal/templates/home/layout.html.twig b/datamodels/2.x/itop-portal-base/portal/templates/home/layout.html.twig index 76fa19b32..de35a3816 100644 --- a/datamodels/2.x/itop-portal-base/portal/templates/home/layout.html.twig +++ b/datamodels/2.x/itop-portal-base/portal/templates/home/layout.html.twig @@ -11,7 +11,7 @@
- {% include 'itop-portal-base/portal/templates/helpers/session_messages/session_messages.html.twig' %} + {% include template('session_messages') %}
diff --git a/datamodels/2.x/itop-portal-base/portal/templates/layout.html.twig b/datamodels/2.x/itop-portal-base/portal/templates/layout.html.twig index 12bae2f56..25f1c3741 100644 --- a/datamodels/2.x/itop-portal-base/portal/templates/layout.html.twig +++ b/datamodels/2.x/itop-portal-base/portal/templates/layout.html.twig @@ -335,7 +335,7 @@
- {% include 'itop-portal-base/portal/templates/helpers/session_messages/session_messages.html.twig' %} + {% include template('session_messages') %}
@@ -367,7 +367,7 @@ @@ -395,7 +395,7 @@ {% block pPageOverlay %}
- {% include 'itop-portal-base/portal/templates/helpers/loader.html.twig' %} + {% include template('loader') %}
{% endblock %} diff --git a/datamodels/2.x/itop-portal-base/portal/templates/modal/mode_loader.html.twig b/datamodels/2.x/itop-portal-base/portal/templates/modal/mode_loader.html.twig index 2061b19a5..1e7d95e67 100644 --- a/datamodels/2.x/itop-portal-base/portal/templates/modal/mode_loader.html.twig +++ b/datamodels/2.x/itop-portal-base/portal/templates/modal/mode_loader.html.twig @@ -3,7 +3,7 @@ {% extends 'itop-portal-base/portal/templates/modal/layout.html.twig' %} {% block pModalContent %} - {% include 'itop-portal-base/portal/templates/helpers/loader.html.twig' %} + {% include template('loader') %} {% if redirection is defined and redirection.url is defined %}