From cc2ed544ee54cde16072947aad21bc0b37edce0f Mon Sep 17 00:00:00 2001 From: Jindrich Susen Date: Fri, 28 Jul 2023 15:49:50 +0200 Subject: [PATCH 1/2] Save button was not visible even though there was an editable field of the screen --- backend/Origam.Server/Session Stores/FormSessionStore.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/backend/Origam.Server/Session Stores/FormSessionStore.cs b/backend/Origam.Server/Session Stores/FormSessionStore.cs index 0c258f11fe..46340a8845 100644 --- a/backend/Origam.Server/Session Stores/FormSessionStore.cs +++ b/backend/Origam.Server/Session Stores/FormSessionStore.cs @@ -516,6 +516,13 @@ public override XmlDocument GetFormXml() return result; } XmlDocument formXml = OrigamEngine.ModelXmlBuilders.FormXmlBuilder.GetXml(new Guid(this.Request.ObjectId)).Document; + // The SuppressSave attribute causes the Save button to disappear. + // It should not be set to true if there is at least one editable field on the screen. The final result can be + // determined only after the whole screen xml has been created. + if (formXml.SelectNodes("//Property[@ReadOnly='false']")?.Count > 0) + { + formXml.SelectSingleNode("/Window").Attributes["SuppressSave"].Value = "false"; + } XmlNodeList list = formXml.SelectNodes("/Window"); XmlElement windowElement = list[0] as XmlElement; if (windowElement.GetAttribute("SuppressSave") == "true") From 482a98414cc05c683b04b3489ccdff3a8ed57203 Mon Sep 17 00:00:00 2001 From: Jindrich Susen Date: Mon, 31 Jul 2023 09:12:57 +0200 Subject: [PATCH 2/2] NullReferenceException avoided if SuppressSave attribute does not exist --- backend/Origam.Server/Session Stores/FormSessionStore.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/Origam.Server/Session Stores/FormSessionStore.cs b/backend/Origam.Server/Session Stores/FormSessionStore.cs index 46340a8845..38d592724e 100644 --- a/backend/Origam.Server/Session Stores/FormSessionStore.cs +++ b/backend/Origam.Server/Session Stores/FormSessionStore.cs @@ -516,15 +516,16 @@ public override XmlDocument GetFormXml() return result; } XmlDocument formXml = OrigamEngine.ModelXmlBuilders.FormXmlBuilder.GetXml(new Guid(this.Request.ObjectId)).Document; + XmlNodeList list = formXml.SelectNodes("/Window"); + XmlElement windowElement = list[0] as XmlElement; // The SuppressSave attribute causes the Save button to disappear. // It should not be set to true if there is at least one editable field on the screen. The final result can be // determined only after the whole screen xml has been created. - if (formXml.SelectNodes("//Property[@ReadOnly='false']")?.Count > 0) + if (windowElement.GetAttribute("SuppressSave") == "true" && + formXml.SelectNodes("//Property[@ReadOnly='false']")?.Count > 0) { - formXml.SelectSingleNode("/Window").Attributes["SuppressSave"].Value = "false"; + windowElement.SetAttribute("SuppressSave", "false"); } - XmlNodeList list = formXml.SelectNodes("/Window"); - XmlElement windowElement = list[0] as XmlElement; if (windowElement.GetAttribute("SuppressSave") == "true") { this.SuppressSave = true;