Updated a bit. Nat, you can toss this one in cvs. -- Kevin Godby <godbyk yahoo com>
// // GNOME Dashboard // // BugzillaBugMatchRenderer.cs: Knows how to render BugzillaBug matches. // // Author: // Kevin Godby <godbyk yahoo com> // using System; using System.Collections; using System.Xml; using System.IO; namespace Dashboard { class BugzillaBugMatchRenderer : MatchRenderer { public override void Startup () { Type = "BugzillaBug"; } public override string HTMLRenderMatches (ArrayList matches) { StringWriter sw = new StringWriter (); XmlWriter xw = new XmlTextWriter (sw); xw.WriteStartElement ("div"); // Start the bugzilla results block xw.WriteElementString ("u", "Bugzilla Bugs"); // Print the title xw.WriteStartElement ("table"); // Start the results table xw.WriteAttributeString ("width", "100%"); xw.WriteAttributeString ("border", "0"); xw.WriteAttributeString ("cellpadding", "0"); xw.WriteAttributeString ("cellspacing", "0"); // We're using .WriteRaw because all html is generated // with sw inside the loop -- so we should be safe foreach (Match m in matches) HTMLRenderSingleBugzillaBug (m, xw); xw.WriteEndElement (); // End results table xw.WriteEndElement (); // End bugzilla results block xw.Close (); return sw.ToString (); } private void HTMLRenderSingleBugzillaBug (Match m, XmlWriter xw) { string Number = Convert.ToString (m ["Number"]); string Product = Convert.ToString (m ["Product"]); string Owner = Convert.ToString (m ["Owner"]); string Email = Convert.ToString (m ["Owner"]); string Summary = Convert.ToString (m ["Summary"]); string Status = Convert.ToString (m ["Status"]); string Icon = "internal:bug.png"; // Trim the sender name if (Owner.IndexOf ("@") != -1) Owner = Owner.Substring (0, (Owner.LastIndexOf ("@") - 1)); // StringWriter sw = new StringWriter (); // XmlWriter xw = new XmlTextWriter (sw); xw.WriteStartElement ("tr"); xw.WriteStartElement ("td"); xw.WriteAttributeString ("valign", "top"); xw.WriteStartElement ("img"); // Bug icon xw.WriteAttributeString ("src", Icon); xw.WriteEndElement (); // td xw.WriteStartElement ("td"); xw.WriteStartElement ("font"); // Make the font smaller to fit window width xw.WriteAttributeString ("size", "-2"); xw.WriteString ("#" + Number + ": " + Summary); xw.WriteStartElement ("br"); xw.WriteEndElement (); // br xw.WriteString (Product + " "); xw.WriteStartElement ("a"); xw.WriteAttributeString ("href", "mailto:" + Email); xw.WriteString (Owner); xw.WriteEndElement (); // a href xw.WriteRaw (" " + Status); xw.WriteEndElement (); // font xw.WriteEndElement (); // td xw.WriteEndElement (); // tr // xw.Close (); // return sw.ToString (); } } }
Attachment:
db-bugzilla.png
Description: PNG image