rendered paste bodyusing System;
using System.Collections;
using System.Configuration;
using System.Web;
using System.Web.UI;
using BulletinX.Components;
namespace BulletinX.Controls
{
[PersistChildren(true), ParseChildren(false)]
public class Head : Control
{
#region Private Members....
public static readonly string titleKey = ConfigurationManager.AppSettings["SiteTitle"];
public static readonly string faviconKey = ConfigurationManager.AppSettings["Favicon"];
public static string styleFormat = "<link rel=\"stylesheet\" href=\"{0}\" type=\"text/css\" media=\"{1}\" />";
#endregion
#region Override Methods....
protected override void Render(HtmlTextWriter writer)
{
writer.Write( "" );
writer.Write( "<head>\n" );
RenderTitle( writer );
RenderFavicon( writer );
RenderStyleSheets( writer );
writer.Write( "</head>" );
}
#endregion
#region Virtual Methods....
protected virtual void RenderTitle(HtmlTextWriter writer)
{
string title = titleKey;
if (title == null)
throw new ApplicationException( "Site Title is blank please enter a title in the web.config" );
writer.Write( "\t<title>{0}</title>\n", title );
}
protected virtual void RenderFavicon(HtmlTextWriter writer)
{
writer.Write("\t<link rel=\"shortcut icon\" type=\"image/ico\" href=\"{0}\"/>\n", faviconKey);
}
protected virtual void RenderStyleSheets(HtmlTextWriter writer)
{
RenderStyleSheets( writer, StyleFlags.First );
RenderStyleSheets( writer, StyleFlags.Unknown );
RenderStyleSheets( writer, StyleFlags.Last );
}
protected virtual void RenderStyleSheets(HtmlTextWriter writer, StyleFlags flags)
{
Queue queue = (Queue)Context.Items[ styleFormat ];
if(queue != null && queue.Count > 0)
{
IEnumerator ie = queue.GetEnumerator( );
while(ie.MoveNext())
{
StyleQueue si = (StyleQueue)ie.Current;
if (si.position == flags)
writer.WriteLine( si.styleTag );
}
}
}
#endregion
#region Static Methods....
public static void AddStyle(string url, string media)
{
AddStyle( url, media, StyleFlags.Unknown );
}
public static void AddStyle(string url, string media, StyleFlags flags)
{
HttpContext context = HttpContext.Current;
Queue styleQueue = (Queue)context.Items[ styleFormat ];
if(styleQueue == null)
{
styleQueue = new Queue( );
context.Items[ styleFormat ] = styleQueue;
}
styleQueue.Enqueue( new StyleQueue( string.Format( styleFormat, url, media ), flags ) );
}
#endregion
}
}