void ShowNewsletters(string ns) { Response.Write(@"<h1>Newsletters</h1>"); NewsletterManager nm = new NewsletterManager(TheFederation, TheLinkMaker); Hashtable hash = new Hashtable(); foreach (AbsoluteTopicName newsletterName in nm.GetAllNewsletterNames(ns)) { ArrayList topicsInThisNamespace = (ArrayList)hash[newsletterName.Namespace]; if (topicsInThisNamespace == null) { topicsInThisNamespace = new ArrayList(); hash[newsletterName.Namespace] = topicsInThisNamespace; } topicsInThisNamespace.Add(newsletterName); } ArrayList bases = new ArrayList(); bases.AddRange(hash.Keys); bases.Sort(); OpenTable(); foreach (string each in bases) { ContentBase cb = TheFederation.ContentBaseForNamespace(each); if (ns == null) Response.Write(@"<tr><td colspan='2'><div class='SubscriptionNamespace'>" + EscapeHTML(cb.FriendlyTitle) + "</div></td></tr>"); foreach (AbsoluteTopicName abs in (ArrayList)(hash[each])) { TopicInfo info = TheFederation.GetTopicInfo(abs.ToString()); string desc = info.GetProperty("Description"); Response.Write(@" <tr> <td><a class=""standardsButton"" href='" + RootUrl(Request) + @"rss.aspx?newsletter=" + abs.ToString() + @"'>rss</a></td> <td><a href='" + TheLinkMaker.LinkToTopic(abs) + @"'>" + abs.Name + @"</a></td> </tr> <tr> <td></td> <td><span style='font-size: x-small; color: gray'>" + (desc == null ? "" : desc) + @"</span></td> </tr> <tr>"); } } CloseTable(); }