| using System; | |
| using System.Collections; | |
| using System.Text; | |
| using Nexus.Core.Helpers; | |
| namespace Nexus.Web | |
| { | |
| public class WebHelper : ViewHelper | |
| { | |
| public override string AlertsFor(string id) | |
| { | |
| string alert = null; | |
| IList list = Alerts[id] as IList; | |
| if (list == null) return alert; | |
| if (list.Count == 1) | |
| { | |
| alert = HtmlMessage(list[0]); | |
| } | |
| else | |
| { | |
| alert = HtmlMessageList(list); | |
| } | |
| return alert; | |
| } | |
| /** | |
| * Return Fault messages in HTML format. | |
| */ | |
| private string FaultMessages() | |
| { | |
| Exception e = Fault; | |
| StringBuilder fault = new StringBuilder("["); | |
| fault.Append(e.Message); | |
| fault.Append("] "); | |
| fault.Append(e.Source); | |
| fault.Append(e.StackTrace); | |
| return HtmlMessage(fault.ToString()); | |
| } | |
| public override string AlertsText | |
| { | |
| get | |
| { | |
| if (HasFault) | |
| { | |
| string field_messages = HtmlMessageBuilder(Alerts); | |
| StringBuilder alerts = new StringBuilder(field_messages); | |
| alerts.Append(FaultMessages()); | |
| return alerts.ToString(); | |
| } | |
| else | |
| { | |
| return HtmlMessageBuilder(Alerts); | |
| } | |
| } | |
| } | |
| public override string HintsFor(string id) | |
| { | |
| return HtmlMessageList(Hints[id] as IList); | |
| } | |
| public override string HintsText | |
| { | |
| get { return HtmlMessageBuilder(Hints); } | |
| } | |
| #region Message utilities | |
| /// <summary> | |
| /// Build a message using HTML markup. | |
| /// </summary> | |
| /// <param name="message">A message</param> | |
| /// <returns>HTML markup presenting the messages.</returns> | |
| /// | |
| private string HtmlMessage(object message) | |
| { | |
| if (message==null) return null; | |
| StringBuilder sb = new StringBuilder("<p>"); | |
| sb.Append(message.ToString()); | |
| sb.Append("</p>"); | |
| return sb.ToString(); | |
| } | |
| /// <summary> | |
| /// Build a set of messages using HTML markup. | |
| /// </summary> | |
| /// <param name="messages">A list of messages</param> | |
| /// <returns>HTML markup presenting the messages.</returns> | |
| /// | |
| private string HtmlMessageList(IList messages) | |
| { | |
| StringBuilder sb = new StringBuilder("<ul>"); | |
| foreach (object o in messages) | |
| { | |
| sb.Append("<li>"); | |
| sb.Append(o.ToString()); | |
| sb.Append("</li>"); | |
| } | |
| sb.Append("</ul>"); | |
| return sb.ToString(); | |
| } | |
| /// <summary> | |
| /// Build a set error messages using HTML markup. | |
| /// </summary> | |
| /// <param name="store">A context listing errors, if any</param> | |
| /// <returns>HTML markup presenting the errors.</returns> | |
| /// | |
| private string HtmlMessageBuilder(IDictionary store) | |
| { | |
| string messageMarkup = null; | |
| if (store != null) | |
| { | |
| IList messages = new ArrayList(); | |
| ICollection keys = store.Keys; | |
| foreach (string key in keys) | |
| { | |
| IList sublist = store[key] as IList; | |
| foreach (string message in sublist) messages.Add(message); | |
| } | |
| messageMarkup = HtmlMessageList(messages); | |
| } | |
| if (messageMarkup != null) | |
| { | |
| StringBuilder sb = new StringBuilder(messageMarkup); | |
| return sb.ToString(); | |
| } | |
| return null; | |
| } | |
| #endregion | |
| } | |
| } |