﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Thoughts from Scott</title>
    <description>Random thoughts, musings and ideas as I travel through this thing called life.</description>
    <link>http://www.scottallender.com/Blog/tabid/72/BlogId/1/Default.aspx</link>
    <language>en-US</language>
    <managingEditor>scott@n3bu1a.com</managingEditor>
    <webMaster>srallender@gmail.com</webMaster>
    <pubDate>Thu, 11 Mar 2010 06:37:35 GMT</pubDate>
    <lastBuildDate>Thu, 11 Mar 2010 06:37:35 GMT</lastBuildDate>
    <docs>http://backend.userland.com/rss</docs>
    <generator>Blog RSS Generator Version 3.5.1.19887</generator>
    <item>
      <title>C4C Recap</title>
      <description>&lt;p&gt; I've been meaning to write this post since Sunday evening, but things just kept getting in my way. This past weekend (10/16 – 10/18) I had the privilege to volunteer at &lt;a target="_blank" href="http://www.c4c-stl.org"&gt;Coders for Charities (C4C)&lt;/a&gt;. Like I said in a previous post, I viewed this as an opportunity to use some skills and experience that I have built up over time to a community that has given me loads in return.&lt;/p&gt;
&lt;p&gt;C4C (at least the way it was set up this year) was a 72 hour event where the geeks of St. Louis got together and cranked out some code for much deserving charities. This year, the majority of the participating charities needed website work. As a matter of fact, the majority of the site work was done using either &lt;a target="_blank" href="http://www.sitefinity.com/"&gt;SiteFinity&lt;/a&gt; and &lt;a target="_blank" href="http://www.dotnetnuke.com"&gt;DotNetNuke&lt;/a&gt;.&lt;/p&gt;&lt;a href=http://www.scottallender.com/Blog/tabid/72/EntryId/58/C4C-Recap.aspx&gt;More...&lt;/a&gt;</description>
      <link>http://www.scottallender.com/Blog/tabid/72/EntryId/58/C4C-Recap.aspx</link>
      <category domain="http://www.scottallender.com/blog/tabid/72/blogid/3/default.aspx">Development/Virtualization</category>
      <author>scott@n3bu1a.com</author>
      <comments>http://www.scottallender.com/Blog/tabid/72/EntryId/58/C4C-Recap.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.scottallender.com/Blog/tabid/72/EntryId/58/C4C-Recap.aspx</guid>
      <pubDate>Sat, 24 Oct 2009 12:41:00 GMT</pubDate>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.scottallender.com/DesktopModules/Blog/Trackback.aspx?id=58</trackback:ping>
    </item>
    <item>
      <title>Getting the Browser to Recognize RSS Feeds</title>
      <description>&lt;p&gt;So very recently, I redesigned my site, which I now like, but will probably change it again in two months (it's my site thank you very much).  When I redesigned my site, I left off the syndication button, which was the primary way to subscribe to my blog.  This caused someone to reach out to me because they could not subscribe.&lt;/p&gt;
&lt;p&gt;My site is powered by DotNetNuke, and I love this application/platform.  It's flexible, (depending on what's installed) it's light, and it's easy to use (once you get used to a few things).  One of the very few things that has irked me about DotNetNuke though, is if you syndicate a module (like a blog) the browser doesn't pick up on it.  The majority of all the browsers now support Live Bookmarks, and the little RSS icon is one of the first things I look for when I come across a new feed.&lt;/p&gt;&lt;a href=http://www.scottallender.com/Blog/tabid/72/EntryId/57/Getting-the-Browser-to-Recognize-RSS-Feeds.aspx&gt;More...&lt;/a&gt;</description>
      <link>http://www.scottallender.com/Blog/tabid/72/EntryId/57/Getting-the-Browser-to-Recognize-RSS-Feeds.aspx</link>
      <category domain="http://www.scottallender.com/blog/tabid/72/blogid/3/default.aspx">Development/Virtualization</category>
      <author>scott@n3bu1a.com</author>
      <comments>http://www.scottallender.com/Blog/tabid/72/EntryId/57/Getting-the-Browser-to-Recognize-RSS-Feeds.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.scottallender.com/Blog/tabid/72/EntryId/57/Getting-the-Browser-to-Recognize-RSS-Feeds.aspx</guid>
      <pubDate>Tue, 13 Oct 2009 02:49:00 GMT</pubDate>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://www.scottallender.com/DesktopModules/Blog/Trackback.aspx?id=57</trackback:ping>
    </item>
    <item>
      <title>Coding 4 Charity</title>
      <description>&lt;p&gt;Real quick update on doing something for a really good cause.&lt;/p&gt;&lt;a href=http://www.scottallender.com/Blog/tabid/72/EntryId/56/Coding-4-Charity.aspx&gt;More...&lt;/a&gt;</description>
      <link>http://www.scottallender.com/Blog/tabid/72/EntryId/56/Coding-4-Charity.aspx</link>
      <category domain="http://www.scottallender.com/blog/tabid/72/blogid/6/default.aspx">Personal</category>
      <comments>http://www.scottallender.com/Blog/tabid/72/EntryId/56/Coding-4-Charity.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.scottallender.com/Blog/tabid/72/EntryId/56/Coding-4-Charity.aspx</guid>
      <pubDate>Tue, 29 Sep 2009 02:43:00 GMT</pubDate>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.scottallender.com/DesktopModules/Blog/Trackback.aspx?id=56</trackback:ping>
    </item>
    <item>
      <title>Social Media Class in Maryland Heights</title>
      <description>&lt;p&gt; A brief look at my first foray into teaching a class in my local community.  It was quite fun if you don't want to read the post.  :-)&lt;/p&gt;&lt;a href=http://www.scottallender.com/Blog/tabid/72/EntryId/55/Social-Media-Class-in-Maryland-Heights.aspx&gt;More...&lt;/a&gt;</description>
      <link>http://www.scottallender.com/Blog/tabid/72/EntryId/55/Social-Media-Class-in-Maryland-Heights.aspx</link>
      <category domain="http://www.scottallender.com/blog/tabid/72/blogid/5/default.aspx">Maryland Heights</category>
      <author>scott@n3bu1a.com</author>
      <comments>http://www.scottallender.com/Blog/tabid/72/EntryId/55/Social-Media-Class-in-Maryland-Heights.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.scottallender.com/Blog/tabid/72/EntryId/55/Social-Media-Class-in-Maryland-Heights.aspx</guid>
      <pubDate>Thu, 24 Sep 2009 02:01:56 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.scottallender.com/DesktopModules/Blog/Trackback.aspx?id=55</trackback:ping>
    </item>
    <item>
      <title>St. Louis Day of .Net</title>
      <description>&lt;p&gt;A quick hit of my DotNetNuke presentation at St. Louis's Day of .Net.&lt;/p&gt;&lt;a href=http://www.scottallender.com/Blog/tabid/72/EntryId/53/St-Louis-Day-of-Net.aspx&gt;More...&lt;/a&gt;</description>
      <link>http://www.scottallender.com/Blog/tabid/72/EntryId/53/St-Louis-Day-of-Net.aspx</link>
      <category domain="http://www.scottallender.com/blog/tabid/72/blogid/3/default.aspx">Development/Virtualization</category>
      <author>scott@n3bu1a.com</author>
      <comments>http://www.scottallender.com/Blog/tabid/72/EntryId/53/St-Louis-Day-of-Net.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.scottallender.com/Blog/tabid/72/EntryId/53/St-Louis-Day-of-Net.aspx</guid>
      <pubDate>Wed, 02 Sep 2009 05:41:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.scottallender.com/DesktopModules/Blog/Trackback.aspx?id=53</trackback:ping>
    </item>
    <item>
      <title>MarketSTL Recap</title>
      <description>&lt;p&gt;Quick review of what I covered during my MarketSTL presentation on using Social Media Networks in Business.&lt;/p&gt;&lt;a href=http://www.scottallender.com/Blog/tabid/72/EntryId/52/MarketSTL-Recap.aspx&gt;More...&lt;/a&gt;</description>
      <link>http://www.scottallender.com/Blog/tabid/72/EntryId/52/MarketSTL-Recap.aspx</link>
      <category domain="http://www.scottallender.com/blog/tabid/72/blogid/7/default.aspx">SEO Concepts</category>
      <author>scott@n3bu1a. com</author>
      <comments>http://www.scottallender.com/Blog/tabid/72/EntryId/52/MarketSTL-Recap.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.scottallender.com/Blog/tabid/72/EntryId/52/MarketSTL-Recap.aspx</guid>
      <pubDate>Wed, 02 Sep 2009 05:22:00 GMT</pubDate>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.scottallender.com/DesktopModules/Blog/Trackback.aspx?id=52</trackback:ping>
    </item>
    <item>
      <title>Oooh!  SPAM Email!</title>
      <description>&lt;p&gt;Let me start off by saying that I love Gmail's Spam Filter. In the words of Tony the Tiger, "It's greeeaaat!" That said, I got my first piece of spam today that somehow made it through Gmail's filter. &lt;/p&gt;&lt;p&gt;Here is the content of the email: &lt;/p&gt;&lt;div&gt;&lt;table style="border-collapse:collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="width:448px"/&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr style="height: 57px"&gt;&lt;td vAlign="middle"&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:MS Mincho; font-size:13pt"&gt;新しいメールアドレスをお知らせします&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-size:10pt"&gt;&lt;span style="color:black"&gt;&lt;span style="font-family:MS Mincho"&gt;新しいメールアドレス：&lt;/span&gt;&lt;span style="font-family:Arial"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial"&gt;&lt;span style="color:#5797b0; text-decoration:underline"&gt;&lt;strong&gt;mr_isaac_caleb1200@yahoo.co.jp&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:black"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:green"&gt;I am isaac caleb bank manager of BOA Bank in Burkina faso.I would like you to indicate your interest to receive the transfer of 10.5M Dollars.I will like you to stand as the next of kin to my late Descease customer whose account is presently dormant,for claim&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yours faithfully,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;mr isaac caleb&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:black"&gt;&lt;br /&gt;&lt;br /&gt;- &lt;/span&gt;&lt;span style="color:green"&gt;Mr Isaa a Caleb&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Times New Roman; font-size:12pt"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Does this sound familiar? To me it sounds like the Nigerian schemes that went through the world a few years back. I only think this because Gmail's spam filter made sure that crap never reached me. &lt;/p&gt;&lt;p&gt;Anyway, in case anyone is wondering I regard this as spam because: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;If I'm a bank employee, I'm not sending my bank related emails through Yahoo! &lt;/li&gt;&lt;li&gt;If I'm going to send email from a Japanese address, why am I going to use an Anglo name? &lt;/li&gt;&lt;li&gt;Most importantly… WHY IS SOMEONE I DON'T KNOW OFFERING ME A LARGE AMOUNT OF MONEY???!! &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Anyway, this email has now my made my day. What's your favorite spam messages?&lt;/p&gt;</description>
      <link>http://www.scottallender.com/blog/tabid/72/EntryId/51/Oooh-SPAM-Email.aspx</link>
      <author>scott@n3bu1a.com</author>
      <comments>http://www.scottallender.com/blog/tabid/72/EntryId/51/Oooh-SPAM-Email.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.scottallender.com/blog/tabid/72/EntryId/51/Oooh-SPAM-Email.aspx</guid>
      <pubDate>Mon, 18 May 2009 15:37:42 GMT</pubDate>
      <slash:comments>5</slash:comments>
      <trackback:ping>http://www.scottallender.com/DesktopModules/Blog/Trackback.aspx?id=51</trackback:ping>
    </item>
    <item>
      <title>Social Media Thoughts</title>
      <description>&lt;p&gt; &lt;/p&gt;&lt;a href=http://www.scottallender.com/Blog/tabid/72/EntryId/50/Social-Media-Thoughts.aspx&gt;More...&lt;/a&gt;</description>
      <link>http://www.scottallender.com/Blog/tabid/72/EntryId/50/Social-Media-Thoughts.aspx</link>
      <category domain="http://www.scottallender.com/blog/tabid/72/blogid/7/default.aspx">SEO Concepts</category>
      <author>scott@n3bu1a. com</author>
      <comments>http://www.scottallender.com/Blog/tabid/72/EntryId/50/Social-Media-Thoughts.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.scottallender.com/Blog/tabid/72/EntryId/50/Social-Media-Thoughts.aspx</guid>
      <pubDate>Fri, 08 May 2009 04:50:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.scottallender.com/DesktopModules/Blog/Trackback.aspx?id=50</trackback:ping>
    </item>
    <item>
      <title>Overriding the Base Skin Object in DotNetNuke</title>
      <description>&lt;p&gt;Today, I was presented with an interesting problem.  How can you use the same content for two different website, but account for some very minor changes in your DotNetNuke skin?  After thinking about it for a little bit, I decided to override the base Skin class.  Turns out, with an RESX or XML file, this is a pretty darn elegant solution.
&lt;/p&gt;&lt;p&gt;First, let's take a look at the code.  In order to do this properly, the class being created needs to inherit from &lt;span style="font-size:10pt"&gt;&lt;span style="font-family:Courier New"&gt;DotNetNuke&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;UI&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;Skins.Skin.&lt;/span&gt;  T&lt;/span&gt;his enables the class to pick up all of the appropriately used public properties and methods and provides the ability to add overridden/custom properties.  In my particular case, the driving force behind the customization in the skin development was the URL name.  I probably could use any PortalSetting (name, ID, etc), but I chose to go with the URL.  It's easy enough to get.  Here's what my code started off looking like:
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;
			&lt;span style="color:blue"&gt;class&lt;/span&gt;
			&lt;span style="color:olive"&gt;MySkinDefault &lt;/span&gt;: DotNetNuke.UI.Skins.&lt;span style="color:olive"&gt;Skin&lt;br/&gt;&lt;/span&gt;{
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;public&lt;/span&gt; MySkinDefault()
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;{
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;At this point, the code is doing nothing.  Loading a skin that inherits from this class will load exactly like the regular skin object.  That's no fun.  In the skin I was working with, I added three ASP.Net controls, a Label and two Literal controls.  To make sure that my custom Skin class could reference them, I added three new lines of code.
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;
			&lt;span style="color:blue"&gt;class&lt;/span&gt;
			&lt;span style="color:olive"&gt;MySkinDefault&lt;/span&gt; : DotNetNuke.UI.Skins.&lt;span style="color:olive"&gt;Skin&lt;br/&gt;&lt;/span&gt;{
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;protected&lt;/span&gt; System&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;Web&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;UI&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;WebControls&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:olive"&gt;Label&lt;/span&gt; lbl;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;protected&lt;/span&gt; System&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;Web&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;UI&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;WebControls&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:olive"&gt;Literal&lt;/span&gt; ltcTop;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;protected&lt;/span&gt; System&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;Web&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;UI&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;WebControls&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:olive"&gt;Literal&lt;/span&gt; ltcBottom;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;public&lt;/span&gt; MySkinDefault()
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;{
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;The new items are scoped as protected so that they can interact with the ASCX file.  This is important because if they are marked private, the code-behind file that gets generated by the .Net framework wil not be able to access the controls.  For more info, check this link out: &lt;a href="http://msdn.microsoft.com/en-us/library/015103yb(vs.71).aspx"&gt;http://msdn.microsoft.com/en-us/library/015103yb(vs.71).aspx&lt;/a&gt;.  It's a bit dated, but it helps explain. 
&lt;/p&gt;&lt;p&gt;Now that I have controls on my skin that I can reference, I need to be able to dynamically fill them.  For that, I need to override the base class's &lt;span style="font-family:Courier New; font-size:10pt"&gt;OnLoad&lt;/span&gt; event.
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;protected override void&lt;/span&gt; OnLoad( &lt;span style="color:blue"&gt;EventArgs&lt;/span&gt; e )
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;{
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;if&lt;/span&gt; (!IsPostBack)
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;    {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;        &lt;span style="color:blue"&gt;if&lt;/span&gt; (Context.Request.Url.Host == www.myexample.com)
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;        {
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 108pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;lbl.Text = "I am at myexample.com!";
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 108pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;ltcTop.Text = "&lt;a href=http://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.com\"http://www.somewhereelse.comhttp://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.com\"&gt;Some where else!&lt;/a&gt;";
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;        }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;        &lt;span style="color:blue"&gt;else
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;        {
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 108pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;lbl.Text = "I am not at myexample.com!";
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 108pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;ltcTop.Text = "&lt;a href=http://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.com\"http://www.myexample.comhttp://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.com\"&gt;myexample.com&lt;/a&gt;";
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;        }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;        ltcBottom.Text = ltcTop.Text;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;    }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;base&lt;/span&gt;.OnLoad( e );
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;Two things to note:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The override keyword let's me override the base implementation of the OnLoad event.  Since it's overriding the event, I don't need to pass it a sender (that's already done for me in the initial declaration).
&lt;/li&gt;&lt;li&gt;I &lt;strong&gt;want&lt;/strong&gt; DotNetNuke's base Skin object to pick up where my method completes, so I call my base class's OnLoad event, passing the e argument from my class.  The reason I want DNN to finish it's work is because the Page_Load event does a bunch of more stuff, and I don't want it to code it in my implmentation.
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;My finished class looks like this:
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;
			&lt;span style="color:blue"&gt;class&lt;/span&gt;
			&lt;span style="color:olive"&gt;MySkinDefault&lt;/span&gt; : DotNetNuke.UI.Skins.&lt;span style="color:olive"&gt;Skin&lt;br/&gt;&lt;/span&gt;{
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;protected&lt;/span&gt; System&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;Web&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;UI&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;WebControls&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:olive"&gt;Label&lt;/span&gt; lbl;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;protected&lt;/span&gt; System&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;Web&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;UI&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;WebControls&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:olive"&gt;Literal&lt;/span&gt; ltcTop;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;protected&lt;/span&gt; System&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;Web&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;UI&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;WebControls&lt;span style="color:maroon"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:olive"&gt;Literal&lt;/span&gt; ltcBottom;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;public&lt;/span&gt; MySkinDefault()
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;{
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;protected override void&lt;/span&gt; OnLoad( &lt;span style="color:blue"&gt;EventArgs&lt;/span&gt; e )
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;{
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;if&lt;/span&gt; (!IsPostBack)
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;    {
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;        &lt;span style="color:blue"&gt;if&lt;/span&gt; (Context.Request.Url.Host == www.myexample.com)
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;        {
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 144pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;lbl.Text = "I am at myexample.com!";
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 144pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;ltcTop.Text = "&lt;a href=http://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.com\"http://www.somewhereelse.comhttp://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.com\"&gt;Some where else!&lt;/a&gt;";
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;        }
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;        &lt;span style="color:blue"&gt;else
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;        {
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 144pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;lbl.Text = "I am not at myexample.com!";
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 144pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;ltcTop.Text = "&lt;a href=http://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.com\"http://www.myexample.comhttp://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.comhttp://www.scottallender.com\"&gt;myexample.com&lt;/a&gt;";
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;        }
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;        ltcBottom.Text = ltcTop.Text;
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;    }
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;    &lt;span style="color:blue"&gt;base&lt;/span&gt;.OnLoad( e );
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;Pretty simple stuff.   Now comes the fun part of making sure that my Skin uses this class.  To do that, I need to make certain of two things:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;In the Page Declaration section, I need to inherit from this class, &lt;strong&gt;not&lt;/strong&gt; the DotNetNuke Skin class.
&lt;/li&gt;&lt;li&gt;That my Label and my Literal controls are present on the skin.  Since I'm not checking to see if those to control instances are null, they must be there.  Otherwise I get a &lt;span style="font-family:Courier New"&gt;NullException&lt;/span&gt;.
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Here's what my skin object would look like:
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="background-color:yellow"&gt;&lt;%&lt;/span&gt;&lt;span style="color:blue"&gt;@&lt;/span&gt;
			&lt;span style="color:#a31515"&gt;Control&lt;/span&gt;
			&lt;span style="color:red"&gt;Language&lt;/span&gt;&lt;span style="color:blue"&gt;="vb"&lt;/span&gt;
			&lt;span style="color:red"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color:blue"&gt;="false"&lt;/span&gt;
			&lt;span style="color:red"&gt;Explicit&lt;/span&gt;&lt;span style="color:blue"&gt;="True"&lt;/span&gt;
			&lt;span style="color:red"&gt;Inherits&lt;/span&gt;&lt;span style="color:blue"&gt;=" MySkinDefault"&lt;/span&gt;
			&lt;span style="background-color:yellow"&gt;%&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;&lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;table&lt;/span&gt;&lt;span style="color:blue"&gt;&gt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:#a31515"&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;&lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&gt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:#a31515"&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;&lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&gt;&lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp:Label &lt;/span&gt;&lt;span style="color:red"&gt;id&lt;/span&gt;&lt;span style="color:blue"&gt;="lbl"&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;="server"&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;span style="color:blue"&gt;/&gt;&lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&gt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:#a31515"&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;&lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td &lt;/span&gt;&lt;span style="color:red"&gt;style&lt;/span&gt;&lt;span style="color:blue"&gt;="text-align:right;"&gt;&lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp:Literal &lt;/span&gt;&lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;="ltcTop"&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;="server"&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;span style="color:blue"&gt;/&gt;&lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&gt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:#a31515"&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;&lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:#a31515"&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;&lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&gt;&lt;/span&gt;&lt;span style="color:red"&gt;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:#a31515"&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;&lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td &lt;/span&gt;&lt;span style="color:red"&gt;colspan&lt;/span&gt;&lt;span style="color:blue"&gt;="2"&lt;/span&gt;&lt;span style="color:#a31515"&gt; ID&lt;/span&gt;&lt;span style="color:blue"&gt;="ContentPane"&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;="server"&gt;&lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&gt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:#a31515"&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;&lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&gt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:#a31515"&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;&lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:#a31515"&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;&lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;td &lt;/span&gt;&lt;span style="color:red"&gt;colspan&lt;/span&gt;&lt;span style="color:#a31515"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;"2"&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;span style="color:red"&gt;style&lt;/span&gt;&lt;span style="color:#a31515"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;"text-align:right;"&gt;&lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;asp:Literal &lt;/span&gt;&lt;span style="color:red"&gt;ID&lt;/span&gt;&lt;span style="color:blue"&gt;="ltcBottom"&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;span style="color:red"&gt;runat&lt;/span&gt;&lt;span style="color:blue"&gt;="server" /&gt;&lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;td&lt;/span&gt;&lt;span style="color:blue"&gt;&gt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:#a31515"&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;&lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;tr&lt;/span&gt;&lt;span style="color:blue"&gt;&gt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New; font-size:10pt"&gt;&lt;span style="color:blue"&gt;&lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;table&lt;/span&gt;&lt;span style="color:blue"&gt;&gt;&lt;/span&gt;&lt;span style="background-color:yellow"&gt;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;And there you have it!  An overridden skin that you can customize even further than the what the out of the box DotNetNuke install provides.&lt;/p&gt;</description>
      <link>http://www.scottallender.com/blog/tabid/72/EntryId/49/Overriding-the-Base-Skin-Object-in-DotNetNuke.aspx</link>
      <category domain="http://www.scottallender.com/blog/tabid/72/blogid/3/default.aspx">Development/Virtualization</category>
      <author>scott@n3bu1a.com</author>
      <comments>http://www.scottallender.com/blog/tabid/72/EntryId/49/Overriding-the-Base-Skin-Object-in-DotNetNuke.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.scottallender.com/blog/tabid/72/EntryId/49/Overriding-the-Base-Skin-Object-in-DotNetNuke.aspx</guid>
      <pubDate>Thu, 07 May 2009 22:35:49 GMT</pubDate>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.scottallender.com/DesktopModules/Blog/Trackback.aspx?id=49</trackback:ping>
    </item>
    <item>
      <title>Troubleshooting DNN Upgrade Issue on Windows Server 2008 or IIS7</title>
      <description>&lt;p&gt; &lt;/p&gt;&lt;a href=http://www.scottallender.com/Blog/tabid/72/EntryId/48/Troubleshooting-DNN-Upgrade-Issue-on-Windows-Server-2008-or-IIS7.aspx&gt;More...&lt;/a&gt;</description>
      <link>http://www.scottallender.com/Blog/tabid/72/EntryId/48/Troubleshooting-DNN-Upgrade-Issue-on-Windows-Server-2008-or-IIS7.aspx</link>
      <category domain="http://www.scottallender.com/blog/tabid/72/blogid/3/default.aspx">Development/Virtualization</category>
      <author>scott@n3bu1a.com</author>
      <comments>http://www.scottallender.com/Blog/tabid/72/EntryId/48/Troubleshooting-DNN-Upgrade-Issue-on-Windows-Server-2008-or-IIS7.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.scottallender.com/Blog/tabid/72/EntryId/48/Troubleshooting-DNN-Upgrade-Issue-on-Windows-Server-2008-or-IIS7.aspx</guid>
      <pubDate>Wed, 06 May 2009 04:51:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.scottallender.com/DesktopModules/Blog/Trackback.aspx?id=48</trackback:ping>
    </item>
  </channel>
</rss>