﻿<?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>DNN (Dotnetnuke) / ASP.NET</title>
    <description>Here I explore the things I have done with DNN and things I haven't done and some of the ASP.NET junk I run into.</description>
    <link>http://www.codemypantsoff.com/Pants/tabid/100/BlogId/3/Default.aspx</link>
    <language>en-US</language>
    <managingEditor>Dylan.barber@embarqmail.com</managingEditor>
    <webMaster>dylan.barber2@artytee.com</webMaster>
    <pubDate>Thu, 18 Mar 2010 18:12:36 GMT</pubDate>
    <lastBuildDate>Thu, 18 Mar 2010 18:12:36 GMT</lastBuildDate>
    <docs>http://backend.userland.com/rss</docs>
    <generator>Blog RSS Generator Version 3.5.1.19887</generator>
    <item>
      <title>Skinning Fun (Adding Classes to the body tag from a DNN skin)</title>
      <description>&lt;p&gt;With jQuery and CSS becoming so much more the norm for web development it becomes even more necessary to be able to manipulate classes on elements not in the skin, specifically the body tag.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;There are really two ways to do this and each has it benefits and problems, jQuery and inline code.&lt;/p&gt;
&lt;p&gt;Jquery: This method is so simple simply add &lt;script&gt;$('#Body').addClass('MyNewClass')&lt;/script&gt;in the skin and it will add whatever class to the body tag, in DNN the id of the body tag is ‘Body’. The only problem with this method is if you are depending on that class being there even if jQuery fails to run you are out of luck.&lt;/p&gt;
&lt;p&gt;Inline Code: the method uses a simple bit of inline vb.net code to add the class to the body tag&lt;/p&gt;
&lt;div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:2b22bdce-2b40-403f-a378-c08c1e2e60c6" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px"&gt;
&lt;pre class="brush: vb;"&gt;&lt;script runat="server"&gt;
    Private Sub CssAddClass(ByVal ctl As HtmlControl, ByVal className As String)
        ctl.Attributes("class") += " " &amp; className
    End Sub
  
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load        
        Dim objBody As Control = Me.Page.FindControl("Body")
        CssAddClass(objBody, "foo")
       
    End Sub
&lt;/script&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Now this method will work as long as DNN works it only depends on the ASP.NET parser parsing the file out as it will have to for any DNN portal to work. The problem here is there is that millisecond of more processing.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Both methods are valid and work fine – I think the second method is a bit more reliable since a user could have JavaScript turned off on the client then your site may look strange if you have coded CSS classes for the body.&lt;/p&gt;</description>
      <link>http://www.codemypantsoff.com/Pants/tabid/100/EntryId/106/Skinning-Fun-Adding-Classes-to-the-body-tag-from-a-DNN-skin.aspx</link>
      <author>Dylan.barber@embarqmail.com</author>
      <comments>http://www.codemypantsoff.com/Pants/tabid/100/EntryId/106/Skinning-Fun-Adding-Classes-to-the-body-tag-from-a-DNN-skin.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.codemypantsoff.com/Pants/tabid/100/EntryId/106/Skinning-Fun-Adding-Classes-to-the-body-tag-from-a-DNN-skin.aspx</guid>
      <pubDate>Wed, 03 Feb 2010 16:42:16 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codemypantsoff.com/DesktopModules/Blog/Trackback.aspx?id=106</trackback:ping>
    </item>
    <item>
      <title>Ever Have To Backup Backwards? Convert MS SQL 2008 - 2005</title>
      <description>&lt;p&gt;Okay guess Microsoft never figured someone would want to restore something from SQL Server 2008 to 2005 so its not that intuitive to do.  Here’s a, mostly, tested way to do it.&lt;/p&gt;  &lt;h5&gt;1) Start convert wizard &lt;/h5&gt;  &lt;p&gt;Open SQL Server Management Studio2008. in 'Object Explorer', right click the database that you want to convert. Select 'Tasks' &gt; 'Generate Scripts...'. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codemypantsoff.com/Portals/2/Blog/Files/3/104/WLW-EverHaveToBackupBackwardsConvertMSSQL200_EADC-ConvertSQL2008_To_2005_1_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ConvertSQL2008_To_2005_1" border="0" alt="ConvertSQL2008_To_2005_1" src="/Portals/2/Blog/Files/3/104/WLW-EverHaveToBackupBackwardsConvertMSSQL200_EADC-ConvertSQL2008_To_2005_1_thumb.gif" width="410" height="334" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h5&gt;2) Next&lt;/h5&gt;  &lt;p&gt;Click 'Next'. &lt;/p&gt; &lt;a href="http://www.codemypantsoff.com/Portals/2/Blog/Files/3/104/WLW-EverHaveToBackupBackwardsConvertMSSQL200_EADC-ConvertSQL2008_To_2005_2_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ConvertSQL2008_To_2005_2" border="0" alt="ConvertSQL2008_To_2005_2" src="/Portals/2/Blog/Files/3/104/WLW-EverHaveToBackupBackwardsConvertMSSQL200_EADC-ConvertSQL2008_To_2005_2_thumb.gif" width="417" height="372" /&gt;&lt;/a&gt;   &lt;p&gt;&lt;/p&gt;  &lt;h5&gt;3) Select database and objects &lt;/h5&gt;  &lt;p&gt;Select the database that you want to convert, and check on '&lt;b&gt;Scripts all objects in the selected databases&lt;/b&gt;' &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codemypantsoff.com/Portals/2/Blog/Files/3/104/WLW-EverHaveToBackupBackwardsConvertMSSQL200_EADC-ConvertSQL2008_To_2005_3_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ConvertSQL2008_To_2005_3" border="0" alt="ConvertSQL2008_To_2005_3" src="/Portals/2/Blog/Files/3/104/WLW-EverHaveToBackupBackwardsConvertMSSQL200_EADC-ConvertSQL2008_To_2005_3_thumb.gif" width="411" height="369" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h5&gt;4) Convert Options&lt;/h5&gt;  &lt;p&gt;Set options: &lt;/p&gt;  &lt;pre&gt;'Script for Server Version' = 'SQL Server 2005'
'Script Data' = 'True'
'Script Database Create' = 'True'&lt;/pre&gt;

&lt;pre&gt;&lt;a href="http://www.codemypantsoff.com/Portals/2/Blog/Files/3/104/WLW-EverHaveToBackupBackwardsConvertMSSQL200_EADC-ConvertSQL2008_To_2005_3_1_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ConvertSQL2008_To_2005_3_1" border="0" alt="ConvertSQL2008_To_2005_3_1" src="/Portals/2/Blog/Files/3/104/WLW-EverHaveToBackupBackwardsConvertMSSQL200_EADC-ConvertSQL2008_To_2005_3_1_thumb.gif" width="418" height="375" /&gt;&lt;/a&gt; &lt;/pre&gt;

&lt;h5&gt;5) Output Option&lt;/h5&gt;

&lt;p&gt;Select option 'Script to file', 'Single file' and 'Unicode text'. &lt;/p&gt;

&lt;pre&gt;&lt;a href="http://www.codemypantsoff.com/Portals/2/Blog/Files/3/104/WLW-EverHaveToBackupBackwardsConvertMSSQL200_EADC-ConvertSQL2008_To_2005_4_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ConvertSQL2008_To_2005_4" border="0" alt="ConvertSQL2008_To_2005_4" src="/Portals/2/Blog/Files/3/104/WLW-EverHaveToBackupBackwardsConvertMSSQL200_EADC-ConvertSQL2008_To_2005_4_thumb.gif" width="422" height="378" /&gt;&lt;/a&gt;     &lt;/pre&gt;

&lt;h5&gt;6) 'Finish'&lt;/h5&gt;

&lt;p&gt;View summary and click 'Finish'. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.codemypantsoff.com/Portals/2/Blog/Files/3/104/WLW-EverHaveToBackupBackwardsConvertMSSQL200_EADC-ConvertSQL2008_To_2005_5_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ConvertSQL2008_To_2005_5" border="0" alt="ConvertSQL2008_To_2005_5" src="/Portals/2/Blog/Files/3/104/WLW-EverHaveToBackupBackwardsConvertMSSQL200_EADC-ConvertSQL2008_To_2005_5_thumb.gif" width="424" height="380" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h5&gt;7) Result&lt;/h5&gt;

&lt;p&gt;Now you got a complete database creation script with data. It can be executed on target database server.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.codemypantsoff.com/Portals/2/Blog/Files/3/104/WLW-EverHaveToBackupBackwardsConvertMSSQL200_EADC-ConvertSQL2008_To_2005_6_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ConvertSQL2008_To_2005_6" border="0" alt="ConvertSQL2008_To_2005_6" src="/Portals/2/Blog/Files/3/104/WLW-EverHaveToBackupBackwardsConvertMSSQL200_EADC-ConvertSQL2008_To_2005_6_thumb.gif" width="440" height="395" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h5&gt;8) Amend Script&lt;/h5&gt;

&lt;p&gt;Open the generated script in SQL Server Management Studio 2005. Find the following section and amend the path to proper data folder&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;
  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:8a92fbaf-9ae1-41f8-ba71-e7cf54221069" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: sql;"&gt;    CREATE DATABASE [StockTraderDB] ON  PRIMARY 
( NAME = N'StockTraderDB', 
FILENAME = N'c:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\StockTraderDB.mdf ,
 SIZE = 4352KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'StockTraderDB_log', 
FILENAME = N'c:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\StockTraderDB_log.LDF',
 SIZE = 6272KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
&lt;/pre&gt;&lt;/div&gt;
&lt;/p&gt;

&lt;h5&gt;9) Execute the Script&lt;/h5&gt;

&lt;p&gt;When finished, You should get converted database of SQL Server 2005&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Originally from &lt;a title="http://www.devx.com/dbzone/Article/40531/0/page/1" href="http://www.devx.com/dbzone/Article/40531/0/page/1"&gt;http://www.devx.com/dbzone/Article/40531/0/page/1&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://www.codemypantsoff.com/Pants/tabid/100/EntryId/104/Ever-Have-To-Backup-Backwards-Convert-MS-SQL-2008-2005.aspx</link>
      <author>Dylan.barber@embarqmail.com</author>
      <comments>http://www.codemypantsoff.com/Pants/tabid/100/EntryId/104/Ever-Have-To-Backup-Backwards-Convert-MS-SQL-2008-2005.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.codemypantsoff.com/Pants/tabid/100/EntryId/104/Ever-Have-To-Backup-Backwards-Convert-MS-SQL-2008-2005.aspx</guid>
      <pubDate>Mon, 01 Feb 2010 22:42:16 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codemypantsoff.com/DesktopModules/Blog/Trackback.aspx?id=104</trackback:ping>
    </item>
    <item>
      <title>Mass Tabs – the free way to build a huge site quickly</title>
      <description>&lt;p&gt;Okay another fun little thing for your DNN portals. Ever needed to create a bunch of tabs all at once under another tab?  Its kind of hard to sit and click through the add page dialog 10, 20, or 30 times. So I created a small little module (its still sort of Alpha at this point) to allow you to create a whole bevy of tabs in one stroke. Simply fill in the names of the tabs, one name per line, set the other parameters and hit the Update button.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I have tested this on 4.9.5 and 5.2 so it needs more testing but it should be solid because it uses the same code as the core manage tabs functionality. In fact if you ask me this should be in the core!&lt;/p&gt;
&lt;p&gt;I put the project up on Codeplex so feel free to download comment and mess with it all you want. The project url is &lt;a href="http://masstabs.codeplex.com"&gt;http://masstabs.codeplex.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Thanks!!!!&lt;/p&gt;</description>
      <link>http://www.codemypantsoff.com/Pants/tabid/100/EntryId/103/Mass-Tabs-ndash-the-free-way-to-build-a-huge-site-quickly.aspx</link>
      <author>Dylan.barber@embarqmail.com</author>
      <comments>http://www.codemypantsoff.com/Pants/tabid/100/EntryId/103/Mass-Tabs-ndash-the-free-way-to-build-a-huge-site-quickly.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.codemypantsoff.com/Pants/tabid/100/EntryId/103/Mass-Tabs-ndash-the-free-way-to-build-a-huge-site-quickly.aspx</guid>
      <pubDate>Wed, 20 Jan 2010 19:31:01 GMT</pubDate>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.codemypantsoff.com/DesktopModules/Blog/Trackback.aspx?id=103</trackback:ping>
    </item>
    <item>
      <title>Playing with the new DNN Blog (4.00.00 Beta 3)</title>
      <description>&lt;p&gt;I installed the new DNN blog on a test install again today. The beta 3 is really shaping up to be a nice package. Its sort of late to add my 2 cents now but I will anyway.&lt;/p&gt;  &lt;p&gt;The ‘Recent Entries’ and ‘Recent Comments’ modules might want to be split out into their own Module instances and not part of the overall Blog module. The reason I say this is when setting up a blog in a larger site. I wouldn’t set these on the blog page these go to something like the home page.  Putting them as their own module instance would make it easier for users to move those around and have them where portal builders want.&lt;/p&gt;  &lt;p&gt;If we now have categories is there really a need for child blogs? This is a feature that I have always found a little hard to use.  I think it has some validity but categories seems to be more mainstream and understandable.&lt;/p&gt;  &lt;p&gt;I did not see anything on any roadmap but I also wondered if it was ever going to be possible to have multiple people manage one blog. We use the blog for a lot of communication and we have to have a shared login to manage that – not a big deal but a bit of a hassle when working in a larger group. Where if I could simply allow users to publish to a specific blog it seems like it would solve a few problems (like live writer not seeing all the blogs etc.)&lt;/p&gt;</description>
      <link>http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/98/Playing-with-the-new-DNN-Blog-4-00-00-Beta-3.aspx</link>
      <author>Dylan.barber@embarqmail.com</author>
      <comments>http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/98/Playing-with-the-new-DNN-Blog-4-00-00-Beta-3.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/98/Playing-with-the-new-DNN-Blog-4-00-00-Beta-3.aspx</guid>
      <pubDate>Tue, 12 Jan 2010 08:06:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codemypantsoff.com/DesktopModules/Blog/Trackback.aspx?id=98</trackback:ping>
    </item>
    <item>
      <title>Playing with the new DNN Blog (4.00.00 Beta 2)</title>
      <description>&lt;p&gt;Okay with some excitement I downloaded the new Beta of the DNN blog – and since it comes with the great big warning in red from Antonio.&lt;/p&gt;  &lt;p&gt;“Needless to say (but I'll say it anyway; in fact, I’ll make it bold and red as well), &lt;font color="#ff0000"&gt;&lt;strong&gt;this is a BETA, and as such it is not supported and it should not be deployed in production&lt;/strong&gt; &lt;strong&gt;environments&lt;/strong&gt;&lt;/font&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;. This is for test purposes ONLY&lt;/font&gt;.&lt;/strong&gt; So, to re-iterate, if you screw up, sorry pal, you’re on your own.”&lt;/p&gt;  &lt;p&gt;I decided to be smart and try it on my test install first. After all I didn’t want to mess up this blog.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;My test install runs the same as this site DNN 05.02.00 and the Blog 3.5.1. &lt;/p&gt;  &lt;p&gt;My first attempt was to install the new beta right over the old Blog. From the word go this caused some problems. My first clue was the nice SQL Provider warning.&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;‘SQL Execution resulted in following Exceptions: System.Data.SqlClient.SqlException: Incorrect syntax near '.'. Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon. Incorrect syntax near '.'. Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL) at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions) if not exists (select * from dbo.sysobjects where id = object_id(N'dbo.Blog_Tags') and OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN CREATE TABLE dbo.Blog_Tags( TagID int IDENTITY(1,1) NOT NULL, Tag nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, Slug nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, Active bit NOT NULL, PortalID int NULL, CONSTRAINT dbo.PK_Blog_Tags PRIMARY KEY CLUSTERED ( TagID ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] CREATE NONCLUSTERED INDEX dbo.IX_Blog_Tags_PortalID ON dbo.Blog_Tags ( PortalID ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = OFF) ON [PRIMARY] END’&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;font color="#000000"&gt;Not a big deal but did worry me that maybe I would have to reinstall to get my blog back on this test install.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Thankfully this wasn’t the case I uninstalled the blog  then reinstalled the 3.5.1 Blog and everything worked again. If the Blog is uninstalled or has never been installed then installing the Blog 4.0.0 Beta 2 then the blog module works very well and installs fine.&lt;/p&gt;  &lt;p&gt;Overall I like where the new blog module is going.&lt;/p&gt;</description>
      <link>http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/97/Playing-with-the-new-DNN-Blog-4-00-00-Beta-2.aspx</link>
      <author>Dylan.barber@embarqmail.com</author>
      <comments>http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/97/Playing-with-the-new-DNN-Blog-4-00-00-Beta-2.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/97/Playing-with-the-new-DNN-Blog-4-00-00-Beta-2.aspx</guid>
      <pubDate>Thu, 07 Jan 2010 20:26:01 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codemypantsoff.com/DesktopModules/Blog/Trackback.aspx?id=97</trackback:ping>
    </item>
    <item>
      <title>SEO in DNN</title>
      <description>&lt;p&gt;Lots of people have the perception that effective search engine optimization (SEO) is impossible in DNN. Some of this comes form older versions of DNN where it was hard to do it right and the limited menu capabilities of the older SolPart menu made it difficult.&lt;/p&gt;  &lt;p&gt;For those that haven't looked or who may have looked long ago and given up I urge you to reexamine the SEO landscape for DNN today. Tom Seablick has an excellent &lt;a href="http://seablick.com/portals/0/downloads/seablick-dnn-seo-cheat-sheet.pdf" target="_blank"&gt;article&lt;/a&gt; on his website that discusses some of the ways to make your site more search engine friendly. The plethora of menus now for sale on &lt;a href="http://www.snowcovered.com/snowcovered2/Default.aspx?tabid=295&amp;search=seo+menu AND (CategoryName:"DotNetNuke 5")" target="_blank"&gt;Snowcovered&lt;/a&gt; also overcomes the limitations that menus may have had.&lt;/p&gt;  &lt;p&gt;If you thought SEO for DNN was difficult take another look the latest releases make it easier than ever to have a dynamic and search engine friendly site.&lt;/p&gt;</description>
      <link>http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/90/SEO-in-DNN.aspx</link>
      <author>Dylan.barber@embarqmail.com</author>
      <comments>http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/90/SEO-in-DNN.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/90/SEO-in-DNN.aspx</guid>
      <pubDate>Fri, 18 Dec 2009 18:08:55 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codemypantsoff.com/DesktopModules/Blog/Trackback.aspx?id=90</trackback:ping>
    </item>
    <item>
      <title>"Our Development Process" - My Response</title>
      <description>&lt;p&gt;Today Bruce Onder (@bonder) posted a link on Twitter to an agile development blog for Target Process (link: &lt;a title="http://www.targetprocess.com/blog/2009/10/our-development-process.html" href="http://www.targetprocess.com/blog/2009/10/our-development-process.html"&gt;http://www.targetprocess.com/blog/2009/10/our-development-process.html&lt;/a&gt; ). Now I appreciate reading about other development processes but I just wanted to say some of us don’t get the luxury of developing in such a controlled environment.&lt;/p&gt;
&lt;p&gt;In my company there are three developers and I act as a coordinator. Now we usually don’t even work the same projects. In fact one of my developers spends almost all his time just writing reports and another is spending almost all his time wrangling ancient dBase stuff into .NET so we can move the company as a whole forward.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Our development process:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Boss walks in with an idea or a client request.&lt;/li&gt;
    &lt;li&gt;I start to ask questions and start writing on the whiteboard&lt;/li&gt;
    &lt;li&gt;He agrees that its bigger than it first sounds.&lt;/li&gt;
    &lt;li&gt;Tells me he promised it by Friday, of course its already 5:00 pm Wednesday!&lt;/li&gt;
    &lt;li&gt;I decide if I will do it or hand it off to one of the other developers.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I think its great that others have controlled and good systems in place but sometimes controlled CHAOS is easier!&lt;/p&gt;</description>
      <link>http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/85/-quot-Our-Development-Process-quot-My-Response.aspx</link>
      <author>Dylan.barber@embarqmail.com</author>
      <comments>http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/85/-quot-Our-Development-Process-quot-My-Response.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/85/-quot-Our-Development-Process-quot-My-Response.aspx</guid>
      <pubDate>Thu, 15 Oct 2009 15:49:24 GMT</pubDate>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.codemypantsoff.com/DesktopModules/Blog/Trackback.aspx?id=85</trackback:ping>
    </item>
    <item>
      <title>‘Privacy Statement’ and ‘Terms of Use’ in DNN</title>
      <description>&lt;p&gt;When I build my sites in DNN I really do not like to use the default ‘Terms of Service’ and ‘Privacy Statement’ controls. For one thing the controls place the content in the Content Pane of the admin skin the site uses and sometimes this is problematic for a pleasing and cohesive site design. I found a possible ‘bug’ that helps me create my own privacy and terms pages without a lot of work. This is one bug I hope the DNN team doesn’t fix anytime soon! :)&lt;/p&gt;  &lt;p&gt;Any skin that uses the current skin objects for ‘Privacy Statement’ and ‘Terms of Use’ can take advantage of this little hack. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Make sure your site  is using a url format of HumanFriendly. So in your web.config file you will need to find the line for the friendly url provider and if you are using the DNNFriendlyURL provider make sure it has  urlFormat="HumanFriendly" as one of the parameters.&lt;/li&gt;    &lt;li&gt;Create a new tab/page with a page title of ‘Privacy’.&lt;/li&gt;    &lt;li&gt;Add your own content, move modules around on this page, and change skins as you would any other page.&lt;/li&gt;    &lt;li&gt;Go to any other page and click the link created for the ‘Privacy Statement’ it should now navigate to the page you just created and not to the ‘Privacy’ control.&lt;/li&gt;    &lt;li&gt;Repeat steps 2 – 4 using a page title of ‘Terms’ for the ‘Terms of Use’ page.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;One downside to this is the lack of internationalization in the default HTML module but this can be overcome with other modules like the Apollo &lt;a href="http://www.apollo-software.nl/DotNetNuke/Modules/FreeModules/tabid/83/language/en-US/Default.aspx"&gt;multi language module&lt;/a&gt;.  I think the increased and more transparent control over the ‘Terms’ and ‘Privacy’ pages offsets this downside especially if you are turning the site over to non technical people to edit. &lt;/p&gt;</description>
      <link>http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/79/-lsquo-Privacy-Statement-rsquo-and-lsquo-Terms-of-Use-rsquo-in-DNN.aspx</link>
      <author>Dylan.barber@embarqmail.com</author>
      <comments>http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/79/-lsquo-Privacy-Statement-rsquo-and-lsquo-Terms-of-Use-rsquo-in-DNN.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/79/-lsquo-Privacy-Statement-rsquo-and-lsquo-Terms-of-Use-rsquo-in-DNN.aspx</guid>
      <pubDate>Tue, 15 Sep 2009 06:53:46 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codemypantsoff.com/DesktopModules/Blog/Trackback.aspx?id=79</trackback:ping>
    </item>
    <item>
      <title>Textarea fun, making textareas auto expand!</title>
      <description>&lt;p&gt;The website I work on as a fulltime developer has some unique challenges. Besides covering over 10 languages for both content and UI we have a lot of text areas where users can describe and enter various bits of free form data. We provide reports for the information but for some reason unknown to me lots of our users print out the form with all the text areas they filled in as a ‘report’. This was never intended so the first request to make the text area larger so all the typed in info would print sort of struck me as strange, why not print the report that shows all the info? Well as any developer can tell you it doesn't matter if the problem is the programming or not its your problem! &lt;/p&gt; &lt;p&gt;I set out to fix this with jQuery since I did not want to go back and revise 62 data entry pages! jQuery.com had a few plugins that I was never able to make the work the way I wanted. One of the problems with the plug-in I first used was that they required the user to click in the text area to activate the function and expand to the size of the text. Typing into the text area worked great but when a user pulled up a saved record they had to click in all the text areas to ‘size’ them for printing. I finally came across this article on Sitepoint.com for an auto expanding text area, &lt;a title="http://www.sitepoint.com/blogs/2009/07/29/build-auto-expanding-textarea-1/" href="http://www.sitepoint.com/blogs/2009/07/29/build-auto-expanding-textarea-1/"&gt;http://www.sitepoint.com/blogs/2009/07/29/build-auto-expanding-textarea-1/&lt;/a&gt;.  The plug-in not only expands correctly it a few optional parameters for the function to keep pages from becoming to large or shrinking too small.&lt;/p&gt; &lt;p&gt;I had to search a long time to find this and wanted to post it on my blog here so others may have an easier time finding this script.&lt;/p&gt;</description>
      <link>http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/77/Textarea-fun-making-textareas-auto-expand.aspx</link>
      <author>Dylan.barber@embarqmail.com</author>
      <comments>http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/77/Textarea-fun-making-textareas-auto-expand.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/77/Textarea-fun-making-textareas-auto-expand.aspx</guid>
      <pubDate>Fri, 04 Sep 2009 07:29:02 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codemypantsoff.com/DesktopModules/Blog/Trackback.aspx?id=77</trackback:ping>
    </item>
    <item>
      <title>OpenForce ‘09 – In case you didn’t know</title>
      <description>&lt;p&gt;OpenForce '09 Connections in Las Vegas promises to be a great opportunity for DotNetNuke and Microsoft .NET developers to meet and learn about the latest developments in the DotNetNuke world. DotNetNuke enables organizations to develop rich, interactive websites and web applications for Microsoft .NET in a fraction of the time that they can develop directly in .NET.&lt;/p&gt;  &lt;p&gt;This year features a great selection of speakers who will provide insights into DotNetNuke module and skin development and administration.&lt;/p&gt;  &lt;p&gt;Visit the &lt;a href="http://www.devconnections.com/openforce"&gt;&lt;strong&gt;DevConnections/OpenForce '09 website&lt;/strong&gt;&lt;/a&gt; now to register. The conference is held in conjunction with the Microsoft DevConnections conference at the Mandalay Bay Hotel from November 9th through the 12th.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I’ll be there and really looking for people to hang with!&lt;/p&gt;</description>
      <link>http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/75/OpenForce-lsquo-09-ndash-In-case-you-didn-rsquo-t-know.aspx</link>
      <author>Dylan.barber@embarqmail.com</author>
      <comments>http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/75/OpenForce-lsquo-09-ndash-In-case-you-didn-rsquo-t-know.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.codemypantsoff.com/PantsOptional/tabid/100/EntryId/75/OpenForce-lsquo-09-ndash-In-case-you-didn-rsquo-t-know.aspx</guid>
      <pubDate>Thu, 03 Sep 2009 23:48:24 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codemypantsoff.com/DesktopModules/Blog/Trackback.aspx?id=75</trackback:ping>
    </item>
  </channel>
</rss>