protected override void RenderContents(HtmlTextWriter writer)
{
if (writer == null)
{
throw new ArgumentNullException("writer");
}
//
// Emit a script that emit version info and checks for updates.
//
writer.WriteLine(@"
<script type='text/javascript' language='JavaScript'>
function onCheckForUpdate(sender) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.language = 'JavaScript';
script.src = 'http://elmah.googlecode.com/svn/www/update.js?__=' + (new Date()).getTime();
document.getElementsByTagName('head')[0].appendChild(script);
return false;
}
var ELMAH = {
info : {
version : '" + GetVersion() + @"',
fileVersion : '" + GetFileVersion() + @"',
type : '" + Build.TypeLowercase + @"',
status : '" + Build.Status + @"',
framework : '" + Build.Framework + @"',
imageRuntime: '" + Build.ImageRuntimeVersion + @"'
}
};
</script>");
//
// Title
//
writer.AddAttribute(HtmlTextWriterAttribute.Id, "PageTitle");
writer.RenderBeginTag(HtmlTextWriterTag.H1);
writer.Write(PageTitle);
writer.RenderEndTag(); // </h1>
writer.WriteLine();
//
// Speed Bar
//
SpeedBar.Render(writer,
SpeedBar.Home.Format(BasePageName),
SpeedBar.Help,
SpeedBar.About.Format(BasePageName));
//
// Content...
//
writer.RenderBeginTag(HtmlTextWriterTag.P);
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, "return onCheckForUpdate(this)");
writer.AddAttribute(HtmlTextWriterAttribute.Title, "Checks if your ELMAH version is up to date (requires Internet connection)");
writer.RenderBeginTag(HtmlTextWriterTag.Button);
writer.Write("Check for Update");
writer.RenderEndTag(); // </button>
writer.RenderEndTag(); // </p>
SccStamp[] stamps = SccStamp.FindAll(typeof(ErrorLog).Assembly);
SccStamp.SortByRevision(stamps, /* descending */ true);
writer.RenderBeginTag(HtmlTextWriterTag.P);
writer.Write("This <strong>{0}</strong> ", Build.TypeLowercase);
if (stamps.Length > 0)
{
writer.Write("(SCC #{0}) ", stamps[0].Revision.ToString("N0"));
}
writer.Write("build was compiled from the following sources for CLR {0}:", Build.ImageRuntimeVersion);
writer.RenderEndTag(); // </p>
//
// Stamps...
//
writer.RenderBeginTag(HtmlTextWriterTag.Ul);
foreach (SccStamp stamp in stamps)
{
writer.RenderBeginTag(HtmlTextWriterTag.Li);
writer.RenderBeginTag(HtmlTextWriterTag.Code);
Server.HtmlEncode(stamp.Id, writer);
writer.RenderEndTag(); // </code>
writer.RenderEndTag(); // </li>
}
writer.RenderEndTag(); // </ul>
}