diff --git a/core/cmdbchangeop.class.inc.php b/core/cmdbchangeop.class.inc.php index 572a580c5..6aaee08a2 100644 --- a/core/cmdbchangeop.class.inc.php +++ b/core/cmdbchangeop.class.inc.php @@ -350,21 +350,30 @@ class CMDBChangeOpSetAttributeURL extends CMDBChangeOpSetAttribute { $aParams = array ( - "category" => "core/cmdb", - "key_type" => "", - "name_attcode" => "change", - "state_attcode" => "", - "reconc_keys" => array(), - "db_table" => "priv_changeop_setatt_url", - "db_key_field" => "id", + "category" => "core/cmdb", + "key_type" => "", + "name_attcode" => "change", + "state_attcode" => "", + "reconc_keys" => array(), + "db_table" => "priv_changeop_setatt_url", + "db_key_field" => "id", "db_finalclass_field" => "", ); MetaModel::Init_Params($aParams); MetaModel::Init_InheritAttributes(); - // N°4910 Old value might not comply with the current validation pattern -> force it to anything - MetaModel::Init_AddAttribute(new AttributeURL("oldvalue", array("allowed_values"=>null, "sql"=>"oldvalue", "target" => '_blank', "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array(), "validation_pattern" => '.*'))); - MetaModel::Init_AddAttribute(new AttributeURL("newvalue", array("allowed_values"=>null, "sql"=>"newvalue", "target" => '_blank', "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array()))); - + + // N°4910 (oldvalue), N°5423 (newvalue) + // We cannot have validation here, as AttributeUrl validation is field dependant. + // The validation will be done when editing the iTop object, it isn't the history API responsibility + // + // Pattern is retrieved using this order : + // 1. try to get the pattern from the field definition (datamodel) + // 2. from the iTop config + // 3. config parameter default value + // see \AttributeURL::GetValidationPattern + MetaModel::Init_AddAttribute(new AttributeURL("oldvalue", array("allowed_values" => null, "sql" => "oldvalue", "target" => '_blank', "default_value" => null, "is_null_allowed" => true, "depends_on" => array(), "validation_pattern" => '.*'))); + MetaModel::Init_AddAttribute(new AttributeURL("newvalue", array("allowed_values" => null, "sql" => "newvalue", "target" => '_blank', "default_value" => null, "is_null_allowed" => true, "depends_on" => array(), "validation_pattern" => '.*'))); + // Display lists MetaModel::Init_SetZListItems('details', array('date', 'userinfo', 'attcode', 'oldvalue', 'newvalue')); // Attributes to be displayed for the complete details MetaModel::Init_SetZListItems('list', array('date', 'userinfo', 'attcode', 'oldvalue', 'newvalue')); // Attributes to be displayed for a list diff --git a/sources/Renderer/Console/FieldRenderer/ConsoleSelectObjectFieldRenderer.php b/sources/Renderer/Console/FieldRenderer/ConsoleSelectObjectFieldRenderer.php index 0edc88153..e7510bb0b 100644 --- a/sources/Renderer/Console/FieldRenderer/ConsoleSelectObjectFieldRenderer.php +++ b/sources/Renderer/Console/FieldRenderer/ConsoleSelectObjectFieldRenderer.php @@ -123,6 +123,20 @@ class ConsoleSelectObjectFieldRenderer extends FieldRenderer { $oOutput->AddCssFile($sFile); } + $oOutput->AddJs( + <<oField->GetGlobalId()}").off("change").on("change", function(){ + var me = this; + + $(this).closest(".field_set").trigger("field_change", { + id: $(me).attr("id"), + name: $(me).closest(".form_field").attr("data-field-id"), + value: $(me).val() + }) + .closest('.form_handler').trigger('value_change'); + }); +EOF + ); } elseif($this->oField->GetControlType() == SelectObjectField::CONTROL_RADIO_VERTICAL) { @@ -226,9 +240,8 @@ EOF JS ); } - - } + $oOutput->AddHtml((BlockRenderer::RenderBlockTemplates($oBlock))); // JS Form field widget construct $aValidators = array();