public EmailBuilder WithBody(IEnumerable<KeyValuePair<string, IList>> lists) { var writer = new StringWriter(); var html = new HtmlTextWriter(writer); html.RenderBeginTag(HtmlTextWriterTag.H1); html.WriteEncodedText(_viewModel.Subject); html.RenderEndTag(); html.WriteBreak(); html.WriteBreak(); foreach (var list in lists) { html.RenderBeginTag(HtmlTextWriterTag.H3); html.WriteEncodedText(list.Key); html.RenderEndTag(); html.RenderBeginTag(HtmlTextWriterTag.Ul); foreach (var item in list.Value) { html.RenderBeginTag(HtmlTextWriterTag.Li); html.WriteEncodedText(item.ToString()); html.RenderEndTag(); } html.RenderEndTag(); html.WriteBreak(); html.WriteBreak(); } _viewModel.Body = writer.ToString(); return this; }
protected override void RenderContents(HtmlTextWriter writer) { bool beginTagWritten = false; foreach (var field in this.ContentView.Content.Fields.Values) { if (field.ValidationResult == null) continue; if (this.ContentView.NeedToValidate && !field.ReadOnly && !field.IsValid) { if (!beginTagWritten) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "sn-error-msg"); writer.RenderBeginTag(HtmlTextWriterTag.Div); beginTagWritten = true; } writer.Write(field.DisplayName); writer.Write(": "); writer.Write(ResolveValidationResult(field)); writer.WriteBreak(); } } if (beginTagWritten) writer.RenderEndTag(); if (this.ContentView.ContentException != null) RenderContentError(writer, this.ContentView.ContentException, this.Debug); }
private static void GenerateGeneralPage(string inputFilePath, string outputFilePath, Dictionary<PackageKey, FeedPackage> feedPackages) { using (var stringWriter = new StringWriter()) { using (var writer = new HtmlTextWriter(stringWriter)) { writer.RenderBeginTag(HtmlTextWriterTag.H1); { writer.WriteLine("Nuget Package Report Overview"); } writer.RenderEndTag(); writer.WriteGeneralInformation(inputFilePath, feedPackages); writer.WriteBreak(); writer.RenderBeginTag(HtmlTextWriterTag.Table); { WriteGeneralPageTableHeaders(writer, "Package Name", "Current Version", "Latest Version", "License", "Instances"); foreach (var package in feedPackages) { WriteGeneralPagePackageRows(writer, package); } } writer.RenderEndTag(); var content = writer.InnerWriter.ToString(); var path = Path.Combine(outputFilePath, GeneralPageFileName); File.WriteAllText(path, content); System.Diagnostics.Process.Start(path); } } }
// Render the data source as a one-dimensional list. protected override void RenderContents( System.Web.UI.HtmlTextWriter writer) { // Render the data list. for (int col = 0; col < dataArray.Count; col++) { writer.Write(dataArray[col]); writer.WriteBreak(); } }
internal static void RenderContentError(HtmlTextWriter writer, Exception exception, bool debug) { if (exception == null) return; writer.AddAttribute(HtmlTextWriterAttribute.Class, "sn-error-msg"); writer.RenderBeginTag(HtmlTextWriterTag.Div); var e = exception; while (e != null) { writer.Write(e.Message); writer.WriteBreak(); //only show inner messages if we are in debug mode); if (!debug) break; e = e.InnerException; } if (debug) { if (exception.Data.Keys.Count > 0) { writer.WriteBreak(); foreach (var key in exception.Data.Keys) { writer.Write(string.Format("{0}: {1}", key, exception.Data[key])); writer.WriteBreak(); } writer.WriteBreak(); } writer.Write(exception.StackTrace); writer.WriteBreak(); } writer.RenderEndTag(); }
protected override void RenderContents(HtmlTextWriter writer) { foreach (var srGroup in Items.GetRange(0, (MaxCount < Items.Count) ? MaxCount : Items.Count)) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "clearFix item"); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.AddAttribute(HtmlTextWriterAttribute.Class, String.IsNullOrEmpty(srGroup.Description) ? "widebody" : "body"); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.AddAttribute(HtmlTextWriterAttribute.Href, srGroup.URL); writer.AddAttribute(HtmlTextWriterAttribute.Class, "link bold"); writer.RenderBeginTag(HtmlTextWriterTag.A); writer.Write(HtmlUtil.SearchTextHighlight(Text, srGroup.Name.HtmlEncode())); writer.RenderEndTag(); if (!String.IsNullOrEmpty(srGroup.Description)) { writer.WriteBreak(); if (!string.IsNullOrEmpty(SpanClass)) writer.AddAttribute(HtmlTextWriterAttribute.Class, SpanClass); writer.RenderBeginTag(HtmlTextWriterTag.Span); writer.Write(CheckEmptyValue(srGroup.Description.HtmlEncode())); writer.RenderEndTag(); } writer.RenderEndTag(); if (srGroup.Date.HasValue) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "date"); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.AddAttribute(HtmlTextWriterAttribute.Style, "height:100%"); writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write(srGroup.Date.Value.ToShortDateString()); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderEndTag(); } writer.RenderEndTag(); } }
protected override void RenderContents(HtmlTextWriter writer) { if (_buttons.Count == 0) return; GuayaquilHelper.WriteBoxBorder(writer, "xtop"); writer.AddAttribute(HtmlTextWriterAttribute.Class, "xboxcontent"); writer.AddAttribute(HtmlTextWriterAttribute.Id, "guayaquil_toolbar"); writer.RenderBeginTag(HtmlTextWriterTag.Div); foreach (ToolBarButton button in _buttons) { WriteButton(writer, button); } writer.RenderEndTag(); GuayaquilHelper.WriteBoxBorder(writer, "xbottom"); writer.WriteBreak(); }
protected override void RenderContents(HtmlTextWriter writer) { var contentPath = string.Empty; var currentUrlList = GetSiteUrlList(ref contentPath); var protocol = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Scheme); #region template if (UseBrowseTemplate) { Try2AddUrlLinks(contentPath, currentUrlList, protocol); base.RenderContents(writer); return; } if (UseEditTemplate) { Try2AddUrlLinks(contentPath, currentUrlList, protocol); base.RenderContents(writer); return; } if (UseInlineEditTemplate) { Try2AddUrlLinks(contentPath, currentUrlList, protocol); base.RenderContents(writer); return; } #endregion foreach (var siteUrl in currentUrlList) { var url = string.Concat(protocol, siteUrl, contentPath); var link = new System.Web.UI.WebControls.HyperLink(); link.NavigateUrl = url; link.Text = url; link.Target = "new"; link.CssClass = this.CssClass; link.RenderControl(writer); writer.WriteBreak(); } }
/// <summary> /// Hàm xuất excel /// </summary> /// <typeparam name="T"></typeparam> /// <param name="titleExport">Tiêu đề xuất excel</param> /// <param name="nameFile">Tên file excel</param> /// <param name="infoExport">Những thông tin cần bổ sung vào file Export</param> /// <param name="columnGridViews">Cấu hình cột của gridview</param> /// <param name="rowspanTotal">Có dòng hiển thị header</param> /// <param name="list">Danh sách cần hiển thị</param> /// <param name="fromDate">Xem báo cáo từ ngày</param> /// <param name="toDate">Xem báo cáo đên ngày</param> /// <param name="exportDate">Ngày xuất báo cáo</param> /// <param name="isShowFooter">Có hiển thị Footer của GridView</param> public static string ExportExcelFile <T>(string titleExport, string nameFile, string infoExport, List <ColumnGridView> columnGridViews, int rowspanTotal, List <T> list, string fromDate, string toDate, string exportDate, bool isShowFooter = true) { System.IO.StringWriter sw = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw); var gridView = SettingGridView(columnGridViews, rowspanTotal, TypeExport.Excel, list, isShowFooter); hw.Write( "<div style='font-size: 24px; font-weight: bold;'>" + "HỆ THỐNG ZOTOP " + titleExport.ToUpper() + "</div>"); hw.Write("<div style='text-align:center;'>Giao dịch ngày:" + fromDate + "</div>"); hw.Write("<div style='text-align:center;'>Ngày xuất:" + exportDate + "</div>"); hw.Write(infoExport); hw.WriteBreak(); gridView.RenderControl(hw); string fileName = Path.Combine(HttpContext.Current.Server.MapPath("~/"), nameFile + "_" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ii") + ".xls"); File.WriteAllText(fileName, sw.ToString()); return(fileName); }
private void RenderExistingConnections(HtmlTextWriter writer) { WebPartManager manager = WebPartManager; bool headerRendered = false; bool consumersHeaderRendered = false; bool providersHeaderRendered = false; if (manager != null) { WebPart webPartToConnect = WebPartToConnect; // First, display connections for which we are providers (connections to consumers) WebPartConnectionCollection connections = manager.Connections; foreach (WebPartConnection connection in connections) { if (connection.Provider == webPartToConnect) { if (!headerRendered) { RenderInstructionTitle(writer); RenderInstructionText(writer); headerRendered = true; } if (!consumersHeaderRendered) { writer.RenderBeginTag(HtmlTextWriterTag.Fieldset); LabelStyle.AddAttributesToRender(writer, this); writer.RenderBeginTag(HtmlTextWriterTag.Legend); writer.Write(ConsumersTitle); writer.RenderEndTag(); // Legend string instructionText = ConsumersInstructionText; if (!String.IsNullOrEmpty(instructionText)) { writer.WriteBreak(); Label label = new Label(); label.Text = instructionText; label.Page = Page; label.ApplyStyle(InstructionTextStyle); label.RenderControl(writer); writer.WriteBreak(); } consumersHeaderRendered = true; } RenderExistingConsumerConnection(writer, connection); } } if (consumersHeaderRendered) { writer.RenderEndTag(); // Fieldset } // Then, display connections for which we are consumers (connections to providers) foreach (WebPartConnection connection in connections) { if (connection.Consumer == webPartToConnect) { if (!headerRendered) { RenderInstructionTitle(writer); RenderInstructionText(writer); headerRendered = true; } if (!providersHeaderRendered) { writer.RenderBeginTag(HtmlTextWriterTag.Fieldset); LabelStyle.AddAttributesToRender(writer, this); writer.RenderBeginTag(HtmlTextWriterTag.Legend); writer.Write(ProvidersTitle); writer.RenderEndTag(); // Legend string instructionText = ProvidersInstructionText; if (!String.IsNullOrEmpty(instructionText)) { writer.WriteBreak(); Label label = new Label(); label.Text = instructionText; label.Page = Page; label.ApplyStyle(InstructionTextStyle); label.RenderControl(writer); writer.WriteBreak(); } providersHeaderRendered = true; } RenderExistingProviderConnection(writer, connection); } } } if (providersHeaderRendered) { writer.RenderEndTag(); // Fieldset } if (headerRendered) { writer.WriteBreak(); } else { RenderNoExistingConnection(writer); } }
private void RenderConnectToProvidersDropDowns(HtmlTextWriter writer) { WebPart webPartToConnect = WebPartToConnect; if (webPartToConnect != null) { ConsumerConnectionPointCollection consumers = WebPartManager.GetEnabledConsumerConnectionPoints(webPartToConnect); bool first = true; Label label = new Label(); label.Page = Page; label.AssociatedControlInControlTree = false; foreach (ConsumerConnectionPoint consumer in consumers) { DropDownList list = (DropDownList)_connectDropDownLists[consumer]; if ((list == null) || !list.Enabled) { continue; } if (first) { string connectToProviderTitle = ConnectToProviderTitle; if (!String.IsNullOrEmpty(connectToProviderTitle)) { label.Text = connectToProviderTitle; label.ApplyStyle(LabelStyle); label.AssociatedControlID = String.Empty; label.RenderControl(writer); writer.WriteBreak(); } string connectToProviderInstructionText = ConnectToProviderInstructionText; if (!String.IsNullOrEmpty(connectToProviderInstructionText)) { writer.WriteBreak(); label.Text = connectToProviderInstructionText; label.ApplyStyle(InstructionTextStyle); label.AssociatedControlID = String.Empty; label.RenderControl(writer); writer.WriteBreak(); } first = false; } writer.RenderBeginTag(HtmlTextWriterTag.Fieldset); writer.AddAttribute(HtmlTextWriterAttribute.Border, "0"); writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); label.ApplyStyle(LabelStyle); label.Text = GetText; label.AssociatedControlID = String.Empty; label.RenderControl(writer); writer.RenderEndTag(); // TD LabelStyle.AddAttributesToRender(writer, this); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.WriteEncodedText(consumer.DisplayName); writer.RenderEndTag(); // TD writer.RenderEndTag(); // TR writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); label.Text = GetFromText; label.AssociatedControlID = list.ClientID; label.RenderControl(writer); writer.RenderEndTag(); // TD writer.RenderBeginTag(HtmlTextWriterTag.Td); list.ApplyStyle(EditUIStyle); list.RenderControl(writer); writer.RenderEndTag(); // TD writer.RenderEndTag(); // TR writer.RenderEndTag(); // TABLE WebPartVerb connectVerb = ConnectVerb; connectVerb.EventArgument = String.Join(ID_SEPARATOR.ToString(CultureInfo.InvariantCulture), new string[] { connectEventArgument, consumerEventArgument, consumer.ID }); RenderVerb(writer, connectVerb); writer.RenderEndTag(); // FIELDSET } writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign, "right"); writer.RenderBeginTag(HtmlTextWriterTag.Div); WebPartVerb cancelVerb = CancelVerb; cancelVerb.EventArgument = cancelEventArgument; RenderVerb(writer, cancelVerb); writer.RenderEndTag(); } }
private void RenderAddVerbs(HtmlTextWriter writer) { WebPart webPartToConnect = WebPartToConnect; WebPartCollection webParts = null; if (WebPartManager != null) { webParts = WebPartManager.WebParts; } if (webPartToConnect != null || DesignMode) { // Are there any compatible consumers? bool consumersAvailable = DesignMode; if (!consumersAvailable && WebPartManager != null) { ProviderConnectionPointCollection providers = WebPartManager.GetEnabledProviderConnectionPoints(webPartToConnect); foreach (ProviderConnectionPoint provider in providers) { if (GetValidConsumers(webPartToConnect, provider, webParts).Count != 0) { consumersAvailable = true; break; } } } if (consumersAvailable) { ZoneLinkButton connectConsumerButton = new ZoneLinkButton(this, connectConsumerEventArgument); connectConsumerButton.Text = ConnectToConsumerText; connectConsumerButton.ApplyStyle(VerbStyle); connectConsumerButton.Page = Page; connectConsumerButton.RenderControl(writer); writer.WriteBreak(); } // Are there any compatible providers? bool providersAvailable = DesignMode; if (!providersAvailable && WebPartManager != null) { ConsumerConnectionPointCollection consumers = WebPartManager.GetEnabledConsumerConnectionPoints(webPartToConnect); foreach (ConsumerConnectionPoint consumer in consumers) { if (GetValidProviders(webPartToConnect, consumer, webParts).Count != 0) { providersAvailable = true; break; } } } if (providersAvailable) { ZoneLinkButton connectProviderButton = new ZoneLinkButton(this, connectProviderEventArgument); connectProviderButton.Text = ConnectToProviderText; connectProviderButton.ApplyStyle(VerbStyle); connectProviderButton.Page = Page; connectProviderButton.RenderControl(writer); writer.WriteBreak(); } // Add separator if anything was rendered if (providersAvailable || consumersAvailable) { writer.RenderBeginTag(HtmlTextWriterTag.Hr); writer.RenderEndTag(); } } }
protected override void RenderContents(HtmlTextWriter output) { if (!string.IsNullOrEmpty(_timePickerXml.Label.Text)) { Label lbl = new Label(); lbl.ID = string.Format("lbl{0}", _timePickerXml.Name); lbl.Text = _timePickerXml.Label.Text; if (!string.IsNullOrEmpty(_timePickerXml.Label.Css)) lbl.CssClass = _timePickerXml.Label.Css; if (!string.IsNullOrEmpty(_timePickerXml.Label.Style)) { string[] styles = _timePickerXml.Label.Style.Split(';'); foreach (string style in styles) { string[] attributes = style.Split(':'); if (attributes.Length == 2) lbl.Style.Add(attributes[0], attributes[1]); } } lbl.RenderControl(output); } if (!string.IsNullOrEmpty(_timePickerXml.Css)) { this._textBox.CssClass = _timePickerXml.Css; } if (!string.IsNullOrEmpty(_timePickerXml.Style)) { string[] styles = _timePickerXml.Style.Split(';'); foreach (string style in styles) { string[] attributes = style.Split(':'); if (attributes.Length == 2) this._textBox.Style.Add(attributes[0], attributes[1]); } } base.RenderContents(output); output.WriteBreak(); }
protected override void Render(HtmlTextWriter writer) { if (this._searchBarLabel != null) { _searchBarLabel.RenderControl(writer); } foreach (Button b in this.ButtonList) { b.RenderControl(writer); } writer.WriteBreak(); this._searchText.RenderControl(writer); this._searchButton.RenderControl(writer); }
private void RenderNoExistingConnection(HtmlTextWriter writer) { string noExistingConnectionTitle = this.NoExistingConnectionTitle; if (!string.IsNullOrEmpty(noExistingConnectionTitle)) { Label label = new Label { Text = noExistingConnectionTitle, Page = this.Page }; label.ApplyStyle(base.LabelStyle); label.RenderControl(writer); writer.WriteBreak(); writer.WriteBreak(); } string noExistingConnectionInstructionText = this.NoExistingConnectionInstructionText; if (!string.IsNullOrEmpty(noExistingConnectionInstructionText)) { Label label2 = new Label { Text = noExistingConnectionInstructionText, Page = this.Page }; label2.ApplyStyle(base.InstructionTextStyle); label2.RenderControl(writer); writer.WriteBreak(); writer.WriteBreak(); } }
private void RenderInstructionTitle(HtmlTextWriter writer) { if (this.PartChromeType == PartChromeType.None || this.PartChromeType == PartChromeType.BorderOnly) return; string instructionTitle = InstructionTitle; if (!String.IsNullOrEmpty(instructionTitle)) { Label label = new Label(); if (WebPartToConnect != null) { label.Text = String.Format(CultureInfo.CurrentCulture, instructionTitle, WebPartToConnect.DisplayTitle); } else { label.Text = instructionTitle; } label.Page = Page; label.ApplyStyle(LabelStyle); label.RenderControl(writer); writer.WriteBreak(); } }
public static void DumpParsers(GameDataManager gameDataManager, Type parserType, string outputFilename) { List <BaseParser> parsedToDump = gameDataManager.ParsedData.Where(x => x.GetType() == parserType).ToList(); PropertyInfo[] properties = parserType.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy) .Where(x => !x.GetGetMethod().IsVirtual&& (x.GetAttribute <BrowsableAttribute>() == null || x.GetAttribute <BrowsableAttribute>().Browsable == true) && x.DeclaringType != typeof(BaseParser)) .OrderBy(x => x.GetAttribute <Yggdrasil.Attributes.PrioritizedCategory>().Category) .ToArray(); TextWriter writer = File.CreateText(outputFilename); using (WebUI.HtmlTextWriter html = new WebUI.HtmlTextWriter(writer)) { html.WriteLine("<!DOCTYPE html>"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Html); { WriteHeader(html, string.Format("{0} Data Dump for {1}", System.Windows.Forms.Application.ProductName, parserType.GetAttribute <Yggdrasil.Attributes.ParserDescriptor>().Description)); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Body); { html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "container"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Div); { html.WriteEncodedText(string.Format("Data dump created by {0} {1}; dumping {2} entries of type '{3}'...", System.Windows.Forms.Application.ProductName, VersionManagement.CreateVersionString(System.Windows.Forms.Application.ProductVersion), parsedToDump.Count, parserType.GetAttribute <Yggdrasil.Attributes.ParserDescriptor>().Description)); html.WriteBreak(); html.WriteBreak(); } html.RenderEndTag(); foreach (BaseParser parser in parsedToDump) { string parserId = string.Format("table-{0:D4}", parser.EntryNumber); html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "container"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Div); { html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "header"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Div); { html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "header-text"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Span); { html.WriteEncodedText(string.Format("Entry {0:D4}: {1}", parser.EntryNumber, parser.EntryDescription)); } html.RenderEndTag(); html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "header-toggle"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Span); { html.AddAttribute(WebUI.HtmlTextWriterAttribute.Href, string.Format("javascript:toggle('{0}');", parserId), false); html.RenderBeginTag(WebUI.HtmlTextWriterTag.A); { html.Write("+/-"); } html.RenderEndTag(); } html.RenderEndTag(); } html.RenderEndTag(); html.AddAttribute(WebUI.HtmlTextWriterAttribute.Id, parserId); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Table); { string lastCategory = string.Empty; foreach (PropertyInfo property in properties) { string propCategory = ((string)property.GetAttribute <Yggdrasil.Attributes.PrioritizedCategory>().Category).Replace("\t", ""); if (propCategory != lastCategory) { lastCategory = propCategory; html.RenderBeginTag(WebUI.HtmlTextWriterTag.Tr); { html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "header"); html.AddAttribute(WebUI.HtmlTextWriterAttribute.Colspan, "2"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Td); { html.Write(propCategory); } html.RenderEndTag(); } html.RenderEndTag(); } html.RenderBeginTag(WebUI.HtmlTextWriterTag.Tr); { html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "desc-column"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Td); { DisplayNameAttribute displayName = property.GetAttribute <DisplayNameAttribute>(); DescriptionAttribute description = property.GetAttribute <DescriptionAttribute>(); html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "tooltip"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Span); { html.WriteEncodedText(displayName.DisplayName); if (description != null) { html.RenderBeginTag(WebUI.HtmlTextWriterTag.Span); { html.WriteEncodedText(description.Description); } html.RenderEndTag(); } } html.RenderEndTag(); } html.RenderEndTag(); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Td); { object v = property.GetValue(parser, null); TypeConverterAttribute ca = (TypeConverterAttribute)property.GetCustomAttributes(typeof(TypeConverterAttribute), false).FirstOrDefault(); TypeConverter c = new TypeConverter(); if (ca != null) { Type ct = Type.GetType(ca.ConverterTypeName); if (ct == typeof(EnumConverter)) { c = (TypeConverter)Activator.CreateInstance(ct, new object[] { property.PropertyType }); } else { c = (TypeConverter)Activator.CreateInstance(ct); } } var tmp = c.ConvertTo(v, typeof(string)); html.WriteEncodedText(tmp as string); } html.RenderEndTag(); } html.RenderEndTag(); } } html.RenderEndTag(); } html.RenderEndTag(); } } html.RenderEndTag(); } html.RenderEndTag(); } writer.Close(); }
/// <summary> /// Render the WebWindow Close button /// </summary> private void RenderCloseButton(HtmlTextWriter writer) { if (_showCloseButton) { String eventRef = Page.ClientScript.GetPostBackEventReference(this, String.Empty); writer.AddAttribute(HtmlTextWriterAttribute.Onclick, eventRef); writer.AddAttribute(HtmlTextWriterAttribute.Class, "webWindowClose"); writer.RenderBeginTag(HtmlTextWriterTag.Span); writer.Write("X"); writer.RenderEndTag(); } else { writer.WriteBreak(); } }
private void RenderTransformerConfigurationHeader(HtmlTextWriter writer) { Debug.Assert(_pendingTransformer != null); if (EnsurePendingData()) { Debug.Assert(_pendingConsumer != null && _pendingProvider != null && _pendingConsumerConnectionPoint != null && _pendingProviderConnectionPoint != null); string connectionPointName = null; string partTitle = null; bool isConsumer = (_pendingConsumer == WebPartToConnect); if (_pendingConnectionType == ConnectionType.Consumer && isConsumer) { // This happens if we are in a consumer, connecting or reconnecting a provider partTitle = _pendingProvider.DisplayTitle; connectionPointName = _pendingConsumerConnectionPoint.DisplayName; } else { // This happens if we are reconnecting a consumer from a provider partTitle = _pendingConsumer.DisplayTitle; connectionPointName = _pendingProviderConnectionPoint.DisplayName; } Label label = new Label(); label.Page = Page; label.ApplyStyle(LabelStyle); label.Text = (isConsumer ? ConnectToProviderTitle : ConnectToConsumerTitle); label.RenderControl(writer); writer.WriteBreak(); writer.WriteBreak(); label.ApplyStyle(InstructionTextStyle); label.Text = (isConsumer ? ConnectToProviderInstructionText : ConnectToConsumerInstructionText); label.RenderControl(writer); writer.WriteBreak(); writer.WriteBreak(); writer.AddAttribute(HtmlTextWriterAttribute.Border, "0"); writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); label.ApplyStyle(LabelStyle); label.Text = (isConsumer ? GetText : SendText); label.RenderControl(writer); writer.RenderEndTag(); // TD LabelStyle.AddAttributesToRender(writer, this); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.WriteEncodedText(connectionPointName); writer.RenderEndTag(); // TD writer.RenderEndTag(); // TR writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); label.Text = (isConsumer ? GetFromText : SendToText); label.RenderControl(writer); writer.RenderEndTag(); // TD LabelStyle.AddAttributesToRender(writer, this); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.WriteEncodedText(partTitle); writer.RenderEndTag(); // TD writer.RenderEndTag(); // TR writer.RenderEndTag(); // TABLE writer.WriteBreak(); writer.RenderBeginTag(HtmlTextWriterTag.Hr); writer.RenderEndTag(); // HR writer.WriteBreak(); label.ApplyStyle(LabelStyle); label.Text = ConfigureConnectionTitle; label.RenderControl(writer); writer.WriteBreak(); writer.WriteBreak(); } }
public static void DumpMessages(GameDataManager gameDataManager, List <TableFile> tableFiles, string outputFilename) { string strippedName = Path.GetFileNameWithoutExtension(tableFiles.FirstOrDefault().Filename); if (gameDataManager.Version == GameDataManager.Versions.European) { foreach (KeyValuePair <GameDataManager.Languages, string> pair in gameDataManager.LanguageSuffixes) { strippedName = strippedName.Replace(pair.Value, ""); } } int numTables = (int)tableFiles.FirstOrDefault().NumTables; if (!tableFiles.All(x => x.NumTables == numTables)) { throw new Exception("Num tables mismatch!"); } TextWriter writer = File.CreateText(outputFilename); using (WebUI.HtmlTextWriter html = new WebUI.HtmlTextWriter(writer)) { html.WriteLine("<!DOCTYPE html>"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Html); { WriteHeader(html, string.Format("{0} Message Dump for {1}", System.Windows.Forms.Application.ProductName, strippedName)); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Body); { html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "container"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Div); { html.WriteEncodedText(string.Format("Message dump created by {0} {1}; dumping {2}, {3} tables...", System.Windows.Forms.Application.ProductName, VersionManagement.CreateVersionString(System.Windows.Forms.Application.ProductVersion), (tableFiles.FirstOrDefault().FileNumber != -1 ? string.Format("{0}, file #{1}", strippedName, tableFiles.FirstOrDefault().FileNumber) : strippedName), numTables)); html.WriteBreak(); html.WriteBreak(); } html.RenderEndTag(); for (int i = 0; i < numTables; i++) { string tableId = string.Format("table-{0:D4}", i); html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "header"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Div); { html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "header-text"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Span); { html.Write("Table {0}", i + 1); } html.RenderEndTag(); html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "header-toggle"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Span); { html.AddAttribute(WebUI.HtmlTextWriterAttribute.Href, string.Format("javascript:toggle('{0}');", tableId), false); html.RenderBeginTag(WebUI.HtmlTextWriterTag.A); { html.Write("+/-"); } html.RenderEndTag(); } html.RenderEndTag(); } html.RenderEndTag(); html.AddAttribute(WebUI.HtmlTextWriterAttribute.Id, tableId); html.AddStyleAttribute(WebUI.HtmlTextWriterStyle.Display, "table"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Table); { html.RenderBeginTag(WebUI.HtmlTextWriterTag.Tr); { html.RenderBeginTag(WebUI.HtmlTextWriterTag.Th); { html.Write("ID"); } html.RenderEndTag(); foreach (TableFile file in tableFiles) { html.RenderBeginTag(WebUI.HtmlTextWriterTag.Th); { string language = Path.GetFileNameWithoutExtension(file.Filename); language = gameDataManager.LanguageSuffixes.FirstOrDefault(x => x.Value == language.Substring(language.LastIndexOf('_'), 3)).Key.ToString(); html.Write(language); } html.RenderEndTag(); } } html.RenderEndTag(); int numMessages = (int)(tableFiles.FirstOrDefault().Tables[i] as MessageTable).NumMessages; for (int j = 0; j < numMessages; j++) { if ((tableFiles.FirstOrDefault().Tables[i] as MessageTable).Messages[j].RawData.Length == 0) { continue; } html.RenderBeginTag(WebUI.HtmlTextWriterTag.Tr); { html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "desc-column-mesg"); html.RenderBeginTag(WebUI.HtmlTextWriterTag.Th); { html.Write("#{0}", j); } html.RenderEndTag(); for (int k = 0; k < tableFiles.Count; k++) { html.RenderBeginTag(WebUI.HtmlTextWriterTag.Td); { string message = (tableFiles[k].Tables[i] as MessageTable).Messages[j].ConvertedString; message = message.Replace("<!pg>", ""); message = message.Replace(" ", " "); message = message.Replace("<", "<"); message = message.Replace(">", ">"); message = message.Replace(Environment.NewLine, "<br />"); html.Write(message); } html.RenderEndTag(); } } html.RenderEndTag(); } } html.RenderEndTag(); html.WriteBreak(); } } html.RenderEndTag(); } html.RenderEndTag(); } writer.Close(); }
private void RenderConnectToProvidersDropDowns(HtmlTextWriter writer) { WebPart webPartToConnect = this.WebPartToConnect; if (webPartToConnect != null) { ConsumerConnectionPointCollection enabledConsumerConnectionPoints = base.WebPartManager.GetEnabledConsumerConnectionPoints(webPartToConnect); bool flag = true; Label label = new Label { Page = this.Page, AssociatedControlInControlTree = false }; foreach (ConsumerConnectionPoint point in enabledConsumerConnectionPoints) { DropDownList list = (DropDownList) this._connectDropDownLists[point]; if ((list != null) && list.Enabled) { if (flag) { string connectToProviderTitle = this.ConnectToProviderTitle; if (!string.IsNullOrEmpty(connectToProviderTitle)) { label.Text = connectToProviderTitle; label.ApplyStyle(base.LabelStyle); label.AssociatedControlID = string.Empty; label.RenderControl(writer); writer.WriteBreak(); } string connectToProviderInstructionText = this.ConnectToProviderInstructionText; if (!string.IsNullOrEmpty(connectToProviderInstructionText)) { writer.WriteBreak(); label.Text = connectToProviderInstructionText; label.ApplyStyle(base.InstructionTextStyle); label.AssociatedControlID = string.Empty; label.RenderControl(writer); writer.WriteBreak(); } flag = false; } writer.RenderBeginTag(HtmlTextWriterTag.Fieldset); writer.AddAttribute(HtmlTextWriterAttribute.Border, "0"); writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); label.ApplyStyle(base.LabelStyle); label.Text = this.GetText; label.AssociatedControlID = string.Empty; label.RenderControl(writer); writer.RenderEndTag(); base.LabelStyle.AddAttributesToRender(writer, this); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.WriteEncodedText(point.DisplayName); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); label.Text = this.GetFromText; label.AssociatedControlID = list.ClientID; label.RenderControl(writer); writer.RenderEndTag(); writer.RenderBeginTag(HtmlTextWriterTag.Td); list.ApplyStyle(base.EditUIStyle); list.RenderControl(writer); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderEndTag(); WebPartVerb connectVerb = this.ConnectVerb; connectVerb.EventArgument = string.Join('$'.ToString(CultureInfo.InvariantCulture), new string[] { "connect", "consumer", point.ID }); this.RenderVerb(writer, connectVerb); writer.RenderEndTag(); } } writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign, "right"); writer.RenderBeginTag(HtmlTextWriterTag.Div); WebPartVerb cancelVerb = this.CancelVerb; cancelVerb.EventArgument = "cancel"; this.RenderVerb(writer, cancelVerb); writer.RenderEndTag(); } }
private void RenderAddVerbs(HtmlTextWriter writer) { WebPart webPartToConnect = this.WebPartToConnect; WebPartCollection webParts = null; if (base.WebPartManager != null) { webParts = base.WebPartManager.WebParts; } if ((webPartToConnect != null) || base.DesignMode) { bool designMode = base.DesignMode; if (!designMode && (base.WebPartManager != null)) { foreach (ProviderConnectionPoint point in base.WebPartManager.GetEnabledProviderConnectionPoints(webPartToConnect)) { if (this.GetValidConsumers(webPartToConnect, point, webParts).Count != 0) { designMode = true; break; } } } if (designMode) { ZoneLinkButton button = new ZoneLinkButton(this, "connectconsumer") { Text = this.ConnectToConsumerText }; button.ApplyStyle(base.VerbStyle); button.Page = this.Page; button.RenderControl(writer); writer.WriteBreak(); } bool flag2 = base.DesignMode; if (!flag2 && (base.WebPartManager != null)) { foreach (ConsumerConnectionPoint point2 in base.WebPartManager.GetEnabledConsumerConnectionPoints(webPartToConnect)) { if (this.GetValidProviders(webPartToConnect, point2, webParts).Count != 0) { flag2 = true; break; } } } if (flag2) { ZoneLinkButton button2 = new ZoneLinkButton(this, "connectprovider") { Text = this.ConnectToProviderText }; button2.ApplyStyle(base.VerbStyle); button2.Page = this.Page; button2.RenderControl(writer); writer.WriteBreak(); } if (flag2 || designMode) { writer.RenderBeginTag(HtmlTextWriterTag.Hr); writer.RenderEndTag(); } } }
private void RenderTransformerConfigurationHeader(HtmlTextWriter writer) { if (this.EnsurePendingData()) { string text = null; string displayTitle = null; bool flag = this._pendingConsumer == this.WebPartToConnect; if ((this._pendingConnectionType == ConnectionType.Consumer) && flag) { displayTitle = this._pendingProvider.DisplayTitle; text = this._pendingConsumerConnectionPoint.DisplayName; } else { displayTitle = this._pendingConsumer.DisplayTitle; text = this._pendingProviderConnectionPoint.DisplayName; } Label label = new Label { Page = this.Page }; label.ApplyStyle(base.LabelStyle); label.Text = flag ? this.ConnectToProviderTitle : this.ConnectToConsumerTitle; label.RenderControl(writer); writer.WriteBreak(); writer.WriteBreak(); label.ApplyStyle(base.InstructionTextStyle); label.Text = flag ? this.ConnectToProviderInstructionText : this.ConnectToConsumerInstructionText; label.RenderControl(writer); writer.WriteBreak(); writer.WriteBreak(); writer.AddAttribute(HtmlTextWriterAttribute.Border, "0"); writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); label.ApplyStyle(base.LabelStyle); label.Text = flag ? this.GetText : this.SendText; label.RenderControl(writer); writer.RenderEndTag(); base.LabelStyle.AddAttributesToRender(writer, this); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.WriteEncodedText(text); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); label.Text = flag ? this.GetFromText : this.SendToText; label.RenderControl(writer); writer.RenderEndTag(); base.LabelStyle.AddAttributesToRender(writer, this); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.WriteEncodedText(displayTitle); writer.RenderEndTag(); writer.RenderEndTag(); writer.RenderEndTag(); writer.WriteBreak(); writer.RenderBeginTag(HtmlTextWriterTag.Hr); writer.RenderEndTag(); writer.WriteBreak(); label.ApplyStyle(base.LabelStyle); label.Text = this.ConfigureConnectionTitle; label.RenderControl(writer); writer.WriteBreak(); writer.WriteBreak(); } }
private void RenderExistingConnection(HtmlTextWriter writer, string connectionPointName, string partTitle, string disconnectEventArg, string editEventArg, bool consumer, bool isActive) { Label label = new Label(); label.Page = Page; label.ApplyStyle(LabelStyle); writer.RenderBeginTag(HtmlTextWriterTag.Fieldset); writer.AddAttribute(HtmlTextWriterAttribute.Border, "0"); writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); label.Text = (consumer ? SendText : GetText); label.RenderControl(writer); writer.RenderEndTag(); // TD LabelStyle.AddAttributesToRender(writer, this); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.WriteEncodedText(connectionPointName); writer.RenderEndTag(); // TD writer.RenderEndTag(); // TR writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); label.Text = (consumer ? SendToText : GetFromText); label.RenderControl(writer); writer.RenderEndTag(); // TD LabelStyle.AddAttributesToRender(writer, this); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.WriteEncodedText(partTitle); writer.RenderEndTag(); // TD writer.RenderEndTag(); // TR writer.RenderEndTag(); // TABLE WebPartVerb disconnectVerb = DisconnectVerb; disconnectVerb.EventArgument = disconnectEventArg; RenderVerb(writer, disconnectVerb); if (VerbButtonType == ButtonType.Link) { writer.Write(" "); } if (isActive) { WebPartVerb configureVerb = ConfigureVerb; if (editEventArg == null) { configureVerb.Enabled = false; } else { configureVerb.Enabled = true; configureVerb.EventArgument = editEventArg; } RenderVerb(writer, configureVerb); } else { writer.WriteBreak(); label.ApplyStyle(ErrorStyle); label.Text = ExistingConnectionErrorMessage; label.RenderControl(writer); } writer.RenderEndTag(); // FIELDSET }
private void RenderInstructionText(HtmlTextWriter writer) { string instructionText = InstructionText; if (!String.IsNullOrEmpty(instructionText)) { Label label = new Label(); label.Text = instructionText; label.Page = Page; label.ApplyStyle(InstructionTextStyle); label.RenderControl(writer); writer.WriteBreak(); writer.WriteBreak(); } }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { using (System.IO.StringWriter sw = new System.IO.StringWriter()) { using (HtmlTextWriter htw = new HtmlTextWriter(sw)) { htw.RenderBeginTag(HtmlTextWriterTag.H2); htw.Write("We regret to report that something went wrong processing your request."); htw.WriteBreak(); htw.Write("Please feel free to try what you were doing again in a few minutes."); htw.RenderEndTag(); htw.WriteBreak(); htw.RenderBeginTag(HtmlTextWriterTag.H3); MembershipUser mu = Membership.GetUser(); if (mu != null) if (mu.IsOnline) htw.Write("Click here to log back in and try again."); else htw.Write("Click here to try logging in again."); else htw.Write("Click here to continue to the sign-in page."); htw.RenderEndTag(); htw.AddAttribute(HtmlTextWriterAttribute.Href, ResolveUrl("~/Sign_in.aspx")); htw.AddAttribute(HtmlTextWriterAttribute.Class, "submitlink"); htw.RenderBeginTag(HtmlTextWriterTag.A); htw.Write("Continue"); htw.RenderEndTag(); if (Roles.IsUserInRole("DebugUser")) { htw.WriteBreak(); htw.WriteBreak(); htw.RenderBeginTag(HtmlTextWriterTag.Table); htw.RenderBeginTag(HtmlTextWriterTag.Tr); htw.AddAttribute(HtmlTextWriterAttribute.Width, "110px"); htw.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "Bold"); htw.RenderBeginTag(HtmlTextWriterTag.Td); htw.Write("From Page:"); htw.RenderEndTag(); //TD htw.RenderBeginTag(HtmlTextWriterTag.Td); htw.Write(Request.UrlReferrer.PathAndQuery); htw.RenderEndTag(); //TD htw.RenderEndTag(); //TR htw.RenderBeginTag(HtmlTextWriterTag.Tr); htw.AddAttribute(HtmlTextWriterAttribute.Width, "110px"); htw.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "Bold"); htw.RenderBeginTag(HtmlTextWriterTag.Td); htw.Write("Error Message:"); htw.RenderEndTag(); //TD htw.RenderBeginTag(HtmlTextWriterTag.Td); htw.Write(ThisSession.AppException.Message); htw.RenderEndTag(); //TD htw.RenderEndTag(); //TR htw.RenderBeginTag(HtmlTextWriterTag.Tr); htw.AddAttribute(HtmlTextWriterAttribute.Width, "110px"); htw.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "Bold"); htw.RenderBeginTag(HtmlTextWriterTag.Td); htw.Write("Error Source:"); htw.RenderEndTag(); //TD htw.RenderBeginTag(HtmlTextWriterTag.Td); htw.Write(ThisSession.AppException.Source); htw.RenderEndTag(); //TD htw.RenderEndTag(); //TR htw.RenderBeginTag(HtmlTextWriterTag.Tr); htw.AddAttribute(HtmlTextWriterAttribute.Width, "110px"); htw.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "Bold"); htw.RenderBeginTag(HtmlTextWriterTag.Td); htw.Write("Error Stack:"); htw.RenderEndTag(); //TD htw.RenderBeginTag(HtmlTextWriterTag.Td); htw.Write(ThisSession.AppException.StackTrace); htw.RenderEndTag(); //TD htw.RenderEndTag(); //TR htw.RenderEndTag(); //Table } using (BaseCCHData errorHandler = new BaseCCHData()) { errorHandler.CaptureError(ThisSession.AppException, (mu != null && !mu.IsOnline)); } } ltlErrorMessage.Text = sw.ToString(); } HttpContext.Current.Session.Abandon(); FormsAuthentication.SignOut(); } }
private void RenderNoExistingConnection(HtmlTextWriter writer) { string noConnection = NoExistingConnectionTitle; if (!String.IsNullOrEmpty(noConnection)) { Label label = new Label(); label.Text = noConnection; label.Page = Page; label.ApplyStyle(LabelStyle); label.RenderControl(writer); writer.WriteBreak(); writer.WriteBreak(); } string instructions = NoExistingConnectionInstructionText; if (!String.IsNullOrEmpty(instructions)) { Label label = new Label(); label.Text = instructions; label.Page = Page; label.ApplyStyle(InstructionTextStyle); label.RenderControl(writer); writer.WriteBreak(); writer.WriteBreak(); } }
private void RenderInstructionTitle(HtmlTextWriter writer) { if ((this.PartChromeType != System.Web.UI.WebControls.WebParts.PartChromeType.None) && (this.PartChromeType != System.Web.UI.WebControls.WebParts.PartChromeType.BorderOnly)) { string instructionTitle = this.InstructionTitle; if (!string.IsNullOrEmpty(instructionTitle)) { Label label = new Label(); if (this.WebPartToConnect != null) { label.Text = string.Format(CultureInfo.CurrentCulture, instructionTitle, new object[] { this.WebPartToConnect.DisplayTitle }); } else { label.Text = instructionTitle; } label.Page = this.Page; label.ApplyStyle(base.LabelStyle); label.RenderControl(writer); writer.WriteBreak(); } } }
protected override void RenderContents(HtmlTextWriter writer) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "tableBase"); writer.AddAttribute("cellspacing", "0"); writer.AddAttribute("cellpadding", "8"); writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tbody); foreach (var srGroup in Items.GetRange(0, (MaxCount < Items.Count) ? MaxCount : Items.Count)) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "search-result-item"); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.AddAttribute(HtmlTextWriterAttribute.Class, "borderBase left-column gray-text"); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.AddAttribute(HtmlTextWriterAttribute.Title, srGroup.Additional["Hint"].ToString()); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write(srGroup.Additional["Hint"].ToString()); writer.RenderEndTag(); writer.RenderEndTag(); writer.AddAttribute(HtmlTextWriterAttribute.Class, "borderBase center-column"); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.AddAttribute(HtmlTextWriterAttribute.Href, srGroup.URL); writer.AddAttribute(HtmlTextWriterAttribute.Class, "link bold"); writer.RenderBeginTag(HtmlTextWriterTag.A); writer.Write(HtmlUtility.SearchTextHighlight(Text, srGroup.Name.HtmlEncode(), false)); writer.RenderEndTag(); writer.WriteBreak(); if ((EntityType)(Enum.Parse(typeof(EntityType), (srGroup.Additional["Type"]).ToString())) == EntityType.Project) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "describe-text"); writer.RenderBeginTag(HtmlTextWriterTag.Span); writer.Write(CheckEmptyValue(HtmlUtility.SearchTextHighlight("", HttpUtility.HtmlEncode(HtmlUtility.GetText(srGroup.Description, 100))))); writer.RenderEndTag(); } else { writer.AddAttribute(HtmlTextWriterAttribute.Class, "describe-text"); writer.RenderBeginTag(HtmlTextWriterTag.Span); writer.Write(Resources.ProjectsCommonResource.InProject); writer.RenderEndTag(); writer.Write(" "); writer.RenderBeginTag(HtmlTextWriterTag.Span); writer.Write(srGroup.Additional["ProjectName"].ToString().HtmlEncode()); writer.RenderEndTag(); } writer.RenderEndTag(); writer.AddAttribute(HtmlTextWriterAttribute.Class, "borderBase right-column gray-text"); writer.RenderBeginTag(HtmlTextWriterTag.Td); if (srGroup.Date.HasValue) { writer.AddAttribute(HtmlTextWriterAttribute.Title, srGroup.Date.Value.ToShortDateString()); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write(srGroup.Date.Value.ToShortDateString()); writer.RenderEndTag(); } writer.RenderEndTag(); writer.RenderEndTag(); } writer.RenderEndTag(); writer.RenderEndTag(); }
protected virtual void WriteVinExample(HtmlTextWriter writer) { writer.Write(GetLocalizedString("InputVIN", GetVinExample())); writer.WriteBreak(); }
private static void SaveProcessedData(string targetPath, List<WorkItem> items) { var filePath = Path.Combine(targetPath, "data.html"); var calendar = DateTimeFormatInfo.CurrentInfo.Calendar; using (var stringWriter = new StringWriter()) using (var writer = new HtmlTextWriter(stringWriter)) { stringWriter.WriteLine($@" <!doctype html> <html lang=""en""> <head> <meta charset=""utf-8""> <title>{targetPath}</title> <link rel=""stylesheet"" href=""styles.css""> </head> <body> "); /* <link rel=""stylesheet"" href=""https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"" integrity=""sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7"" crossorigin=""anonymous""> <link rel=""stylesheet"" href=""https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css"" integrity = ""sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r"" crossorigin = ""anonymous"" > <script src=""https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"" integrity = ""sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"" crossorigin = ""anonymous"" ></ script > */ writer.Indent++; foreach (var grouping in items.Where(i => i.CreationDate.Year == 2015).GroupBy(i => calendar.GetWeekOfYear(i.CreationDate, CalendarWeekRule.FirstDay, DayOfWeek.Monday))) { writer.RenderBeginTag(HtmlTextWriterTag.H1); writer.Write($"Week {grouping.Key}"); writer.RenderEndTag(); // h2 foreach (var item in grouping) { var pr = item as PullRequest; writer.AddAttribute(HtmlTextWriterAttribute.Class, item.Author); writer.AddAttribute(HtmlTextWriterAttribute.Id, item.Id.ToString()); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Indent++; writer.RenderBeginTag("p"); writer.Indent++; writer.RenderBeginTag(HtmlTextWriterTag.H3); writer.AddAttribute(HtmlTextWriterAttribute.Href, item.Url); writer.RenderBeginTag(HtmlTextWriterTag.A); writer.Write((pr != null) ? "Pull request " : "Issue "); writer.Write("#" + item.Id); writer.RenderEndTag(); //a writer.RenderEndTag(); //h3 writer.RenderBeginTag(HtmlTextWriterTag.H2); writer.Write(item.Title); writer.RenderEndTag(); // h2 writer.RenderEndTag(); // p writer.Indent--; if (pr != null) { writer.RenderBeginTag(HtmlTextWriterTag.P); writer.Indent++; if (pr.CloseDate == default(DateTime)) { writer.Write($"Opened at <strong>{pr.CreationDate.ToString("dddd MMMM d, HH:mm")}, never closed</strong>. "); } else { writer.Write($"Opened at <strong>{pr.CreationDate.ToString("dddd MMMM d, HH:mm")}</strong>, closed at <strong>{pr.CloseDate.ToString("dddd MMMM d, HH:mm")}</strong>. "); writer.RenderBeginTag(HtmlTextWriterTag.Strong); writer.WriteBreak(); writer.Write($"Under review for {(pr.CloseDate - pr.CreationDate).TotalHours.ToString("F")} hours"); writer.RenderEndTag(); } writer.RenderEndTag(); // p writer.Indent--; writer.RenderBeginTag(HtmlTextWriterTag.P); writer.Indent++; writer.Write($"First commit on <strong>{pr.FirstCommit.ToString("dddd MMMM d, HH:mm")}</strong>, last at <strong>{pr.LastCommit.ToString("dddd MMMM d, HH:mm")}</strong>."); writer.WriteBreak(); writer.Write("Worked on for "); writer.RenderBeginTag(HtmlTextWriterTag.Strong); writer.Write($"{(pr.LastCommit - pr.FirstCommit).TotalHours.ToString("F")} hours"); writer.RenderEndTag(); writer.RenderEndTag(); // p writer.Indent--; writer.RenderBeginTag(HtmlTextWriterTag.P); writer.Indent++; foreach (var commit in pr.Commits) { writer.AddAttribute(HtmlTextWriterAttribute.Class, commit.Author); writer.RenderBeginTag(HtmlTextWriterTag.Span); writer.WriteLine($"{commit.Author} on <strong>{commit.Date.ToString("dddd MMMM d, HH:mm")}</strong>: {commit.Message}"); writer.WriteBreak(); writer.RenderEndTag();//span } writer.RenderEndTag(); // p writer.Indent--; } else { writer.RenderBeginTag(HtmlTextWriterTag.P); writer.Indent++; writer.Write($"Opened at {item.CreationDate}"); writer.RenderEndTag(); // p writer.Indent--; } if (item.RelatedItems.Any()) { writer.RenderBeginTag(HtmlTextWriterTag.H4); writer.Write("Related items:"); writer.RenderEndTag(); // h4 writer.RenderBeginTag(HtmlTextWriterTag.P); writer.Indent++; foreach (var related in item.RelatedItems) { writer.AddAttribute(HtmlTextWriterAttribute.Href, "#" + related.ToString()); writer.RenderBeginTag(HtmlTextWriterTag.A); writer.Write("#" + related.ToString() + " "); writer.RenderEndTag(); // a } writer.RenderEndTag(); // p writer.Indent--; } writer.RenderEndTag(); // div writer.Indent--; } } writer.Indent--; stringWriter.WriteLine(@" </body ></html> "); File.WriteAllText(filePath, stringWriter.ToString()); } }
protected override void RenderContents(HtmlTextWriter output) { // write a div where we will attach the recaptcha output.AddAttribute("id", "recaptcha_" + this.ClientID); //output.AddAttribute("class", "g-recaptcha"); output.AddAttribute("class", "recaptcha"); //output.AddAttribute("data-sitekey", this.publicKey); //output.AddAttribute("data-theme", this.theme); output.AddAttribute("data-tabindex", base.TabIndex.ToString()); output.RenderBeginTag(HtmlTextWriterTag.Div); output.RenderEndTag(); //output.AddAttribute("id", "g-response"); //output.RenderBeginTag(HtmlTextWriterTag.Textarea); //output.RenderEndTag(); // <noscript> display output.RenderBeginTag(HtmlTextWriterTag.Noscript); output.Indent++; output.AddAttribute(HtmlTextWriterAttribute.Src, this.GenerateChallengeUrl(true), false); output.AddAttribute(HtmlTextWriterAttribute.Width, "500"); output.AddAttribute(HtmlTextWriterAttribute.Height, "300"); output.AddAttribute("frameborder", "0"); output.RenderBeginTag(HtmlTextWriterTag.Iframe); output.RenderEndTag(); output.WriteBreak(); // modified to make XHTML-compliant. Patch by [email protected]. output.AddAttribute(HtmlTextWriterAttribute.Name, RECAPTCHA_CHALLENGE_FIELD); output.AddAttribute(HtmlTextWriterAttribute.Rows, "3"); output.AddAttribute(HtmlTextWriterAttribute.Cols, "40"); output.RenderBeginTag(HtmlTextWriterTag.Textarea); output.RenderEndTag(); output.AddAttribute(HtmlTextWriterAttribute.Name, RECAPTCHA_RESPONSE_FIELD); output.AddAttribute(HtmlTextWriterAttribute.Value, "manual_challenge"); output.AddAttribute(HtmlTextWriterAttribute.Type, "hidden"); output.RenderBeginTag(HtmlTextWriterTag.Input); output.RenderEndTag(); output.Indent--; output.RenderEndTag(); }
protected override void RenderContents(HtmlTextWriter writer) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "tableBase"); writer.AddAttribute("cellspacing", "0"); writer.AddAttribute("cellpadding", "8"); writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tbody); foreach (var searchItemResult in Items.GetRange(0, (MaxCount < Items.Count) ? MaxCount : Items.Count)) { var relativeInfo = searchItemResult.Additional["relativeInfo"].ToString(); if (String.IsNullOrEmpty(relativeInfo)) relativeInfo = searchItemResult.Description.HtmlEncode(); else relativeInfo = String.Format("<span class='describe-text'>{0}</span> {1}", CRMCommonResource.RelativeTo, relativeInfo.HtmlEncode()); writer.AddAttribute(HtmlTextWriterAttribute.Class, "search-result-item"); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.AddAttribute(HtmlTextWriterAttribute.Class, "borderBase left-column gray-text"); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.AddAttribute(HtmlTextWriterAttribute.Title, searchItemResult.Additional["typeInfo"].ToString()); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write(searchItemResult.Additional["typeInfo"].ToString()); writer.RenderEndTag(); writer.RenderEndTag(); writer.AddAttribute(HtmlTextWriterAttribute.Class, "borderBase center-column"); writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.AddAttribute(HtmlTextWriterAttribute.Href, searchItemResult.URL); writer.AddAttribute(HtmlTextWriterAttribute.Class, "link bold"); writer.RenderBeginTag(HtmlTextWriterTag.A); writer.Write(HtmlUtility.SearchTextHighlight(Text, searchItemResult.Name.HtmlEncode(), false)); writer.RenderEndTag(); if (!String.IsNullOrEmpty(relativeInfo)) { writer.WriteBreak(); writer.Write(relativeInfo); } writer.RenderEndTag(); writer.AddAttribute(HtmlTextWriterAttribute.Class, "borderBase right-column gray-text"); writer.RenderBeginTag(HtmlTextWriterTag.Td); if (searchItemResult.Date.HasValue) { writer.AddAttribute(HtmlTextWriterAttribute.Title, searchItemResult.Date.Value.ToShortDateString()); writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write(searchItemResult.Date.Value.ToShortDateString()); writer.RenderEndTag(); } writer.RenderEndTag(); writer.RenderEndTag(); } writer.RenderEndTag(); writer.RenderEndTag(); }
public string ExportToHtml(Database db, TextWriter textWriter, DocumentGeneratorConfiguration docGenConfig) { if (db == null) { throw new ArgumentNullException("db"); } if (textWriter == null) { throw new ArgumentNullException("textWriter"); } if (docGenConfig == null) { throw new ArgumentNullException("docGenConfig"); } //var sw = new StringWriter(); using(var hw = new HtmlTextWriter(textWriter)) { hw.WriteLine("<!DOCTYPE HTML>"); hw.RenderBeginTag(HtmlTextWriterTag.Html); hw.RenderBeginTag(HtmlTextWriterTag.Head); hw.RenderBeginTag(HtmlTextWriterTag.Title); hw.WriteEncodedText(db.DatabaseName); //TODO: does Write method escape HTML entities??? hw.RenderEndTag(); //title hw.Write("<!-- "); hw.WriteEncodedText(@" Bootstrap CSS is included. Bootstrap is released under the MIT license and is copyright 2014 Twitter. The MIT License (MIT) Copyright (c) 2011-2014 Twitter, Inc Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."); hw.Write(" -->"); hw.AddAttribute(HtmlTextWriterAttribute.Type, "text/css"); hw.RenderBeginTag(HtmlTextWriterTag.Style); hw.Write(this.baseCss); hw.RenderEndTag(); //style hw.RenderEndTag(); //head hw.RenderBeginTag(HtmlTextWriterTag.Body); hw.RenderBeginTag(HtmlTextWriterTag.H1); hw.WriteEncodedText(String.Format("{0} Database", db.DatabaseName)); hw.RenderEndTag(); //h1 if (!String.IsNullOrWhiteSpace(db.Description)) { hw.RenderBeginTag(HtmlTextWriterTag.P); hw.WriteEncodedText(db.Description); hw.RenderEndTag(); //p } if (db.Schemas != null && db.Schemas.Count > 0) { for (int s = 0; s < db.Schemas.Count; s++) { var schema = db.Schemas[s]; bool hasTables = (schema.Tables != null && schema.Tables.Count > 0); if (s > 0) { hw.RenderBeginTag(HtmlTextWriterTag.Hr); hw.RenderEndTag(); //hr } hw.RenderBeginTag(HtmlTextWriterTag.H2); hw.WriteEncodedText(String.Format("{0} (schema)", schema.SchemaName)); hw.RenderEndTag(); //h2 if (!String.IsNullOrWhiteSpace(schema.Description)) { hw.RenderBeginTag(HtmlTextWriterTag.P); hw.WriteEncodedText(schema.Description); hw.RenderEndTag(); //p } hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed schema-objects-list-container"); hw.RenderBeginTag(HtmlTextWriterTag.Table); hw.RenderBeginTag(HtmlTextWriterTag.Thead); hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Object Type"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Count"); hw.RenderEndTag(); //th hw.RenderEndTag(); //tr hw.RenderEndTag(); //thead hw.RenderBeginTag(HtmlTextWriterTag.Tbody); hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.Write("Tables"); hw.RenderEndTag(); //td hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right"); hw.RenderBeginTag(HtmlTextWriterTag.Td); if (hasTables) { hw.WriteEncodedText(schema.Tables.Count.ToString()); } else { hw.Write("0"); } hw.RenderEndTag(); //td hw.RenderEndTag(); //tr hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.Write("Views"); hw.RenderEndTag(); //td hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right"); hw.RenderBeginTag(HtmlTextWriterTag.Td); if (schema.Views != null) { hw.WriteEncodedText(schema.Views.Count.ToString()); } else { hw.Write("0"); } hw.RenderEndTag(); //td hw.RenderEndTag(); //tr hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.Write("Stored procedures"); hw.RenderEndTag(); //td hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right"); hw.RenderBeginTag(HtmlTextWriterTag.Td); if (schema.StoredProcedures != null) { hw.WriteEncodedText(schema.StoredProcedures.Count.ToString()); } else { hw.Write("0"); } hw.RenderEndTag(); //td hw.RenderEndTag(); //tr hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.Write("Scalar functions"); hw.RenderEndTag(); //td hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right"); hw.RenderBeginTag(HtmlTextWriterTag.Td); if (schema.ScalarFunctions != null) { hw.WriteEncodedText(schema.ScalarFunctions.Count.ToString()); } else { hw.Write("0"); } hw.RenderEndTag(); //td hw.RenderEndTag(); //tr hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.Write("Table functions"); hw.RenderEndTag(); //td hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right"); hw.RenderBeginTag(HtmlTextWriterTag.Td); if (schema.TableFunctions != null) { hw.WriteEncodedText(schema.TableFunctions.Count.ToString()); } else { hw.Write("0"); } hw.RenderEndTag(); //td hw.RenderEndTag(); //tr hw.RenderEndTag(); //tbody hw.RenderEndTag(); //table //Render tables if (hasTables) { for (int t = 0; t < schema.Tables.Count; t++) { var table = schema.Tables[t]; if (docGenConfig.ForeignKeyToTableHyperLink) { // create internel hyperlink target hw.AddAttribute("id", table.GetObjectAnchorId()); hw.RenderBeginTag(HtmlTextWriterTag.A); hw.RenderEndTag(); //a } bool hasIndexes = (table.Indexes != null && table.Indexes.Count > 0); hw.RenderBeginTag(HtmlTextWriterTag.H3); hw.WriteEncodedText(String.Format("{0}.{1} (table)", schema.SchemaName, table.TableName)); hw.RenderEndTag(); //h3 hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed"); hw.RenderBeginTag(HtmlTextWriterTag.Table); if (!String.IsNullOrWhiteSpace(table.Description)) { hw.RenderBeginTag(HtmlTextWriterTag.Caption); hw.WriteEncodedText(table.Description); hw.RenderEndTag(); //caption } hw.RenderBeginTag(HtmlTextWriterTag.Thead); hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Column Name"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("System Data Type"); if (table.ContainsColumnsWithUserDefinedDataType()) { hw.Write(" / User Defined Type"); } hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Size"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Allow Null"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Default"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Is Computed"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Description"); hw.RenderEndTag(); //th hw.RenderEndTag(); //tr hw.RenderEndTag(); //thead hw.RenderBeginTag(HtmlTextWriterTag.Tbody); for (int c = 0; c < table.Columns.Count; c++) { var col = table.Columns[c]; bool colHasDefaultValue = (col.DefaultValue != null); hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(col.ColumnName); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(col.BaseDataTypeName); if (col.IsIdentity) { hw.WriteEncodedText(" (identity)"); } if (col.IsUserDefinedType) { hw.Write(" / "); hw.WriteEncodedText(col.TypeName); } hw.RenderEndTag(); //td hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right"); hw.RenderBeginTag(HtmlTextWriterTag.Td); //show precision, scale when appliable, else use maxlength if (col.Precision.HasValue && col.Scale.HasValue && col.Precision > 0) { hw.WriteEncodedText(String.Format("{0},{1}",col.Precision.Value, col.Scale.Value)); } else { if (col.MaximumLength.HasValue && col.MaximumLength.Value != -1) { hw.WriteEncodedText(col.MaximumLength.ToString()); } } hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(col.AllowNull ? "Yes" : "No"); hw.RenderEndTag(); //td if (!colHasDefaultValue) { hw.AddAttribute(HtmlTextWriterAttribute.Class, "no-default"); } hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(colHasDefaultValue ? col.DefaultValue : "none"); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(col.IsComputed ? "Yes" : "No"); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(col.Description ?? String.Empty); hw.RenderEndTag(); //td hw.RenderEndTag(); //tr } //for column loop hw.RenderEndTag(); //tbody hw.RenderEndTag(); //table if (hasIndexes) { hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed"); hw.RenderBeginTag(HtmlTextWriterTag.Table); hw.RenderBeginTag(HtmlTextWriterTag.Caption); hw.WriteEncodedText(String.Format("Indexes on {0}", table.TableName)); hw.RenderEndTag(); //caption hw.RenderBeginTag(HtmlTextWriterTag.Thead); hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Index Name"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Description"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Is Primary Key"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Is Unique"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Index Type"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Columns"); hw.RenderEndTag(); //th hw.RenderEndTag(); //tr hw.RenderEndTag(); //thead hw.RenderBeginTag(HtmlTextWriterTag.Tbody); for (int i = 0; i < table.Indexes.Count; i++) { var index = table.Indexes[i]; hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(index.IndexName); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(index.Description ?? String.Empty); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(index.IsPrimaryKey.ToYesNo()); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(index.IsUnique.ToYesNo()); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(index.IndexTypeDescription); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(String.Join(", ", index.ColumnNames.ToArray())); hw.RenderEndTag(); //td hw.RenderEndTag(); //tr } hw.RenderEndTag(); //tbody hw.RenderEndTag(); //table } //end indexes if (table.ForeignKeys != null && table.ForeignKeys.Count > 0) { hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed"); hw.RenderBeginTag(HtmlTextWriterTag.Table); hw.RenderBeginTag(HtmlTextWriterTag.Caption); hw.WriteEncodedText(String.Format("Foreign Keys in {0}", table.TableName)); hw.RenderEndTag(); //caption hw.RenderBeginTag(HtmlTextWriterTag.Thead); hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Foreign Key Name"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Columns"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("References Table (Columns)"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Description"); hw.RenderEndTag(); //th hw.RenderEndTag(); //thead hw.RenderBeginTag(HtmlTextWriterTag.Tbody); for (int f = 0; f < table.ForeignKeys.Count; f++) { var fk = table.ForeignKeys[f]; hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(fk.ForeignKeyName); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(String.Join(", ", fk.GetForeignKeyParentColumnNames())); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); //hw.WriteEncodedText(String.Format("{0}.{1} ({2})", fk.ReferencedObjectSchemaName, fk.ReferencedObjectName, String.Join(", ",fk.GetForeignKeyReferenceColumnNames()))); if (docGenConfig.ForeignKeyToTableHyperLink) { hw.AddAttribute("href", fk.GetFkTargetAnchorId()); hw.RenderBeginTag(HtmlTextWriterTag.A); hw.WriteEncodedText(String.Format("{0}.{1} ({2})", fk.ReferencedObjectSchemaName, fk.ReferencedObjectName, String.Join(", ", fk.GetForeignKeyReferenceColumnNames()))); //hw.WriteEncodedText("table ->"); hw.RenderEndTag(); //a } else { hw.WriteEncodedText(String.Format("{0}.{1} ({2})", fk.ReferencedObjectSchemaName, fk.ReferencedObjectName, String.Join(", ", fk.GetForeignKeyReferenceColumnNames()))); } hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(fk.Description ?? String.Empty); hw.RenderEndTag(); //td hw.RenderEndTag(); //tr } hw.RenderEndTag(); //tbody hw.RenderEndTag(); //table } //end foreign keys } //end for table loop } if (schema.Views != null && schema.Views.Count > 0) { for (int v = 0; v < schema.Views.Count; v++) { var view = schema.Views[v]; hw.RenderBeginTag(HtmlTextWriterTag.H3); hw.WriteEncodedText(String.Format("{0}.{1} (view)", schema.SchemaName, view.ViewName)); hw.RenderEndTag(); //h3 //TODO: add columns and indexes for view, use view.Description as table caption hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed"); hw.RenderBeginTag(HtmlTextWriterTag.Table); if (!String.IsNullOrWhiteSpace(view.Description)) { hw.RenderBeginTag(HtmlTextWriterTag.Caption); hw.WriteEncodedText(view.Description); hw.RenderEndTag(); //caption } hw.RenderBeginTag(HtmlTextWriterTag.Thead); hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Column Name"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("System Data Type"); if (view.ContainsColumnsWithUserDefinedDataType()) { hw.Write(" / User Defined Type"); } hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Size"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Allow Null"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Default"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Is Computed"); hw.RenderEndTag(); //th hw.RenderEndTag(); //tr hw.RenderEndTag(); //thead hw.RenderBeginTag(HtmlTextWriterTag.Tbody); for (int c = 0; c < view.Columns.Count; c++) { var col = view.Columns[c]; bool colHasDefaultValue = (col.DefaultValue != null); hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(col.ColumnName); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(col.BaseDataTypeName); if (col.IsIdentity) { hw.WriteEncodedText(" (identity)"); } if (col.IsUserDefinedType) { hw.Write(" / "); hw.WriteEncodedText(col.TypeName); } hw.RenderEndTag(); //td hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right"); hw.RenderBeginTag(HtmlTextWriterTag.Td); //show precision, scale when appliable if (col.Precision.HasValue && col.Scale.HasValue && col.Precision > 0) { hw.WriteEncodedText(String.Format("{0},{1}",col.Precision.Value, col.Scale.Value)); } else { if (col.MaximumLength.HasValue && col.MaximumLength.Value != -1) { hw.WriteEncodedText(col.MaximumLength.ToString()); } //else //{ // hw.Write("n/a"); //} } hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(col.AllowNull.ToYesNo()); hw.RenderEndTag(); //td if (!colHasDefaultValue) { hw.AddAttribute(HtmlTextWriterAttribute.Class, "no-default"); } hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(colHasDefaultValue ? col.DefaultValue : "none"); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(col.IsComputed.ToYesNo()); hw.RenderEndTag(); //td hw.RenderEndTag(); //tr } //for column loop hw.RenderEndTag(); //tbody hw.RenderEndTag(); //table if (view.IsIndexedView) { hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed"); hw.RenderBeginTag(HtmlTextWriterTag.Table); hw.RenderBeginTag(HtmlTextWriterTag.Caption); hw.WriteEncodedText(String.Format("Indexes on {0}", view.ViewName)); hw.RenderEndTag(); //caption hw.RenderBeginTag(HtmlTextWriterTag.Thead); hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Index Name"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Description"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Is Unique"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Index Type"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Columns"); hw.RenderEndTag(); //th hw.RenderEndTag(); //tr hw.RenderEndTag(); //thead hw.RenderBeginTag(HtmlTextWriterTag.Tbody); for (int i = 0; i < view.Indexes.Count; i++) { var index = view.Indexes[i]; hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(index.IndexName); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(index.Description ?? String.Empty); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(index.IsUnique.ToYesNo()); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(index.IndexTypeDescription); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(String.Join(", ", index.ColumnNames.ToArray())); hw.RenderEndTag(); //td hw.RenderEndTag(); //tr } hw.RenderEndTag(); //tbody hw.RenderEndTag(); //table } //end indexes } //end views loop }//end views if (schema.StoredProcedures != null && schema.StoredProcedures.Count > 0) { for (int r = 0; r < schema.StoredProcedures.Count; r++) { var sproc = schema.StoredProcedures[r]; hw.RenderBeginTag(HtmlTextWriterTag.H3); hw.WriteEncodedText(String.Format("{0}.{1} (stored procedure)", schema.SchemaName,sproc.ProcedureName) ); hw.RenderEndTag(); //h3 if (!String.IsNullOrWhiteSpace(sproc.Description)) { hw.RenderBeginTag(HtmlTextWriterTag.P); hw.WriteEncodedText(sproc.Description); hw.RenderEndTag(); //p } if (sproc.Parameters != null && sproc.Parameters.Count > 0) { hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed"); hw.RenderBeginTag(HtmlTextWriterTag.Table); hw.RenderBeginTag(HtmlTextWriterTag.Caption); hw.Write("Parameters"); hw.RenderEndTag();//caption hw.RenderBeginTag(HtmlTextWriterTag.Thead); hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Paramater Name"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("System Data Type"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Size"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Direction"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Description"); hw.RenderEndTag(); //th hw.RenderEndTag(); //tr hw.RenderEndTag(); //thead hw.RenderBeginTag(HtmlTextWriterTag.Tbody); for (int m = 0; m < sproc.Parameters.Count; m++) { var param = sproc.Parameters[m]; hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(param.ParameterName); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(param.DataType); hw.RenderEndTag(); //td hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right"); hw.RenderBeginTag(HtmlTextWriterTag.Td); //show precision, scale when appliable if (param.Precision.HasValue && param.Scale.HasValue && param.Precision > 0) { hw.WriteEncodedText(String.Format("{0},{1}", param.Precision.Value, param.Scale.Value)); } else { if (param.MaximumLength.HasValue && param.MaximumLength.Value != -1) { hw.WriteEncodedText(param.MaximumLength.ToString()); } //else //{ // hw.Write("n/a"); //} } hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(param.Direction); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(param.Description ?? String.Empty); hw.RenderEndTag(); //td hw.RenderEndTag(); //tr } //end parameter loop hw.RenderEndTag(); //tbody hw.RenderEndTag(); //table } //end sproc parameters } //end sproc loop }// end stored procedures if (schema.ScalarFunctions != null && schema.ScalarFunctions.Count > 0) { for (int f = 0; f < schema.ScalarFunctions.Count; f++) { var func = schema.ScalarFunctions[f]; hw.RenderBeginTag(HtmlTextWriterTag.H3); hw.WriteEncodedText(String.Format("{0}.{1} (scalar function)", schema.SchemaName, func.FunctionName)); hw.RenderEndTag(); //h3 if (!String.IsNullOrWhiteSpace(func.Description)) { hw.RenderBeginTag(HtmlTextWriterTag.P); hw.WriteEncodedText(func.Description); hw.RenderEndTag(); //p } if (!String.IsNullOrEmpty(func.ReturnDataType)) { hw.RenderBeginTag(HtmlTextWriterTag.P); hw.Write("Returns "); hw.AddAttribute(HtmlTextWriterAttribute.Class, "return-type"); hw.RenderBeginTag(HtmlTextWriterTag.Span); hw.WriteEncodedText(func.GetReturnTypeDisplayText()); hw.RenderEndTag(); //span hw.RenderEndTag(); //p } if (func.Parameters != null && func.Parameters.Count > 0) { hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed"); hw.RenderBeginTag(HtmlTextWriterTag.Table); hw.RenderBeginTag(HtmlTextWriterTag.Caption); hw.Write("Parameters"); hw.RenderEndTag();//caption hw.RenderBeginTag(HtmlTextWriterTag.Thead); hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Paramater Name"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("System Data Type"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Size"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Description"); hw.RenderEndTag(); //th hw.RenderEndTag(); //tr hw.RenderEndTag(); //thead hw.RenderBeginTag(HtmlTextWriterTag.Tbody); for (int m = 0; m < func.Parameters.Count; m++) { var param = func.Parameters[m]; hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(param.ParameterName); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(param.DataType); hw.RenderEndTag(); //td hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right"); hw.RenderBeginTag(HtmlTextWriterTag.Td); //show precision, scale when appliable if (param.Precision.HasValue && param.Scale.HasValue && param.Precision > 0) { hw.WriteEncodedText(String.Format("{0},{1}", param.Precision.Value, param.Scale.Value)); } else { if (param.MaximumLength.HasValue && param.MaximumLength.Value != -1) { hw.WriteEncodedText(param.MaximumLength.ToString()); } } hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(param.Description ?? String.Empty); hw.RenderEndTag(); //td hw.RenderEndTag(); //tr } //end scalar func parameter loop hw.RenderEndTag(); //tbody hw.RenderEndTag(); //table } //end scalar params } } //end scalar functions if (schema.TableFunctions != null && schema.TableFunctions.Count > 0) { for (int t = 0; t < schema.TableFunctions.Count; t++) { var tFunc = schema.TableFunctions[t]; hw.RenderBeginTag(HtmlTextWriterTag.H3); hw.WriteEncodedText(String.Format("{0}.{1} (table function)", schema.SchemaName, tFunc.FunctionName)); hw.RenderEndTag(); //h3 if (!String.IsNullOrWhiteSpace(tFunc.Description)) { hw.RenderBeginTag(HtmlTextWriterTag.P); hw.WriteEncodedText(tFunc.Description); hw.RenderEndTag(); //p } if (tFunc.Parameters != null && tFunc.Parameters.Count > 0) { if (tFunc.Parameters != null && tFunc.Parameters.Count > 0) { hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed"); hw.RenderBeginTag(HtmlTextWriterTag.Table); hw.RenderBeginTag(HtmlTextWriterTag.Caption); hw.Write("Parameters"); hw.RenderEndTag();//caption hw.RenderBeginTag(HtmlTextWriterTag.Thead); hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Paramater Name"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("System Data Type"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Size"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Description"); hw.RenderEndTag(); //th hw.RenderEndTag(); //tr hw.RenderEndTag(); //thead hw.RenderBeginTag(HtmlTextWriterTag.Tbody); for (int m = 0; m < tFunc.Parameters.Count; m++) { var param = tFunc.Parameters[m]; hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(param.ParameterName); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(param.DataType); hw.RenderEndTag(); //td hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right"); hw.RenderBeginTag(HtmlTextWriterTag.Td); //show precision, scale when appliable if (param.Precision.HasValue && param.Scale.HasValue && param.Precision > 0) { hw.WriteEncodedText(String.Format("{0},{1}", param.Precision.Value, param.Scale.Value)); } else { if (param.MaximumLength.HasValue && param.MaximumLength.Value != -1) { hw.WriteEncodedText(param.MaximumLength.ToString()); } } hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(param.Description ?? String.Empty); hw.RenderEndTag(); //td hw.RenderEndTag(); //tr } //end table func parameter loop hw.RenderEndTag(); //tbody hw.RenderEndTag(); //table } }//end table function parameter if (tFunc.Columns != null && tFunc.Columns.Count > 0) { hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed schema-objects-list-container"); hw.RenderBeginTag(HtmlTextWriterTag.Table); hw.RenderBeginTag(HtmlTextWriterTag.Thead); hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Column Name"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("System Data Type"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Allow Null"); hw.RenderEndTag(); //th hw.RenderEndTag(); //tr hw.RenderEndTag(); //thead hw.RenderBeginTag(HtmlTextWriterTag.Tbody); for (int c = 0; c < tFunc.Columns.Count; c++) { var col = tFunc.Columns[c]; hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(col.ColumnName); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(col.BaseDataTypeName); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(col.AllowNull.ToYesNo()); hw.RenderEndTag(); //td hw.RenderEndTag(); //tr } //end table function column loop hw.RenderEndTag(); //tbody hw.RenderEndTag(); //table } //end table function columns } } //end table functions }// end for schema loop } //display design issues if (docGenConfig.CheckForDesignIssues && db.DesignIssueWarnings.HasAny()) { hw.RenderBeginTag(HtmlTextWriterTag.H2); hw.WriteEncodedText(String.Format("Design Issue Warnings ({0})", db.DesignIssueWarnings.Count)); hw.RenderEndTag(); //h2 hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed"); hw.RenderBeginTag(HtmlTextWriterTag.Table); hw.RenderBeginTag(HtmlTextWriterTag.Thead); hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Warning Description"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Reference URL"); hw.RenderEndTag(); //th hw.RenderBeginTag(HtmlTextWriterTag.Th); hw.Write("Object(s)"); hw.RenderEndTag(); //th hw.RenderEndTag(); //tr hw.RenderEndTag(); //thead hw.RenderBeginTag(HtmlTextWriterTag.Tbody); foreach(var warn in db.DesignIssueWarnings) { hw.RenderBeginTag(HtmlTextWriterTag.Tr); hw.RenderBeginTag(HtmlTextWriterTag.Td); hw.WriteEncodedText(warn.Description); hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); if(warn.ReferenceUrl != null) { hw.AddAttribute("href", warn.ReferenceUrl.ToString()); hw.RenderBeginTag(HtmlTextWriterTag.A); hw.WriteEncodedText(warn.ReferenceUrl.ToString()); hw.RenderEndTag(); //a } hw.RenderEndTag(); //td hw.RenderBeginTag(HtmlTextWriterTag.Td); foreach(IDbObject obj in warn.DatabaseObjects) { //hw.WriteEncodedText(obj.ObjectFullDisplayName); //TODO: add internal hyperlinking hw.WriteEncodedText(String.Format("{0} ( {1} )", obj.ObjectFullDisplayName, obj.ObjectTypeDisplayText)); hw.WriteBreak(); //br } //hw.WriteEncodedText(warn.Description); hw.RenderEndTag(); //td hw.RenderEndTag(); //tr } hw.RenderEndTag(); // tbody hw.RenderEndTag(); //table } //footer hw.RenderBeginTag(HtmlTextWriterTag.P); hw.WriteEncodedText(String.Format("Documentation created using SQL Server Database Documentation Generator version {0}", this.appVersion)); hw.WriteBreak(); //br hw.AddAttribute(HtmlTextWriterAttribute.Href, this.projectUrl); hw.RenderBeginTag(HtmlTextWriterTag.A); hw.WriteEncodedText(this.projectUrl); hw.RenderEndTag(); //a hw.RenderEndTag(); //p hw.RenderEndTag(); //body hw.RenderEndTag(); //html } return textWriter.ToString(); }