private DescriptionEntry GenerateDescriptionEntry(Dictionary <string, string> values) { DateTime now = DateTime.UtcNow; DescriptionTextRenderType renderType = DescriptionTextRenderType.Plaintext; string text = values[FieldNames.Incident.Description]; string xhtmlValid; string errors; // Try to convert from HTML to XHTML, if failed, just leave it as plain text if (XmlSanitizer.TryMakeXHtml(text, out xhtmlValid, out errors)) { string xhtmlSanitized; if (XmlSanitizer.SanitizeXml(xhtmlValid, false, false, out xhtmlSanitized, out errors)) { text = xhtmlSanitized; renderType = DescriptionTextRenderType.Html; } } return(new DescriptionEntry { Cause = DescriptionEntryCause.Created, Date = now, ChangedBy = values[FieldNames.Incident.CreatedBy], SubmitDate = now, SubmittedBy = values[FieldNames.Incident.CreatedBy], Text = text, RenderType = renderType }); }
public static DescriptionEntry GenerateDescriptionEntry(Dictionary <string, string> values, int maxHyperlinkLength) { DateTime now = DateTime.UtcNow; DescriptionTextRenderType renderType = DescriptionTextRenderType.Plaintext; string text = values[FieldNames.Incident.Description]; if (text.IndexOf("html", StringComparison.OrdinalIgnoreCase) >= 0) { // Try to convert from HTML to XHTML, if failed, just leave it as plain text string xhtmlValid; string errors; if (XmlSanitizer.TryMakeXHtml(text, out xhtmlValid, out errors)) { string xhtmlSanitized; if (XmlSanitizer.SanitizeXml(xhtmlValid, false, false, out xhtmlSanitized, out errors)) { text = xhtmlSanitized; renderType = DescriptionTextRenderType.Html; } } if (!string.IsNullOrEmpty(errors)) { Logger.Info("Failed to convert message body to HTML. Defaulting to plain text. Conversion message: " + errors); } else if (text.Length > DescriptionLengthMax) { // Truncate string if too long. IcM limits the number of characters in the DescriptionEntry.Text property. text = TruncateXml(text, DescriptionLengthMax, maxHyperlinkLength); } } else if (text.Length > DescriptionLengthMax) { // Truncate string if too long. IcM limits the number of characters in the DescriptionEntry.Text property. text = text.Substring(0, DescriptionLengthMax); text += TruncationMessage; } var descriptionEntry = new DescriptionEntry { Cause = DescriptionEntryCause.Created, Date = now, ChangedBy = values[FieldNames.Incident.CreatedBy], SubmitDate = now, SubmittedBy = values[FieldNames.Incident.CreatedBy], Text = text, RenderType = renderType, }; return(descriptionEntry); }