public bool Save_To_Config_File(string FilePath)
{
bool returnValue = true;
StreamWriter writer = null;
try
{
// Start the output file
writer = new StreamWriter(FilePath, false, Encoding.UTF8);
writer.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
writer.WriteLine("<SobekCM_Config xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ");
writer.WriteLine("\txmlns=\"http://sobekrepository.org/schemas/sobekcm_config\" ");
writer.WriteLine("\txsi:schemaLocation=\"http://sobekrepository.org/schemas/sobekcm_config ");
writer.WriteLine("\t\thttp://sobekrepository.org/schemas/sobekcm_config.xsd\">");
if ( String.IsNullOrEmpty(Name))
writer.WriteLine("\t<ContactForm>");
else
writer.WriteLine("\t<ContactForm Name=\"" + Convert_String_To_XML_Safe(Name) + "\">");
if (FormElements.Count > 0)
{
writer.WriteLine("\t\t<Elements>");
// Add the elements
foreach( ContactForm_Configuration_Element thisElement in FormElements )
{
string elementName = String.Empty;
switch( thisElement.Element_Type )
{
case ContactForm_Configuration_Element_Type_Enum.CheckBoxSet:
elementName = "CheckBoxSet";
break;
case ContactForm_Configuration_Element_Type_Enum.Email:
elementName = "Email";
break;
case ContactForm_Configuration_Element_Type_Enum.ExplanationText:
elementName = "ExplanationText";
break;
case ContactForm_Configuration_Element_Type_Enum.HiddenValue:
elementName = "HiddenValue";
break;
case ContactForm_Configuration_Element_Type_Enum.RadioSet:
elementName = "RadioSet";
break;
case ContactForm_Configuration_Element_Type_Enum.SelectBox:
elementName = "SelectBox";
break;
case ContactForm_Configuration_Element_Type_Enum.Subject:
elementName = "Subject";
break;
case ContactForm_Configuration_Element_Type_Enum.TextArea:
elementName = "TextArea";
break;
case ContactForm_Configuration_Element_Type_Enum.TextBox:
elementName = "TextBox";
break;
}
writer.Write("\t\t\t<" + elementName );
if (!String.IsNullOrEmpty(thisElement.Name))
writer.Write(" Name=\"" + thisElement.Name + "\"");
if (!String.IsNullOrEmpty(thisElement.QueryText.DefaultValue))
{
if ( thisElement.Element_Type != ContactForm_Configuration_Element_Type_Enum.ExplanationText )
writer.Write(" Query=\"" + Convert_String_To_XML_Safe(thisElement.QueryText.DefaultValue) + "\"");
else
writer.Write(" Text=\"" + Convert_String_To_XML_Safe(thisElement.QueryText.DefaultValue) + "\"");
}
if (!String.IsNullOrEmpty(thisElement.CssClass))
writer.Write(" CssClass=\"" + thisElement.CssClass + "\"");
if (thisElement.UserAttribute != User_Object_Attribute_Mapping_Enum.NONE)
{
writer.Write(" UserAttribute=\"" + User_Object_Attribute_Mapping_Enum_Converter.ToString(thisElement.UserAttribute) + "\"");
if (( thisElement.Element_Type != ContactForm_Configuration_Element_Type_Enum.ExplanationText ) && ( thisElement.Element_Type != ContactForm_Configuration_Element_Type_Enum.HiddenValue ))
writer.Write(" AlwaysShow=\"" + thisElement.AlwaysShow.ToString().ToLower() + "\"");
}
if ((thisElement.Element_Type != ContactForm_Configuration_Element_Type_Enum.ExplanationText) && (thisElement.Element_Type != ContactForm_Configuration_Element_Type_Enum.HiddenValue))
{
if ( thisElement.Required )
writer.Write(" Required=\"true\"");
}
if (((thisElement.Options == null) || (thisElement.Options.Count == 0)) && (thisElement.QueryText.Count <= 1))
{
writer.WriteLine(" />");
}
else
{
writer.WriteLine(">");
// Add the query in different languages
List<Web_Language_Translation_Value> translations = thisElement.QueryText.Values;
if (translations.Count > 0)
{
writer.WriteLine("\t\t\t\t<Translations>");
foreach (Web_Language_Translation_Value thisTranslation in translations)
{
writer.WriteLine("\t\t\t\t\t<Language Code=\"" + Web_Language_Enum_Converter.Enum_To_Code( thisTranslation.Language ) + "\">" + Convert_String_To_XML_Safe(thisTranslation.Value) + "</Language>");
}
writer.WriteLine("\t\t\t\t</Translations>");
}
// Add the possible options
if (( thisElement.Options != null ) && ( thisElement.Options.Count > 0))
{
writer.WriteLine("\t\t\t\t<Options>");
foreach (string thisOption in thisElement.Options)
{
writer.WriteLine("\t\t\t\t\t<Option>" + Convert_String_To_XML_Safe(thisOption) + "</Option>");
}
writer.WriteLine("\t\t\t\t</Options>");
}
writer.WriteLine("\t\t\t</" + elementName + ">");
}
}
writer.WriteLine("\t\t</Elements>");
}
writer.WriteLine("\t</ContactForm>");
writer.WriteLine("</SobekCM_Config>");
writer.Flush();
writer.Close();
}
catch
{
returnValue = false;
}
finally
{
if (writer != null)
writer.Close();
}
return returnValue;
}