<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>DotNetNuke Blogs On DNN, For DNN</title><link>http://www.dotnetnukeblogs.com</link><description>RSS Feed for DotNetNuke Blogs On DNN, For DNN</description><ttl>120</ttl><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/DotnetnukeBlogs" type="application/rss+xml" /><item><title>Improving the Debugger Experience Using Attributes</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/-lY2VD7eSZI/Improving-the-Debugger-Experience-Using-Attributes.aspx</link><description>&lt;p&gt;I have often found that when debugging applications that a lot of time is spent drilling down into the various custom objects to see what the values are of specific instance methods.  In this blog posting I will demonstrate the default behavior of Visual Studio when debugging a class, I will then show how you can improve the debugging experience with the addition of a simple attribute.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/-lY2VD7eSZI" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>Mitchel Sellers DotNetNuke Blog</dc:creator><pubDate>Fri, 03 Jul 2009 14:44:00 GMT</pubDate><guid isPermaLink="false">c02b58fb-6ca2-499b-944a-618bba8f917f</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27455/Improving-the-Debugger-Experience-Using-Attributes.aspx</feedburner:origLink></item><item><title>Changes to Future Blog Programming!</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/UtvseZLdhrw/Changes-to-Future-Blog-Programming.aspx</link><description>&lt;p&gt;After doing this blog for almost three years I have came to a conclusion that I need to take a step back, and re-focus a bit and manage the content a bit more.  To do this, I am making a few changes, don't worry not only will you keep getting the same quality of content, but you will start seeing more content and a better organization system behind the scenes.  Overall this is a three step process, each phase of the changes will be outlined below.&lt;/p&gt;
&lt;h2&gt;Changes to Blogging on MitchelSellers.com&lt;/h2&gt;
&lt;p&gt;The first stage of change here is working to solidify the types of articles that will continue to be published via the communication channel.  I will continue blogging about .NET and DotNetNuke technical topics, as well as product reviews.  Therefore trying to stay with a more technical focus.&lt;/p&gt;
&lt;p&gt;In addition to this, as part of becoming a C# MVP, you will start to see more C# articles here as well.&lt;/p&gt;
&lt;h2&gt;New Blog at IowaComputerGurus.com&lt;/h2&gt;
&lt;p&gt;The second stage of change is the introduction of a new blog on the company website, &lt;a href="http://www.iowacomputergurus.com" target="_blank"&gt;IowaComputerGurus.com&lt;/a&gt;.  This blog will become the new home for the best practices, case study, and "doing business" blog articles.  Trying to focus a bit on the proper implementation/leveraging of both the .NET and DotNetNuke platforms from a business perspective.  These articles will be less technical in nature and are geared more towards doing business, we hope to include success stories of DotNetNuke implementations as well.&lt;/p&gt;
&lt;p&gt;NOTE: if you are an existing IowaComputerGurus customer and would like your project featured in a case study on the new blog, please e-mail me &lt;a href="javascript:location.href='mailto:'+String.fromCharCode(109,115,101,108,108,101,114,115,64,105,111,119,97,99,111,109,112,117,116,101,114,103,117,114,117,115,46,99,111,109)+'?'"&gt;msellers@iowacomputergurus.com&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Tutorials Aggregation&lt;/h2&gt;
&lt;p&gt;The final stage of change will come from a future "tutorial aggregation" system.  This will be a new place for the storage of items that are currently being posted to this blog that are much more directly "tutorial" related; items such as the DotNetNuke installation, upgrade, backup and restore tutorials.  Right now, although very popular articles these are a bit harder for individuals to identify and access.&lt;/p&gt;
&lt;p&gt;The exact plan and home of this new system is unknown, therefore, all blogs of this nature that are created will be tagged with the "Tutorials" tag, so they can still be easily identified.&lt;/p&gt;
&lt;h2&gt;Comments/Suggestions Appreciated&lt;/h2&gt;
&lt;p&gt;As with any change, some people will not like the direction that things are going, I welcome comments and suggestions on better ways to manage this information.  Otherwise, stay tuned for future blogs and announcements.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/UtvseZLdhrw" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>Mitchel Sellers DotNetNuke Blog</dc:creator><pubDate>Thu, 02 Jul 2009 20:16:00 GMT</pubDate><guid isPermaLink="false">afe66e32-ee7f-4cd1-b23d-c0470a51a082</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27452/Changes-to-Future-Blog-Programming.aspx</feedburner:origLink></item><item><title>New ArrowDesigns.com Site Launched!</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/V0Ctw2_GqN8/New-ArrowDesignscom-Site-Launched.aspx</link><description>I’m very excited to announce our new website at www.ArrowDesigns.com. We’ve spent several months tweaking it and getting it just right and I’m really proud of what we have. Check it out and drop me a line to let me know what you think – ryan atsign arrowdesigns dot com.
Some of the highlights:

Software Consulting
Web Design [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dotnetnukeconsulting.wordpress.com&amp;blog=4043690&amp;post=82&amp;subd=dotnetnukeconsulting&amp;ref=&amp;feed=1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/V0Ctw2_GqN8" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>DotNetNuke Consultant Blog - Arrow Consulting &amp; De</dc:creator><pubDate>Thu, 02 Jul 2009 16:26:43 GMT</pubDate><guid isPermaLink="false">862cdf88-d471-4b05-bb58-27a7bfd88e74</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27440/New-ArrowDesignscom-Site-Launched.aspx</feedburner:origLink></item><item><title>Upcoming .Net Community Events in Florida</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/-PXCbZ_anAs/Upcoming-Net-Community-Events-in-Florida.aspx</link><description>&lt;p&gt;There are quite a few events coming up in Florida in the next few months. They are all free, and most will give you the opportunity to win free stuff just for showing up. Awesome!  If you find yourself in or around any of these events, I strongly recommend you stop by.  I have been to most of them, and they are great.&lt;/p&gt;  &lt;p&gt;All of the following information came from the &lt;a href="http://orlando.dotnetnukeug.net/" target="_blank"&gt;Orlando DotNetNuke® Users Group&lt;/a&gt; (&lt;a href="http://orlando.dotnetnukeug.net/" target="_blank"&gt;ODUG&lt;/a&gt;) website.  See our &lt;a href="http://orlando.dotnetnukeug.net/Events.aspx" target="_blank"&gt;events page&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;July 9&lt;/strong&gt; - &lt;a href="http://orlando.dotnetnukeug.net/WhatsNew/Events/tabid/91/ctl/Details/Mid/428/ItemID/107/Default.aspx?selecteddate=7/9/2009" target="_blank"&gt;Orlando DotNetNuke® Users Group&lt;/a&gt;    &lt;br /&gt;Will Strohl (nobody) will be talking about the Core DNN Blog Module.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;July 14&lt;/strong&gt; – &lt;a href="http://opass.org" target="_blank"&gt;Orlando PASS&lt;/a&gt;    &lt;br /&gt;Chad Miller will be discussing Powershell with SQL Server.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;July 15&lt;/strong&gt; – &lt;a href="http://www.scdnug.org/Events.aspx" target="_blank"&gt;Space Coast .Net User Group&lt;/a&gt;    &lt;br /&gt;Oleg Sych will be presenting on VSTS and TFS.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;July 16&lt;/strong&gt; – &lt;a href="http://www.onetug.org/sf/events/onetugevents.aspx" target="_blank"&gt;Orlando .Net User Group&lt;/a&gt;    &lt;br /&gt;Joe Healy (Microsoft Developer Evangelist) will be speaking about the developer features in IE8.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;July 16&lt;/strong&gt; – &lt;a href="http://spacecoast.sqlpass.org/" target="_blank"&gt;Space Coast SQL User Group&lt;/a&gt;    &lt;br /&gt;Don King and Clay Seifert will be each presenting a different session. They will be speaking about SQL Server 2005 Clustering and SQL Server Analysis Services, respectively.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;July 21&lt;/strong&gt; – &lt;a href="http://www.cfdotnet.org/" target="_blank"&gt;Lakeland .Net User Group&lt;/a&gt;    &lt;br /&gt;This user group will be holding a session entitled “Lakeland’s .Net Speaker Idol” and it promises to be a fun time, where you will see speakers compete against each other for prizes.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;August 4&lt;/strong&gt; – &lt;a href="http://orlando.dotnetnukeug.net/WhatsNew/Events/tabid/91/ctl/Details/Mid/428/ItemID/115/Default.aspx?selecteddate=8/4/2009" target="_blank"&gt;Orlando DotNetNuke® Users Group&lt;/a&gt;    &lt;br /&gt;DNN author, Darren Neese will be showing the new features in the DNN skinning engine.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;August 18&lt;/strong&gt; – &lt;a href="http://www.scdnug.org/Events.aspx" target="_blank"&gt;Space Coast .Net User Group&lt;/a&gt;    &lt;br /&gt;Topic and speaker TBA. (sorry…)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;August 20&lt;/strong&gt; – &lt;a href="http://www.onetug.org/sf/events/onetugevents.aspx" target="_blank"&gt;Orlando .Net User Group&lt;/a&gt;    &lt;br /&gt;Christopher Bennage (MVP) will be showing the attendees SilverArcade.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;August 20&lt;/strong&gt; – &lt;a href="http://spacecoast.sqlpass.org/" target="_blank"&gt;Space Coast SQL User Group&lt;/a&gt;    &lt;br /&gt;Joe Healy (Microsoft Developer Evangelist) shows the group SQL Server 2008 enhancements from a developers perspective.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;August 29&lt;/strong&gt; – &lt;a href="http://www.jaxcodecamp.com" target="_blank"&gt;Jacksonville Code Camp&lt;/a&gt;    &lt;br /&gt;The Jax Code Camp crew overcame some very challenging obstacles last year. I was extremely impressed.  I expect them to put on a great event again this year.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;September 5&lt;/strong&gt; – &lt;a href="http://tlhdotnet.org/CodeCampV/tabid/155/Default.aspx" target="_blank"&gt;Tallahassee Code Camp&lt;/a&gt;    &lt;br /&gt;Tallahassee Code Camp was a great time last year.  They always have some great presenters on-hand.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;September 10&lt;/strong&gt; – &lt;a href="http://spacecoast.sqlpass.org/" target="_blank"&gt;Space Coast SQL User Group&lt;/a&gt;    &lt;br /&gt;Jack Corbett will be presenting a yet to be determined topic.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;November 5&lt;/strong&gt; – &lt;a href="http://orlando.dotnetnukeug.net/WhatsNew/Events/tabid/91/ctl/Details/Mid/428/ItemID/108/Default.aspx?selecteddate=11/5/2009" target="_blank"&gt;Orlando DotNetNuke® Users Group&lt;/a&gt;    &lt;br /&gt;DNN Blog Project Team Lead, Antonio Chagoury, will be presenting “Mashing Up Your DotNetNuke Using RESTful APIs.”&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:0767317B-992E-4b12-91E0-4F059A8CECA8:7a6eea05-ee4f-4386-841a-d1cd36fb8012" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DotNetNuke" rel="tag"&gt;DotNetNuke&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DNN" rel="tag"&gt;DNN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DNN+Blogs" rel="tag"&gt;DNN Blogs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.Net" rel="tag"&gt;.Net&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Code+Camp" rel="tag"&gt;Code Camp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Events" rel="tag"&gt;Events&lt;/a&gt;,&lt;a href="http://technorati.com/tags/User+Group" rel="tag"&gt;User Group&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ODUG" rel="tag"&gt;ODUG&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Orlando+DotNetNuke+Users+Group" rel="tag"&gt;Orlando DotNetNuke Users Group&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ONETUG" rel="tag"&gt;ONETUG&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Orlando+.Net+User+Group" rel="tag"&gt;Orlando .Net User Group&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Space+Coast+SQL+User+Group" rel="tag"&gt;Space Coast SQL User Group&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Space+Coast+.Net+User+Group" rel="tag"&gt;Space Coast .Net User Group&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillStrohl-Professional/~4/l0xqI3x_8Mw" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/-PXCbZ_anAs" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>The Mighty Blog</dc:creator><pubDate>Thu, 02 Jul 2009 12:10:00 GMT</pubDate><guid isPermaLink="false">3cf5d929-511a-4c4a-9b2e-f602e7bcd212</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27451/Upcoming-Net-Community-Events-in-Florida.aspx</feedburner:origLink></item><item><title>Kudos ODUG</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/9jCwH813hJI/Kudos-ODUG.aspx</link><description>&lt;p&gt;Today marks the day when the &lt;a href="http://orlando.dotnetnukeug.net/" target="_blank"&gt;Orlando DotNetNuke&lt;/a&gt; User group officially has 200 members. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/bscarbeau/WindowsLiveWriter/KudosODUG_F901/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/bscarbeau/WindowsLiveWriter/KudosODUG_F901/image_thumb.png" width="153" height="147" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;It was a year and half ago that I started this group with about 7 members who came and met on a Saturday morning to discuss issues relating to the best open source web portal, DotNetNuke. Will Strohl was there along with a co-worker. Will has been a great member and now great leader of the group.&lt;/p&gt;  &lt;p&gt;More recently, Will was in charge of putting together the &lt;a href="http://dayofdnn.com/" target="_blank"&gt;Day of DotNetNuke&lt;/a&gt; held last month at the Microsoft Office in Tampa, FL. &lt;/p&gt;  &lt;p&gt;Many members are benefitting from this user group and I wish it continued grown and success. &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:0767317B-992E-4b12-91E0-4F059A8CECA8:9690298a-7407-4151-8eb9-dacebc58030f" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ODUG" rel="tag"&gt;ODUG&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DotNetNuke" rel="tag"&gt;DotNetNuke&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133199"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133199" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;Task=Get&amp;PageID=31016&amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;Task=Get&amp;Browser=NETSCAPE4&amp;NoCache=True&amp;PageID=31016&amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;Task=Click&amp;Mode=HTML&amp;SiteID=1&amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;Task=Get&amp;Mode=HTML&amp;SiteID=1&amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/bscarbeau/aggbug/133199.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/9jCwH813hJI" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>Brian Scarbeau</dc:creator><pubDate>Wed, 01 Jul 2009 21:42:32 GMT</pubDate><guid isPermaLink="false">5f156de2-5a13-4b96-b8b6-2fd63bb14a48</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27438/Kudos-ODUG.aspx</feedburner:origLink></item><item><title>Peter Donker to present at OpenForce 2009 EU</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/YakN8yygZ0Y/Peter-Donker-to-present-at-OpenForce-2009-EU.aspx</link><description>&lt;p&gt;After the good news for OpenForce US for this year (see this post) I am very pleased to have been selected to present at OpenForce EU as well. The sessions are entitled "Advanced Module Development in DNN", and "Extension Software Protection in DNN".&lt;/p&gt;&lt;a href=http://www.bring2mind.net/Company/News/tabid/155/EntryId/61/Peter-Donker-to-present-at-OpenForce-2009-EU.aspx&gt;More...&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/YakN8yygZ0Y" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>Peter Donker</dc:creator><pubDate>Wed, 01 Jul 2009 19:42:05 GMT</pubDate><guid isPermaLink="false">041d9faf-e309-418f-8e08-9aae3974f4cb</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27437/Peter-Donker-to-present-at-OpenForce-2009-EU.aspx</feedburner:origLink></item><item><title>Reorganizing the bookshelf at the local Borders</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/Xv9gznCt5TA/Reorganizing-the-bookshelf-at-the-local-Borders.aspx</link><description>&lt;p&gt;So tonight after work and before the St. Louis .Net User Group meeting I ran to Borders to see if I could find &lt;a href="http://bit.ly/dnnbook/" target="_blank"&gt;my book&lt;/a&gt; on the shelf. Well guess what, I did!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.flickr.com/photos/chammond/3674511612/"&gt;&lt;img alt="My book at Border's" src="http://farm4.static.flickr.com/3571/3674511612_a3bfe9d675_m.jpg" width="240" height="180" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I was pretty stoked to find it, but was shocked to only see the DNN4 book on the shelf, not any of the other &lt;a href="http://www.dotnetnuke.com/" target="_blank"&gt;DNN&lt;/a&gt; books. Well after digging around for a while I found them on another section, so I took the opportunity to organize a little :D Here’s the result.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.flickr.com/photos/chammond/3674512460/"&gt;&lt;img alt="DotNetNuke Books at Border's" src="http://farm3.static.flickr.com/2080/3674512460_1b60e8b998_m.jpg" width="240" height="180" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/Xv9gznCt5TA" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>ChrisHammond.com</dc:creator><pubDate>Tue, 30 Jun 2009 05:09:38 GMT</pubDate><guid isPermaLink="false">c1c0391a-a926-4ffe-b69c-b134e822bd09</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27434/Reorganizing-the-bookshelf-at-the-local-Borders.aspx</feedburner:origLink></item><item><title>Issue 46 - DotNetNuke ASCX Skinning and Open Web Studio Tutorials</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/DqnDVKJZcaA/Issue-46--DotNetNuke-ASCX-Skinning-and-Open-Web-S.aspx</link><description>&lt;em&gt;July 2009&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Welcome to issue 46 of DNN Creative Magazine&lt;/strong&gt;
&lt;p&gt;     &lt;img hspace="15" height="250" border="0" align="left" width="250" vspace="5" src="http://www.dnncreative.com/Portals/0/pics/issues/46/issue46_250.jpg" alt="Issue 46 - DotNetNuke ASCX Skinning and Open Web Studio Tutorials" /&gt; &lt;/p&gt;
&lt;p&gt;     In this issue we look at the professionals method for creating DotNetNuke skins,     ASCX skinning.&lt;br /&gt;
&lt;br /&gt;
We did some quick research via twitter for the preferred method of skinning with     the DotNetNuke professionals in the community and 100% of the skinners preferred     the ASCX method for skinning.&lt;br /&gt;
&lt;br /&gt;
ASCX skinning provides you with several benefits over the other methods of skinning     in DotNetNuke. The main benefit is that it is much quicker to create a skin in DotNetNuke     using the ASCX method.&lt;br /&gt;
&lt;br /&gt;
Further benefits include you can make changes live on the website without re-parsing     or re-installing the skin, you can instantly see edits and changes you make to your     skin code, you can view at a glance all of a skin tokens properties, and a really     useful feature is that if you are using Visual Web Developer Express it will suggest     the attributes that are available for each of the DotNetNuke tokens.&lt;br /&gt;
&lt;br /&gt;
We demonstrate all of these techniques and show you how to get started with ASCX     skinning in DotNetNuke.&lt;br /&gt;
&lt;br /&gt;
Accompanying the skinning, we have part four in our series on the Open Web Studio     Tutorials. In this episode we demonstrate how to add personalisation to the knowledgebase     module using InterModule Communications and creating a ‘my saved articles’     module. We also demonstrate how to create a Tooltip using JQuery, how to change     the “fetching data” message, how to enable Rich Text / HTML articles     and how to create a multi-category selection for each knowledgebase article.&lt;br /&gt;
&lt;br /&gt;
Finally, we have a podcast covering the latest DotNetNuke News as well as more tips     and tricks.&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;     &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;This issue comes complete with 11 Video Tutorials and 1 Podcast!&lt;/strong&gt;&lt;span&gt;         &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tutorials:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table cellspacing="5" cellpadding="10"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="width: 271px;"&gt;             Skinning:&lt;br /&gt;
            &lt;br /&gt;
             &lt;a href="http://www.dnncreative.com/Tutorials/SkinningTutorials/DotNetNukeASCXSkinning/tabid/504/Default.aspx"&gt;&lt;img height="319" width="250" alt="ASCX Skinning for DotNetNuke Professionals" src="http://www.dnncreative.com/Portals/0/pics/issues/46/ASCX_Skinning_250.jpg" /&gt;&lt;/a&gt;         &lt;/td&gt;
            &lt;td&gt;             &lt;a href="http://www.dnncreative.com/Tutorials/SkinningTutorials/DotNetNukeASCXSkinning/tabid/504/Default.aspx"&gt;                 DotNetNuke ASCX Skinning for Professional Skinners&lt;/a&gt;&lt;br /&gt;
            (6 videos - 58mins)         &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="width: 271px;"&gt;             Module Development Series:&lt;br /&gt;
            &lt;a href="http://www.dnncreative.com/Tutorials/DNNTutorialsforThirdPartyModules/OWSPart4/tabid/505/Default.aspx"&gt;                 &lt;img height="291" width="250" alt="R2i OWS Tutorial Part 4" src="http://www.dnncreative.com/Portals/0/pics/issues/46/R2i_part4_250.jpg" /&gt;&lt;/a&gt;         &lt;/td&gt;
            &lt;td&gt;             &lt;a href="http://www.dnncreative.com/Tutorials/DNNTutorialsforThirdPartyModules/OWSPart4/tabid/505/Default.aspx"&gt;                 Personalization, Text Editor, Logging and Reporting in Open Web Studio – Part 4                 of 6 – How to Build a Public Knowledge Base with OWS&lt;/a&gt;&lt;br /&gt;
            (5 videos - 58mins)         &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="width: 271px;"&gt;             Podcasts:&lt;br /&gt;
            &lt;br /&gt;
            &lt;a href="http://www.dnncreative.com/Reviews/Podcasts/DotNetNukeNewsPodcastJune18th09/tabid/506/Default.aspx"&gt;                 &lt;img height="250" width="250" alt="DNNCreative Podcast with Lee and Rich" src="http://www.dnncreative.com/Portals/0/pics/issues/36/DNN_podcast_lee_rich_250.jpg" /&gt;&lt;/a&gt;         &lt;/td&gt;
            &lt;td&gt;             &lt;a href="http://www.dnncreative.com/Reviews/Podcasts/DotNetNukeNewsPodcastJune18th09/tabid/506/Default.aspx"&gt;                 DotNetNuke News, DataSprings Dynamic Forms, DNN 5.1 Professional, Openforce 09,                 Snapsis PageBlaster&lt;/a&gt;&lt;br /&gt;
            (25mins)         &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;     &lt;a href="http://www.dnncreative.com/Home/Issues/Volume4/Issueno46/tabid/507/Default.aspx"&gt;         View issue 46 to download all of the videos in one zip file&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;hr width="100%" size="2" /&gt;
&lt;br /&gt;
&lt;a href="http://www.dnncreative.com"&gt;DNN Creative Magazine for DotNetNuke Web Designers&lt;/a&gt;&lt;br /&gt;
Covering DotNetNuke module video reviews, video tutorials, mp3 interviews, resources and web design tips for working with DotNetNuke.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;In 46 issues we have created 441 videos!&lt;/strong&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/DqnDVKJZcaA" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>DNN Creative Magazine</dc:creator><pubDate>Mon, 29 Jun 2009 22:26:00 GMT</pubDate><guid isPermaLink="false">bbc4ce5f-37bb-4131-b158-9bba3fbe9f12</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27433/Issue-46--DotNetNuke-ASCX-Skinning-and-Open-Web-S.aspx</feedburner:origLink></item><item><title>Engage: Publish 5.4 Released</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/kL3_fiEPInU/Engage-Publish-54-Released.aspx</link><description>So it’s been way too long, 6 months to be pretty exact, since we had a new release for Engage: Publish . Well last Thursday it finally came! We released Publish 5.4 on our website, though without announcement because of everything else we have had going...(&lt;a href="http://weblogs.asp.net/christoc/archive/2009/06/29/engage-publish-5-4-released.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7136818" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/kL3_fiEPInU" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>DotNetNuke Developer</dc:creator><pubDate>Mon, 29 Jun 2009 21:37:25 GMT</pubDate><guid isPermaLink="false">31142934-80c1-4f45-af48-08ae39f2ef4d</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27429/Engage-Publish-54-Released.aspx</feedburner:origLink></item><item><title>The Onion Of URL Rewriting</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/ozbBneM_je8/The-Onion-Of-URL-Rewriting.aspx</link><description>We had a DotNetNuke client report today that they could not directly access .xml or .swf files that they could previously get to from their portal. So of course the first thing we did verify the files in question were actually on the file system, they were. We knew this particular client had moved hosts recently so we checked al the IIS configurations and the file mime types were registered and allowed to be served so that was not it. We were then made aware that the sites 3rd party URL rewriting had recently been updated. This peaked our interest an after a little digging we discovered that with this particular URL rewriter you had to explicitly ignore file extensions through regular expression matching exposed as a property on the friendly URL provider. After adding the ignores for said extensions everything was back to normal. So if you see anomalies in content being served and you have verified IIS is setup correctly. Then the next place to look on a DotNetNuke installation is typically the portals friendly URL provider.&lt;img src="http://feeds.feedburner.com/~r/Apptheory_DotNetNuke_Blog/~4/yoFW4lXfnwk" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/ozbBneM_je8" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>AppTheory DotNetNuke Blog</dc:creator><pubDate>Mon, 29 Jun 2009 00:35:00 GMT</pubDate><guid isPermaLink="false">b125ed09-4ef1-44fa-b19c-0325b6a0a3b8</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27427/The-Onion-Of-URL-Rewriting.aspx</feedburner:origLink></item><item><title>How to Manually Delete A DotNetNuke Module</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/peyJxtT3GeA/How-to-Manually-Delete-A-DotNetNuke-Module.aspx</link><description>&lt;p&gt;I was recently asked how someone could manually delete a module once it is installed. The number of use cases where this would be useful is limited, but it is still a valid scenario that needs to be considered – especially during development.  Here is a walk through of the general steps required to delete a module manually.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Run the Uninstall script (if necessary) &lt;/li&gt;    &lt;li&gt;Delete the module files from the &lt;font face="Courier New"&gt;DesktopModules&lt;/font&gt; and &lt;font face="Courier New"&gt;App_Code&lt;/font&gt; folder &lt;/li&gt;    &lt;li&gt;Grab the &lt;font face="Courier New"&gt;DesktopModuleId&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Delete the permissions associated with the module &lt;/li&gt;    &lt;li&gt;Delete the module from the database &lt;/li&gt;    &lt;li&gt;Refresh the site cache to update the UI with your changes &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;font size="2"&gt;While I have not fully verified these steps to be the same in DNN version 5.x, they should generally be the same.  Here is some guidance to follow each of the defined steps above…&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;WARNING!&lt;/strong&gt;  Performing these steps incorrectly could result in your DNN site being broken and/or no longer accessible.  In some cases, this might be permanent.  It is HIGHLY recommended that you perform a complete backup of your database and file system before performing these steps.  Doing so will give you a restore point, should something go wrong.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h4&gt;Run the Uninstall Script&lt;/h4&gt;  &lt;p&gt;&lt;font size="2"&gt;Not all modules require a Data Access Layer (DAL), as some modules only perform utility functions and do not need to save and retrieve information from the database.  The majority of the module out there do have a DAL though, and in turn will have an uninstall script in their folder.  Look for a file named &lt;strong&gt;Uninstall.SqlDataProvider&lt;/strong&gt; in the DesktopModules folder for the module you’re deleting.  Here is a reference path for you to use:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;~/DesktopModules/&lt;module name&gt;/Uninstall.SqlDataProvider&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Assuming your module is named “WNSUtility”, the above path would look like this:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;~/DesktopModules/WNSUtility/Uninstall.SqlDataProvider&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Using the &lt;strong&gt;SQL Module&lt;/strong&gt; in the &lt;strong&gt;Host Menu&lt;/strong&gt;, execute this script.  Be sure to load the script, and then check the checkbox for &lt;strong&gt;Run as Script&lt;/strong&gt; before you execute it.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;u&gt;Please Note&lt;/u&gt;:  If you are using a different Data Provider, the file extension for your uninstall script will be different.&lt;/font&gt;&lt;/p&gt;  &lt;h4&gt;Delete the Module Files&lt;/h4&gt;  &lt;p&gt;&lt;font size="2"&gt;Deleting the files from a module is easy.  Find the module directory for your module.  Using the example from above, it would be:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;~/DesktopModules/WNSUtility/&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Delete all files from that directory, and the directory itself.  You might run into one or more errors do to files being loaded into memory.  Should this happen, you can release the file(s) from memory by recycling the Application Pool, or restarting IIS.&lt;/font&gt;&lt;/p&gt;  &lt;h4&gt;Grab the DesktopModuleId&lt;/h4&gt;  &lt;p&gt;&lt;font size="2"&gt;This is a very important step, as the final two steps would be incredibly difficult without the &lt;strong&gt;DesktopModuleId&lt;/strong&gt;.  There is not always an exact science to finding the DesktopModuleId, but we will need it for the following steps.  In most cases, I simply perform the following query on the database:&lt;/font&gt;&lt;/p&gt;  &lt;div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 500px; padding-right: 4px; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px"&gt;   &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;     &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; * &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; [dbo].[DesktopModules] &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; [IsAdmin] = 0 &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff"&gt;BY&lt;/span&gt; [FriendlyName] &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;-- or &lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; * &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; {databaseOwner}{objectQualifier}DesktopModules &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; [IsAdmin] = 0 &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff"&gt;BY&lt;/span&gt; [FriendlyName] &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;font size="2"&gt;From the above script, locating the module in question is usually easy.  Simply find the module using its Friendly Name, and then record the DesktopModuleID associated with it. &lt;/font&gt;&lt;/p&gt;

&lt;h4&gt;Delete the Module Permissions&lt;/h4&gt;

&lt;p&gt;&lt;font size="2"&gt;This step gets executed in three parts.  As long as there aren’t a lot of instances of the module in your site, these queries should execute quickly, and error free.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="2"&gt;Using the DesktopModuleId from the previous step, execute the &lt;strong&gt;GetModuleDefinitions&lt;/strong&gt; stored procedure, taking note of each &lt;strong&gt;ModuleDefID&lt;/strong&gt;.  For each module definition returned, you will next need to execute the &lt;strong&gt;GetPermissionsByModuleDefID&lt;/strong&gt; stored procedure, this time taking note of each &lt;strong&gt;PermissionID&lt;/strong&gt;.  Finally, execute the &lt;strong&gt;DeletePermission&lt;/strong&gt; stored procedure for each PermissionID that was returned.&lt;/font&gt;&lt;/p&gt;

&lt;h4&gt;Delete the Module from the Database&lt;/h4&gt;

&lt;p&gt;&lt;font size="2"&gt;Now, we actually delete the module.  Doing so is very easy.  Like the previous step, we just need to execute a stored procedure using the DesktopModuleID we grabbed a little while ago.  Execute the &lt;strong&gt;DeleteDesktopModule&lt;/strong&gt; stored procedure to delete the module.&lt;/font&gt;&lt;/p&gt;

&lt;h4&gt;Refresh the Site Cache&lt;/h4&gt;

&lt;p&gt;&lt;font size="2"&gt;The final thing to do is to clear the cache on the site to remove the module from all of the user interface, such as the drop down lists.  You just need to clear the cache on the site.  I have blogged about &lt;a href="http://www.willstrohl.com/DNNCache.aspx" target="_blank"&gt;clearing the DNN site cache&lt;/a&gt; before.&lt;/font&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:0767317B-992E-4b12-91E0-4F059A8CECA8:c2727dd4-d0c2-4b4b-889f-6418cb64f222" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DotNetNuke" rel="tag"&gt;DotNetNuke&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DNN" rel="tag"&gt;DNN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DNN+Blogs" rel="tag"&gt;DNN Blogs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Module+Development" rel="tag"&gt;Module Development&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillStrohl-Professional/~4/XtlM7t5sX78" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/peyJxtT3GeA" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>The Mighty Blog</dc:creator><pubDate>Sun, 28 Jun 2009 19:31:00 GMT</pubDate><guid isPermaLink="false">db074960-0e42-45eb-bef2-90281b43f5ee</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27425/How-to-Manually-Delete-A-DotNetNuke-Module.aspx</feedburner:origLink></item><item><title>Changing the Default Favicon for Your Site</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/e7XKDDmu5Q4/Changing-the-Default-Favicon-for-Your-Site.aspx</link><description>&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 5px 5px 0px; display: inline; border-top: 0px; border-right: 0px" title="DotNetNuke Gear Logo" border="0" alt="DotNetNuke Gear Logo" align="left" src="http://www.willstrohl.com/Portals/1/Blog/Files/3/425/WLW-ChangingtheDefaultFaviconforYourSite_479-dnn_gear_white_bg_72x77_3.png" width="76" height="81" /&gt; In &lt;a href="http://www.dotnetnuke.com" target="_blank"&gt;DotNetNuke®&lt;/a&gt;, a favicon of the DNN gear logo is placed as the default favicon.  For some websites, this is no big deal.  However, for any site that requires its own branding, changing the favicon is a really big requirement.  Luckily, DNN makes changing this easy, and flexible.&lt;/p&gt;  &lt;p&gt;First of all, in the root of your DNN site, there are two favicons:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;favicon.ico&lt;/li&gt;    &lt;li&gt;DotNetNuke.ico&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="2"&gt;Both files contain the same image, the DNN gear.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;You could just overwrite the favicon file with your own.  However, that is technically making a core code change, and if you end up putting a second portal on your DNN instance, both sites will be using the same favicon.  This will likely put you into the same position that you originally were in, in the first place.&lt;/p&gt;  &lt;p&gt;The real solution is to put your favicon into the root of your portal directory, saved as &lt;font face="Courier New"&gt;favicon.ico&lt;/font&gt;.  For example, for the root site, your file name and path might match the following:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;~/Portals/0/favicon.ico&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;When your site is loaded, the DNN framework will automatically grab and send the new favicon to the web browser, instead of the one on the root of your DNN installation.  This will work for each and every portal that you have as part of this single DNN instance.  For example, if you have 50 portals hosted in your DNN instance, each one can have its own unique favicon using this method.&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:0767317B-992E-4b12-91E0-4F059A8CECA8:401ae43c-eb00-4241-894f-b95e4b68fbcc" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DotNetNuke" rel="tag"&gt;DotNetNuke&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DNN" rel="tag"&gt;DNN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DNN+Blogs" rel="tag"&gt;DNN Blogs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Favicon" rel="tag"&gt;Favicon&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillStrohl-Professional/~4/x8cOsGxzKxw" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/e7XKDDmu5Q4" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>The Mighty Blog</dc:creator><pubDate>Sun, 28 Jun 2009 01:33:00 GMT</pubDate><guid isPermaLink="false">61afe745-cd3d-445b-b980-c903910aa7d5</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27424/Changing-the-Default-Favicon-for-Your-Site.aspx</feedburner:origLink></item><item><title>SharePoint VS DotNetNuke, a Recap</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/d6DVttAhE5k/SharePoint-VS-DotNetNuke-a-Recap.aspx</link><description>&lt;p&gt;Yesterday afternoon &lt;a href="http://www.halhayes.com/blog/" target="_blank"&gt;Hal Hayes&lt;/a&gt; and I were invited to speak at the &lt;a href="http://www.sugdc.org" target="_blank"&gt;SharePoint Technology Conference&lt;/a&gt; hosted and organized by the &lt;a href="http://www.sugdc.org" target="_blank"&gt;SharePoint User Group DC&lt;/a&gt; (SUGDC). &lt;/p&gt;  &lt;p&gt;The event was packed with sessions hosted by leaders and top professionals in the Microsoft SharePoint space. I was quite honored to be invited to speak, and if that wasn’t enough, I was speaking more on behalf of DotNetNuke rather than SharePoint.&lt;/p&gt; &lt;a href=http://www.cto20.com/home/entryid/111/sharepoint-vs-dotnetnuke-a-recap.aspx&gt;More...&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/d6DVttAhE5k" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>CTO 2.0 - Antonio Chagoury</dc:creator><pubDate>Sun, 28 Jun 2009 00:32:49 GMT</pubDate><guid isPermaLink="false">808bff75-76e6-478d-a5ef-6643db1249c0</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27422/SharePoint-VS-DotNetNuke-a-Recap.aspx</feedburner:origLink></item><item><title>ODUG Celebrates it’s One Year INETA Anniversary</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/MBRrVa6UwU0/ODUG-Celebrates-its-One-Year-INETA-Anniversary.aspx</link><description>&lt;p&gt;The &lt;a href="http://orlando.dotnetnukeug.net/" target="_blank"&gt;Orlando DotNetNuke® Users Group&lt;/a&gt; (&lt;a href="http://orlando.dotnetnukeug.net/" target="_blank"&gt;ODUG&lt;/a&gt;) is not very old.  We are still working toward finishing our second year as a user group.  Our first meeting was February of 2008.  However, it was several months later before we actually were able to claim our status as member of &lt;a href="http://www.ineta.org/" target="_blank"&gt;INETA&lt;/a&gt;.  Well, a few days ago I was reminded of this, as there was a package that showed up for me at work.&lt;/p&gt;  &lt;p&gt;Looking at the package, I was confused since it was from &lt;a href="http://www.ineta.org/" target="_blank"&gt;INETA&lt;/a&gt;.  I wasn’t expecting any packages, much less one from &lt;a href="http://www.ineta.org/" target="_blank"&gt;INETA&lt;/a&gt;.  When I opened it, I was greeted with a pleasant surprise.  It was a mounted certificate, celebrating our one year anniversary with the &lt;a href="http://www.ineta.org/" target="_blank"&gt;INETA&lt;/a&gt; user group program.&lt;/p&gt;  &lt;p&gt;For those of you who are not sure what that means… &lt;a href="http://www.ineta.org/" target="_blank"&gt;INETA&lt;/a&gt; sponsors user groups in a way that most other organizations cannot.  It gives support in a number of ways to user group leaders.  The most notable way they sponsor user groups comes in the form of flying in speakers.  &lt;a href="http://www.ineta.org/" target="_blank"&gt;INETA&lt;/a&gt; provides two speakers per year, with all of their expenses paid.  So far, we have only used one of these.  &lt;a href="http://www.ineta.org/" target="_blank"&gt;INETA&lt;/a&gt; flew in Chris Hammond to us earlier this year.  We are already planning to use our 2nd one in December of this year.&lt;/p&gt;  &lt;p&gt;I have only one thing to say, “Thank you, INETA!”&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:0767317B-992E-4b12-91E0-4F059A8CECA8:8df8119d-0824-4952-90ae-82efb6fadbc2" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DotNetNuke" rel="tag"&gt;DotNetNuke&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DNN+Blogs" rel="tag"&gt;DNN Blogs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/INETA" rel="tag"&gt;INETA&lt;/a&gt;,&lt;a href="http://technorati.com/tags/User+Group" rel="tag"&gt;User Group&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ODUG" rel="tag"&gt;ODUG&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Orlando+DotNetNuke+Users+Group" rel="tag"&gt;Orlando DotNetNuke Users Group&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillStrohl-Professional/~4/ix2gk2RSc1g" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/MBRrVa6UwU0" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>The Mighty Blog</dc:creator><pubDate>Sat, 27 Jun 2009 21:06:00 GMT</pubDate><guid isPermaLink="false">2a046edb-1a41-4fda-8c08-a96d37cb431a</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27423/ODUG-Celebrates-its-One-Year-INETA-Anniversary.aspx</feedburner:origLink></item><item><title>Comparing the DotNetNuke Podcasts</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/8lZHFrDrgEU/Comparing-the-DotNetNuke-Podcasts.aspx</link><description>&lt;p&gt;I wasn’t really listening to podcasts until a few months ago.  I just really didn’t find anything that truly interested me to the point of putting down my personal 60+ GB of music and streaming my favorite radio stations.  Not to mention, I am a fan of the popular streaming service known as &lt;a href="http://www.pandora.com" target="_blank"&gt;Pandora&lt;/a&gt;.  Anyway, I found the &lt;a href="http://www.dotnetnukepodcast.com" target="_blank"&gt;DotNetNuke Podcast&lt;/a&gt; about that time, and shortly after, &lt;a href="http://www.dnnvoice.com" target="_blank"&gt;DNN Voice&lt;/a&gt; was born.  Since I am so passionate about &lt;a href="http://www.dotnetnuke.com" target="_blank"&gt;DotNetNuke®&lt;/a&gt;, I began listening.  Right now, I only know of those two DNN podcasts.&lt;/p&gt;  &lt;p&gt;I have been listening to both podcasts for a while now.  Honestly, I like them both.  They have a different focus, and because of that focus, both are going to have a different fan base.  &lt;/p&gt;  &lt;h4&gt;DotNetNuke Podcast&lt;/h4&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://www.dotnetnukepodcast.com" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 5px 5px 0px; display: inline; border-top: 0px; border-right: 0px" title="DotNetNuke Podcast" border="0" alt="DotNetNuke Podcast" align="left" src="http://www.willstrohl.com/Portals/1/Blog/Files/3/423/WLW-ComparingtheDotNetNukePodcasts_13E6E-DNNCreative_3.png" width="244" height="196" /&gt;&lt;/a&gt; Address:&lt;/strong&gt;  &lt;a href="http://www.dotnetnukepodcast.com" target="_blank"&gt;http://www.dotnetnukepodcast.com&lt;/a&gt;    &lt;br /&gt;&lt;strong&gt;Host(s):&lt;/strong&gt;  Lee Sykes and Richard Wooten &lt;em&gt;(cannot find personal blog links)&lt;/em&gt;    &lt;br /&gt;&lt;strong&gt;Background:&lt;/strong&gt;  Lee Sykes is the original person behind the &lt;a href="http://www.dnncreative.com" target="_blank"&gt;DNN Creative Magazine&lt;/a&gt; website, which sells DNN tutorials and videos.  It has become one of the primary places to get DNN “how to” information on the Internet.  Richard Wooten is also part of &lt;a href="http://www.dnncreative.com" target="_blank"&gt;DNN Creative&lt;/a&gt;, since February of 2008.  Both have been using DNN for a long time, and have a great deal of knowledge in using DNN.&lt;/p&gt;  &lt;p&gt;It is fun to listen to the &lt;a href="http://www.dotnetnukepodcast.com" target="_blank"&gt;DotNetNuke Podcast&lt;/a&gt;.  Lee and Richard have a great chemistry, and it translates well into the podcast.  They basically speak about of the new things that they have heard about in the DNN ecosystem.  It almost feels like they each have a separate list of bullet points.  They talk about community news and information, but it usually not very much of their podcast.  Overall, they have some great information.&lt;/p&gt;  &lt;p&gt;I love their summary on their website for each episode.  While it doesn’t look like their is a whole lot of organization to the information, it is well laid out for us to follow along on their site.  There is an RSS feed that is available to you to help you keep track of new episodes.  I have also seen Lee promote the shows on twitter.  Since I check twitter more often than I do my RSS reader, that’s how I usually get informed of the newest episodes.&lt;/p&gt;  &lt;p&gt;In their &lt;a href="http://www.dotnetnukepodcast.com/AboutUs/tabid/56/Default.aspx" target="_blank"&gt;About Us&lt;/a&gt; page, they ask for community input for the show.  That is really cool.  I haven’t noticed them mention any of their content coming from this feature though.&lt;/p&gt;  &lt;p&gt;Some of their ecosystem “news” is sponsored.  While I understand why, and I don’t disagree with it (I am beginning something similar on my blog), I would much rather hear about ecosystem products and news that they find interesting or are passionate about for personal reasons.  In the end, it is still good information though, so it isn’t a deal breaker at all for me.&lt;/p&gt;  &lt;p&gt;I am disappointed that community information doesn’t take a higher priority in the information they pass on to their listeners.  In my opinion, the community information is often more important than the ecosystem information.  Sure, they mention something about community here and there, but it is clearly not as much of a priority as I think it should be.&lt;/p&gt;  &lt;p&gt;Something I really do not enjoy is the other tech news that get injected into the podcast, and this is a deal breaker.  The podcast is called “DotNetNuke Podcast”.  When I listen to it, I do not expect or want to hear about other technologies unless they have a relationship to the word “DotNetNuke”.&lt;/p&gt;  &lt;h4&gt;DNN Voice&lt;/h4&gt; &lt;strong&gt;&lt;a href="http://www.dnnvoice.com" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 5px 5px 0px; display: inline; border-top: 0px; border-right: 0px" title="DNNVoice" border="0" alt="DNNVoice" align="left" src="http://www.willstrohl.com/Portals/1/Blog/Files/3/423/WLW-ComparingtheDotNetNukePodcasts_13E6E-DNNVoice_3.png" width="244" height="183" /&gt;&lt;/a&gt; Address:&lt;/strong&gt;  &lt;a href="http://www.dnnvoice.com" target="_blank"&gt;http://www.dnnvoice.com&lt;/a&gt;  &lt;br /&gt;&lt;strong&gt;Host(s):&lt;/strong&gt;  &lt;a href="http://weblogs.asp.net/christoc" target="_blank"&gt;Chris Hammond&lt;/a&gt; and &lt;a href="http://seablick.com/blog" target="_blank"&gt;Tom Kraak&lt;/a&gt;  &lt;br /&gt;&lt;strong&gt;Background:&lt;/strong&gt;  Chris Hammond is a DNN Core Team Member, and the Project Lead for the Wiki Module.  In addition, he is the for &lt;a href="http://www.engagesoftware.com" target="_blank"&gt;Engage Software&lt;/a&gt;, the Official &lt;a href="http://www.dotnetnuke.com" target="_blank"&gt;DotNetNuke®&lt;/a&gt; training provider.  Tom Kraak is an SEO Expert and principle consultant at &lt;a href="http://seablick.com" target="_blank"&gt;Seablick Consulting&lt;/a&gt;, specializing in the DNN ecosystem.  Like Richard and Lee, Chris and Tom have been using DNN for quite a while and have a great deal of DNN knowledge.  &lt;p&gt;&lt;u&gt;Full Disclosure&lt;/u&gt;:  Even though I feel that I am pretty good at being objective, I do feel that it’s only fair to let you know that I have developed a personal relationship with Tom and Chris.  We speak regularly on twitter and the IM, and I have had them speak at our &lt;a href="http://orlando.dotnetnukeug.net/" target="_blank"&gt;ODUG&lt;/a&gt; meetings.  Also, I did give some input to Chris about the podcast for the first few episodes.  So, while I believe that my review here is completely objective, you can use your own judgment and form your own opinion when I am done.&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://www.dnnvoice.com" target="_blank"&gt;DNN Voice&lt;/a&gt; podcast is very well-structured.  I has a pre-defined format that it follows the same path for nearly every episode.  For those of us that are techies (most of the audience), it gives us the routine that we typically enjoy.  I really like that the various sections have an audible queue to let us know when the next section is coming, and what it is.  Like the radio, it helps us to know when the next segment is coming.&lt;/p&gt;  &lt;p&gt;Similar to Richard and Lee, Chris and Tom also have a great chemistry and it comes across well during the podcast.  Both podcasts do a great job of keeping each episode fun in the same way.  It sounds like we are eavesdropping on two friends having a good time talking about technology.&lt;/p&gt;  &lt;p&gt;DNN Voice places a much higher emphasis on listener input by making it a prominent link on all pages on the site.  They also make this part of each episode, making it clear to the listener that their input is not only welcome, but they might hear it on the show.&lt;/p&gt;  &lt;p&gt;In general, I do not think that we could have a podcast that isn’t sponsored in some way.  We must find a way to justify the time we spend on projects such as this.  DNN Voice’s sponsorship is less transparent than the previous podcast.  It is clear that the podcast has an affiliation with Engage.  Once again, this is not a deal breaker.&lt;/p&gt;  &lt;p&gt;The main thing I really love about &lt;a href="http://www.dnnvoice.com" target="_blank"&gt;DNN Voice&lt;/a&gt; is that it appears to be a much better mix of community and ecosystem information.  This is very important to me.  In my opinion, the ecosystem is only successful and exists because of the community.&lt;/p&gt;  &lt;p&gt;Like the &lt;a href="http://www.dotnetnukepodcast.com" target="_blank"&gt;DotNetNuke Podcast&lt;/a&gt;, &lt;a href="http://www.dnnvoice.com" target="_blank"&gt;DNN Voice&lt;/a&gt; makes its announcements for the podcast available through RSS and twitter.  However, DNN Voice takes this a step further by making the show available as a subscription through Zune and iTunes.  Also, while both podcasts offer up a comments mechanism on their site, &lt;a href="http://www.dnnvoice.com" target="_blank"&gt;DNN Voice&lt;/a&gt; takes this another step further by allowing their visitors to rate each individual podcast.&lt;/p&gt;  &lt;h4&gt;In Conclusion&lt;/h4&gt;  &lt;p&gt;Each podcast definitely has its own focus and specialty.  &lt;a href="http://www.dotnetnukepodcast.com" target="_blank"&gt;DotNetNuke Podcast&lt;/a&gt; seems to cater to the DNN’er who is mostly concerned about technology in general, and the DNN ecosystem.  &lt;a href="http://www.dnnvoice.com" target="_blank"&gt;DNN Voice&lt;/a&gt; appears to have its focus pointing directly at the DNN community member, and still includes more information, but stays within the DNN umbrella.  &lt;/p&gt;  &lt;p&gt;I think it’s clear that I prefer &lt;a href="http://www.dnnvoice.com" target="_blank"&gt;DNN Voice&lt;/a&gt; over the &lt;a href="http://www.dotnetnukepodcast.com" target="_blank"&gt;DotNetNuke Podcast&lt;/a&gt;.  However, I cannot say that one is better than the other.  That depends on what you want in a podcast.  They each fill a void in the DNN podcast market.  However, all of the voids are not yet filled… Any new podcasters out there? :)&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:0767317B-992E-4b12-91E0-4F059A8CECA8:eab1495d-6f9e-4026-bcff-3f759510609f" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DotNetNuke" rel="tag"&gt;DotNetNuke&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DNN" rel="tag"&gt;DNN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DNN+Blogs" rel="tag"&gt;DNN Blogs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Podcast" rel="tag"&gt;Podcast&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Review" rel="tag"&gt;Review&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillStrohl-Professional/~4/ceh5NfD3mFU" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/8lZHFrDrgEU" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>The Mighty Blog</dc:creator><pubDate>Sat, 27 Jun 2009 02:03:00 GMT</pubDate><guid isPermaLink="false">732d18e1-6069-4ff0-8cfd-c9e15129e6f4</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27421/Comparing-the-DotNetNuke-Podcasts.aspx</feedburner:origLink></item><item><title>Been there done that before -- ugh!</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/LKL-kwXZFZE/Been-there-done-that-before--ugh.aspx</link><description>&lt;p&gt;I required an enhanced IFrame Module that will "blur" the parameters being passed to the page referenced in the IFrame.  The issue is passing parameters in clear text is considered "bad form" by Web Inpection tools such as HP's WebInspect.  While the DNN site in a intranet site, I guess the need to "blur" the parameters does have merit. &lt;/p&gt;
&lt;p&gt;So I need to revise the IFrame to "blur" the parameters --  I am going to modify the parameters passed in one of two ways -- Base64 encode the value string -- this will make the effort of determining what is passed difficult for a snooper of the HTML source.  The other way will be to Encrypt the data using the standard encryption provided by .Net. &lt;/p&gt;
&lt;p&gt;However is creation of the module turns into a real problem with multiple control definitions for a module.&lt;/p&gt;&lt;a href=http://www.tressleworks.ca/Blog/tabid/73/EntryId/52/Been-there-done-that-before-ugh.aspx&gt;More...&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/LKL-kwXZFZE" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>TressleWorks</dc:creator><pubDate>Fri, 26 Jun 2009 22:20:00 GMT</pubDate><guid isPermaLink="false">778a8400-4ace-42e0-a72a-8a861d64157f</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27420/Been-there-done-that-before--ugh.aspx</feedburner:origLink></item><item><title>Report Viewer – Multi select drop-down boxes are too small</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/n8zIK6nwF7c/Report-Viewer--Multi-select-dropdown-boxes-are-t.aspx</link><description>&lt;p&gt;We recently deployed a report library for our online application and one of the parameters that exists for almost all reports is what locations to run the report for. Fairly standard huh? So far so great. When we went and looked at how the parameters were presented we were surprised there was no way to adjust the width of those drop down lists, they are hard coded to 184px, this cut off almost half the name of the locations for a lot of our clients, made it very unfriendly to our users.&lt;/p&gt;  &lt;p&gt;After some Google searches and a Twitter post basically discovered the only way to really change those is a CSS hack. Thanks to Brandon Hays for his blog post on it located here (&lt;a href="http://blogs.law.harvard.edu/brandonhaynes/2008/09/24/changing-the-size-of-reportviewer-parameter-dropdown-list/"&gt;Changing the Size of ReportViewer Parameter Dropdown List&lt;/a&gt;). Take a look at that blog post for the theory behind this solution. Our problem was that Mr. Hayes stopped a little short of what we needed and so I wanted to share my code so others can benefit from it.&lt;/p&gt;  &lt;p&gt;I did this in a DNN module but the basic premise will work for any ASP.NET page that loads reports dynamically into the viewer. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;In the page where the report is loaded in the PreRender event you will want to loop through the controls and add the relevant CSS class for the drop down in the report viewer like this:&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System&lt;span style="color: #cc6633"&gt;.EventArgs&lt;/span&gt;) Handles Me&lt;span style="color: #cc6633"&gt;.PreRender&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;             For Each oCtrl As Control In Me&lt;span style="color: #cc6633"&gt;.ReportViewer1&lt;/span&gt;&lt;span style="color: #cc6633"&gt;.Controls&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;                 If oCtrl&lt;span style="color: #cc6633"&gt;.GetType&lt;/span&gt;&lt;span style="color: #cc6633"&gt;.ToString&lt;/span&gt;&lt;span style="color: #cc6633"&gt;.ToLower&lt;/span&gt; = "microsoft&lt;span style="color: #cc6633"&gt;.reporting&lt;/span&gt;&lt;span style="color: #cc6633"&gt;.webforms&lt;/span&gt;&lt;span style="color: #cc6633"&gt;.parametersarea&lt;/span&gt;" Then&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;                     For Each xCtrl As Control In oCtrl&lt;span style="color: #cc6633"&gt;.Controls&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;                         If xCtrl&lt;span style="color: #cc6633"&gt;.GetType&lt;/span&gt;&lt;span style="color: #cc6633"&gt;.ToString&lt;/span&gt;&lt;span style="color: #cc6633"&gt;.ToLower&lt;/span&gt; = "microsoft&lt;span style="color: #cc6633"&gt;.reporting&lt;/span&gt;&lt;span style="color: #cc6633"&gt;.webforms&lt;/span&gt;&lt;span style="color: #cc6633"&gt;.multivaluevalidvaluescontrol&lt;/span&gt;" Then&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;                             Me&lt;span style="color: #cc6633"&gt;.Literal1&lt;/span&gt;&lt;span style="color: #cc6633"&gt;.Text&lt;/span&gt; += "&lt;span style="color: #0000ff"&gt;div&lt;/span&gt;#" &lt;span style="color: #006080"&gt;&amp;&lt;/span&gt; xCtrl&lt;span style="color: #cc6633"&gt;.ClientID&lt;/span&gt; &lt;span style="color: #006080"&gt;&amp;&lt;/span&gt; "_divDropDown {&lt;span style="color: #0000ff"&gt;width&lt;/span&gt;: 500px &lt;span style="color: #006080"&gt;!important;&lt;/span&gt;}" &lt;span style="color: #006080"&gt;&amp;&lt;/span&gt; vbCrLf&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;                         End If&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;                     Next&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;                 End If&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;             Next&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;         End Sub&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/n8zIK6nwF7c" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>DotNetNuke Blog from CodeMyPantsOff</dc:creator><pubDate>Fri, 26 Jun 2009 16:44:01 GMT</pubDate><guid isPermaLink="false">68bfdfc1-0352-4258-94b5-9c6c3c96d36f</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27450/Report-Viewer--Multi-select-dropdown-boxes-are-t.aspx</feedburner:origLink></item><item><title>The Value of Requirements Gathering</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/LT3b9ftzZyI/The-Value-of-Requirements-Gathering.aspx</link><description>Requirements are the cornerstone for the project scope. These have to be clearly defined if you wish to be successful in the execution of your project.&lt;img src="http://feeds.feedburner.com/~r/Apptheory_DotNetNuke_Blog/~4/dVc9GXRwc9o" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/LT3b9ftzZyI" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>AppTheory DotNetNuke Blog</dc:creator><pubDate>Fri, 26 Jun 2009 14:11:41 GMT</pubDate><guid isPermaLink="false">5742c452-90a0-49e5-8b89-bfb24604390f</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27419/The-Value-of-Requirements-Gathering.aspx</feedburner:origLink></item><item><title>The FCKEditor for Content Administrators</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/TJnnO-k-H84/The-FCKEditor-for-Content-Administrators.aspx</link><description>&lt;p&gt;At Engage we do a lot of cool work with websites, and when we hand-off the projects there is always a pang in my heart that I’m sure parents feel when they see their child off to summer camp for the first time. “Will the website survive all the bullies? I hope they don’t learn curse words (bad markup).” One of the major benefits to working with a content management system like &lt;a href="http://www.dotnetnuke.com" target="_blank"&gt;DotNetNuke&lt;/a&gt; is that you can distribute content administration privileges to users who wouldn’t normally manage a website. The tools DNN provides help to make editing content easy. But this can also lead to a website that looks like it is managed by multiple people with various ideas on what looks good (font sizes, font styles…).&lt;/p&gt;  &lt;p&gt;At Engage we utilize a number of tactics to help ensure that websites can be properly maintained after the hand-off from our implementation services to our customers ownership and management of their site. On my personal blog, I outlined some tricks we use to make the FCKEditor (the Rich Text Editor in DNN) really easy and fool-proof for content administrators. &lt;a title="Optimizing the FCKEditor for DNN" href="http://www.patrickrenner.com/Home/articleType/ArticleView/articleId/53/Optimizing-the-FCKEditor-for-DNN.aspx" target="_blank"&gt;Check out how to optimize the FCKEditor for DNN&lt;/a&gt; on my personal site. If you’re interested in some of the other tactics (hints: advanced skinning tricks, &lt;a title="Engage software is the Official Training provider for DNN" href="http://www.engagesoftware.com/Training.aspx" target="_blank"&gt;custom training&lt;/a&gt;…) we use, please contact us about how to make your DNN site really hum.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/TJnnO-k-H84" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>Engage Software</dc:creator><pubDate>Fri, 26 Jun 2009 13:52:24 GMT</pubDate><guid isPermaLink="false">465dce06-c4e5-414b-855d-72f46eb8b886</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27418/The-FCKEditor-for-Content-Administrators.aspx</feedburner:origLink></item><item><title>How to Add a User to a Role Programmatically</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/vsS5nZk2H_Q/How-to-Add-a-User-to-a-Role-Programmatically.aspx</link><description>&lt;p&gt;There may come a time when you will want to programmatically add a user to an existing role in &lt;a href="http://www.dotnetnuke.com" target="_blank"&gt;DotNetNuke®&lt;/a&gt;.  It’s actually quite easy.  If you take a look at how the core code in DNN does it, just emulate that.  This method of using and reusing the existing DNN core code is what DNN development is supposed to be about, so make sure you don’t reinvent the wheel.&lt;/p&gt;  &lt;p&gt;In the source code for &lt;a href="http://www.dotnetnuke.com" target="_blank"&gt;DotNetNuke®&lt;/a&gt;, there is a controller class for nearly everything that you want to do with the various objects that you work with in DNN every day.  Since I am familiar with the DNN source, I knew where to go.  But many people are not familiar with the source code.  In those cases, you need to either do some searches in the Object Browser, or browse around until you find the code you’re looking for.  Thinking it through logically, you can usually browse right to the code you’re looking for since the core team has done a fantastic job of keeping the code files organized.&lt;/p&gt;  &lt;p&gt;Keep all of that in mind, I immediately gravitated to the Security folder of the Components directory.  I did this because roles are part of the security framework in DNN, and all of the entities and objects are in the Components folder.  Inside this folder, I saw and opened the &lt;strong&gt;RolesController.vb&lt;/strong&gt; file.  To make this clear, I opened the following file in the DNN source code:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;~/Library/Components/Security/Roles/RoleController.vb&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The controller classes are usually what we are looking for when we want to utilize the existing logic in DNN.  So, if I want to manage a role by putting someone into it, I naturally wanted to look for a Role Controller already – before I even opened the source code solution.&lt;/p&gt;  &lt;p&gt;One of the methods of the &lt;font face="Courier New"&gt;RoleController&lt;/font&gt; class is &lt;font face="Courier New"&gt;AddUserRole()&lt;/font&gt;, and it has a few overloads.  We are only concerned about the root method right now.  This method accepts a few arguments, and when successfully called, it adds an existing user to an existing role.&lt;/p&gt;  &lt;div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 500px; padding-right: 4px; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px"&gt;   &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;     &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;RoleController.AddUserRole(&lt;span style="color: #0000ff"&gt;integer&lt;/span&gt; PortalID, &lt;span style="color: #0000ff"&gt;integer&lt;/span&gt; UserId, _ &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;integer&lt;/span&gt; RoleId, &lt;span style="color: #0000ff"&gt;date&lt;/span&gt; EffectiveDate, &lt;span style="color: #0000ff"&gt;date&lt;/span&gt; ExpiryDate)&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Using this method may look self-explanatory, but I will explain it anyway.  When you intend to use this method, you should already have access to an existing &lt;font face="Courier New"&gt;UserInfo&lt;/font&gt; object, and a &lt;font face="Courier New"&gt;RoleInfo&lt;/font&gt; object.  Both are regularly available through standard module development. &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;PortalID&lt;/strong&gt; (integer) – This is the id number representing the portal where the user and role exist.  The SqlDataProvider will use this value to correctly match up the objects. &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;UserId&lt;/strong&gt; (integer) – This is the id number matching the user that you want to add to a role.  Most often, you would simply access this value from the &lt;font face="Courier New"&gt;PortalModuleBase&lt;/font&gt; class that your module inherits. &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;RoleId&lt;/strong&gt; (integer) – The id number of the role can be found from any number of ways.  We can only assume that you already have access to this right now. &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;EffectiveDate&lt;/strong&gt; (date) – This is the date that you want the role assignment to begin.  Usually, the current date is what you’re intending to pass to this argument.  This argument accepts a null value. &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;ExpiryDate&lt;/strong&gt; (date) – This should be the date that you want the role assignment to expire, and as a result, the user will be removed from it.  This argument accepts a null value. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;font size="2"&gt;In more recent versions of DNN, there is also another value which we do not pass to the method.&lt;/font&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;CreatedByUserID&lt;/strong&gt; (integer) – This is a value implemented for auditing purposes, to let us know who added the person to the role. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;font size="2"&gt;Let’s assume that we have a &lt;font face="Courier New"&gt;UserID&lt;/font&gt; of &lt;strong&gt;123&lt;/strong&gt; and a &lt;font face="Courier New"&gt;RoleID&lt;/font&gt; of &lt;strong&gt;10&lt;/strong&gt;.  Going further, we will also assume that this is a first instance of a portal, equaling a &lt;font face="Courier New"&gt;PortalID&lt;/font&gt; of &lt;strong&gt;0&lt;/strong&gt;.  The most common role assignments do not pass an &lt;font face="Courier New"&gt;EffectiveDate&lt;/font&gt; or an &lt;font face="Courier New"&gt;ExpiryDate&lt;/font&gt;.  We will use this as an example as well.  Here is how we would call the method:&lt;/font&gt;&lt;/p&gt;

&lt;div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 500px; padding-right: 4px; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px"&gt;
  &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;
    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;' we are assuming that you already have an intRoleId from your logic&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;RoleController.AddUserRole(&lt;span style="color: #0000ff"&gt;Me&lt;/span&gt;.PortalID, &lt;span style="color: #0000ff"&gt;Me&lt;/span&gt;.UserId, intRoleId)&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;' ... or ...&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;' Here we assume a role assignment for 30 days, beginning now&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;RoleController.AddUserRole(&lt;span style="color: #0000ff"&gt;Me&lt;/span&gt;.PortalID, &lt;span style="color: #0000ff"&gt;Me&lt;/span&gt;.UserId, intRoleId, DateTime.Now, DateTime.Now.AddDays(30))&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;That’s all there is to it! :) Easy, right?&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:0767317B-992E-4b12-91E0-4F059A8CECA8:122833b2-c1f2-4a70-a128-eba389b56710" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DotNetNuke" rel="tag"&gt;DotNetNuke&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DNN" rel="tag"&gt;DNN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DNN+Blogs" rel="tag"&gt;DNN Blogs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Membership" rel="tag"&gt;Membership&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Code" rel="tag"&gt;Code&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Core" rel="tag"&gt;Core&lt;/a&gt;,&lt;a href="http://technorati.com/tags/API" rel="tag"&gt;API&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WillStrohl-Professional/~4/ESiV_rrj4rQ" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/vsS5nZk2H_Q" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>The Mighty Blog</dc:creator><pubDate>Thu, 25 Jun 2009 21:07:00 GMT</pubDate><guid isPermaLink="false">d353061c-334b-4ee5-a253-9c3730a55b86</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27416/How-to-Add-a-User-to-a-Role-Programmatically.aspx</feedburner:origLink></item><item><title>Web Browser Market Share from My Perspective</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/qVPfPjNAg6Y/Web-Browser-Market-Share-from-My-Perspective.aspx</link><description>&lt;p&gt;The trend recently seems to be that comments and topics are brought up on twitter, and they end up growing to be something more outside of it – especially in the world of DotNetNuke® that I have immersed myself in.  Today was no different.  A fellowDNN twibe member and also a member of the Orlando DotNetNuke® Users Group ODUG), Mike van der Meulen, gave me a friendly jab about using my blog, W3Schools, and RezHub.  They each have a different demographic. &lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/qVPfPjNAg6Y" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>The Mighty Blog</dc:creator><pubDate>Thu, 25 Jun 2009 19:58:00 GMT</pubDate><guid isPermaLink="false">971681c3-0e84-4520-b810-fbf72f78c171</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27417/Web-Browser-Market-Share-from-My-Perspective.aspx</feedburner:origLink></item><item><title>Keep the Same Name for Multiple Instance launches on AWS EC2</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/9v1FFVX0ZZ4/Keep-the-Same-Name-for-Multiple-Instance-launches.aspx</link><description>The nice thing about Amazon Web Services Elastic Cloud Computing is the ability to setup testing instances.  You only need these instances to be available part of the time. The problem with launching new bundles is that sysprep is run and the instance is renamed each time a launch occurs.&lt;img src="http://feeds.feedburner.com/~r/Apptheory_DotNetNuke_Blog/~4/eYseXjkXT8o" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/9v1FFVX0ZZ4" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>AppTheory DotNetNuke Blog</dc:creator><pubDate>Thu, 25 Jun 2009 15:11:00 GMT</pubDate><guid isPermaLink="false">b64405bf-4057-42dd-aaa5-44315bf16ce6</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27414/Keep-the-Same-Name-for-Multiple-Instance-launches.aspx</feedburner:origLink></item><item><title>SigmaPro 8.0 for DotNetNuke Available Now</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/xuNH69xuO-8/SigmaPro-80-for-DotNetNuke-Available-Now.aspx</link><description>&lt;p&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;strong&gt;SigmaPro 8.0 Released: &lt;/strong&gt;&lt;font class="Normal" color="#000000"&gt;SigmaPro is a DotNetNuke module for Projects, Service Centers, Help Desks and CRM (Customer Relationship Management).  Includes Windows Mobile applications, Windows Applications, Vista Sidebar Gadgets, Web Services and more! You can get going fast with predefined templates or modify every aspect of the system in order to custom fit it to your organization's needs.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;b&gt;SigmaPro 8.0 includes the following...&lt;/b&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="verdana,sans-serif" size="2"&gt;&lt;b&gt;SigmaPro core DotNetNuke module&lt;/b&gt;.  The heart of SigmaPro.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="verdana,sans-serif" size="2"&gt;&lt;b&gt;SigmaPro Help Desk DNN Module&lt;/b&gt;. A simple alternative to the core SigmaPro module, specific for Help Desks.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="verdana,sans-serif" size="2"&gt;&lt;b&gt;SigmaPro Windows Vista Gadgets&lt;/b&gt;.  Giving you instant status of your projects and support.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="verdana,sans-serif" size="2"&gt;&lt;b&gt;SigmaPro Dashboard DNN Module&lt;/b&gt;.  Display charts, project metrics, costs and more.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="verdana,sans-serif" size="2"&gt;&lt;b&gt;SigmaPro Web Service&lt;/b&gt;. Integrate your back-office systems into SigmaPro easily!&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="verdana,sans-serif" size="2"&gt;&lt;b&gt;SigmaPro Everest&lt;/b&gt;.  A Windows application allowing you to quickly manage your projects and support.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="verdana,sans-serif" size="2"&gt;&lt;b&gt;SigmaPro Windows Mobile&lt;/b&gt;.  A Windows Mobile application allows you to manage your tasks from your phone.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="verdana,sans-serif" size="2"&gt;&lt;b&gt;SigmaPro Outlook Add-In&lt;/b&gt;.  Import/Export tasks between Microsoft Outlook and SigmaPro.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="verdana,sans-serif" size="2"&gt;&lt;b&gt;SigmaPro Email Viewer/Monitor&lt;/b&gt;.  Automatically converts emails to tasks in SigmaPro.&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="verdana,sans-serif" size="2"&gt;&lt;b&gt;Additional OnyakTech Software that integrates with SigmaPro...&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="verdana,sans-serif" size="2"&gt;&lt;b&gt;SigmaLive&lt;/b&gt;: Convert Live Chat sessions with your web site visitors to SigmaPro support tickets.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="verdana,sans-serif" size="2"&gt;&lt;b&gt;H2O&lt;/b&gt;: Contains a function that you can add to any custom form that will post the form results to SigmaPro.  This gives you full control over the form people use to submit project, CRM or support tickets into SigmaPro.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="verdana,sans-serif" size="2"&gt;&lt;b&gt;Axon&lt;/b&gt;: A very powerful email management module for DNN, many people are using Axon to send weekly emails automatically that contain project and help desk metric information from SigmaPro.&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="verdana,sans-serif" size="2"&gt;&lt;b&gt;For more details&lt;/b&gt;, go to &lt;a href="http://www.sigmaprodraconis.com/"&gt;&lt;u&gt;&lt;font color="#800080"&gt;www.SigmaProDraconis.com&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; or to &lt;a href="http://www.onyaktech.com/"&gt;&lt;u&gt;&lt;font color="#800080"&gt;www.OnyakTech.com&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; to download your copy today!&lt;/font&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/xuNH69xuO-8" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>OnyakTech</dc:creator><pubDate>Thu, 25 Jun 2009 08:55:06 GMT</pubDate><guid isPermaLink="false">97ba5d6b-9974-4b28-9f4e-3981fdcef167</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27413/SigmaPro-80-for-DotNetNuke-Available-Now.aspx</feedburner:origLink></item><item><title>You have Comments!</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/vFMNfxF0Bos/You-have-Comments.aspx</link><description>&lt;p&gt;As I mentioned in a recent Blog posting, I am attempting to blog more.  With blogs postings come comments to my blog -- this is a appreciated and unfortunately sometimes overlooked.  So I have added a new report to my site that displays recent blog comments.  This way when I do my daily site review I can check if I have comments that require responses.&lt;/p&gt;
&lt;p&gt;I also have missed some feedback messages -- even though they generate an email, I do miss them so I have a report to display all the unanswered feedback messages. &lt;/p&gt;
&lt;p&gt;You can use the Reports module to display the information or one of the several other SQL grid modules to display the report.  For obvious reasons I user SQLGridSelectedView.&lt;/p&gt;&lt;a href=http://www.tressleworks.ca/Blog/tabid/73/EntryId/51/You-have-Comments.aspx&gt;More...&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/vFMNfxF0Bos" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>TressleWorks</dc:creator><pubDate>Thu, 25 Jun 2009 02:01:00 GMT</pubDate><guid isPermaLink="false">0073a008-951a-47ec-a0df-e36740a1dc98</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27411/You-have-Comments.aspx</feedburner:origLink></item><item><title>Show us how you did that, so we can do it in-house!</title><link>http://feedproxy.google.com/~r/DotnetnukeBlogs/~3/_IE3L9BLUhs/Show-us-how-you-did-that-so-we-can-do-it-inhouse.aspx</link><description>&lt;p&gt;Just the other day we had a customer with the exact same quote: “Show us how you did that, so we can do it in-house”… and the following video, although an obvious exaggeration, depicts what I am beginning to see more and more; is this a sign of the economy, or…? Well, you decide – I just thought this was too funny to not share.&lt;/p&gt; &lt;a href=http://www.cto20.com/home/entryid/110/show-us-how-you-did-that-so-we-can-do-it-in-house.aspx&gt;More...&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/DotnetnukeBlogs/~4/_IE3L9BLUhs" height="1" width="1"/&gt;</description><thumbnail /><dc:creator>CTO 2.0 - Antonio Chagoury</dc:creator><pubDate>Wed, 24 Jun 2009 18:32:15 GMT</pubDate><guid isPermaLink="false">3c1d7e58-fc11-4759-8536-0ef10f6bb1ee</guid><feedburner:origLink>http://www.dotnetnukeblogs.com/Home/Articles/itemId/27410/Show-us-how-you-did-that-so-we-can-do-it-inhouse.aspx</feedburner:origLink></item></channel></rss>
