using System; using System.Web; using System.Web.UI; namespace UDDI.Web { public class UddiBrowser { public static bool IsNetscape6 { get { return HttpContext.Current.Request.Browser.Type.StartsWith( "Netscape" ) && HttpContext.Current.Request.Browser.MajorVersion >= 5; } } public static bool IsIE4 { get { return HttpContext.Current.Request.Browser.Type.StartsWith( "IE" ) && HttpContext.Current.Request.Browser.MajorVersion >= 4 && HttpContext.Current.Request.Browser.MajorVersion < 5; } } public static bool IsIE5 { get { return HttpContext.Current.Request.Browser.Type.StartsWith( "IE" ) && HttpContext.Current.Request.Browser.MajorVersion >= 5; } } public static bool IsDownlevel { get { return !IsIE5; } } public static bool IsFrames { get{ return ( "true"==HttpContext.Current.Request[ "frames" ] );} } public static bool ShouldBeFrames { get{ return !IsDownlevel; } } } public class UddiPage : System.Web.UI.Page { private System.Web.UI.WebControls.PlaceHolder headerbag; public System.Web.UI.WebControls.PlaceHolder HeaderBag { get{ return headerbag; } set{ headerbag=(System.Web.UI.WebControls.PlaceHolder) value; } } private System.Web.UI.WebControls.PlaceHolder footerbag; public System.Web.UI.WebControls.PlaceHolder FooterBag { get{ return footerbag; } set{ footerbag=(System.Web.UI.WebControls.PlaceHolder) value; } } public bool IsDownlevel { get { return UddiBrowser.IsDownlevel; } } public bool EditMode { get { if( null == ViewState[ "EditMode" ] ) return false; return (bool)ViewState[ "EditMode" ]; } } public bool IsNetscape6 { get { return UddiBrowser.IsNetscape6; } } public bool IsIE4 { get { return UddiBrowser.IsIE4; } } public bool IsIE5 { get { return UddiBrowser.IsIE5; } } private SytleSheetControlCollection stylesheets; public SytleSheetControlCollection StyleSheets { get { if( null==stylesheets ) stylesheets = new SytleSheetControlCollection(); return stylesheets; } set { stylesheets = (SytleSheetControlCollection)value; } } private PageStyleControl pagestyle = null; public PageStyleControl PageStyle { get { if( null==pagestyle ) { pagestyle = PageStyleControl.GetDefault(); } return pagestyle; } set { pagestyle = (PageStyleControl)value; } } private ClientScriptRegisterCollection clientscripts; public ClientScriptRegisterCollection ClientScript { get { if( null==clientscripts ) clientscripts = new ClientScriptRegisterCollection(); return clientscripts; } set{ clientscripts = (ClientScriptRegisterCollection)value; } } public string Root { get { if( "/" == Request.ApplicationPath ) return ""; return Request.ApplicationPath; } } public void CancelEditMode() { ViewState[ "EditMode" ] = false; } public void SetEditMode() { ViewState[ "EditMode" ] = true; } protected override void OnLoad( EventArgs e ) { base.OnLoad( e ); if( null!=HeaderBag ) HeaderBag.Visible = PageStyle.ShowHeader; if( null!=FooterBag ) FooterBag.Visible = PageStyle.ShowFooter; } protected override void Render( HtmlTextWriter output ) { // // Render Open HTML // output.RenderBeginTag( HtmlTextWriterTag.Html ); // // Render Open Head // output.Write( "\r\n" ); // // Render StyleSheet Links // foreach( StyleSheetControl stylesheet in this.StyleSheets ) stylesheet.RenderControl( output ); // // Render Client Scripts // foreach( ClientScriptRegister script in this.ClientScript ) script.RenderControl( output ); if( null != PageStyle ) { output.RenderBeginTag( HtmlTextWriterTag.Title );// if( 0 == Config.GetInt( "Web.ServiceMode", 0 ) ) { output.Write( UDDI.Localization.GetString( PageStyle.Title ) ); } else { output.Write( UDDI.Localization.GetString( PageStyle.AltTitle ) ); } output.RenderEndTag();// } // // Render Close Head // output.Write( "\r\n" ); // // Register the attributes for the body // if( null!=PageStyle ) PageStyle.RenderControl( output ); // // Render Open Body // output.RenderBeginTag( HtmlTextWriterTag.Body ); // // Render Open Table. // This prevents scrolling problems. // if( null != PageStyle ) output.AddAttribute( "border",PageStyle.BorderWidth ); else output.AddAttribute( "border","0" ); output.AddAttribute( "width","100%" ); output.AddAttribute( "height","100%" ); output.AddAttribute( "cellpadding","0" ); output.AddAttribute( "cellspacing","0" ); output.RenderBeginTag( HtmlTextWriterTag.Table ); // // Render Open TR // if( UddiBrowser.IsDownlevel || UddiBrowser.IsNetscape6 ) output.AddAttribute( "height","100%" ); output.RenderBeginTag( HtmlTextWriterTag.Tr ); // // Render Open TD // if( UddiBrowser.IsDownlevel || UddiBrowser.IsNetscape6 ) output.AddAttribute( "height","100%" ); output.AddAttribute( "valign","top" ); output.RenderBeginTag( HtmlTextWriterTag.Td ); // // Render Content of ASPX Page // base.Render( output );//do the base render // // Close All Open Tags // output.RenderEndTag();//td output.RenderEndTag();//tr output.RenderEndTag();//table output.RenderEndTag();//body output.RenderEndTag();//html } protected override void AddParsedSubObject( object obj ) { if( obj is StyleSheetControl ) { this.StyleSheets.Add( (StyleSheetControl)obj ); return; } else if( obj is PageStyleControl ) { this.PageStyle = (PageStyleControl)obj; return; } else if( obj is ClientScriptRegister ) { this.ClientScript.Add( (ClientScriptRegister)obj ); return; } base.AddParsedSubObject( obj ); } } public class SytleSheetControlCollection : System.Collections.CollectionBase { public StyleSheetControl this[ int index ] { get{ return (StyleSheetControl)this.List[ index ]; } set{ this.List[ index ] = value; } } public int Add( StyleSheetControl control ) { return this.List.Add( control ); } public void Remove( int index ) { this.RemoveAt( index ); } public void Remove( StyleSheetControl control ) { this.Remove( control ); } public void Insert( int index, StyleSheetControl control ) { this.List.Insert( index, control ); } } public class StyleSheetControl : UddiControl, INamingContainer { public StyleSheetControl() { } private string defaultsheet; public string Default { get{ return defaultsheet; } set{ defaultsheet = value; } } private string downlevelsheet; public string DownLevel { get{ return downlevelsheet; } set{ downlevelsheet = value; } } protected override void Render( HtmlTextWriter output ) { if( ( UddiBrowser.IsDownlevel && !UddiBrowser.IsNetscape6 ) && null!=DownLevel ) { output.AddAttribute( HtmlTextWriterAttribute.Href, DownLevel ); } else if( ( !UddiBrowser.IsDownlevel || UddiBrowser.IsNetscape6 ) && null!=Default ) { output.AddAttribute( HtmlTextWriterAttribute.Href, Default ); } else { return; } output.AddAttribute( "rel","stylesheet"); output.AddAttribute( "type", "text/css" ); output.RenderBeginTag( HtmlTextWriterTag.Link ); output.RenderEndTag(); } } public class PageStyleControl : UddiControl, INamingContainer { public PageStyleControl() { // // Show footer if Config value is set. // this.ShowFooter = ( Config.GetInt( "Web.ShowFooter",0 ) > 0 ); // // Show header only if DownLevel // this.ShowHeader = !UddiBrowser.ShouldBeFrames; // // Set Page margin data // this.MarginHeight = "0"; this.MarginWidth = "0"; this.LeftMargin = "0"; this.RightMargin = "0"; this.TopMargin = "0"; this.BottomMargin = "0"; } private string title; public string Title { get{ return title; } set{ title=value; } } private string alttitle; public string AltTitle { get{ return alttitle; } set{ alttitle=value; } } private string oncontextmenu; public string OnClientContextMenu { get{ return oncontextmenu; } set{ oncontextmenu=value; } } private string leftmargin; public string LeftMargin { get{ return leftmargin; } set{ leftmargin=value; } } private string topmargin; public string TopMargin { get{ return topmargin; } set{ topmargin=value; } } private string bottommargin; public string BottomMargin { get{ return bottommargin; } set{ bottommargin=value; } } private string rightmargin; public string RightMargin { get{ return rightmargin; } set{ rightmargin=value;} } private string marginheight; public string MarginHeight { get{ return marginheight; } set{ marginheight=value; } } private string marginwidth; public string MarginWidth { get{ return marginwidth; } set{ marginwidth=value; } } private string onload; public string OnClientLoad { get{ return onload; } set{ onload=value; } } private string bgcolor; public string BackgroundColor { get{ return bgcolor; } set{ bgcolor=value; } } private string linkcolor; public string LinkColor { get{ return linkcolor; } set{ linkcolor=value; } } private string alinkcolor; public string ALinkColor { get{ return alinkcolor; } set{ alinkcolor=value; } } private string vlinkcolor; public string VLinkColor { get{ return vlinkcolor; } set{ vlinkcolor=value; } } private string textcolor; public string TextColor { get{ return textcolor; } set{ textcolor=value; } } private bool showfooter; public bool ShowFooter { get{ return showfooter; } set{ showfooter=value; } } private bool showheader; public bool ShowHeader { get{ return showheader; } set{ showheader=value; } } private string borderwidth = "0"; public string BorderWidth { get{ return borderwidth; } set{ borderwidth = value; } } private string cssclass; public string CssClass { get{ return cssclass; } set{ cssclass=value; } } private string onclientactivate; public string OnClientActivate { get{ return onclientactivate; } set{ onclientactivate = value; } } private string onclientafterprint; public string OnClientAfterPrint { get{ return onclientafterprint; } set{ onclientafterprint = value; } } private string onclientbeforeactivate ; public string OnClientBeforeActivate { get{ return onclientbeforeactivate; } set{ onclientbeforeactivate = value; } } private string onclientbeforecut; public string OnClientBeforeCut { get{ return onclientbeforecut; } set{ onclientbeforecut = value; } } private string onclientbeforedeactivate; public string OnClientBeforeDeactivate { get{ return onclientbeforedeactivate; } set{ onclientbeforedeactivate = value; } } private string onclientbeforeeditfocus; public string OnClientBeforeEditFocus { get{ return onclientbeforeeditfocus; } set{ onclientbeforeeditfocus = value; } } private string onclientbeforepaste; public string OnClientBeforePaste { get{ return onclientbeforepaste; } set{ onclientbeforepaste = value; } } private string onclientbeforeprint; public string OnClientBeforePrint { get{ return onclientbeforeprint; } set{ onclientbeforeprint = value; } } private string onclientbeforeunload; public string OnClientBeforeUnload { get{ return onclientbeforeunload; } set{ onclientbeforeunload = value; } } private string onclientcontrolselect; public string OnClientControlSelect { get{ return onclientcontrolselect; } set{ onclientcontrolselect = value; } } private string onclientcut; public string OnClientCut { get{ return onclientcut; } set{ onclientcut = value; } } private string onclientdblclick; public string OnClientDblClick { get{ return onclientdblclick; } set{ onclientdblclick = value; } } private string onclientdeactivate; public string OnClientDeactivate { get{ return onclientdeactivate; } set{ onclientdeactivate = value; } } private string onclientdrag; public string OnClientDrag { get{ return onclientdrag; } set{ onclientdrag = value; } } private string onclientdragend; public string OnClientDragEnd { get{ return onclientdragend; } set{ onclientdragend = value; } } private string onclientdragenter; public string OnClientDragEnter { get{ return onclientdragenter; } set{ onclientdragenter = value; } } private string onclientdragleave; public string OnClientDragLeave { get{ return onclientdragleave; } set{ onclientdragleave = value; } } private string onclientdragover; public string OnClientDragOver { get{ return onclientdragover; } set{ onclientdragover = value; } } private string onclientdragstart; public string OnClientDragStart { get{ return onclientdragstart; } set{ onclientdragstart = value; } } private string onclientdrop; public string OnClientDrop { get{ return onclientdrop; } set{ onclientdrop = value; } } private string onclientfilterchange; public string OnClientFilterChange { get{ return onclientfilterchange; } set{ onclientfilterchange = value; } } private string onclientfocusin; public string OnClientFocusIn { get{ return onclientfocusin; } set{ onclientfocusin = value; } } private string onclientfocusout; public string OnClientFocusOut { get{ return onclientfocusout; } set{ onclientfocusout = value; } } private string onclientkeydown; public string OnClientKeyDown { get{ return onclientkeydown; } set{ onclientkeydown = value; } } private string onclientkeypress; public string OnClientKeyPress { get{ return onclientkeypress; } set{ onclientkeypress = value; } } private string onclientkeyup; public string OnClientKeyUp { get{ return onclientkeyup; } set{ onclientkeyup = value; } } private string onclientlosecapture; public string OnClientLoseCapture { get{ return onclientlosecapture; } set{ onclientlosecapture = value; } } private string onclientmousedown; public string OnClientMouseDown { get{ return onclientmousedown; } set{ onclientmousedown = value; } } private string onclientmouseenter; public string OnClientMouseEnter { get{ return onclientmouseenter; } set{ onclientmouseenter = value; } } private string onclientmouseleave; public string OnClientMouseLeave { get{ return onclientmouseleave; } set{ onclientmouseleave = value; } } private string onclientmousemove; public string OnClientMouseMove { get{ return onclientmousemove; } set{ onclientmousemove = value; } } private string onclientmouseout; public string OnClientMouseOut { get{ return onclientmouseout; } set{ onclientmouseout = value; } } private string onclientmouseover; public string OnClientMouseOver { get{ return onclientmouseover; } set{ onclientmouseover = value; } } private string onclientmouseup; public string OnClientMouseUp { get{ return onclientmouseup; } set{ onclientmouseup = value; } } private string onclientmousewheel; public string OnClientMouseWheel { get{ return onclientmousewheel; } set{ onclientmousewheel = value; } } private string onclientmove; public string OnClientMove { get{ return onclientmove; } set{ onclientmove = value; } } private string onclientmoveend; public string OnClientMoveEnd { get{ return onclientmoveend; } set{ onclientmoveend = value; } } private string onclientmovestart; public string OnClientMoveStart { get{ return onclientmovestart; } set{ onclientmovestart = value; } } private string onclientpaste; public string OnClientPaste { get{ return onclientpaste; } set{ onclientpaste = value; } } private string onclientpropertychange; public string OnClientPropertyChange { get{ return onclientpropertychange; } set{ onclientpropertychange = value; } } private string onclientreadystatechange; public string OnClientReadyStateChange { get{ return onclientreadystatechange; } set{ onclientreadystatechange = value; } } private string onclientresizeend; public string OnClientResizeEnd { get{ return onclientresizeend; } set{ onclientresizeend = value; } } private string onclientresizestart; public string OnClientResizeStart { get{ return onclientresizestart; } set{ onclientresizestart = value; } } private string onclientscroll; public string OnClientScroll { get{ return onclientscroll; } set{ onclientscroll = value; } } private string onclientselect; public string OnClientSelect { get{ return onclientselect; } set{ onclientselect = value; } } private string onclientselectstart; public string OnClientSelectStart { get{ return onclientselectstart; } set{ onclientselectstart = value; } } private string onclientunload; public string OnClientUnload { get{ return onclientunload; } set{ onclientunload = value; } } protected override void Render( HtmlTextWriter output ) { if( null!=ALinkColor ) output.AddAttribute( "alink",ALinkColor ); if( null!=LinkColor ) output.AddAttribute( "link",LinkColor ); if( null!=VLinkColor ) output.AddAttribute( "vlink",VLinkColor ); if( null!=TextColor ) output.AddAttribute( "text",TextColor ); if( null!=BackgroundColor ) output.AddAttribute( "bgcolor",BackgroundColor ); if( null!=TopMargin ) output.AddAttribute( "topmargin",TopMargin ); if( null!=BottomMargin ) output.AddAttribute( "bottommargin",BottomMargin ); if( null!=LeftMargin ) output.AddAttribute( "leftmargin",LeftMargin ); if( null!=RightMargin ) output.AddAttribute( "rightmargin",RightMargin ); if( null!=MarginHeight ) output.AddAttribute( "marginheight",MarginHeight ); if( null!=MarginWidth ) output.AddAttribute( "marginwidth",MarginWidth ); if( null!=OnClientContextMenu ) output.AddAttribute( "oncontextmenu",OnClientContextMenu ); if( null!=OnClientLoad ) output.AddAttribute( "onload",OnClientLoad ); if( null!=OnClientActivate ) output.AddAttribute( "onactive", OnClientActivate ); if( null!=OnClientAfterPrint ) output.AddAttribute( "onafterprint" ,OnClientAfterPrint ); if( null!=OnClientBeforeActivate ) output.AddAttribute( "onbeforeupdate",OnClientBeforeActivate ); if( null!=OnClientBeforeCut ) output.AddAttribute( "onbeforecut",OnClientBeforeCut ); if( null!=OnClientBeforeDeactivate ) output.AddAttribute( "onbeforedeactivate", OnClientBeforeDeactivate ); if( null!=OnClientBeforeEditFocus ) output.AddAttribute( "onbeforeeditfocus",OnClientBeforeEditFocus ); if( null!=OnClientBeforePaste ) output.AddAttribute( "onbeforepaste", OnClientBeforePaste ); if( null!=OnClientBeforePrint ) output.AddAttribute( "onbeforeprint", OnClientBeforePrint ); if( null!=OnClientBeforeUnload ) output.AddAttribute( "onbeforeunload", OnClientBeforeUnload ); if( null!=OnClientControlSelect ) output.AddAttribute( "oncontrolselect", OnClientControlSelect ); if( null!=OnClientCut ) output.AddAttribute( "oncut", OnClientCut ); if( null!=OnClientDblClick ) output.AddAttribute( "ondblclick", OnClientDblClick ); if( null!=OnClientDeactivate ) output.AddAttribute( "ondeactivate", OnClientDeactivate ); if( null!=OnClientDrag ) output.AddAttribute( "ondrag", OnClientDrag ); if( null!=OnClientDragEnd ) output.AddAttribute( "ondragend", OnClientDragEnd ); if( null!=OnClientDragEnter ) output.AddAttribute( "ondragenter", OnClientDragEnter ); if( null!=OnClientDragLeave ) output.AddAttribute( "ondragleave", OnClientDragLeave ); if( null!=OnClientDragOver ) output.AddAttribute( "ondragover", OnClientDragOver ); if( null!=OnClientDragStart ) output.AddAttribute( "ondragstart", OnClientDragStart ); if( null!=OnClientDrop ) output.AddAttribute( "ondrop", OnClientDrop ); if( null!=OnClientFilterChange ) output.AddAttribute( "onfilterchange", OnClientFilterChange ); if( null!=OnClientFocusIn ) output.AddAttribute( "onfocusin", OnClientFocusIn ); if( null!=OnClientFocusOut ) output.AddAttribute( "onfocusout", OnClientFocusOut ); if( null!=OnClientKeyDown ) output.AddAttribute( "onkeydown", OnClientKeyDown ); if( null!=OnClientKeyPress ) output.AddAttribute( "onkeypress", OnClientKeyPress ); if( null!=OnClientKeyUp ) output.AddAttribute( "onkeyup", OnClientKeyUp ); if( null!=OnClientLoseCapture ) output.AddAttribute( "onlosecapture", OnClientMouseDown ); if( null!=OnClientMouseDown ) output.AddAttribute( "onmousedown", OnClientMouseDown ); if( null!=OnClientMouseEnter ) output.AddAttribute( "onmouseenter", OnClientMouseEnter ); if( null!=OnClientMouseLeave ) output.AddAttribute( "onmouseleave", OnClientMouseLeave ); if( null!=OnClientMouseMove ) output.AddAttribute( "onmousemove", OnClientMouseMove ); if( null!=OnClientMouseOut ) output.AddAttribute( "onmouseout", OnClientMouseOut ); if( null!=OnClientMouseOver ) output.AddAttribute( "onmouseover", OnClientMouseOver ); if( null!=OnClientMouseUp ) output.AddAttribute( "onmouseup", OnClientMouseUp ); if( null!=OnClientMouseWheel ) output.AddAttribute( "onmousewheel", OnClientMouseWheel ); if( null!=OnClientMove ) output.AddAttribute( "onmove", OnClientMove ); if( null!=OnClientMoveEnd ) output.AddAttribute( "onmoveend", OnClientMoveEnd ); if( null!=OnClientMoveStart ) output.AddAttribute( "onmovestart", OnClientMoveStart ); if( null!=OnClientPaste ) output.AddAttribute( "onpaste", OnClientPaste ); if( null!=OnClientPropertyChange ) output.AddAttribute( "onpropertychange", OnClientPropertyChange ); if( null!=OnClientReadyStateChange ) output.AddAttribute( "onreadystatechange", OnClientReadyStateChange ); if( null!=OnClientResizeEnd ) output.AddAttribute( "onresizeend", OnClientResizeEnd ); if( null!=OnClientResizeStart ) output.AddAttribute( "onresizestart", OnClientResizeStart ); if( null!=OnClientScroll ) output.AddAttribute( "onscroll", OnClientScroll ); if( null!=OnClientSelect ) output.AddAttribute( "onselect", OnClientSelect ); if( null!=OnClientSelectStart ) output.AddAttribute( "onselectstart", OnClientSelectStart ); if( null!=OnClientUnload ) output.AddAttribute( "onunload", OnClientUnload ); } public static PageStyleControl GetDefault() { PageStyleControl control = new PageStyleControl(); //TODO: Build other defaults in. return control; } } public class UddiControl : System.Web.UI.UserControl { public bool IsDownlevel { get { return UddiBrowser.IsDownlevel; } } public virtual bool EditMode { get { return ((UddiPage)Page).EditMode; } } public string Root { get { return ((UddiPage)Page).Root; } } public virtual void CancelEditMode() { ((UddiPage)Page).CancelEditMode(); } public virtual void SetEditMode() { ((UddiPage)Page).SetEditMode(); } } public class UddiButton : System.Web.UI.WebControls.Button { protected bool editModeDisable = false; protected bool focus = false; public bool EditModeDisable { get { return editModeDisable; } set { editModeDisable = value; } } public bool Focus { get { return focus; } set { focus = value; } } public new string Text { get { return base.Text; } set { // // Check to see if the button text needs to be localized. We // use strings of the form [[ID]] to indicate localization is // needed. // if( null != value && value.StartsWith( "[[" ) && value.EndsWith( "]]" ) ) base.Text = Localization.GetString( value.Substring( 2, value.Length - 4 ) ); else base.Text = value; } } protected override void Render( HtmlTextWriter output ) { bool enabled = Enabled; // // Check to see if we need to disable this control. We do // this if we are in edit mode and the control is set to // autodisable. // if( EditModeDisable && ((UddiPage)Page).EditMode ) Enabled = false; // // Only render the control if it is enabled, or we're on an IE // browser. Netscape and other browsers do not support the // enabled attribute, so we have to prevent the control from // rendering on these browsers. // if( Enabled || UddiBrowser.IsIE5 ) { if( Focus ) { Page.RegisterStartupScript( "SetFocus", "" ); } base.Render( output ); } Enabled = enabled; } } public class UddiCheckBox : System.Web.UI.WebControls.CheckBox { protected bool editModeDisable = false; protected bool focus = false; public bool EditModeDisable { get { return editModeDisable; } set { editModeDisable = value; } } public bool Focus { get { return focus; } set { focus = value; } } public override string Text { get { return base.Text; } set { // // Check to see if the button text needs to be localized. We // use strings of the form [[ID]] to indicate localization is // needed. // if( null != value && value.StartsWith( "[[" ) && value.EndsWith( "]]" ) ) base.Text = Localization.GetString( value.Substring( 2, value.Length - 4 ) ); else base.Text = value; } } protected override void Render( HtmlTextWriter output ) { bool enabled = Enabled; // // Check to see if we need to disable this control. We do // this if we are in edit mode and the control is set to // autodisable. // if( EditModeDisable && ((UddiPage)Page).EditMode ) Enabled = false; // // Only render the control if it is enabled, or we're on an IE // browser. Netscape and other browsers do not support the // enabled attribute, so we have to prevent the control from // rendering on these browsers. // if( Enabled || UddiBrowser.IsIE5 ) { if( Focus ) { Page.RegisterStartupScript( "SetFocus", "" ); } base.Render( output ); } Enabled = enabled; } } public class UddiLabel : System.Web.UI.WebControls.Label { protected override void Render( HtmlTextWriter output ) { // // Check to see if the label text needs to be localized. We // use strings of the form [[ID]] to indicate localization is // needed. // string text = base.Text; if( null != text && text.StartsWith( "[[" ) && text.EndsWith( "]]" ) ) { text = Localization.GetString( text.Substring( 2, text.Length - 4 ) ); } else { text = HttpUtility.HtmlEncode( text ); if( null != text ) text = text.Replace( "\n", "
" ).Replace( " ", "  " ); } base.AddAttributesToRender( output ); output.RenderBeginTag( HtmlTextWriterTag.Span ); output.Write( text ); output.RenderEndTag(); } } public class UddiTextBox : System.Web.UI.WebControls.TextBox, IPostBackEventHandler { protected bool editModeDisable = false; protected bool selected = false; protected bool focus = false; public bool Selected { get { return selected; } set { selected = value; } } public override string Text { get { // // BUG: 759949. We must strip invalid characters from the strings. // if( null != base.Text ) return Utility.XmlEncode( base.Text ); else return base.Text; } set { base.Text = value; } } public bool Focus { get { return focus; } set { focus = value; } } public bool EditModeDisable { get { return editModeDisable; } set { editModeDisable = value; } } public event EventHandler EnterKeyPressed; void IPostBackEventHandler.RaisePostBackEvent( string eventArgument ) { switch( eventArgument ) { case "enterkey": if( null != EnterKeyPressed ) EnterKeyPressed( this, new EventArgs() ); break; } } protected override void Render( HtmlTextWriter output ) { if( EditModeDisable && ((UddiPage)Page).EditMode ) { output.AddAttribute(HtmlTextWriterAttribute.Disabled, null ); } else { if( Selected ) { Page.RegisterStartupScript( "Select", "" ); } else if( Focus ) { Page.RegisterStartupScript( "SetFocus", "" ); } if( null != EnterKeyPressed ) output.AddAttribute( "onkeypress", "if( 13 == event.keyCode ) " + Page.GetPostBackEventReference( this, "enterkey" ) ); } base.Render( output ); } } public class UddiDataGrid : System.Web.UI.WebControls.DataGrid, IPostBackEventHandler { void IPostBackEventHandler.RaisePostBackEvent( string eventArgument ) { int page = Convert.ToInt32( eventArgument ); OnPageIndexChanged( new System.Web.UI.WebControls.DataGridPageChangedEventArgs( this, page ) ); } protected override void Render( HtmlTextWriter output ) { bool paging = AllowPaging; AllowPaging = false; base.Render( output ); if( paging ) { // TODO: Localize!!! output.AddAttribute( HtmlTextWriterAttribute.Class, "pagingFooter" ); output.RenderBeginTag( HtmlTextWriterTag.Span ); output.Write( String.Format( "Page {0} of {1}: ", CurrentPageIndex + 1, PageCount ) ); int startPage = ( CurrentPageIndex / PagerStyle.PageButtonCount ) * PagerStyle.PageButtonCount; int stopPage = Math.Min( startPage + PagerStyle.PageButtonCount - 1, PageCount - 1 ); for( int page = startPage; page <= stopPage; page ++ ) { if( page == CurrentPageIndex ) { output.AddAttribute( HtmlTextWriterAttribute.Class, "pageSelected" ); output.RenderBeginTag( HtmlTextWriterTag.Span ); output.Write( " " + ( page + 1 ) + " " ); output.RenderEndTag(); } else { output.AddAttribute( HtmlTextWriterAttribute.Class, "page" ); output.AddAttribute( HtmlTextWriterAttribute.Href, "javascript:" + Page.GetPostBackEventReference( this, page.ToString() ) ); output.RenderBeginTag( HtmlTextWriterTag.A ); output.Write( " " + ( page + 1 ) + " " ); output.RenderEndTag(); } } output.RenderEndTag(); } } } public class HyperLinkManager { public static string GetSecureHyperLink( string pagename ) { string url = ""; bool isAbsolute = false; int port = Config.GetInt( "Web.HttpsPort",UDDI.Constants.Web.HttpsPort ); // // if // the current context is not secure, and we require HTTPS, // - OR - // The Web.HttpsPort is something other than the Default and the current port is not what is configured // // we will need to generate an absolute path. // isAbsolute = ( ( !HttpContext.Current.Request.IsSecureConnection && 1==Config.GetInt( "Security.HTTPS", UDDI.Constants.Security.HTTPS ) ) || ( UDDI.Constants.Web.HttpsPort!=port && HttpContext.Current.Request.Url.Port!=port ) ); if( isAbsolute ) { url = GetUrlStart( true ); } url+=GetFullFilePath( pagename ); return url; } public static string GetHyperLink( string pagename ) { return GetHyperLink( pagename, false ); } public static string GetHyperLink( string pagename, bool absolute ) { string url = ""; if( absolute ) { url = GetUrlStart( HttpContext.Current.Request.IsSecureConnection ); } url += GetFullFilePath( pagename ); return url; } public static string GetNonSecureHyperLink( string pagename ) { string url = ""; int port = Config.GetInt( "Web.HttpPort",UDDI.Constants.Web.HttpPort ); bool isAbsolute = false; // // if the current context is secure, // - or - // the Web.HttpPort is something other than default, and current port is not what is configured // we will need to generate an absolute path. // isAbsolute = HttpContext.Current.Request.IsSecureConnection || ( UDDI.Constants.Web.HttpPort!=port && HttpContext.Current.Request.Url.Port!=port ); if( isAbsolute ) { url = GetUrlStart( false ); } url += GetFullFilePath( pagename ); return url; } private static string GetUrlStart( bool secure ) { string url = ""; int port = 0; if( secure )//build a secure url { url = "https://" + HttpContext.Current.Request.Url.Host; port = Config.GetInt( "Web.HttpsPort",UDDI.Constants.Web.HttpsPort ); if( port!=UDDI.Constants.Web.HttpsPort ) url += ":" + port.ToString(); } else//build no secure url { url = "http://" + HttpContext.Current.Request.Url.Host; port = Config.GetInt( "Web.HttpPort",UDDI.Constants.Web.HttpPort ); if( port!=UDDI.Constants.Web.HttpPort ) url += ":" + port.ToString(); } return url; } private static string GetFullFilePath( string file ) { string url = ( ( "/"==HttpContext.Current.Request.ApplicationPath) ? "" : HttpContext.Current.Request.ApplicationPath ); url += file ; return url; } } public enum UrlFlags { Https = 0x0001, Require = 0x0002, Absolute = 0x0004, External = 0x0008 } public enum UrlOptions { PreferHttp = 0x0000, PreferHttps = 0x0001, RequireHttp = 0x0002, RequireHttps = 0x0003, PreferHttpAbsolute = 0x0004, PreferHttpsAbsolute = 0x0005, RequireHttpAbsolute = 0x0006, RequireHttpsAbsolute = 0x0007, External = 0x0008 } }