<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-556731575261585802</id><updated>2012-02-03T18:50:34.647+05:30</updated><category term='mediation'/><category term='sharepoint deployment'/><category term='javascript'/><category term='Flash Remoting'/><category term='Recaptcha.Net'/><category term='sharepoint 2010'/><category term='AMF.NET'/><category term='Domain transfers'/><category term='sharepoint administration'/><category term='Skin Objects'/><category term='OSDNNSKINS'/><category term='Flash 8'/><category term='sharepoint development'/><category term='Javascript Code Snippets'/><category term='SOA'/><category term='Announcement'/><category term='ASP.NET'/><category term='c#'/><category term='Free DNN Module'/><category term='DotNetNuke Multiportal Development'/><category term='sharepoint'/><category term='moving sharepoint applications'/><category term='axis2 archive plugin'/><category term='Hosting'/><category term='css'/><category term='ORM'/><category term='ws-*'/><category term='DotNetNuke Code Snippets'/><category term='wso2 esb'/><category term='Web Tools'/><category term='.net'/><category term='LightBox WebGallery Creator'/><category term='Hosts file'/><category term='database'/><category term='T-SQL Code Snippets'/><category term='Google Map API'/><category term='wcf'/><category term='Code Snippets'/><category term='ASP.NET MasterPage'/><category term='xml'/><category term='DotNetNuke 6'/><category term='DotNetFlex'/><category term='java'/><category term='GoDaddy'/><category term='flesh'/><category term='security'/><category term='modal popup'/><category term='web services'/><category term='Free DNN Skin'/><category term='JQUERY'/><category term='DotNetNuke Resources'/><category term='ASP.NET AJAX'/><category term='DotNetNuke 5.0'/><category term='WebParts'/><category term='SEO'/><category term='Skinning Tips'/><category term='BluePrint Css'/><category term='DotNetNuke'/><category term='Eclipse'/><category term='LinkList'/><category term='HTML'/><category term='NHibernate'/><category term='ActionScript 2'/><category term='dotnetnuke 5'/><category term='exception'/><category term='ASP.NET Themes'/><category term='basicHttpBinding'/><category term='DotNEtNuke Module Development'/><category term='T-SQL'/><category term='Free Web designs'/><category term='Axis2'/><category term='wso2'/><category term='Tips and Tricks'/><category term='Database Design'/><title type='text'>Tricky Coder</title><subtitle type='html'>Technology blog about dotnetnuke, asp.net, asp.net mvc, and related!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>96</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-4060928435951947480</id><published>2012-02-01T23:00:00.000+05:30</published><updated>2012-02-01T23:00:01.771+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database Design'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Database Design : Smartly storing many user settings with Boolean values in a single value - Part 2</title><content type='html'>If you have visited a &lt;a href="http://lakhlaniprashant.blogspot.com/2011/04/database-design-smartly-storing-many.html" target="_blank"&gt;previous post&lt;/a&gt;, where I have demonstrated how you can use bit masks to reduce your settings table.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt;&lt;br /&gt;There are situations where this solution will NOT do well. Example are cases where you are having many settings OR expecting more settings in future. After some point, your calculated integer or big integer will become very huge and may cause out of limit. so be careful while deciding to use this solution.&lt;br /&gt;&lt;br /&gt;ALSO, in place of integers, you can use bitbinary datatype with appropriate length and use&amp;nbsp;appropriate&amp;nbsp;bitwise operators in sql server. That will surely gain more performance.&lt;br /&gt;&lt;br /&gt;Thanks to Yougeshwar Patel, Team Lead, Silver touch technologies for bring this to my notice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-4060928435951947480?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/4060928435951947480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2012/02/database-design-smartly-storing-many.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4060928435951947480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4060928435951947480'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2012/02/database-design-smartly-storing-many.html' title='Database Design : Smartly storing many user settings with Boolean values in a single value - Part 2'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-8553061573142647922</id><published>2012-02-01T22:30:00.000+05:30</published><updated>2012-02-03T18:50:34.656+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='moving sharepoint applications'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint administration'/><title type='text'>Sharepoint: Creating web application from existing content database</title><content type='html'>There are situations where you want to propagate one&amp;nbsp;SharePoint&amp;nbsp;web application to some other farm/machine. &amp;nbsp; I feel the fastest way is to take content database backup and restore it in your destination farm. I have done so in last couple of weeks and I have leaned how to quickly do that.&lt;br /&gt;&lt;br /&gt;Here are quick notes from my experience:&lt;br /&gt;&lt;b&gt;Pre-requisites:&lt;/b&gt;&lt;br /&gt;I was provided with content database backup and source code. That makes be able to restore site and generate wsps from source code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Creating &amp;nbsp;content database from backup:&lt;/b&gt;&lt;br /&gt;Go to your database server and do following:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a blank database that will be used as content database&amp;nbsp;&lt;/li&gt;&lt;li&gt;Restore a database using content database back up from source farm.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Creating a web application:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Go to sharepoint central administration and create a new web application&lt;/li&gt;&lt;li&gt;While creating a new web application, use existing content database in database section&lt;/li&gt;&lt;li&gt;Sometimes if your database is too large, web application creation takes too long and times out. Don't worry at all. web application is still created&amp;nbsp;successfully. It happened to me 4 times out of 5.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Validating the web application:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Go to sharepoint central administration, click on application management. In "Databases" section you will find "Manage content databases"&lt;/li&gt;&lt;li&gt;Choose your application and it will show database status and number of site collections. If you are not sure how many site collections are there in backup, anything greater than 0 is good news.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Configure web application to work properly:&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;we are almost done now. Do following:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Go to sharepoint central administration&lt;/li&gt;&lt;li&gt;Click on "Application Management"&lt;/li&gt;&lt;li&gt;In "Site Collections" section click on "Change site collection administrators"&lt;/li&gt;&lt;li&gt;choose your web application set proper data in site admins.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Additional optional steps:&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;After performing all the above steps, it is still possible that you are not able to access your web application.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Last thing to do is to install and deploy wsp by using stsadm or your favorite&amp;nbsp;method.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Conclusion:&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;It is always challenging to move applications from one farm to another. Specially when they are depending upon other service applications. In spent last two weeks to learn how to properly do that. I hope this will help you at some point during your sharepoint development.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Happy sharepoint administration!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-8553061573142647922?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/8553061573142647922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2012/02/sharepoint-creating-web-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8553061573142647922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8553061573142647922'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2012/02/sharepoint-creating-web-application.html' title='Sharepoint: Creating web application from existing content database'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-3597800868960972981</id><published>2012-01-05T22:00:00.000+05:30</published><updated>2012-01-05T20:39:27.578+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke 6'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke Resources'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Exeception: admin/Menus/DNNActions OR DotNetNuke.UI.Containers.ActionButtonList.get_ModuleActions throws null reference exception</title><content type='html'>&lt;h3&gt;Problem:&lt;/h3&gt;If you have deleted or your dotnetnuke installation failed to install DDR Menu module, you will get following.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;an error has occurred. DotNetNuke.Services.Exceptions.PageLoadException: Object reference not set to an instance of an object. ---&amp;gt; System.NullReferenceException: Object reference not set to an instance of an object. at DotNetNuke.UI.Containers.ActionButtonList.get_ModuleActions() at DotNetNuke.UI.Containers.ActionButtonList.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) --- End of inner exception stack trace ---&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;OR&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;An error has occurred.DotNetNuke.Services.Exceptions.PageLoadException: Couldn't load menu style 'admin/Menus/DNNActions': System.NullReferenceException: Object reference not set to an instance of an object. at DotNetNuke.Web.DDRMenu.DNNCommon.DNNContext.get_ModuleFolder() at DotNetNuke.Web.DDRMenu.DNNCommon.PathResolver.Resolve(String path, RelativeTo[] roots) at DotNetNuke.Web.DDRMenu.MenuBase.Instantiate(String menuStyle) ---&amp;gt; System.ApplicationException: Couldn't load menu style 'admin/Menus/DNNActions': System.NullReferenceException: Object reference not set to an instance of an object. at DotNetNuke.Web.DDRMenu.DNNCommon.DNNContext.get_ModuleFolder() at DotNetNuke.Web.DDRMenu.DNNCommon.PathResolver.Resolve(String path, RelativeTo[] roots) at DotNetNuke.Web.DDRMenu.MenuBase.Instantiate(String menuStyle) at DotNetNuke.Web.DDRMenu.MenuBase.Instantiate(String menuStyle) at DotNetNuke.Web.DDRMenu.DDRMenuControl.OnPreRender(EventArgs e) at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) --- End of inner exception stack trace ---&lt;br /&gt;&lt;/pre&gt;&lt;h3&gt; Solution&lt;/h3&gt;It is a good news if you are installing your new dnn instance, you can download latest installation source from dotnetunke.codeplex.com and that will work just fine.&lt;br /&gt;&lt;br /&gt;If you are already having dnn site running and you uninstalled the&amp;nbsp; &lt;a href="http://dnnddrmenu.codeplex.com/" target="_blank"&gt;DDR menu&lt;/a&gt;&amp;nbsp;&amp;nbsp;by mistake, or you are upgrading the site or &lt;a href="http://dnnddrmenu.codeplex.com/" target="_blank"&gt;DDR menu&lt;/a&gt;&amp;nbsp;&amp;nbsp;and that caused this problem, there are some ways to fix this.&lt;br /&gt;&lt;br /&gt;Download and setup local copy of fresh dnn installation and do following:&lt;br /&gt;&lt;br /&gt;&lt;ol style="background-color: rgba(255, 255, 255, 0.917969); color: #222222;"&gt;&lt;li style="margin-left: 15px;"&gt;&lt;span style="font-family: inherit;"&gt;Open web.config of fresh install, and search ddr in&amp;nbsp;it.&amp;nbsp;Copy the DDR entry from it and paste it to appropriate section of your site's&amp;nbsp;web.config.&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;&lt;span style="font-family: inherit;"&gt;from fresh install&amp;nbsp;replace /admin/menus and /desktopmodules/ddrmenu folders to&amp;nbsp;your site&amp;nbsp;folder.&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;&lt;span style="font-family: inherit;"&gt;download&amp;nbsp;&amp;nbsp;&lt;a href="http://dnnddrmenu.codeplex.com/releases/70987/download/264940" style="color: #1155cc;" target="_blank"&gt;http://dnnddrmenu.codeplex.&lt;wbr&gt;&lt;/wbr&gt;com/releases/70987/download/&lt;wbr&gt;&lt;/wbr&gt;264940&lt;/a&gt;&amp;nbsp;and paste it into /install/module folder&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;&lt;span style="font-family: inherit;"&gt;Browser for&amp;nbsp;yoursite.com&lt;span style="background-color: white;"&gt;/&lt;wbr&gt;&lt;/wbr&gt;Install/install.aspx?mode=&lt;wbr&gt;&lt;/wbr&gt;InstallResources&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white;"&gt;and that's it&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span style="color: #222222;"&gt;&lt;span style="font-family: inherit;"&gt;In my case, we were trying to upgrade the &lt;a href="http://dnnddrmenu.codeplex.com/" target="_blank"&gt;DDR menu&lt;/a&gt; and found the broken site that was restored using above steps.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;For more updates and hints visit &lt;a href="http://www.dotnetnuke.com/Resources/Forums/forumid/197/threadid/440334/scope/posts.aspx" target="_blank"&gt;this thread&lt;/a&gt; on &lt;a href="http://forums.dotnetnuke.com/" target="_blank"&gt;dotnetnuke forums&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-3597800868960972981?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/3597800868960972981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2012/01/exeception-adminmenusdnnactions-or.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/3597800868960972981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/3597800868960972981'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2012/01/exeception-adminmenusdnnactions-or.html' title='Exeception: admin/Menus/DNNActions OR DotNetNuke.UI.Containers.ActionButtonList.get_ModuleActions throws null reference exception'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-4760826963693868995</id><published>2012-01-02T20:00:00.000+05:30</published><updated>2012-01-05T20:02:38.601+05:30</updated><title type='text'>Using dapper .net to log site visitors in sqlite database - Part 1</title><content type='html'>&lt;a href="http://code.google.com/p/dapper-dot-net/" target="_blank"&gt;Dapper .net&lt;/a&gt; is a simple light weight micro&lt;br /&gt;&lt;br /&gt;I came to this library (in fact a single page) while I was learning posts related to how &lt;a href="http://stackoverflow.com/"&gt;StackOverflow.com&lt;/a&gt; is built. I also noticed that the library is independent of the database, and is useful if you are using any database.&lt;br /&gt;&lt;br /&gt;I feel it is promising, and I am going to write a very simple site visitor logging component with this. The database I will use will be &lt;a href="http://www.sqlite.org/" target="_blank"&gt;Sqlite&lt;/a&gt; and will log all the page views into database with the user, user agent and url referrer.&lt;br /&gt;&lt;br /&gt;There will be following two NuGet packages that I will require:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Dapper .net&lt;/li&gt;&lt;li&gt;System.Data.Sqlite (I am using x86)&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;I am going to use&amp;nbsp;Application_AuthenticateRequest in Global.asax to add logging.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All the code will be available at&amp;nbsp;&lt;b&gt;https://trickycoders.svn.codeplex.com/svn/WebsiteLogging&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-4760826963693868995?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/4760826963693868995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2012/01/using-dapper-net-to-log-site-visitors.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4760826963693868995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4760826963693868995'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2012/01/using-dapper-net-to-log-site-visitors.html' title='Using dapper .net to log site visitors in sqlite database - Part 1'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-7008374446993446175</id><published>2012-01-02T19:37:00.001+05:30</published><updated>2012-01-03T13:44:47.614+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='exception'/><title type='text'>stsadmin -o deploysolution: access denied error</title><content type='html'>&lt;h4&gt;When&lt;/h4&gt;As like 80% of the sharepoing developers, if you are deploying your solutions trough command line.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;What&lt;/h4&gt;After firing deploysolution, looking at system settings &gt; farm solutions and the error looks something like "Can not overrite xxxx file, access is denied".&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Solution&lt;/h4&gt;It was due to my source file was read only. I tried by un-checking the read only attribute from properties for source file and tried the command again. I got the same error couple of times and repeating the same solution fixed the problem. &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;As a social animal, when I get such kind of error first time in my life, I first ask to couple of developers around me if they have seen the same error ever, that helps a lot. When I do same, I got many useful hints that can either quickly solves the problem or useful for some future problems. &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Update - 3-Jan-2011:&lt;/h4&gt;If you are having more than one application server in farm then you have to go through all of them and uncheck read only to get it working.&lt;br /&gt;&lt;br /&gt;Got the same error? Don't worry try above solution and let me know if same OR some other solution worked for you.&lt;br /&gt;&lt;br /&gt;Happy sharepoing deployment!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-7008374446993446175?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/7008374446993446175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2012/01/stsadmin-o-deploysolution-access-denied.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7008374446993446175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7008374446993446175'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2012/01/stsadmin-o-deploysolution-access-denied.html' title='stsadmin -o deploysolution: access denied error'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-2447569004169623318</id><published>2011-12-29T11:26:00.000+05:30</published><updated>2011-12-29T11:26:50.994+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hosts file'/><category scheme='http://www.blogger.com/atom/ns#' term='Hosting'/><category scheme='http://www.blogger.com/atom/ns#' term='GoDaddy'/><category scheme='http://www.blogger.com/atom/ns#' term='Domain transfers'/><title type='text'>GoDaddy - Using host entries to access your site by IP</title><content type='html'>&lt;h3&gt;Problem&lt;/h3&gt;Your site is live right now and you want to transfer it to another account hosted in GoDaddy.com. You have configured the site in new account and want to test it, but you can not directly update the DNS records without testing. You don't want to purchase a static IP for this. So, there should be a way to test your site before updating DNS records.&lt;h3&gt;Solution&lt;/h3&gt;One of the solution is the use hosts entries. That will help you to access your domain point to the new IP only for you. That way, when other people accesses www.yoursite.com, it will be served from original site, but because of the host entry, when you try to access www.yoursite.com it will be served from the new server.I found the detailed instruction here: http://help.godaddy.com/article/3354&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-2447569004169623318?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/2447569004169623318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2011/12/godaddy-using-host-entries-to-access.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2447569004169623318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2447569004169623318'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2011/12/godaddy-using-host-entries-to-access.html' title='GoDaddy - Using host entries to access your site by IP'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-7970542021384783918</id><published>2011-12-23T15:24:00.001+05:30</published><updated>2011-12-24T12:36:54.061+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='exception'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Runtime error: ; expected</title><content type='html'>&lt;br /&gt;I was working in asp.net with vb.net for for almost 3 years now, and now after 3 years, just started working on c# as back end language. So many times in a day I miss writing ; and got the this error! &lt;br /&gt;&lt;br /&gt;I recently got this error in ascx control as well, when I was working in a repeater item template and missed # and write Eval like &amp;lt;% Eval...&lt;br /&gt;&lt;br /&gt;Compiling code in C# reminds me to the starting of my career since I have worked on C# first.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-7970542021384783918?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/7970542021384783918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2011/12/runtime-error-expected.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7970542021384783918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7970542021384783918'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2011/12/runtime-error-expected.html' title='Runtime error: ; expected'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-2884835255883394641</id><published>2011-12-16T15:54:00.000+05:30</published><updated>2011-12-17T15:17:27.761+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint development'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Sharepoint: Debugging - which process to attach</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;As some of you may already be knowing, I have just joined a team of sharepoint developers and right now learning sharepoint development.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is my first day to work on a development after watching videos and reading books and I already find myself lost while attaching to the process for debugging a webpart control in sharepoint. Here is how I finally got my ProcessID to attach:&lt;br /&gt;&lt;br /&gt;Just open command prompt as administrator and type following:&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharp"&gt;%windir%\system32\inetsrv\appcmd.exe list wp&lt;/pre&gt;&lt;br /&gt;Hope this will help to the developers who are new OR not knowing the way to find which process to attach.&lt;br /&gt;&lt;br /&gt;Happy coding.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-2884835255883394641?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/2884835255883394641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2011/12/sharepoint-debugging-which-process-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2884835255883394641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2884835255883394641'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2011/12/sharepoint-debugging-which-process-to.html' title='Sharepoint: Debugging - which process to attach'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-6691877320570534648</id><published>2011-04-10T14:33:00.000+05:30</published><updated>2011-04-10T14:33:37.882+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke 6'/><category scheme='http://www.blogger.com/atom/ns#' term='dotnetnuke 5'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Free Web designs'/><category scheme='http://www.blogger.com/atom/ns#' term='Free DNN Skin'/><title type='text'>OSDNNSKINS: New version of cash and multiflex with portal template available</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Hi all,&lt;br /&gt;&lt;br /&gt;New Version for &lt;a href="http://www.blogger.com/"&gt;Cash&lt;/a&gt; and &lt;a href="http://osdnnskins.codeplex.com/"&gt;Multiflex&lt;/a&gt; is available for download. This time we have three common changes for both of the skin packages.&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;There is only single package for skin and container installation&lt;/li&gt;&lt;li&gt;Portal template is available to quickly evaluate the skin.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Both of the skins are tested in dnn 6.0.0.44&amp;nbsp; &lt;/li&gt;&lt;/ol&gt;For those who are not knowing about this, open source dotnetnuke skins is an initiative to provide high quality free skins to dnn community.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;More contributors to osdnnskins:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;We have more contributors to join the party, so we welcome issues and suggestions from community in order to help them provide quality skins for free.&lt;br /&gt;&lt;br /&gt;there are lots of evaluations and&lt;b&gt;&amp;nbsp; &lt;/b&gt;also there are many sites using skins from osdnnskins, there are very less number of comments and feedback that we get. &lt;b&gt;&lt;a href="http://dotnetnukeblogs.com/"&gt;&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Please please please provide your feedback about any skin that you evaluate and you can directly go to osdnnskins.codeplex.com to create a new issue or you can email me any time for any kind of help regading the same.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;You can contact email @ lakhlaniprashant [at} gmail [dot} com&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-6691877320570534648?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://osdnnskins.codeplex.com' title='OSDNNSKINS: New version of cash and multiflex with portal template available'/><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/6691877320570534648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2011/04/osdnnskins-new-version-of-cash-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6691877320570534648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6691877320570534648'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2011/04/osdnnskins-new-version-of-cash-and.html' title='OSDNNSKINS: New version of cash and multiflex with portal template available'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-5115132886818009504</id><published>2011-04-07T08:03:00.000+05:30</published><updated>2011-04-07T08:38:19.767+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database Design'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><title type='text'>Database Design : Smartly storing many user settings with Boolean values in a single value</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;It is obvious that when we design database tables for storing user preferences we look user settings as one-to-many relationship, but there are cases when all your setting values are boolean. For example, you have many type of newsletters (infoq.com has .net, java, soa etc) and you want to user choices, OR you have many categories of articles and you want to store which categories user is interested to browse, user choose tags (fev tags)&amp;nbsp; are also good example in stackoverflow.com.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Problem:&lt;/b&gt;&lt;br /&gt;How to efficiently store user preferences which are all having boolean values.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Classic solution:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Create a subscription_type database which stores all the subscription types&lt;/li&gt;&lt;li&gt;Create a user_subscription table user_subscriptions with columns user_id and subscription_id&lt;/li&gt;&lt;li&gt;Insert a new row for each kind of subscription for each user&lt;/li&gt;&lt;li&gt;Delete a row for each kind of subscription user un-check (In case user checks the subscription and un-checks it after some days)&lt;/li&gt;&lt;/ul&gt;This will work fine but the only problem is to maintain an extra table for storing the details.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Better Solution:&lt;/b&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a subscription_type table which stores all the subscription types.&lt;/li&gt;&lt;li&gt;add a new column in users table for subscription.&lt;/li&gt;&lt;li&gt;use following query to retried user subscriptions:&lt;br /&gt;&lt;blockquote&gt;select &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; user_id, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case when &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; subscription &amp;amp; power(2,subscription_type_id) =0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; then 0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else 1 end as is_subscribed,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; subscription_type_id,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; subscription_type_name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from users cross join subscription_types&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where user_id = @user_id&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;user following query to store user subscription:&lt;br /&gt;&lt;blockquote&gt;select sum( power(2,subscription_type_id))from subscription_types where subscription_type_id in (1,2,3)&lt;/blockquote&gt;&lt;/li&gt;&lt;/ul&gt;here subscription_type_id in (1,2,3) describes the subscription type id user is subscribed to.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How It Works:&lt;/b&gt;&lt;br /&gt;We are storing sum of binary power as user preference. For example, user is subscribed to subscription type 0,1, and 3 we are storing power(2,0) + power(2,1) + power(2,3) = 1 + 2 + 8 = 11. &lt;br /&gt;For reading a boolean value of subscription we are using t-sql’s AND (&amp;amp;) operator. We are doing and operation of 11 and binary power of subscription type, and it we get 0 means user is not subscribed, otherwise we will get power(2,subscription_type) as result of AND operation.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusion:&lt;/b&gt;&lt;br /&gt;We can say the solution is better because you can using single query to read and write the subscription. It is more faster, and requires no additional table. There are many other advantages that you can think of.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Limitations:&lt;/b&gt;&lt;br /&gt;Every time you take this kind of solution, you are killing possibility to store details that depends on the relationships. In our subscription example, you will never get information about when does a user subscribed to which subscription type individually. &lt;br /&gt;If that is not important to you, you can obviously go for it. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: &lt;/b&gt;&lt;br /&gt;Please note that in actually situations, subscription table and related designs are really more complicated than what I’ve shown above, so it demonstrates the example scenario and not the example database design for any kind of system.&lt;br /&gt;Have fun with your database design! &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-5115132886818009504?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/5115132886818009504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2011/04/database-design-smartly-storing-many.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5115132886818009504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5115132886818009504'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2011/04/database-design-smartly-storing-many.html' title='Database Design : Smartly storing many user settings with Boolean values in a single value'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-5383480324326261367</id><published>2010-12-11T11:52:00.000+05:30</published><updated>2010-12-11T12:18:23.918+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='dotnetnuke 5'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET Themes'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke Multiportal Development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MasterPage'/><title type='text'>Using master pages and aspx pages in dnn</title><content type='html'>In this post, we are going to see how we can add new aspx pages by re-using the existing skin designs to implement some helpfull programming in it.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold;"&gt;&lt;br https:="" p1="" redirect.srv="" saorsbzq="" server1.kproxy.com="" servlet="" snop="" sruj="" https://server1.kproxy.com/servlet/redirect.srv/sruj/saorsbzq/snop/p1/&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold;"&gt;Why?&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;span class="Apple-style-span" style="font-size: 19px;"&gt;&lt;b&gt;&lt;br https:="" p1="" redirect.srv="" saorsbzq="" server1.kproxy.com="" servlet="" snop="" sruj="" https://server1.kproxy.com/servlet/redirect.srv/sruj/saorsbzq/snop/p1/&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;If you are running a multi-portal dnn website and want to build some common pages to share between those portals, there are couple of quick ways to do that.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;1. Create a new tab in portal 0 and then share link in all other portals.&lt;br https:="" p1="" redirect.srv="" saorsbzq="" server1.kproxy.com="" servlet="" snop="" sruj="" https://server1.kproxy.com/servlet/redirect.srv/sruj/saorsbzq/snop/p1/&gt;       This technique works fine when you want to show "how to" page or help page, static contents or offers related pages. You don't need any custom coding for this and it will be a matter of adding a text html module and paste the html that you designed!&lt;/li&gt;&lt;li&gt;2. Create a new aspx page and share link in all other portals.&lt;br https:="" p1="" redirect.srv="" saorsbzq="" server1.kproxy.com="" servlet="" snop="" sruj="" https://server1.kproxy.com/servlet/redirect.srv/sruj/saorsbzq/snop/p1/&gt;       Well, this one also looks similar to first option but let's think about this: If you are running a multi-portal dnn site and want to show latest offers from all the portals into a page based on user's country, and users having at least 5 orders in history. Now, this will involve some quick coding to do. So, basically, if you want to show content based on some dynamic parameters like user or portal data or similar data, it will be good to create an aspx page.&lt;/li&gt;&lt;/ol&gt;There is another option! obviously you can create a new module to do this, but remember that we are not doing anything that depends on moduleId or tabId but depends on UserId or PortalId, so I believe it's a quick way to create a new page in place of building an entire dnn module. &lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold;"&gt;&lt;br https:="" p1="" redirect.srv="" saorsbzq="" server1.kproxy.com="" servlet="" snop="" sruj="" https://server1.kproxy.com/servlet/redirect.srv/sruj/saorsbzq/snop/p1/&gt;How?&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;1. Create a new theme &lt;br https:="" p1="" redirect.srv="" saorsbzq="" server1.kproxy.com="" servlet="" snop="" sruj="" https://server1.kproxy.com/servlet/redirect.srv/sruj/saorsbzq/snop/p1/&gt;       Create a new theme with the name of your skin and paste your skin's css and images into it.     &lt;/li&gt;&lt;li&gt;2. Create a new master page&lt;br https:="" p1="" redirect.srv="" saorsbzq="" server1.kproxy.com="" servlet="" snop="" sruj="" https://server1.kproxy.com/servlet/redirect.srv/sruj/saorsbzq/snop/p1/&gt;       Create a new master page and paste your skin's ascx control's entire markup over there. Replace all your content pane (i.e. div or tds with runat=server) with CotentPlace holder&lt;/li&gt;&lt;li&gt;3. Create a new page&lt;br https://server1.kproxy.com/servlet/redirect.srv/sruj/saorsbzq/snop/p1/&gt;- Add a new aspx page called Default2.aspx and select the new master page when creating it.&amp;nbsp;&lt;br https://server1.kproxy.com/servlet/redirect.srv/sruj/saorsbzq/snop/p1/&gt;- Go to .aspx.vb file and make your parial page class inherit from DotNetNuke.Framework.PageBase in place of System.Web.UI.Page&amp;nbsp;&lt;br https://server1.kproxy.com/servlet/redirect.srv/sruj/saorsbzq/snop/p1/&gt;- And that's it you are ready to go!&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Conclusion   &lt;/h3&gt;It is really easy to add a new aspx page in dnn that is re-using skin and you will be able to access all the information like PortalSettings, UserInfo etc. Things like Tab and Module will not be there and it's obvious!  &lt;br /&gt;&lt;blockquote&gt;This post doesn't say you should create a new aspx page in some cases or not, but demonstrates how to do it if you want. If you have some good examples WHEN we can use it or some good examples WHEN we should NOT use it, I welcome them!&amp;nbsp;&lt;/blockquote&gt;This example will probably work with dnn 4.x and 5.x, though I've used this in dnn 4.5.6 and 5.2.0 etc.  &lt;br /&gt;&lt;h3&gt;Downloads &lt;/h3&gt;You can &lt;a href="http://trickycoders.codeplex.com/releases/view/57324" id="ssv0" title="download"&gt;download&lt;/a&gt; the example code for this example from &lt;a href="http://trickycoders.codeplex.com/releases/view/57324" id="l6oy" title="codeplex"&gt;codeplex&lt;/a&gt;   Happy coding with dnn&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-5383480324326261367?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://server1.kproxy.com/servlet/redirect.srv/sruj/shhzdcy/s1iwolzo/p2/servlet/redirect.srv/sruj/shhzdcy/s1iwolzo/p2/servlet/redirect.srv/sruj/shhzdcy/s1iwolzo/p2/servlet/redirect.srv/s/p1/' title='Using master pages and aspx pages in dnn'/><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/5383480324326261367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/12/using-master-pages-and-aspx-pages-in.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5383480324326261367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5383480324326261367'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/12/using-master-pages-and-aspx-pages-in.html' title='Using master pages and aspx pages in dnn'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-4190890218574743977</id><published>2010-12-04T18:56:00.001+05:30</published><updated>2010-12-04T19:04:49.592+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='dotnetnuke 5'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><title type='text'>DotNetNuke 5.6 - A potentially dangerous Request.Form value was detected from the client</title><content type='html'>Today morning, when I was preparing for a new installation instance for dnn 5.6, I was facing trouble to install new module, create new tab and I come to the conclusion that any post back event from the site was causing the &amp;quot;potentially dangerous Request.Form value&amp;quot;.&lt;br /&gt;&lt;br /&gt;I was still able to install module using /Install/Install.aspx?mode=installresource but finally stuck when I was not able to add the installed module into page.&lt;br /&gt;&lt;br /&gt;Finally, after reading several articles on web, I found web.config's httpRuntime element needs another attribute called : requestValidationMode=&amp;quot;2.0&amp;quot;&lt;br /&gt;&lt;br /&gt;I go the solution here (&lt;br /&gt;http://stackoverflow.com/questions/81991/a-potentially-dangerous-request-form-value-was-detected-from-the-client/3368769#3368769).&lt;br /&gt;&lt;br /&gt;And finally, I was on my way to regular work.&lt;br /&gt;&lt;blockquote&gt;please note that I was trying this on having webmatrix installed and I was browsing the site in asp.net 4.0 integrated mode. &lt;br /&gt;&lt;/blockquote&gt;Hope this will help to someone in the same kind of trouble.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-4190890218574743977?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://stackoverflow.com/questions/81991/a-potentially-dangerous-request-form-value-was-detected-from-the-client' title='DotNetNuke 5.6 - A potentially dangerous Request.Form value was detected from the client'/><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/4190890218574743977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/12/dnn-56-potentially-dangerous.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4190890218574743977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4190890218574743977'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/12/dnn-56-potentially-dangerous.html' title='DotNetNuke 5.6 - A potentially dangerous Request.Form value was detected from the client'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-1521485161185199875</id><published>2010-11-18T13:46:00.000+05:30</published><updated>2010-11-18T13:46:00.268+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke 5.0'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNEtNuke Module Development'/><category scheme='http://www.blogger.com/atom/ns#' term='ORM'/><title type='text'>DNN Module development Using Nhibernate</title><content type='html'>&lt;div&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Hi All this is my first blog on &lt;a href="http://lakhlaniprashant.blogspot.com/"&gt;Tricky Coders&lt;/a&gt;. In my last project which is in &lt;a href="http://asp.net/"&gt;asp.net&lt;/a&gt; and I have used Nhibernate as the ORM which is very stable and also an open source project like &lt;a href="http://www.dotnetnuke.com/"&gt;DotNetNuke&lt;/a&gt;. So I decided to used it with DNN.&lt;/div&gt;&lt;div&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;/div&gt;Please download latest verion of &lt;a href="http://nhforge.org/media/"&gt;NHibernate&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Nhibernate.dll -This contains the NHibernate framework&lt;/li&gt;&lt;li&gt;Iesi.Collections.dll -Iesi.Collections.dllContains the definition of some special collections used by NHibernate&lt;/li&gt;&lt;li&gt;Castle.Core.dll-Base library is needed by Castle.DynamicProxy2.dll&lt;/li&gt;&lt;li&gt;Castle.DynamicProxy2.dll - This contains code to generate proxies and is used by NHibernate to make e.g. lazy load possible&lt;/li&gt;&lt;li&gt;We need to make some modifications in the web.config to support the Nhibernate.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Getting Started with Module Development&lt;/b&gt;&lt;/div&gt;&lt;div&gt;To create my module in &lt;a href="http://www.dotnetnuke.com/"&gt;DotNetNuke &lt;/a&gt;using Nhibernate i have used 2 projects&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;DataAccessLayer- This class library project serves the purpose to connect with database by creating the object of Session Factory.&lt;/li&gt;&lt;li&gt;Mapping Classes- This Class Library project serves the purpose of Defining the Entites and their mapping xml files.&lt;/li&gt;&lt;li&gt;My Actual &lt;a href="http://trickycoders.codeplex.com/releases/view/55873/"&gt; module &lt;/a&gt; which refer the above Projects to talk with data base.&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Download&amp;nbsp;&lt;/b&gt; &lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;You can&amp;nbsp; &lt;a href="http://trickycoders.codeplex.com/releases/view/55873"&gt;download&lt;/a&gt; this module's source and installation package from tricky coder's &lt;a href="http://trickycoders.codeplex.com/"&gt;codeplex project&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please let me know about your views and suggestions to improve the code.&lt;br /&gt;&lt;br /&gt;Hope this will help.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-1521485161185199875?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/1521485161185199875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/11/dnn-module-development-using-nhibernate.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/1521485161185199875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/1521485161185199875'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/11/dnn-module-development-using-nhibernate.html' title='DNN Module development Using Nhibernate'/><author><name>amrish</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-8505404488655935299</id><published>2010-11-04T17:02:00.000+05:30</published><updated>2010-11-04T17:07:29.477+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ws-*'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='wcf'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2 esb'/><category scheme='http://www.blogger.com/atom/ns#' term='mediation'/><title type='text'>using WSO2 ESB to mediate WCF Service - Part 2</title><content type='html'>&lt;blockquote&gt;In &lt;a href="http://www.blogger.com/"&gt;previous post&lt;/a&gt;, I demonstrated how to use &lt;i&gt;Pass Through Proxy&lt;/i&gt; to mediate a basic WCF Service which is having &lt;i&gt;GetData &lt;/i&gt;and &lt;i&gt;GetCustomTypeData &lt;/i&gt;methods. In part 2, We will try to add UsernameToken security at &lt;i&gt;WSO2 ESB&lt;/i&gt; level.&amp;nbsp;&lt;/blockquote&gt;&lt;span style="font-size: large;"&gt;Pre-Requisites:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=018a09fd-3a74-43c5-8ec1-8d789091255d&amp;amp;displaylang=en"&gt;Microsoft Web service Enhancements 3.0&lt;/a&gt; for implementing WS-Security at client end in vb.net console application&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Updating Service Implementation:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Right now, I don't know how to use mediator to remove security header from soap envelop before sending it to the real service. I tried using Transformation &amp;gt; Header mediator but it didn't worked for me, so I used WCF Service side wrok around here. Please let me know how to do that, if some of you may know?&lt;/span&gt; &lt;/span&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Open &lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Service1.svc.vb and add following attribute to Service1 class&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre class="vb" name="code"&gt;&amp;lt;servicebehavior(validatemustunderstand:=false)&amp;gt; _&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;Securing wso2 esb service:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Login to esb website, and go to Services &amp;gt; List and click on WCFService&lt;/li&gt;&lt;li&gt;Click on Security&lt;/li&gt;&lt;li&gt;Select "Yes" for Enable Security and Select first option "UsernameToken"&lt;/li&gt;&lt;li&gt;Click on next and check the check box "Admin"&lt;/li&gt;&lt;li&gt;You will be redirected to service dashboard.&amp;nbsp;&lt;/li&gt;&lt;li&gt;That's it.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;Updating client to include security:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Install WSE 3.0 and add reference the wse 3.0 dll from it's installation directory to client project &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Open Reference.vb from your client code, and  change your web service class inherited from Inherits &lt;i&gt;Microsoft.Web.Services3.WebServicesClientProtocol&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Rebuild the client project again to make sure we  haven't broken anything&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Open Module1.vb and add following lines before  calling GetData:&lt;br /&gt;&lt;pre class="vb" name="code"&gt;Dim client As New localhost.WCFService&lt;br /&gt;Dim U As New UsernameToken( _&lt;br /&gt; "admin", _&lt;br /&gt; "admin", _&lt;br /&gt;PasswordOption.SendPlainText)&lt;br /&gt;client.RequestSoapContext.Security.Tokens.Add(U)&lt;br /&gt;ServicePointManager.CertificatePolicy = New TrustAllCertificatePolicy()&lt;/pre&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;Conclusion:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;This way we can use wso2 esb to secure wcf service implemented using basicHttpBinding. Advantages here is, we are using separate GUI base server for securing wcf service which is too easy to maintain.&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;It is obvious that this example is very basic and it is just an exercise to add security in wcf services implemented using basicHttpBinding. &lt;br /&gt;&lt;br /&gt;Next steps will be to add some real life use cases that makes presence of esb more appropriate and not only for security.&lt;br /&gt;&lt;br /&gt;Pelase provide your thoughts on wso2 esb and wcf integration and if you are having trouble integrating with the same, you can drop me and email or post a comment here. &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-8505404488655935299?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/8505404488655935299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/11/using-wso2-esb-to-mediate-wcf-service_04.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8505404488655935299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8505404488655935299'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/11/using-wso2-esb-to-mediate-wcf-service_04.html' title='using WSO2 ESB to mediate WCF Service - Part 2'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-7765727028181627583</id><published>2010-11-04T11:02:00.000+05:30</published><updated>2010-11-04T11:12:34.420+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='basicHttpBinding'/><category scheme='http://www.blogger.com/atom/ns#' term='wcf'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2 esb'/><category scheme='http://www.blogger.com/atom/ns#' term='mediation'/><title type='text'>using WSO2 ESB to mediate WCF Service</title><content type='html'>&lt;blockquote&gt;In this post, I'm going to create a new WCFService with &lt;a href="http://msdn.microsoft.com/en-us/library/ms731361.aspx"&gt;basicHTTPBinding &lt;/a&gt;and deploy it to IIS. I will mediate the deployed service with &lt;a href="http://www.wso2.org/downloads/esb"&gt;WSO2 ESB 3.0.0&lt;/a&gt;. For mediating the service, I will use "Pass Through Proxy". &lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Pre-requisites&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Visual Studio 2008 or higher to create WCF Service&lt;/li&gt;&lt;li&gt;wso2 esb 3.0.0 or higher, &lt;a href="http://wso2.org/downloads/esb"&gt;get it from here&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Install and Start&amp;nbsp;&lt;a href="http://www.blogger.com/"&gt; &lt;/a&gt;&lt;a href="http://www.wso2.org/downloads/esb"&gt;WSO2 ESB 3.0.0&lt;/a&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Extract the downloaded esb files&lt;/li&gt;&lt;li&gt;Go to command prompt&lt;/li&gt;&lt;li&gt;locate to bin directory of extracted esb&lt;/li&gt;&lt;li&gt;write "wso2server.bat" and that will start the wso2 esb server after a few seconds&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Create a new WCF Service&lt;/li&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Start Visual Studio and go to File &amp;gt; New Project&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ymCJ0BMOmwE/TNI-il5uxcI/AAAAAAAAA7s/aR-OlgyBscg/s1600/create_wcf_service.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_ymCJ0BMOmwE/TNI-il5uxcI/AAAAAAAAA7s/aR-OlgyBscg/s1600/create_wcf_service.PNG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Create a new WCF Service Application from visual studio&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;That will create a new WCF Service&lt;/li&gt;&lt;li&gt;Open web.config and go to "system.serviceModel" element:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&amp;lt;service name="xxx" behaviorConfiguration="xxxx"&amp;gt;&lt;br /&gt;    &lt;br /&gt;    &amp;lt;!-- Service Endpoints --&amp;gt;&lt;br /&gt;    &amp;lt;endpoint address="" binding="basicHttpBinding" contract="xxxx"&amp;gt;    &lt;br /&gt;    &amp;lt;/endpoint&amp;gt;&lt;br /&gt;    &amp;lt;endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/&amp;gt;&lt;br /&gt;   &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Make sure you change the endpoint element's binding attribute is having value basicHttpBinding&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Just Right click on the service project and click on Build Project&lt;/li&gt;&lt;li&gt;It show you "Build Success" in status bar&lt;/li&gt;&lt;li&gt;Right click on project again and click on publish&lt;/li&gt;&lt;li&gt;Create a new folder called WCFServiceDeployed and select it as output directory&lt;/li&gt;&lt;li&gt;Go to IIS and Create a new virual directory called "WCFService" and point it to WCFServiceDeployed folder&lt;/li&gt;&lt;li&gt;right click on Service1.svc (or whatever svc file you have) and click on browse.&lt;/li&gt;&lt;li&gt;Copy the wsdl url shown in the service page.&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Create Pass through proxy in wso2 esb &lt;/li&gt;&lt;ol&gt;&lt;li&gt;Make sure you have wso2 esb up and running&lt;/li&gt;&lt;li&gt;Locate your browser to https://localhost:9443/carbon&lt;/li&gt;&lt;li&gt;use admin/admin as username/password to login to the site&lt;/li&gt;&lt;li&gt;Click on Services &amp;gt; Add &amp;gt; Proxy Services&lt;/li&gt;&lt;li&gt;Click on "Pass Through Service"&lt;/li&gt;&lt;li&gt;enter "WCFService" in "Proxy Service Name" text box&lt;/li&gt;&lt;li&gt;In "Target Url" add url of WCF Service&lt;/li&gt;&lt;li&gt; Expand "Publish WSDL" option&lt;/li&gt;&lt;li&gt;From the Publish WSDL drop down menu, choose "Specify Source Url"&lt;/li&gt;&lt;li&gt;In the text box of WSDL URI, enter your published svc url suffixed with ?wsdl&lt;/li&gt;&lt;li&gt; Expand Transport&lt;/li&gt;&lt;li&gt;Uncheck HTTPS transport &lt;/li&gt;&lt;li&gt;Click on create&lt;/li&gt;&lt;li&gt;Go to Services &amp;gt; List&lt;/li&gt;&lt;li&gt;Click on WCFService&lt;/li&gt;&lt;li&gt;Copy the endpoint url&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&amp;nbsp;Creating Client for the newly created service in esb&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Start Visual studio&lt;/li&gt;&lt;li&gt;Create a new console application project (i'm using visual basic)&lt;/li&gt;&lt;li&gt;Right click on the project and click on add web reference&lt;/li&gt;&lt;li&gt;enter the url of the endpoint that you get from web esb&lt;/li&gt;&lt;li&gt;click on ok&lt;/li&gt;&lt;li&gt;go to module1.vb&lt;/li&gt;&lt;li&gt;Add following code:&lt;br /&gt;&lt;pre class="vb" name="code"&gt;Dim client As New localhost.WCFService&lt;br /&gt;Dim strData As String = client.GetData(100, True)&lt;br /&gt;Console.WriteLine(strData)&lt;br /&gt;&lt;br /&gt;Dim cmpType As New localhost.CompositeType&lt;br /&gt;cmpType.BoolValue = True&lt;br /&gt;cmpType.BoolValueSpecified = True&lt;br /&gt;cmpType.StringValue = "It works"&amp;nbsp;&lt;/pre&gt;&lt;pre class="vb" name="code"&gt;Dim retCmpType As localhost.CompositeType = client.GetDataUsingDataContract(cmpType)&amp;nbsp;&lt;/pre&gt;&lt;pre class="vb" name="code"&gt;Console.WriteLine(retCmpType.StringValue)&lt;br /&gt;Console.ReadKey()&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;That's It, you will see the output in console window. Press any key to exit the console application.&lt;br /&gt;&lt;blockquote&gt;Please note that I'm using web reference because I am not able to correcly implement WCF Client&amp;nbsp; for the service yet. In upcoming post, I will cover how to secure WCF service with basicHTTPBinding with wso2esb&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-7765727028181627583?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/7765727028181627583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/11/using-wso2-esb-to-mediate-wcf-service.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7765727028181627583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7765727028181627583'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/11/using-wso2-esb-to-mediate-wcf-service.html' title='using WSO2 ESB to mediate WCF Service'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ymCJ0BMOmwE/TNI-il5uxcI/AAAAAAAAA7s/aR-OlgyBscg/s72-c/create_wcf_service.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-6526487129362209535</id><published>2010-11-02T17:19:00.000+05:30</published><updated>2010-11-02T17:22:14.532+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='axis2 archive plugin'/><title type='text'>Building Java Web Services with Axis2 and Eclipse</title><content type='html'>I was working on middle-ware integration with &lt;a href="http://www.wso2.org/"&gt;wso2&lt;/a&gt; and &lt;a href="http://ws.apache.org/axis2/"&gt;axis2&lt;/a&gt; web services since last couple of months. In this post, I will show how to get started with axis2 development and deployment using &lt;a href="http://www.eclipse.org/"&gt;Eclipse IDE&lt;/a&gt;.&lt;br /&gt;&lt;ol class="ol"&gt;&lt;li&gt;If you are not having an &lt;a href="http://www.eclipse.org/"&gt;Eclipse IDE&lt;/a&gt;, I am using &lt;a href="http://download.eclipse.org/webtools/repository/helios/"&gt;helios&lt;/a&gt;&lt;/li&gt;&lt;li&gt;If you are already having &lt;a href="http://www.eclipse.org/"&gt;Eclipse IDE&lt;/a&gt;. make sure you have &lt;a href="http://www.eclipse.org/webtools/"&gt;WTP Plugin&lt;/a&gt; installed.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.vogella.de/articles/Eclipse/article.html#start"&gt;Create a new workspace in eclipse&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Download and install any version of &lt;a href="http://tomcat.apache.org/"&gt;apache tomcat&lt;/a&gt; (I'm using &lt;a href="http://tomcat.apache.org/download-55.cgi#5.5.31"&gt;tomcat 5.5&lt;/a&gt;). If you are having troubles configuring it on your machine, you can locate to apache tomcat help for installation &lt;a href="http://tomcat.apache.org/tomcat-5.5-doc/setup.html"&gt;here&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/webtools/jst/components/ws/1.0/tutorials/InstallTomcat/InstallTomcat.html"&gt;Add apache tomcat&lt;/a&gt; server to your &lt;a href="http://www.eclipse.org/"&gt;Eclipse IDE&lt;/a&gt;, and &lt;a href="http://www.eclipse.org/webtools/jst/components/ws/1.0/tutorials/InstallTomcat/InstallTomcat.html"&gt;here is how you can do it&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Get Axis2&lt;br /&gt;Download latest source of Axis2 from &lt;a href="http://ws.apache.org/axis2/"&gt;here&lt;/a&gt;&lt;/li&gt;&lt;li&gt;See Anil John's &lt;a href="http://www.aniltj.com/blog/2006/02/06/InstallAndConfigureApacheTomcatAxisForWebServiceDevelopmentOnWindowsXPSP2.aspx"&gt;this article&lt;/a&gt; for properly configuring axis2 and related environment variables.&lt;/li&gt;&lt;li&gt;Once you are done with step 7, you can start integrating axis2 with Eclipse IDE by using &lt;a href="http://www.eclipse.org/webtools/community/tutorials/BottomUpAxis2WebService/bu_tutorial.html"&gt;this article&lt;/a&gt; at &lt;a href="http://www.eclipse.org/webtools/community/tutorials/"&gt;eclipse WTP Tutorials.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;For deploying axis2 plugin using .aar package, donwload &lt;a href="http://ws.apache.org/axis2/tools/1_4/eclipse/servicearchiver-plugin.html"&gt;Apache Axis2 Archive plugin&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Extract the zip file of &lt;a href="http://ws.apache.org/axis2/tools/1_4/eclipse/servicearchiver-plugin.html"&gt;Apache  Axis2 Archive plugin&lt;/a&gt; and copy the folder having plugin.xml and paste it to plugins folder of your eclipse installation root directory&lt;/li&gt;&lt;li&gt;You are done with the configuration and ready to create a new web service. &lt;a href="http://www.eclipse.org/webtools/community/tutorials/TopDownAxis2WebService/td_tutorial.html"&gt;See this tutorial&lt;/a&gt; on eclipse WTP tutorials to create a new axis2 service.&lt;/li&gt;&lt;/ol&gt;&lt;blockquote&gt;I am a .net developer, and successfully created and deployed the services created using &lt;a href="http://www.eclipse.org/"&gt;Eclipse IDE&lt;/a&gt; to &lt;a href="http://wso2.com/products/web-services-application-server/"&gt;wso2 wsas&lt;/a&gt;.I have done this using windows xp, apache tomcat 5.5, axis2 1.5 and wso2 wsas 3.0.0. I hope this post will be helpful to you and will save your time to get started with axis2 development. &lt;/blockquote&gt;I will try to share my experience of working with &lt;a href="http://wso2.com/products/web-services-application-server/"&gt;wso2 wsas&lt;/a&gt; and &lt;a href="http://wso2.com/products/enterprise-service-bus"&gt;wso2 esb&lt;/a&gt; with you in upcoming posts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-6526487129362209535?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/6526487129362209535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/11/building-java-web-services-with-axis2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6526487129362209535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6526487129362209535'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/11/building-java-web-services-with-axis2.html' title='Building Java Web Services with Axis2 and Eclipse'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-2220888300351396906</id><published>2010-11-01T21:23:00.000+05:30</published><updated>2010-11-01T21:23:06.645+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ws-*'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><title type='text'>Unable to engage module rampart</title><content type='html'>If you have ever tried to create an axis web service with security, you probably have see this error:&lt;br /&gt;&lt;blockquote&gt;AxisFault: unable to engage module "rampart"&amp;nbsp;&lt;/blockquote&gt;When I encountered this problem, I was working with eclipse having axis2 plug-ins. I found a solution in &lt;a href="http://wso2.org/forum/thread/5555" rel="nofollow,noindex"&gt;WSAS Forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Wonderful thing to note is, I got this error fixed and while reading the forums of wso2 wsas, I got this link and I thought it would be good to share this.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Note: This post is applicable to those who are not using axis2 repositories for development and using standalone eclipse projects. I was using the same.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-2220888300351396906?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/2220888300351396906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/11/unable-to-engage-module-rampart.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2220888300351396906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2220888300351396906'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/11/unable-to-engage-module-rampart.html' title='Unable to engage module rampart'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-6722463782805417296</id><published>2010-08-20T13:12:00.001+05:30</published><updated>2010-08-20T13:12:18.676+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Keep asp.net user session alive</title><content type='html'>I found a nice tricky to keep the user session alive. &lt;a href="http://stackoverflow.com/questions/3528898/auto-refresh-asp-net-web-page-after-defined-interval/3529012#3529012"&gt;see this&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-6722463782805417296?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/6722463782805417296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/08/keep-aspnet-user-session-alive.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6722463782805417296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6722463782805417296'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/08/keep-aspnet-user-session-alive.html' title='Keep asp.net user session alive'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-1508489089239168277</id><published>2010-08-17T15:46:00.000+05:30</published><updated>2010-08-17T16:05:05.065+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Skinning Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke 5.0'/><title type='text'>How to create a signle package for skin and container</title><content type='html'>In last week I've released a new skin &lt;a href="http://www.blogger.com/"&gt;Multiflex5&lt;/a&gt; on &lt;a href="http://osdnnskins.codeplex.com/"&gt;OSDNNSKINS&lt;/a&gt;, which is having two packages in downloads section, one for skin and another for containers. When I visited the download page to make sure downloads are working fine, I noticed that skin package is having more downloads than container package's download. This is why this question comes to my head.&lt;br /&gt;&lt;br /&gt;The Idea behind creating a single package is to make sure newbies can also install the package correctly, and when they evaluate the skin. So, I have decided to add two things:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;1. Create single package for skin and containers.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;2. Create a page template (or may be portal template not sure) that can be used to see the demo.&lt;/blockquote&gt;&lt;br /&gt;So, right now I'm going to discuss about how I have created a single package for skin and container. and you have to wait for next post to know how to create page template that can demonstrate the skin.&lt;br /&gt;&lt;br /&gt;Before starting to manually do the following steps, I've tried finding if there is an automated way to do this, and already &lt;a href="http://www.dotnetnuke.com/Community/Forums/tabid/795/forumid/109/threadid/381297/scope/posts/Default.aspx" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;created a question in dnn skinning forum&lt;/a&gt;. Following are manual steps to merge two different skin and container packages to single one.&lt;br /&gt;&lt;br /&gt;1. Create separate packages for skin and containers using &lt;a href="http://lakhlaniprashant.blogspot.com/2009/05/dotnetnuke-50-skin-packaging.html" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Create Package Wizard&lt;/a&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.&lt;/span&gt;&lt;br /&gt;2. Copy the packages from dnn's Install folder to a new folder.&lt;br /&gt;3. Create a New folder called Package and paste all files of skins and containers to a package folder.&lt;br /&gt;4. Make sure you don't have common name for any file in skin/container's package. Otherwise step 3 will overwrite it.&lt;br /&gt;5. Open container's .dnn file and copy following section:&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="xhtml" name="code"&gt;&amp;lt;package name="Multiflex5.4" type="Container" version="0.0.4"&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/package&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;6. Open .dnn file for skin and paste the it before &amp;lt;/packages&amp;gt; tag.&lt;br /&gt;7. Remove .dnn file for container&lt;br /&gt;9. Press &lt;i style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Cnrl + A&lt;/i&gt; to select all files, right click &amp;gt; Send To &amp;gt; Compressed (Zipped) folder&lt;br /&gt;10. Rename the newly created Zip file to your desired name.&lt;br /&gt;11. Test it by installing it to new instance of DNN (or change the skin and container names to install it to the existing installation)&lt;br /&gt;&lt;br /&gt;Hope this will be helpful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-1508489089239168277?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://osdnnskins.codeplex.com/releases/view/50569' title='How to create a signle package for skin and container'/><link rel='enclosure' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/dotnetnuke-50-skin-packaging.html' length='0'/><link rel='enclosure' type='' href='http://osdnnskins.codeplex.com/' length='0'/><link rel='enclosure' type='' href='http://osdnnskins.codeplex.com/releases/view/50569' length='0'/><link rel='enclosure' type='' href='http://www.dotnetnuke.com/Community/Forums/tabid/795/forumid/109/threadid/381297/scope/posts/Default.aspx' length='0'/><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/1508489089239168277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/08/how-to-create-signle-package-for-skin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/1508489089239168277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/1508489089239168277'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/08/how-to-create-signle-package-for-skin.html' title='How to create a signle package for skin and container'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-1897999911612019785</id><published>2010-08-14T13:23:00.000+05:30</published><updated>2010-08-14T13:28:41.540+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Skinning Tips'/><title type='text'>Free DNN Skin - Multiflex5 Enhancements - Part - 1: Formating DNN's default  module warnings and errors at client side using jQuery</title><content type='html'>As all of we know that when there is a warning or error in loading a module for admin, while logged in as admin/host we see &lt;a href="http://www.dotnetnuke.com/"&gt;dnn&lt;/a&gt;'s warning/error message. While implementing skins, we generally don't care about it as it will be only visible to admins/hosts. Have you wondered if we can fix that somehow? here is a sample screen show while &lt;span id="goog_95714968"&gt;&lt;/span&gt;&lt;a href="http://lakhlaniprashant.blogspot.com/2010/08/free-dnn-skin-multiflex5.html"&gt;Multiflex Skin&lt;span id="goog_95714969"&gt;&lt;/span&gt;&lt;/a&gt; is showing a dnn warning message.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ymCJ0BMOmwE/TGZHSkxT2hI/AAAAAAAAA5w/vERJygsq0IY/s1600/img-1.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="157" src="http://2.bp.blogspot.com/_ymCJ0BMOmwE/TGZHSkxT2hI/AAAAAAAAA5w/vERJygsq0IY/s400/img-1.PNG" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;dnn warning message&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;b&gt;Let's fix it using jQuery:&lt;/b&gt;&lt;br /&gt;&lt;b&gt;1. Add jQuery reference and a js file called Home.js&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="xhtml" name="code"&gt;&amp;lt;%DotNetNuke.Framework.jQuery.RequestRegistration()%&amp;gt;&lt;br /&gt;&amp;lt;script src="&amp;lt;%=SKinPath %&amp;gt;Home.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;b&gt;2. Let's add jQuery to format the message&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="js" name="code"&gt;$(function() {&lt;br /&gt;    if ($('#dnn_ContentPane&amp;gt;table').length &amp;gt; 0) {&lt;br /&gt;        $('#dnn_ContentPane&amp;gt;hr').remove();&lt;br /&gt;        var $table = $('#dnn_ContentPane&amp;gt;table')&lt;br /&gt;        $table.hide();&lt;br /&gt;        var html = '';&lt;br /&gt;        $('td', $table).each(function() {&lt;br /&gt;            html += $(this).html();&lt;br /&gt;        });&lt;br /&gt;        $table.remove();&lt;br /&gt;        $('#dnn_ContentPane').prepend('&amp;lt;div id="divMsg"&amp;gt;&amp;lt;div class="content-cell-corner-top"&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class="content-cell"&amp;gt;' + html + '&amp;lt;/div&amp;gt;&amp;lt;div class="content-cell-corner-bottom"&amp;gt;&amp;lt;/div&amp;gt;');&lt;br /&gt;    }&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;And we are done! now let's take a look at how the dnn warning message is looking in &lt;a href="http://lakhlaniprashant.blogspot.com/2010/08/free-dnn-skin-multiflex5.html"&gt;Multiflex5&lt;/a&gt; skin?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="155" src="http://lh5.ggpht.com/_ymCJ0BMOmwE/TGZI698T7VI/AAAAAAAAA6A/5lFlXBbgy54/s400/img-2.PNG" width="400" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;dnn warning message formatted&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;So, we can see a little bit of &lt;a href="http://www.jquery.org/"&gt;jQuery&lt;/a&gt; can format the message at client side. I was thinking how to get it formatted right from the server side and will try to figure this out.&lt;br /&gt;&lt;br /&gt;Next fix in &lt;a href="http://lakhlaniprashant.blogspot.com/2010/08/free-dnn-skin-multiflex5.html"&gt;multiflex5&lt;/a&gt; is of &lt;span id="goog_1666125111"&gt;&lt;/span&gt;&lt;a href="http://www.dotnetnuke.com/"&gt;dnn&lt;span id="goog_1666125112"&gt;&lt;/span&gt;&lt;/a&gt; action menu, Once I will done with that, new version of &lt;a href="http://lakhlaniprashant.blogspot.com/2010/08/free-dnn-skin-multiflex5.html"&gt;mutltiflex5&lt;/a&gt; will be released. &lt;br /&gt;&lt;br /&gt;Please tell me your thoughts or shared your solutions for the same problem you faced during dnn development to make the &lt;a href="http://lakhlaniprashant.blogspot.com/2010/08/free-dnn-skin-multiflex5.html"&gt;Multiflex5&lt;/a&gt; better suited to use in production.&lt;br /&gt;&lt;br /&gt;Have fun with the free skin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-1897999911612019785?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/1897999911612019785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/08/free-dnn-skin-multiflex5-enhancements.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/1897999911612019785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/1897999911612019785'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/08/free-dnn-skin-multiflex5-enhancements.html' title='Free DNN Skin - Multiflex5 Enhancements - Part - 1: Formating DNN&apos;s default  module warnings and errors at client side using jQuery'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ymCJ0BMOmwE/TGZHSkxT2hI/AAAAAAAAA5w/vERJygsq0IY/s72-c/img-1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-4192153108481937408</id><published>2010-08-13T16:04:00.000+05:30</published><updated>2010-08-14T15:15:20.233+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><title type='text'>Free DNN Skin - Multiflex5</title><content type='html'>New free skin is available on &lt;a href="http://osdnnskins.codeplex.com/"&gt;OSDNNSKINS&lt;/a&gt;. An open source template &lt;a href="http://www.openwebdesign.org/design/4481/multiflex5/index.html"&gt;Multiflex5&lt;/a&gt; is converted into DNN Skin. Please visit&amp;nbsp; download section of &lt;a href="http://osdnnskins.codeplex.com/"&gt;OSDNNSKINS&lt;/a&gt; site.&lt;br /&gt;Instructions for using the skin:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download and install Skin package and Container package from Download section of &lt;a href="http://osdnnskins.codeplex.com/"&gt;OSDNNSKINS&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Create sample page and try applying a skin and container to it&lt;/li&gt;&lt;li&gt;Use Rounded-Center.ascx as a default container&lt;/li&gt;&lt;li&gt;Use Subcontent.ascx as right sidebar container&lt;/li&gt;&lt;li&gt;Use botton-subcontent for two column layout of CenterLeftPane and CenterRightPane&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Updated&lt;/b&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;Limitations:&lt;/strike&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strike&gt;DNN Action drop down menu is not showing correctly right now&lt;/strike&gt;&lt;/li&gt;&lt;li&gt;&lt;strike&gt;DNN Module warnings are not showing correctly&lt;/strike&gt;&lt;/li&gt;&lt;/ul&gt;I've notices the above two things after releasing the skin packages, so will fix this in the next release in next weekend.&lt;br /&gt;Tested in all the popular browsers and looks fine. (IE7, latest version of Firefox, Chrome and safari)&lt;br /&gt;Please send your feedback on this skin.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Update:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;a href="http://osdnnskins.codeplex.com/releases/view/50569"&gt;Multiflex5 version 0.2&lt;/a&gt; is now available to download which is now stable. Please report bugs you find in issue tracker of &lt;a href="http://www.blogger.com/"&gt;OSDNNSKINS&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-4192153108481937408?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/4192153108481937408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/08/free-dnn-skin-multiflex5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4192153108481937408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4192153108481937408'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/08/free-dnn-skin-multiflex5.html' title='Free DNN Skin - Multiflex5'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-7069670562421500071</id><published>2010-07-10T17:07:00.000+05:30</published><updated>2010-07-10T17:08:19.228+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Free DNN Module'/><title type='text'>DotNetNuke: Free Module - Sample SiteMap with Navigation and Filter</title><content type='html'>Check out this free dnn module showing site map with option to filter the links using alphabet. Here are some of it's features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ajax to load tab links for an alphabet&lt;/li&gt;&lt;li&gt; Option to see all tab links or specific tab link&lt;/li&gt;&lt;li&gt;Only initial version to present the idea&lt;/li&gt;&lt;li&gt;It uses &lt;a href="http://www.ihwy.com/labs/jquery-listnav-plugin.aspx"&gt;jQuery Navigation Pluggin&lt;/a&gt;&amp;nbsp; to show filter links&lt;/li&gt;&lt;li&gt;Screenshot:&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ymCJ0BMOmwE/TDhZlUUIZTI/AAAAAAAAA5c/m7gciXwEArQ/s1600/eLabSiteMapNav.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_ymCJ0BMOmwE/TDhZlUUIZTI/AAAAAAAAA5c/m7gciXwEArQ/s320/eLabSiteMapNav.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;h3&gt;Further improvements and objectives&lt;/h3&gt;The basic idea to would be to create a module that can be used as a dynamic page that shows various links and can be used for SEO purpose. &lt;br /&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;h3&gt;Send your suggessions&lt;/h3&gt;Please send in your wish list of features that you expect and can add value to this. Please feel free to download and evaluate the module and use it in whatever way you want.&lt;br /&gt;&lt;/blockquote&gt;&lt;h3&gt;Download&lt;/h3&gt;&lt;iframe title ="Preview" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" style="width:98px;height:115px;padding:0;background-color:#fcfcfc;" src="http://cid-4d35773943f122a7.office.live.com/embedicon.aspx/Public/eLabSiteMapNav^_00.00.01^_Install.zip"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-7069670562421500071?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/7069670562421500071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/07/dotnetnuke-free-module-sitemap-with.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7069670562421500071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7069670562421500071'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/07/dotnetnuke-free-module-sitemap-with.html' title='DotNetNuke: Free Module - Sample SiteMap with Navigation and Filter'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ymCJ0BMOmwE/TDhZlUUIZTI/AAAAAAAAA5c/m7gciXwEArQ/s72-c/eLabSiteMapNav.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-2939858323380747000</id><published>2010-07-10T12:53:00.000+05:30</published><updated>2010-11-20T10:42:09.628+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Skinning Tips'/><title type='text'>DotNetNuke: Common tips for skin Developers</title><content type='html'>&lt;ol&gt;&lt;h3&gt;Skin Development&lt;/h3&gt;&lt;li&gt;&lt;b&gt;How to add reference to jQuery?&lt;/b&gt;&lt;br /&gt;&lt;strike&gt;Add following server tag at the top of your skin file&lt;/strike&gt;&lt;br /&gt;Add following at the end of your skin file:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&lt;strike&gt;&amp;lt;%  DotNetNuke.Framework.jQuery.RequestRegistration()%&amp;gt; &lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt; Protected Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Init&lt;br /&gt;  dotnetnuke.Framework.jQuery.RequestRegistration()&lt;br /&gt; End Sub&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Thanks to Brian Dukes for correcting this&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; How to access Tab Name?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&amp;lt;%=  PortalSettings.ActiveTab.TabName%&amp;gt;&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;Now that you know how &lt;cite&gt;PortalSettigns&lt;/cite&gt; is having &lt;cite&gt;ActiveTab&lt;/cite&gt; you can play with properties of &lt;cite&gt;ActiveTab&lt;/cite&gt; which is of type &lt;cite&gt;TabInfo&lt;/cite&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; How to access currently logged in user?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&amp;lt;%=  PortalSettings.UserInfo.DisplayName%&amp;gt;&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;Once again  &lt;cite&gt;PortalSettigns&lt;/cite&gt;, you can use &lt;cite&gt;PortalSettings.UserInfo.Roles&lt;/cite&gt; to provide role based elements to your skin.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;how to get path of Skin folder?&lt;/b&gt;&lt;br /&gt;Most useful and easy one&lt;br /&gt;&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&amp;lt;%=  SkinPath%&amp;gt;&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;so if you want to show an tips.jpg which is images directory in your skin root directory, do this&lt;br /&gt;&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&amp;lt;img src="&amp;lt;%=SkinPath %&amp;gt;images/tips.jpg" alt="tips" title="tips" /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;How to find default portal and admin skins from database?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="sql" name="code"&gt;selecT* from PortalSettings where SettingName in ('DefaultAdminContainer','DefaultAdminSkin','DefaultPortalContainer','DefaultPortalSkin')&lt;br /&gt;select * from HostSettings where SettingName in ('DefaultAdminContainer','DefaultAdminSkin','DefaultPortalContainer','DefaultPortalSkin')&lt;br /&gt;&lt;/pre&gt;DNN will try to look at &lt;cite&gt;PortalSettings&lt;/cite&gt; table and see if admin and default portal skins are available there, if found, it will apply that settings otherwise it will load it from &lt;cite&gt;HostSettings&lt;/cite&gt; table. &lt;br /&gt;&lt;a href="http://www.dotnetnuke.com/Community/Blogs/tabid/825/EntryId/2561/Setting-Admin-Host-Page-Skins-via-SQL.aspx"&gt;Here is more advanced link&lt;/a&gt; from dnn blog.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;&lt;h3&gt;Reference and links for skin development&lt;/h3&gt;&lt;li&gt; There are lots of &lt;a href="http://lakhlaniprashant.blogspot.com/2009/06/dotnetnuke-skin-objects.html"&gt;skin objects&lt;/a&gt;, which are &lt;a href="http://www.thinkofdesign.com/resources/dotnetnuke-skinning-reference/" rel="NOFOLLOW,NOINDEX"&gt;described well here&lt;/a&gt;, or you can download entire &lt;a href="http://www.dotnetnuke.com/LinkClick.aspx?fileticket=UvGirRQpGRo%3D&amp;amp;tabid=478&amp;amp;mid=857"&gt;DotNetNuke Skinning Guide&lt;/a&gt; from &lt;a href="http://www.dotnetnuke.com/"&gt;dotnetnuke&lt;/a&gt; website.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Building dnn skins using BluePrint css framework&lt;br /&gt;&lt;a href="http://osdnnskins.codeplex.com/wikipage?title=BluePrintSample&amp;amp;referringTitle=Home"&gt;Free Sample skin developed using BluePrint css framework&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;a href="http://yaml.dnn.ch/Tutorials/Tutorialstarten/tabid/141/Default.aspx"&gt;Tutorial on building DNN Skins using YAML&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;a href="http://dnngallery.net/blog/id/140/pros-and-cons-of-using-css-framework-in-dotnetnuke"&gt;Pros and cons of using css frameworks in dnn&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;h3&gt;More..&lt;/h3&gt;Please drop me a line to get any kind help regarding the dnn skin development and administration problems.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-2939858323380747000?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/2939858323380747000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/07/dotnetnuke-common-tips-for-skin.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2939858323380747000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2939858323380747000'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/07/dotnetnuke-common-tips-for-skin.html' title='DotNetNuke: Common tips for skin Developers'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-6208530425255484592</id><published>2010-04-01T13:16:00.000+05:30</published><updated>2010-05-07T20:13:53.781+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>DotNetNuke - What is Module Definition?</title><content type='html'>DNN - What is Module Definition?&lt;br /&gt;&lt;b&gt;What is Module Definition?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A Module must have at least one definition in order to show the default view control in module. More over, Module is collection of module definitions, that contains group of controls (View, Edit, Settings). When a module is installed to the tab, all the definitions are installed to it and default or view controls from all the definition is visible to the tab. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;But why do I need it?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;When you want to display your module views in different panes!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;I don't get you!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Well what will you do if you have a two column layout (skin) and you are asked to show recent posts in the side bar pane and recent comments at the bottom of content pane?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;I will create two different modules!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;No, that's not a right way to do it! Module definitions are just to do this kind of things. Creating two different module and then creating a module package for both of them and installing them individually is not an efficient way. Logically, your recent posts' view and recent comments are part of your blog module and by installing blog module you will be able to install both of them in any pane of skin you want. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ok, But I can just add the recent comments at the bottom of my posts in the ascx control, why do I create a separate view for it? &lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Well, what if client ask you to move it to sidebar? separating&lt;b&gt; &lt;/b&gt;the things will allow client to do it him self!&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Oh I see! So, I have to create two view controls in the module and just create two separate definitions for both of them. &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Right. That's the correct way to do it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ok, and what If I want to add "New Post" link to both of the module definitions?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Well, you can create a single edit type of control and you have to add the control's link to both of the view controls and add the edit control to both definitions. But note that if you are using module id this will not work. Module ID for both of them will be different.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[But most of the time, you will not do that in DNN, you will place edit link to the view that is most relevant.]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;And what about settings, can I share settings of module between them?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Nop, you cannot share it. installing every definition will create a new module id. and settings are stored by module id so technically, you don't have facility to do this by design. That makes sense, For example, if you want to show unapproved comment's list to the blog owner, and change the setting for that definition, that will not affect the blog list and recent post list. &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Conclusion:&lt;/b&gt;&lt;br /&gt;You can think module definition as a deploy time helpers, if you want that certain group of view controls should be installed with the installation of module but don't want them to stick to the panes they are installed in, just split your views in more than one view and add as many definitions as you want to allow flexibility.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-6208530425255484592?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/6208530425255484592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/04/dotnetnuke-what-is-module-definition.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6208530425255484592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6208530425255484592'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/04/dotnetnuke-what-is-module-definition.html' title='DotNetNuke - What is Module Definition?'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-3419234857414976844</id><published>2010-03-04T15:16:00.000+05:30</published><updated>2010-03-23T08:58:22.158+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><title type='text'>Building Skinnable Modules</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;In this post we will try to create a basic module development strategy when you want to create a module with multiple skins. The basic idea here is to create an initial demo that can be re-used to create modules with multiple skins.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Let's Start:&lt;/b&gt;&lt;br /&gt;Let's start by creating some set of controls and css just like you see in the image below.&lt;br /&gt;&lt;br /&gt;&lt;img alt="Skinnable Module Image 1" src="http://lh6.ggpht.com/_ymCJ0BMOmwE/S4-EDOnKAqI/AAAAAAAAA5E/6f0YIJ6JnZU/s144/skinnable-module-1.PNG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a Module from the control in the root directory (View.ascx)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;View.ascx is just a control loader which will decide which skin control to be rendered based on skin that is selected, if no skin is selected, you can assign default skin. &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Further Improvements:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If module control is relatively simply and contains only listing view like repeater or data list, you can move the cs file of any one control to code folder, and change code behind file attribute for both skin controls. That way you don't have to maintain separate code file for each skin.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Source Code:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can download source code from here.&lt;br /&gt;&lt;iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://cid-4d35773943f122a7.skydrive.live.com/embedicon.aspx/Public/SkinnableModule%5E_00.00.01%5E_Install.zip" style="background-color: #fcfcfc; height: 115px; padding: 0pt; width: 98px;" title="Preview"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-3419234857414976844?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/3419234857414976844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/03/building-skinnable-modules.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/3419234857414976844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/3419234857414976844'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/03/building-skinnable-modules.html' title='Building Skinnable Modules'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_ymCJ0BMOmwE/S4-EDOnKAqI/AAAAAAAAA5E/6f0YIJ6JnZU/s72-c/skinnable-module-1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-2139564971471904359</id><published>2010-01-23T19:45:00.000+05:30</published><updated>2010-01-23T19:50:23.802+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>DotNetNuke - Alternative for using getTabByName or getTab - Part 2</title><content type='html'>If you have gone through &lt;a href="http://lakhlaniprashant.blogspot.com/2009/06/dotnetnuke-alternative-for-using.html"&gt;this&lt;/a&gt; post you will find that there are alternatives like storing the TabIds in session state, or cache, or creating entries in siteUrl.config. In this post we will see some more options regarding the same problem and advantages and disadvantages of all of them.&lt;br /&gt;&lt;br /&gt;Let's look at other two options that are available:&lt;br /&gt;&lt;br /&gt;(1) Accessing Tabs without tabId is another option that you can choose. Good thing is you don't have to worry about tabId and bad thing with this is it will not work with querystring params.&lt;br /&gt;&lt;br /&gt;(2) Store the tab ids you require by providing a module setting. If you choose this option, you have to create a settings page which provides a drop down for each tab that you are using link of navigation, and you can then simply use the tab id stored in settings everytime. Good thing is that all other information along with the tab id is not loaded from the database.&lt;br /&gt;&lt;br /&gt;Now Let's look at the detail of each method:&lt;br /&gt;(1) Session State:&lt;br /&gt;&lt;br /&gt;Good When: If you are using the tabId in the session that is strongly depend to the current session (for example link to user's profile) it's good to store the tabId in the session. But that doesn't mean I'm in favour of adding entire TabInfo object in to the session, If you want to use TabId only, you can directly add TabId into the session. If you are using more than one tab you can maintain hash table. Use some utility class for boxing and unboxing the HasTable from the session.&lt;br /&gt;&lt;br /&gt;Not Good when: If your module needs a tab that is providing navigation to other related tabs of the site, that are static (for example a help page for the module of features) you should not use session, as it will aquire large set of memory for the sites that are heavy loeaded with users.&lt;br /&gt;Multi-Portal Considerations: Works fine if module is used in multi-portal or not.&lt;br /&gt;&lt;br /&gt;(2) Cache:&lt;br /&gt;&lt;br /&gt;Good When: storing the link of tab that is not dependent on session. 'Not Good When' for sessuib state is resolved with the cache. If you are new to dnn data cache, please go through the help articles before doing anything.&lt;br /&gt;&lt;br /&gt;Not Good When: I don't see any disadvantages of using cache if used properly. Common problems with using caches are, refreshing and populating the cache at correct time, If you are good enough to understand that, there are no problems with this. I will recommend to google this for getting in-depth understanding of this topic.&lt;br /&gt;&lt;br /&gt;Multi-Portal Considerations: Works fine if module is used in multi-portal or not, but it's good practice to add portalId at the end of the key if you are planning to use the module in multi-portal environment.&lt;br /&gt;&lt;br /&gt;(3) SiteUrl.Config:&lt;br /&gt;&lt;br /&gt;Good When: you have small number of static tabs to redirect. You can just create an entry and use it from any where in any modules. I've used this trick many times to show user's shopping cart from anywhere in the site by redirecting them to shoppingCart.aspx. You can use it for the same purpose.&lt;br /&gt;&lt;br /&gt;Not Good When: NA&lt;br /&gt;&lt;br /&gt;Multi-Portal Considerations: If you are dealing with multiple portals having same tab name, Either you have to create site url entries with different names or you cannot do it. For example, if you are using this feature for help, you cannot give all the tab's name as help.aspx, but you can do it help1.aspx, help2.aspx which is possible. or It may be possible, But I am not able to find the correct solution for this. But atleast consider this when you are in multi-portal module development.&lt;br /&gt;&lt;br /&gt;(4) Tab Names:&lt;br /&gt;&lt;br /&gt;Good When: You are sure that you will never change the tab name&lt;br /&gt;&lt;br /&gt;Not Good When: You are using Query string&lt;br /&gt;&lt;br /&gt;Multi-portal Considerations: No worries, works fine without any problems.&lt;br /&gt;&lt;br /&gt;(5) Module Settings:&lt;br /&gt;&lt;br /&gt;Good When: You are not sure what would be the tab name when you deploy the page (because only client can name it correcly ;) ) so, it's wise decision to provide ui with Drop downs to store the it as a module setting once and forget for the rest of the life time after that.&lt;br /&gt;&lt;br /&gt;Not Good When: you have a module that is accessing database agressively, this will add additional data access load to the database server. Bad thing with this is you cannot control number of round trips to the database for a specific instance of the&lt;br /&gt;&lt;br /&gt;Multi-portal Considerations: It's not possible to deploy local setting with dnn portal templates using export featrues.&lt;br /&gt;&lt;br /&gt;I hope this is useful to you when you develop modules.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-2139564971471904359?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/2139564971471904359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/01/dotnetnuke-alternative-for-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2139564971471904359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2139564971471904359'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/01/dotnetnuke-alternative-for-using.html' title='DotNetNuke - Alternative for using getTabByName or getTab - Part 2'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-7982448958692867284</id><published>2010-01-22T10:48:00.000+05:30</published><updated>2010-01-22T10:50:24.032+05:30</updated><title type='text'>Year 2009 overview for the blog</title><content type='html'>&lt;ul&gt;&lt;li&gt;Two articles from the blog are selected in DotNetNuke.com newlatter (DotNetNuke is one of the best CMS in .net and won best cms awards more than once) &lt;a class="moz-txt-link-freetext" href="http://www.dotnetnuke.com/Portals/25/Newsletter/DotNetNukeNewsletterVol.VNumber10.pdf"&gt;http://www.dotnetnuke.com/Portals/25/Newsletter/DotNetNukeNewsletterVol.VNumber10.pdf&lt;/a&gt; (See tips and tricks section)&lt;a class="moz-txt-link-freetext" href="http://www.dotnetnuke.com/Portals/25/Newsletter/DotNetNukeNewsletterVol.VNumber7.pdf"&gt;http://www.dotnetnuke.com/Portals/25/Newsletter/DotNetNukeNewsletterVol.VNumber7.pdf&lt;/a&gt; (See tips and tricks section)&lt;/li&gt;&lt;li&gt;For year 2009 records for the blog says - 19240 visitors, 27422 page views with 16994 unique visitors and most of them are from out of india.&lt;/li&gt;&lt;li&gt;some of the posts like creating modal popup in html4 is accessed around 3000 times in the last year&lt;/li&gt;&lt;li&gt;Hosting open source dotnetnuke skin project at codeplex (osdnnskins.codeplex.com) and post updates about it at this blog. Many of the sites like http://www.arthawena.com/ already using it having a back link to the blog.&lt;/li&gt;&lt;li&gt;Some of the unique researches like 'Flash remoting with asp.net' is all time fev of all the flash and no-flash devs.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Thanks everybody for the support and help, keep in touch&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-7982448958692867284?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/7982448958692867284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/01/year-2009-overview-for-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7982448958692867284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7982448958692867284'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2010/01/year-2009-overview-for-blog.html' title='Year 2009 overview for the blog'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-5357274252837225842</id><published>2009-11-12T13:09:00.000+05:30</published><updated>2009-11-12T13:44:33.670+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='JQUERY'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>jQuery How to build a simple table style switcher</title><content type='html'>&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Get Started&lt;br /&gt;Let's create an html table that is showing some sample data. Here is it:&lt;br /&gt;&lt;pre name="code" type="xhtml"&gt;&lt;br /&gt;&amp;lt;table&amp;gt;&lt;br /&gt;           &amp;lt;tbody&amp;gt;&lt;br /&gt;               &amp;lt;tr&amp;gt;&lt;br /&gt;                   &amp;lt;th&amp;gt;&lt;br /&gt;                       Column1&lt;br /&gt;                   &amp;lt;/th&amp;gt;&lt;br /&gt;                   &amp;lt;th&amp;gt;&lt;br /&gt;                       Column2&lt;br /&gt;                   &amp;lt;/th&amp;gt;&lt;br /&gt;               &amp;lt;/tr&amp;gt;&lt;br /&gt;               &amp;lt;tr&amp;gt;&lt;br /&gt;                   &amp;lt;td&amp;gt;Data1.1&amp;lt;/td&amp;gt;&lt;br /&gt;                   &amp;lt;td&amp;gt;Data2.1&amp;lt;/td&amp;gt;&lt;br /&gt;               &amp;lt;/tr&amp;gt;&lt;br /&gt;               &amp;lt;tr&amp;gt;&lt;br /&gt;                   &amp;lt;td&amp;gt;Data1.2&amp;lt;/td&amp;gt;&lt;br /&gt;                   &amp;lt;td&amp;gt;Data2.2&amp;lt;/td&amp;gt;&lt;br /&gt;               &amp;lt;/tr&amp;gt;&lt;br /&gt;           &amp;lt;/tbody&amp;gt;&lt;br /&gt;       &amp;lt;/table&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Let's Add some style to it&lt;br /&gt;Let's add some simple styling to the table so it looks pretty! here is the css:&lt;br /&gt;&lt;pre name="code" class="css"&gt;&lt;br /&gt;table{width:400px;border:solid 1px black;}&lt;br /&gt;th {background:black;color:White;}&lt;br /&gt;td {color:Black;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_ymCJ0BMOmwE/SvvDSe-ZUBI/AAAAAAAAA08/A1SlHnZ3vQw/s144/2.PNG" /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Thinking about multiple styles of table&lt;br /&gt;Let's add an id to table and change some things in our css to make it more&lt;br /&gt;specific.&lt;br /&gt;HTML:&lt;br /&gt;&lt;pre name="code" class="xhtml"&gt;&lt;br /&gt;&amp;lt;table id="my-table" class="my-table"&amp;gt;&lt;br /&gt;           &amp;lt;tbody&amp;gt;&lt;br /&gt;               &amp;lt;tr&amp;gt;&lt;br /&gt;                   &amp;lt;th&amp;gt;&lt;br /&gt;                       Column1&lt;br /&gt;                   &amp;lt;/th&amp;gt;&lt;br /&gt;                   &amp;lt;th&amp;gt;&lt;br /&gt;                       Column2&lt;br /&gt;                   &amp;lt;/th&amp;gt;&lt;br /&gt;               &amp;lt;/tr&amp;gt;&lt;br /&gt;               &amp;lt;tr&amp;gt;&lt;br /&gt;                   &amp;lt;td&amp;gt;Data1.1&amp;lt;/td&amp;gt;&lt;br /&gt;                   &amp;lt;td&amp;gt;Data2.1&amp;lt;/td&amp;gt;&lt;br /&gt;               &amp;lt;/tr&amp;gt;&lt;br /&gt;               &amp;lt;tr&amp;gt;&lt;br /&gt;                   &amp;lt;td&amp;gt;Data1.2&amp;lt;/td&amp;gt;&lt;br /&gt;                   &amp;lt;td&amp;gt;Data2.2&amp;lt;/td&amp;gt;&lt;br /&gt;               &amp;lt;/tr&amp;gt;&lt;br /&gt;           &amp;lt;/tbody&amp;gt;&lt;br /&gt;       &amp;lt;/table&amp;gt;&lt;br /&gt;      &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;CSS:&lt;br /&gt;&lt;pre name="code" class="css"&gt;&lt;br /&gt;#my-table{width:400px;border:solid 1px black;}&lt;br /&gt;   #my-table th {background:black;color:White;}&lt;br /&gt;   #my-table td {color:Black;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Let's build another style&lt;br /&gt;Let's add another style to table. So now css looks like following:&lt;br /&gt;&lt;pre name="code" class="css"&gt;&lt;br /&gt;   #my-table{width:400px;border:solid 1px black;}&lt;br /&gt;   #my-table th {background:black;color:White;}&lt;br /&gt;   #my-table td {color:Black;}&lt;br /&gt;  &lt;br /&gt;   #my-table-gray{width:400px;border:solid 1px gray;}&lt;br /&gt;   #my-table-gray th {background:gray;color:White;}&lt;br /&gt;   #my-table-gray td {color:gray;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;img src="http://picasaweb.google.com/lh/photo/LmGOnKu9pyQxkmS7Jv9tXA?authkey=Gv1sRgCJ2FjqX7hqreRw&amp;feat=directlink" /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Let's add jQuery to switch style!&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;&amp;lt;script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;script&amp;gt;&lt;br /&gt;       jQuery(document).ready(&lt;br /&gt;           function() {&lt;br /&gt;               jQuery("a").click(function() {&lt;br /&gt;                  &lt;br /&gt;                   var table = jQuery("#my-table")[0];&lt;br /&gt;                   if (table.className == "my-table")&lt;br /&gt;                       table.className = "my-table-gray";&lt;br /&gt;                   else&lt;br /&gt;                       table.className = "my-table";&lt;br /&gt;               });&lt;br /&gt;           }&lt;br /&gt;           );&lt;br /&gt;          &lt;br /&gt;   &amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;http://picasaweb.google.com/lh/photo/4KmKLPYDYIwzFS6BbNOfmg?authkey=Gv1sRgCJ2FjqX7hqreRw&amp;feat=directlink&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-5357274252837225842?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/5357274252837225842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/11/jquery-how-to-build-simple-table-style.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5357274252837225842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5357274252837225842'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/11/jquery-how-to-build-simple-table-style.html' title='jQuery How to build a simple table style switcher'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_ymCJ0BMOmwE/SvvDSe-ZUBI/AAAAAAAAA08/A1SlHnZ3vQw/s72-c/2.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-6359695521127246714</id><published>2009-11-12T12:50:00.000+05:30</published><updated>2009-11-12T12:53:03.865+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>CheckBoxList Required Validation in Javascript</title><content type='html'>ASP.NET CODE:&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&lt;br /&gt;&amp;lt;asp:CheckBoxList ID=&amp;quot;chkList&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;asp:ListItem&amp;gt;Item One&amp;lt;/asp:ListItem&amp;gt;&lt;br /&gt;            &amp;lt;asp:ListItem&amp;gt;Item two&amp;lt;/asp:ListItem&amp;gt;&lt;br /&gt;            &amp;lt;asp:ListItem&amp;gt;Item three&amp;lt;/asp:ListItem&amp;gt;&lt;br /&gt;            &amp;lt;asp:ListItem&amp;gt;Item four&amp;lt;/asp:ListItem&amp;gt;&lt;br /&gt;        &amp;lt;/asp:CheckBoxList&amp;gt;&lt;br /&gt;        &amp;lt;asp:Button ID=&amp;quot;btnSubmit&amp;quot; runat=&amp;quot;server&amp;quot; ValidationGroup=&amp;quot;CHK&amp;quot; OnClientClick=&amp;quot;return validateChk();&amp;quot; Text=&amp;quot;Validate&amp;quot;/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;JAVASCRIPT CODE:&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;&lt;br /&gt;function validateChk() {&lt;br /&gt;            debugger;&lt;br /&gt;            var found = false;&lt;br /&gt;            var validated = false;&lt;br /&gt;            var id = document.getElementById(&amp;quot;&lt;%=chkList.ClientID %&gt;&amp;quot;).id;&lt;br /&gt;            var elements = document.forms[0].elements;&lt;br /&gt;            for (i = 0; i &lt; elements.length; i++) {&lt;br /&gt;                if (elements[i].type == &amp;quot;checkbox&amp;quot; &amp;&amp; elements[i].id.indexOf(id) &gt; -1) {&lt;br /&gt;                    found = true;&lt;br /&gt;                    if (elements[i].checked) {&lt;br /&gt;                        validated = true;&lt;br /&gt;                        break;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            if (found &amp;&amp; validated)&lt;br /&gt;                return true;&lt;br /&gt;            else&lt;br /&gt;                return false;&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-6359695521127246714?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/6359695521127246714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/11/checkboxlist-required-validation-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6359695521127246714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6359695521127246714'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/11/checkboxlist-required-validation-in.html' title='CheckBoxList Required Validation in Javascript'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-477102071809948644</id><published>2009-11-03T18:03:00.000+05:30</published><updated>2009-11-03T18:08:47.738+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Using single ClientValidationFunction for similar validations using custom validator</title><content type='html'>Here is an example of how to write a common client validation function while using similar kind of validations on more than one asp.net control.&lt;br /&gt;This example is showing how to validate two drop down list using a single javascript function for required&lt;br /&gt;ASP.NET Markup&lt;br /&gt;&lt;pre name="code" class="xhtml"&gt;&lt;br /&gt;&amp;lt;asp:DropDownList ID=&amp;quot;ddlCountry&amp;quot; runat=&amp;quot;server&amp;quot; AutoPostBack=&amp;quot;True&amp;quot; &lt;br /&gt;                onselectedindexchanged=&amp;quot;ddlCountry_SelectedIndexChanged&amp;quot; CausesValidation=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;/asp:DropDownList&amp;gt;&lt;br /&gt;            &amp;lt;asp:CustomValidator ID=&amp;quot;cvCountry&amp;quot; runat=&amp;quot;server&amp;quot; ControlToValidate=&amp;quot;ddlCountry&amp;quot;&lt;br /&gt;                EnableClientScript=&amp;quot;true&amp;quot; ValidationGroup=&amp;quot;REG&amp;quot; Display=&amp;quot;None&amp;quot; ErrorMessage=&amp;quot;Country is required&amp;quot; Text=&amp;quot;&amp;nbsp;&amp;quot;&lt;br /&gt;                ClientValidationFunction=&amp;quot;validateCbo&amp;quot;&amp;gt;&amp;lt;/asp:CustomValidator&amp;gt;&lt;br /&gt;&amp;lt;asp:DropDownList ID=&amp;quot;ddlState&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;/asp:DropDownList&amp;gt;&lt;br /&gt;            &amp;lt;asp:CustomValidator ID=&amp;quot;cvState&amp;quot; runat=&amp;quot;server&amp;quot; ControlToValidate=&amp;quot;ddlState&amp;quot;&lt;br /&gt;                EnableClientScript=&amp;quot;true&amp;quot; ValidationGroup=&amp;quot;REG&amp;quot; Display=&amp;quot;None&amp;quot; ErrorMessage=&amp;quot;State is required&amp;quot; Text=&amp;quot;&amp;nbsp;&amp;quot;&lt;br /&gt;                ClientValidationFunction=&amp;quot;validateCbo&amp;quot;&amp;gt;&amp;lt;/asp:CustomValidator&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Javascript client validation function:&lt;br /&gt;&lt;pre name="code" class="js"&gt;&lt;br /&gt;function validateCbo(source, args) {&lt;br /&gt;        var ddl = null;&lt;br /&gt;        if(source.controltovalidate.indexOf('Country')&gt;-1)&lt;br /&gt;            ddl = document.getElementById('&lt;%=ddlCountry.ClientID %&gt;');&lt;br /&gt;        else&lt;br /&gt;            ddl = document.getElementById('&lt;%=ddlState.ClientID %&gt;');&lt;br /&gt;        if (ddl != null) {&lt;br /&gt;            args.IsValid = !(ddl.options[ddl.selectedIndex].value == 0);            &lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;            args.IsValid = true;&lt;br /&gt;    }   &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-477102071809948644?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/477102071809948644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/11/using-single-clientvalidationfunction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/477102071809948644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/477102071809948644'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/11/using-single-clientvalidationfunction.html' title='Using single ClientValidationFunction for similar validations using custom validator'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-5178815699402473244</id><published>2009-11-02T11:31:00.000+05:30</published><updated>2009-11-02T11:34:56.704+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke 5.0'/><title type='text'>DotNetNuke 5.x with .net framework 2.0 (web.config)</title><content type='html'>Everybody, who tried to deploy DotNetNuke 5.x on web servers that is not having .net framework 3.5 requires changes to web.config. You can download this &lt;a href="http://cid-4d35773943f122a7.skydrive.live.com/self.aspx/Public/web.config"&gt;web.config&lt;/a&gt; which worked for me.&lt;br /&gt;&lt;br /&gt;Hope this helps :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-5178815699402473244?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/5178815699402473244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/11/dotnetnuke-5x-with-net-framework-20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5178815699402473244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5178815699402473244'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/11/dotnetnuke-5x-with-net-framework-20.html' title='DotNetNuke 5.x with .net framework 2.0 (web.config)'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-8544691337781209509</id><published>2009-10-11T18:19:00.001+05:30</published><updated>2009-10-11T18:35:27.747+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>DotNetNuke - Login control not working!</title><content type='html'>Some time ago, Somebody emailed me regarding his strange problem. The dnn live website was throwing error and was not able to redirect to login page! So I asked him to login in host acount and uninstall openId authentication provider, because that's the dll that was causing proble. He was staring at and after some time he said, I'm getting error while logging in man!&lt;br /&gt;&lt;br /&gt;I laughed a little and give following suggession:&lt;br /&gt;&lt;br /&gt;Create a page Sample.aspx which inharits from DotNetNetNuke.Framework.Pagebase and in page load manually authenticate a user host using UserController.ValidateUser method. That will help you login to the site in host account and then delete the page one you are done.&lt;br /&gt;&lt;br /&gt;So these kind of problems where host or admin user cannot login with their accounts can be solved by this simple sample page. But be remember to change the host password because we have to use that password in clear format to write the code. Here is the code that I used:&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;'Imports DotNetNuke.Security.Membership&lt;br /&gt;Dim loginStatus As UserLoginStatus = UserLoginStatus.LOGIN_FAILURE&lt;br /&gt;UserController.ValidateUser(PortalSettings.PortalId, "host", "xxx", PortalSettings.PortalName, "", PortalSettings.PortalName, AuthenticationLoginBase.GetIPAddress(), loginStatus)&lt;br /&gt;Response.Redirect(NavigateUrl(PortalSettings.HomeTabId))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-8544691337781209509?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/8544691337781209509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/10/dotnetnuke-login-control-not-working.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8544691337781209509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8544691337781209509'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/10/dotnetnuke-login-control-not-working.html' title='DotNetNuke - Login control not working!'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-5874249993604447253</id><published>2009-09-16T22:06:00.000+05:30</published><updated>2009-09-16T22:09:05.455+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Writing smart DotNetNuke Schedulers that sends email</title><content type='html'>This post is for those who are using dotnetnuke scheduler for rapidly sending emails to the users. There are times when scheduler fails to complete the job and try running the job again base on retry setting applied to it. Bad news is that, the user who are expecting the email once receives the email twice. If you set retry frequency to an hour or so, and your code meets some bad data like null reference of so, users will get the email every hour.&lt;br /&gt;&lt;br /&gt;This description at least clears the thing that we should at least not set retry frequency while sending emails through scheduler. Next thing comes to mind is, there should be a batter way to do it. I personally work on it and think about some way that adds some overhead to the scheduler activity but makes sure that no user will get the same email more than once.&lt;br /&gt;&lt;br /&gt;Create a table called &lt;i&gt;tracker&lt;/i&gt; that stores following things:&lt;br /&gt;Id     - Auto increment&lt;br /&gt;Email - Email sent&lt;br /&gt;Type - default 0, increment it in case if you are using more than one scheduler for sending emails&lt;br /&gt;Date - Small date time that stores date and time the email sent to this user.&lt;br /&gt;&lt;br /&gt;The next step is to modify your query to return email that are not in this table. For Example:&lt;br /&gt;&lt;span name="code" class="sql"&gt;&lt;br /&gt;Select userid, email&lt;br /&gt;from users u&lt;br /&gt;where email not in (select email from &lt;i&gt;tracker&lt;/i&gt; where u.email = tracker.email and convert(varchar(10),date,112) = convert(varchar(10),getdate(),112))&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;(Please be careful while comparing dates and times in t-sql. If you are using small date time to compare two dates, equality is base on date and time both.)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I think using this trick will never send email to the same user again.&lt;br /&gt;Have fun with your development. &lt;br /&gt;&lt;div&gt; &lt;/div&gt; &lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-5874249993604447253?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/5874249993604447253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/09/writing-smart-dotnetnuke-schedulers.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5874249993604447253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5874249993604447253'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/09/writing-smart-dotnetnuke-schedulers.html' title='Writing smart DotNetNuke Schedulers that sends email'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-5352709541923516539</id><published>2009-09-10T09:17:00.000+05:30</published><updated>2009-09-10T09:26:07.137+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>DotNetNuke: Creating a new parent portal in localhost</title><content type='html'>As we all know, dotnetnuke provides a to build a multiportal environment using a single dotnetnuke installation and I was doing that exercise in order to get that running in localhost.&lt;br /&gt;&lt;br /&gt;So let's start building a new parent portal in local environment:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Login to host and go to Host &gt; Portals&lt;/li&gt;&lt;li&gt;Click Create New Portal&lt;/li&gt;&lt;li&gt;Enter portalName Parent1 and username parent1admin, and add all other required data.&lt;/li&gt;&lt;li&gt;go ahead an create new portal.&lt;/li&gt;&lt;/ol&gt;Creating a new portal in local environment will create a new portal Portal1. Now you need to do following after completing above 4 steps.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create a new virtual directory Parent1 and point it to dnn installation that you are using to create this portal&lt;/li&gt;&lt;li&gt;Go to Host &gt; Sql and execute this query :&lt;br /&gt;UPDATE PortalAlias&lt;br /&gt;Set HTTPAlias = 'localhost/Parent1'&lt;br /&gt;Where HTTPAlias='Parent1' or HTTPAlias='parent1'&lt;/li&gt;&lt;li&gt;Try accessing localhost/parent1&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;We are done with installing a new parent portal.&lt;br /&gt;Hope  you enjoyed this trick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-5352709541923516539?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/5352709541923516539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/09/dotnetnuke-creating-new-parent-portal.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5352709541923516539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5352709541923516539'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/09/dotnetnuke-creating-new-parent-portal.html' title='DotNetNuke: Creating a new parent portal in localhost'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-4370908041537110466</id><published>2009-09-09T08:29:00.001+05:30</published><updated>2009-09-10T09:09:05.783+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Skinning Tips'/><title type='text'>Extending Skin class in DotNetNuke</title><content type='html'>Are you developing a new skin in DotNetNuke and need additional properties in Skin class? Let's look into how skinning works.&lt;br /&gt;&lt;br /&gt;if you look at the top of the every skin, you will find following&lt;br /&gt;&lt;br /&gt;&lt;span name="code" class="xhtml"&gt;&lt;br /&gt;&amp;lt;%@ Control Language="vb" Codebehind="~/admin/Skins/skin.vb" AutoEventWireup="false"&lt;br /&gt;Explicit="True" &lt;span style="font-weight: bold;"&gt;Inherits="DotNetNuke.UI.Skins.Skin"&lt;/span&gt; %&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Please see the strong part of the above code. You will find that every skin that we develop in dnn is inherited from &lt;span style="font-style: italic;"&gt;DotNetNuke.UI.Skins.Skin&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Ok so now is the time to introduce a new property to the class. Just create a new class like following:&lt;br /&gt;&lt;br /&gt;&lt;span name="code" class="csharp"&gt;&lt;br /&gt;public class MySkinBase : DotNetNuke.uI.Skins.Skin&lt;br /&gt;{&lt;br /&gt;    private string _newOne;&lt;br /&gt;    public string NewOnw&lt;br /&gt;    {&lt;br /&gt;        get { return _newOne;}&lt;br /&gt;        set { _newOne = value; }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All you should do next is to use this class in place of DotNetNuke.UI.Skins.Skin in developing your skin like following.&lt;br /&gt;&lt;span name="code" class="xhtml"&gt;&lt;br /&gt;&amp;lt;%@ Control Language="vb" Codebehind="~/admin/Skins/skin.vb" AutoEventWireup="false"&lt;br /&gt;Explicit="True" &lt;span style="font-weight: bold;"&gt;Inherits="MySkinBase"&lt;/span&gt; %&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And you will now get a property NewOne into your skin object development. Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-4370908041537110466?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/4370908041537110466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/09/extending-skin-class-in-dotnetnuke.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4370908041537110466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4370908041537110466'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/09/extending-skin-class-in-dotnetnuke.html' title='Extending Skin class in DotNetNuke'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-8574674931623189838</id><published>2009-09-09T08:17:00.000+05:30</published><updated>2009-09-09T08:28:33.110+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>What about user Types?</title><content type='html'>Every time you start developing new solution using &lt;a href="http://www.dotnetnuke.com/"&gt;DotNetNuke&lt;/a&gt;, you probably have a question about user types. If you are creating a job site, you will probably have user types like job seeker, employer etc. Is there any way to set multiple registration and login pages for a portal?&lt;br /&gt;&lt;br /&gt;Well, This is tricky. As there is no direct way to multiple login page and registration page. So, I generally use query string parameter to determine the registration type. Once we know which is the right registration control to render (Employer signup or Job Seeker Signup), In addition to writing signup code, I add roles to the created user.&lt;br /&gt;&lt;br /&gt;Once you register an employee with Role "Employee" and a job seeker with role "Job Seeker" it will be easier to modify login control and place a role check for logged in user and you can correctly redirect the user to its home without having separate login pages.&lt;br /&gt;&lt;br /&gt;Does it make sense to you? Do you have another Idea? please tell me!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-8574674931623189838?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/8574674931623189838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/09/what-about-user-types.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8574674931623189838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8574674931623189838'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/09/what-about-user-types.html' title='What about user Types?'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-867816647213809711</id><published>2009-09-08T22:02:00.000+05:30</published><updated>2009-09-08T22:14:51.812+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>DotNetNuke - Access pages without tabId</title><content type='html'>I'm not sure which version of &lt;a href="http://www.DotNetNuke.com"&gt;DotNetNuke&lt;/a&gt; included this magic, but if you create a page with tab name Sample Page, then you can simply access that page with &lt;span style="font-style: italic;"&gt;portalAlias/SamplePage.aspx&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;When I see this thing first time, I was impressed, and tried some more tab names with this. Next is to create a child tab of Sample Page called Child Page and tried  and it doesn't work. I scratched my head for some time and tried &lt;span style="font-style: italic;"&gt;/SamplePage/ChildPage.aspx&lt;/span&gt; and it worked.&lt;br /&gt;&lt;br /&gt;I'm using dnn 5.x and it works nicely for almost all the pages.&lt;br /&gt;&lt;br /&gt;Then I tried some more magic tabs and I come to know that there are some pages in dnn that are always available to all the portals and child portals regardless of they are created or not. For example, If you type &lt;span style="font-style: italic;"&gt;portalAlias/login.aspx&lt;/span&gt; it will show a login window. If you try &lt;span style="font-style: italic;"&gt;portalAlias/LogOff.aspx&lt;/span&gt; it will immediately logoff you!&lt;br /&gt;&lt;br /&gt;It's nice to know this thing, because it will be useful when you are developing a new skin. If you forget to place login skin object and want to login or logoff, its easier to do that with this.&lt;br /&gt;&lt;br /&gt;I assume this is a magic from dnn friendly url provider. I've come to know about this just before some time and thought it may be helpful to you also!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-867816647213809711?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/867816647213809711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/09/dotnetnuke-access-pages-without-tabid.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/867816647213809711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/867816647213809711'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/09/dotnetnuke-access-pages-without-tabid.html' title='DotNetNuke - Access pages without tabId'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-1019136981136424768</id><published>2009-09-06T10:18:00.000+05:30</published><updated>2010-01-27T07:44:41.624+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>DotNetNuke path helper methods</title><content type='html'>1. ModulePath&lt;br /&gt;Useful in  – Module Development&lt;br /&gt;Member of  – PortalModuleBase Class&lt;br /&gt;&lt;br /&gt;Bad Practice:&lt;br /&gt;&amp;lt;asp:image id="img" runat="server" imageurl="/DesktopModules/ModuleName/Images/ImageName.gif"/&amp;gt;&lt;br /&gt;Or&lt;br /&gt;&amp;lt;img src="/DesktopModules/ModuleName/Images/ImageName.gif%E2%80%9D" alt="Alt" /&amp;gt;&lt;br /&gt;&lt;br /&gt;Good Practice:&lt;br /&gt;&amp;lt;asp:image id="img" runat="server" ImageUrl="&amp;lt;%= ModulePath %&amp;gt;Images/ImageName.gif"/&amp;gt;&lt;br /&gt;Or&lt;br /&gt;&amp;lt;img src="&amp;lt;%= ModulePath %&amp;gt;Images/ImageName.gif" alt="Alt Text"/&amp;gt;&lt;br /&gt;&lt;br /&gt;Please note:&lt;br /&gt;a. ModulePath will correctly resolve the path to module image regardless of in whatever the tab you are using.&lt;br /&gt;b. If module name is changed, it will still remain correct.&lt;br /&gt;c. This is also useful when you are linking  a javascript file or adding additional css reference.&lt;br /&gt;&lt;br /&gt;2. SkinPath&lt;br /&gt;Userfull in  – Skin Development&lt;br /&gt;Member of  – Skin Class&lt;br /&gt;&lt;br /&gt;Similar to ModulePath, SkinPath variable will help you resolve the path to your skin folder. You can use it in similar way as ModulePath.&lt;br /&gt;&lt;br /&gt;3. Getting SkinPath in Module Development&lt;br /&gt;Code:&lt;br /&gt;PortalSettings.ActiveTab.SkinSrc will return an full path to your ascx control in skin folder. You can simply use System.IO.Directory.GetParent().Name get folder name.&lt;br /&gt;&lt;br /&gt;4. Getting Domain name anywhere in your development cycle&lt;br /&gt;Code:&lt;br /&gt;DotNetNuke.Commons.Globals.GetDomainName(Request);&lt;br /&gt;&lt;br /&gt;There many in the list, but that's it for now. Happy coding:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-1019136981136424768?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/1019136981136424768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/09/dotnetnuke-path-helper-methods.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/1019136981136424768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/1019136981136424768'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/09/dotnetnuke-path-helper-methods.html' title='DotNetNuke path helper methods'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-8146368916847360058</id><published>2009-07-17T15:18:00.001+05:30</published><updated>2009-07-17T15:35:16.383+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Skinning Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke 5.0'/><title type='text'>Converting skin package of DotNetNnuke 4.x to DotNetNuke 5.x</title><content type='html'>&lt;ul&gt;&lt;li&gt;First step for converting the skin package is to &lt;a href="http://lakhlaniprashant.blogspot.com/2009/07/installing-dotetnuke-4x-skins-to.html"&gt;Install dotetnuke 4.x skins to dotnetnuke 5.x&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;Once you install the lagency skin package, now you need to go to &lt;span style="font-weight: bold; font-style: italic;"&gt;Admin &gt; Extensions&lt;/span&gt; if you have installed that Skin to Admin Extensions otherwise go to &lt;span style="font-weight: bold; font-style: italic;"&gt;Host &gt; Extensions&lt;/span&gt;&lt;/li&gt;&lt;li&gt;In the skins section, find the skin you want to create 5.x package and click on Edit icon at the starting of it&lt;/li&gt;&lt;li&gt;This will launch the skin information. Update version number, release notes, licence, owner, company, email etc and press &lt;span style="font-style: italic; font-weight: bold;"&gt;Update&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Now click on &lt;span style="font-style: italic; font-weight: bold;"&gt;Create Package&lt;/span&gt;&lt;/li&gt;&lt;li&gt;This will launch a create package wizard. As you already change the information about version number, licence and all that, just follow the wizard by clicking &lt;span style="font-weight: bold;"&gt;Next &lt;/span&gt;each time.&lt;/li&gt;&lt;li&gt;Once you finish this wizard, package is generated at ~/Insatall/Skins&lt;/li&gt;&lt;li&gt;That zip file package is a dotentnuke 5.x compitible package for your skin.&lt;/li&gt;&lt;li&gt;Follow the same steps for generating package for container also.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Notes:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You can use this method to package any extension of dnn 5.x (like skin object, module)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;This will generate separate packages for skin and container.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You can use this method to create update package of an existing skin&lt;/li&gt;&lt;li&gt;If I want to create a single package for installing skin and container, I have to manually merge the files and .dnn files.  Please suggest if someone knows about creating a single package for skin and conatainer using this method.&lt;/li&gt;&lt;li&gt;This is how I have converted Cash 2.0 skin package for 4.x to 5.x&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-8146368916847360058?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/8146368916847360058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/07/converting-skin-package-of-dotnetnnuke.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8146368916847360058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8146368916847360058'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/07/converting-skin-package-of-dotnetnnuke.html' title='Converting skin package of DotNetNnuke 4.x to DotNetNuke 5.x'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-583639676446608257</id><published>2009-07-17T15:11:00.001+05:30</published><updated>2009-08-17T20:04:23.589+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Skinning Tips'/><title type='text'>Installing dotetnuke 4.x skins to dotnetnuke 5.x</title><content type='html'>&lt;ul&gt;&lt;li&gt;If skin and container both are in single package, extract the zip files and rename Skins.zip to skinname.zip&lt;/li&gt;&lt;li&gt;Login to your host account in dnn 5.x installation&lt;/li&gt;&lt;li&gt;Go to Host &gt; Extensions if you want to install the skin at host level, otherwise go to Admin &gt; Extensions&lt;/li&gt;&lt;li&gt;Switch the mode to Edit if it is not already in Edit mode&lt;/li&gt;&lt;li&gt;Click on install extensions&lt;/li&gt;&lt;li&gt;In the Extension Installation wizard, select your skinname.zip file and click on next.&lt;/li&gt;&lt;li&gt;It will show you this message:&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);" class="NormalRed" id="dnn_ctr_Install_wizInstall_lblWarningMessage"&gt;This  package does not appear to be a valid DotNetNuke Extension as it does not have a  manifest. Old (legacy) Skins and Containers do not contain manifests. If this  package is a legacy Skin or Container Package please check the appropriate radio  button below, and click Next&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;It will show 3 Radio buttons, Choose Skin and click Next&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Follow the installation wizard by clicking 'Next' throughout the wizard.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Now to install container of the container of the skin, rename the skinname.zip back to Skins.zip and rename Containers.zip to skinname.zip.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Follow the same step as above accept for the radio button where you choose Skin, you just need to choose Container this time.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;That's it. We are done with the installation! Happy Administration!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Please read the &lt;strike&gt;following&lt;/strike&gt; &lt;a href="http://lakhlaniprashant.blogspot.com/2009/07/converting-skin-package-of-dotnetnnuke.html"&gt;this article&lt;/a&gt; about creating skin package for dotnetnuke 5.x from the skin package of the skin for dotnetnuke 4.x&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-583639676446608257?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/583639676446608257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/07/installing-dotetnuke-4x-skins-to.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/583639676446608257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/583639676446608257'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/07/installing-dotetnuke-4x-skins-to.html' title='Installing dotetnuke 4.x skins to dotnetnuke 5.x'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-328119477173141525</id><published>2009-07-17T15:04:00.000+05:30</published><updated>2009-07-17T15:36:15.463+05:30</updated><title type='text'>Cash - New package for dnn 5.x is available</title><content type='html'>&lt;a href="http://osdnnskins.codeplex.com"&gt;Free dotnetnuke skin Cash &lt;/a&gt;is updated and now it has a new installation package that supports dotnetnuke 5.x version also. Stay tuned to know how I converted dnn 4.x skin to dnn 5.x skin.&lt;br /&gt;&lt;br /&gt;Thanks&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-328119477173141525?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/328119477173141525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/07/cash-new-package-for-dnn-5x-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/328119477173141525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/328119477173141525'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/07/cash-new-package-for-dnn-5x-is.html' title='Cash - New package for dnn 5.x is available'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-5476252901972705823</id><published>2009-07-15T18:24:00.000+05:30</published><updated>2009-07-15T20:45:02.340+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Skinning Tips'/><title type='text'>DotNetNuke - Implementing Multi-color skins</title><content type='html'>&lt;div&gt;Introduction:&lt;br /&gt;Here I’m going to present an approach to create a DotNetNuke skin which has multiple colors using a single ascx skin control and multiple css files.&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Allow user to choose the color&lt;/li&gt;&lt;li&gt;When user selects the color, post an ajax request to server to store the setting in database and send response&lt;br /&gt;&lt;/li&gt;&lt;li&gt;read the response using javascript and change the css file.&lt;br /&gt;When user comes to the portal again, load right css from server side by reading database settings for the portal.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;implement authorization so that only admin and host of the portal can change skins &lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;strong&gt;Theory: &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;jQuery&lt;/strong&gt; – jQuery comes into the picture when our page is loaded in client browser and it is ready. We will use jQuery to post ajax request to server using some parameters that can tell server side code what to do. That ajax call will wait for response and it expects response code (true or false) and response data (new css url).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Skin Object&lt;/strong&gt; – The skin object will contain UI for changing the skin color as well as jQuery code that does the change in UI after interaction of the user. It handles the ajax request and update the database with the new skin file name.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Skin &lt;/strong&gt;– While rendering the skin, we have to look into the database to check if current portal has any skin related setting available or not. If its not, we will render the default color skin. If it contains the setting, we will read it and apply.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Htmls and css&lt;/strong&gt; - We will have a single ascx control called HomePage.ascx, with multiple css files blue.css and gray.css. Default is gray.css. Common attributes for the skin will be included in skin.css. common images are stored in images folder under skin root. Images for individual color css will be resided in a images/colorname/ folder. For instance, images for blue.css wll be in images/blue/ folder and same for gray. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Let’s Implement&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;Extend Skin &lt;/strong&gt;– Create a new class that inherits from DotNetNuke.UI.Skins.Skin. Add a property for saving cssName. In get section of the property write a code to load css name from database by passing PortalSettings.portalid.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Use new Property&lt;/strong&gt; – in ascx control where you have inherits section, change the DotNetNuke.UI.Skins.Skin to your class name. and add following after the register section at the top of the ascx control.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div name="code" class="xhtml"&gt;&lt;br /&gt;&amp;lt;link id="lnkMyCss" rel="stylesheet" href="&amp;lt;%=SkinPath+GridCss %&amp;gt;" type="text/css" media="screen, projection" /&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Note: Make sure you have all the ascx, css and images arranged like mensioned in Htmls and css section.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Skin Object&lt;/span&gt; – Create a new skin object and add following code to its ascx.&lt;br /&gt;&lt;div name="code" class="js"&gt;&lt;br /&gt;&amp;lt;a href="javascript:void(0);" onclick="changeTheme(this.color);" color="Gray"&amp;gt;Gray&amp;lt;/a&amp;gt; |&lt;br /&gt;&amp;lt;a href="javascript:void(0);" onclick="changeTheme(this.color);" color="Blue"&amp;gt;Blue&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;script language="javascript" type="text/javascript"&amp;gt;&lt;br /&gt;  &lt;br /&gt;   function changeTheme(color)&lt;br /&gt;   {&lt;br /&gt;       jQuery.post(document.location.href,{action:'changeSkin',colorcode:color},response);&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   function response(data)&lt;br /&gt;   {&lt;br /&gt;       jQuery('#lnkMyCss')[0].href=data;&lt;br /&gt;   }&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Add following code to Page_Init of the skin object.&lt;br /&gt;&lt;div name="code" class="csharp"&gt;&lt;br /&gt;protected void Page_Init(object sender, EventArgs e)&lt;br /&gt;       {&lt;br /&gt;           if (Request.Form["action"]!=null)&lt;br /&gt;           {&lt;br /&gt;               string action = Request.Form["action"].ToString();&lt;br /&gt;               string settingValue = string.Empty;&lt;br /&gt;               switch (action)&lt;br /&gt;               {&lt;br /&gt;                   case "changeSkin":&lt;br /&gt;                       if (Request.Form["colorcode"] != null)&lt;br /&gt;                       {&lt;br /&gt;                           string colorCode = Request.Form["colorcode"].ToString();&lt;br /&gt;                           settingValue = colorCode == "Blue" ? "blue.css" : "gray.css";&lt;br /&gt;                           BR.BRESS.Skins.DataProvider.Instance().setSettings(PortalSettings.PortalId, "CSS", settingValue);&lt;br /&gt;                           settingValue = PortalSettings.ActiveTab.SkinSrc.Replace("HomePage.ascx", settingValue);&lt;br /&gt;                       }&lt;br /&gt;                      &lt;br /&gt;                       break;&lt;br /&gt;                   default:&lt;br /&gt;                       break;&lt;br /&gt;               }&lt;br /&gt;               Response.Clear();&lt;br /&gt;               Response.Write(settingValue);&lt;br /&gt;               Response.End();&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Register Skin Object – Register this skin object in ascx control.&lt;br /&gt;&lt;div name="code" class="xhtml"&gt;&lt;br /&gt;&amp;lt;%@ Register TagPrefix="BRESS" TagName="SKINMANAGER" Src="~/DesktopModules/SkinManager/SkinManager.ascx" %&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Note: The Src should contain a correct path of your skin object.&lt;br /&gt;And wherever you like to add the UI you need to include this:&lt;br /&gt;&lt;div name="code" class="xhtml"&gt;&lt;br /&gt; BRESS:SKINMANAGER ID="sm" runat="server" /&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;:&lt;br /&gt;• This article is only for those who knows basics about skin development and skin object development&lt;br /&gt;• The methods and techniques used in this code are for demo purpose and can be  improved&lt;br /&gt;• It is a starting point to implement multi-skin multi-color functionality using DotNetNuke skinning technique.&lt;br /&gt;• Simple alternative to this approach is to create multiple ascx controls and apply css to each control separately.&lt;br /&gt;• Suggestions for enhancements and improvements are always welcome&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-5476252901972705823?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/5476252901972705823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/07/dotnetnuke-implementing-multi-color.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5476252901972705823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5476252901972705823'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/07/dotnetnuke-implementing-multi-color.html' title='DotNetNuke - Implementing Multi-color skins'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-8056683690695163071</id><published>2009-06-30T10:06:00.001+05:30</published><updated>2009-07-17T15:36:44.432+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Using ASP.NET Cookies in Javascript and visa-versa</title><content type='html'>Is any of you creating a module that requires setting cookies and getting it back using javascript? If you want to do so, then you can be in trouble like me! I was trying to set cookies from asp.net code and trying to read the cookie in javascript code, :) bad part of this experience was, I was not able to read the cookies set by asp.net side code.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I started googling the proble. I come across several fundamentals, theories and the way asp.net handles the cookies machanism. Finally &lt;a href="http://www.eggheadcafe.com/tutorials/aspnet/198ce250-59da-4388-89e5-fce33d725aa7/aspnet-cookies-faq.aspx"&gt;eggheadcafe&lt;/a&gt; has an answer to my problem. Though it was not a straigh forward answer, I got many hints there to solve my problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You must be thinking cookie is a vary simple fundamental thing and its nothing to learn about, but believe me, you will find this article informative.&lt;br /&gt;&lt;div&gt;     &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-8056683690695163071?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/8056683690695163071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/06/using-aspnet-cookies-in-javascript-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8056683690695163071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8056683690695163071'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/06/using-aspnet-cookies-in-javascript-and.html' title='Using ASP.NET Cookies in Javascript and visa-versa'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-3717721643398719319</id><published>2009-06-26T22:33:00.000+05:30</published><updated>2009-06-27T11:03:23.465+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>DotNetNuke - Alternative for using getTabByName or getTab</title><content type='html'>Hey.&lt;br /&gt;many time in &lt;a href="http://www.dotnetnuke.com/"&gt;dotnetnuke&lt;/a&gt; &lt;a href="http://www.dotnetnuke.com/Community/Blogs/tabid/825/EntryId/449/Super-Fast-and-Super-Easy-DotNetNuke-Module-Development-with-Version-4-3.aspx"&gt;module development&lt;/a&gt;, you need to redirect an existing request to another page. I see most of the users use &lt;a href="http://lakhlaniprashant.blogspot.com/2009/03/dnn-5-get-all-tabs.html"&gt;TabController.getTabByName&lt;/a&gt; method to get TabInfo object, And then use its TabId property to navigate to that page using &lt;a href="http://www.adefwebserver.com/DotNetNukeHELP/NavigateURL/"&gt;DotNetNuke.Common.Globals.NavigateUrl()&lt;/a&gt; method.&lt;br /&gt;&lt;br /&gt;Getting entire TabInfo object from database for only getting TabId doesn't seems correct in terms of performance. I see many developers who add intelligence to this by adding entire set of tabs for a portal in HashTable and uses TabId as key and TabName as value. We can add some static methods to get the TabId by name or get TabName by Id.&lt;br /&gt;&lt;br /&gt;This approach seems to be perfect, but it still needs memory, if we store it in &lt;a href="http://msdn.microsoft.com/en-us/library/ms178581.aspx"&gt;session state&lt;/a&gt;. We always have alternative to store the HashTable into &lt;a href="http://msdn.microsoft.com/en-us/library/ms972379.aspx"&gt;Cache &lt;/a&gt;also. That will be more proper way to store data. Adding more tricky work is to add &lt;a href="http://www.eggheadcafe.com/community/aspnet/7/85399/how-cache-gets-updated-us.aspx"&gt;SqlCacheDependency&lt;/a&gt; into that. So that when set of Tabs changes, it automatically loads the new set of Tabs.&lt;br /&gt;&lt;br /&gt;But this is way too intelligent technique. When you don't need the TabIds too many time in your development or you need to redirect to a specific Tab many times, you should use SiteUrl.config. Let's discuss when its useful.&lt;br /&gt;&lt;br /&gt;For example you have a module that shows a message about an offer's page in your site, and you are showing the module in many pages. Now when a user clicks on it, we are sure that we need to redirect user to TabId=100. But you cannot place it hard code, Because you are not sure if the page is having a same id on when it will be deployed.&lt;br /&gt;&lt;br /&gt;So the simple work around is to create an entry in the &lt;a href="http://www.ventrian.com/Resources/Blog/tabid/243/articleType/ArticleView/articleId/142/FriendlyUrlTip.aspx"&gt;siteUrl.Config&lt;/a&gt; file for that TabId. Let's say we create an entry which looks for Offers.aspx and redirect it to Default.aspx?tabid=100. And that's it. It will never go to database to find TabId of the offer.aspx. and the code will get rid of the TabInfo loading from database of maintaining the set of tabs in memory for faster access.&lt;br /&gt;&lt;br /&gt;I hope I understand the problem well and make you able to give a right trick. Tell me what you think about it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-3717721643398719319?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/3717721643398719319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/06/dotnetnuke-alternative-for-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/3717721643398719319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/3717721643398719319'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/06/dotnetnuke-alternative-for-using.html' title='DotNetNuke - Alternative for using getTabByName or getTab'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-2139059126175510939</id><published>2009-06-19T10:05:00.000+05:30</published><updated>2009-06-19T10:15:28.455+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>DotNetNuke skin objects</title><content type='html'>DotNetNuke skin objects are ascx control (generally found at ~/Admin/Skins folder) .  Skin objects are meant to be reusable UI elements that helps showing a single repeating elements of the page.&lt;br /&gt;&lt;br /&gt;For instance, If are running a portal of dotnetnuke and want to show up a latest announcement entry in all your parent and child portal users, you can create a skin object that shows that entry and place that skin object to the skin.This way you can simply integrate the display of the latest announcement for all users in smart way using skin objects.&lt;br /&gt;&lt;br /&gt;I worked on several skin objects. here is a quick list:&lt;br /&gt;&lt;br /&gt;skin object to display custom logo image selected by an individual portal admin. They can upload the image and the change reflects to the entire portal pages&lt;br /&gt;Vertical navigation which contains custom set of menu for advertising and control panel&lt;br /&gt;News and blog feed display&lt;br /&gt;And many more&lt;br /&gt;We can also show/hide the skin object dynamically. For instance, if you like to hide the skin object when there is no  announcement for last 2days, its easily possible to do in it.&lt;br /&gt;&lt;br /&gt;Skin object offers smart way to reuse your design components.&lt;br /&gt;There are existing skin objects available with dotnetnuke which provides you some interesting features that you can easily integrate and reuse. Skin objects like logo, user, login, breadcrumb, dnnmenu are almost useful in all the dnn sites. &lt;a href="http://www.eagleworx.net/DotNetNuke/tabid/493/EntryID/103/Default.aspx"&gt;Eagleworx&lt;/a&gt; shows a complete list of skin objects and the properties provided by them. You can download the latest skin object documentation from download section of &lt;a href="http://www.dotnetnuke.com"&gt;dotnetnuke&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-2139059126175510939?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/2139059126175510939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/06/dotnetnuke-skin-objects.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2139059126175510939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2139059126175510939'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/06/dotnetnuke-skin-objects.html' title='DotNetNuke skin objects'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-2541398665911499407</id><published>2009-06-13T16:34:00.000+05:30</published><updated>2009-06-13T18:00:23.565+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Skinning Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Free DNN Skin'/><title type='text'>Screenshots of the skins available on osdnnskins.codeplex.com</title><content type='html'>&lt;a href="http://osdnnskins.codeplex.com"&gt;osdnnskins.codeplex.com&lt;/a&gt; has following skins available for free&lt;br /&gt;&lt;br /&gt;&lt;a href="http://osdnnskins.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25514"&gt;Cash Skin&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh4.ggpht.com/_ymCJ0BMOmwE/SdxugrOhSiI/AAAAAAAAAxI/4J_Z2YpWHd4/s800/HomePage.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 800px; height: 577px;" src="http://lh4.ggpht.com/_ymCJ0BMOmwE/SdxugrOhSiI/AAAAAAAAAxI/4J_Z2YpWHd4/s800/HomePage.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://osdnnskins.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25515"&gt;Nature Skin&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh3.ggpht.com/_ymCJ0BMOmwE/SZGxWhgLblI/AAAAAAAAAvk/0KnKaz2aTWI/s800/Skin.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 791px; height: 635px;" src="http://lh3.ggpht.com/_ymCJ0BMOmwE/SZGxWhgLblI/AAAAAAAAAvk/0KnKaz2aTWI/s800/Skin.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://osdnnskins.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25516"&gt;Nutica Skin&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/_ymCJ0BMOmwE/SjORYQ3AeJI/AAAAAAAAAzQ/HMCZigHtJn0/s800/nutica.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 800px; height: 600px;" src="http://lh5.ggpht.com/_ymCJ0BMOmwE/SjORYQ3AeJI/AAAAAAAAAzQ/HMCZigHtJn0/s800/nutica.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://osdnnskins.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25518"&gt;BluePrint0.1&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.ggpht.com/_ymCJ0BMOmwE/ScOIQF0qcCI/AAAAAAAAAwc/i7VxmoMcQSk/s800/BluePrint.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 800px; height: 401px;" src="http://lh6.ggpht.com/_ymCJ0BMOmwE/ScOIQF0qcCI/AAAAAAAAAwc/i7VxmoMcQSk/s800/BluePrint.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-2541398665911499407?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/2541398665911499407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/06/cash-skin-screens-shots.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2541398665911499407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2541398665911499407'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/06/cash-skin-screens-shots.html' title='Screenshots of the skins available on osdnnskins.codeplex.com'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_ymCJ0BMOmwE/SdxugrOhSiI/AAAAAAAAAxI/4J_Z2YpWHd4/s72-c/HomePage.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-8177587320248433641</id><published>2009-05-30T09:34:00.000+05:30</published><updated>2009-05-30T09:42:39.469+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Easiest way to build connection string</title><content type='html'>Hey friends.&lt;br /&gt;        Most of the time, when a connection string is required, developers write it either manually, or use visual studio wizard from somewhere take make visual studio slower. So here is a quick fast way to do it. Let's build it more faster and easier way.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Right click on desktop and create a new text document, say cn.txt&lt;/li&gt;&lt;li&gt;Open that document and save it with .udl extension, cn.udl.&lt;/li&gt;&lt;li&gt;save and close the file&lt;/li&gt;&lt;li&gt;you will notice the file icon is now changed&lt;/li&gt;&lt;li&gt;double click the icon.&lt;/li&gt;&lt;li&gt;that will open a connection string dialog, same as you see in visual studio.&lt;/li&gt;&lt;li&gt;choose provider, enter other details acoording to your provider and just test connection and click on ok&lt;/li&gt;&lt;li&gt;right click that file, and open it in notepad. The file will contain connection string.&lt;/li&gt;&lt;li&gt;Copy the connection string and use it anywhere you want.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Happy coding :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-8177587320248433641?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/8177587320248433641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/easiest-way-to-build-connection-string.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8177587320248433641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8177587320248433641'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/easiest-way-to-build-connection-string.html' title='Easiest way to build connection string'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-8663571306129575233</id><published>2009-05-19T07:57:00.000+05:30</published><updated>2009-05-19T08:18:00.081+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSDNNSKINS'/><title type='text'>skin updated  - Nature 0.2 released</title><content type='html'>Nature skin updated&lt;br /&gt;&lt;ul&gt;&lt;li&gt;    Nature 0.2 released&lt;/li&gt;&lt;li&gt;Submenu is fixed now&lt;/li&gt;&lt;li&gt;Header links are no top right aligned&lt;/li&gt;&lt;li&gt;link colors are fixed&lt;/li&gt;&lt;li&gt;container fonts for Head and SubHead are fixed&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Enjoy the new version of this skin and tell me the issues with this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-8663571306129575233?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/8663571306129575233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/skin-updated-nature-02-released.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8663571306129575233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8663571306129575233'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/skin-updated-nature-02-released.html' title='skin updated  - Nature 0.2 released'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-4081298936021515500</id><published>2009-05-13T15:59:00.000+05:30</published><updated>2009-05-14T10:10:22.777+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JQUERY'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Skin Objects'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke 5.0'/><title type='text'>Using JQuery to dynamically change dnn menu</title><content type='html'>Dotnetnuke released a new dotnetnuke menu provider some time back, and also released dotnetnuke 5.0 with inbuilt support of JQuery. When I started learning about new things in dotnetnuke 5.0, I wonder how we can use JQuery and new menu provider feature to dynamically change the menu. This leads me to a very basic simple implementation which I will share with all of you here.&lt;br /&gt;&lt;object width="235" height="124"&gt; &lt;param name="movie" value="http://content.screencast.com/users/Lakhlani_Prashant/folders/Jing/media/fde7a6bb-ab66-4915-b721-4e6aceb8ffbc/jingswfplayer.swf"&gt;&lt;/param&gt; &lt;param name="quality" value="high"&gt;&lt;/param&gt; &lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;/param&gt; &lt;param name="flashVars" value="thumb=http://content.screencast.com/users/Lakhlani_Prashant/folders/Jing/media/fde7a6bb-ab66-4915-b721-4e6aceb8ffbc/FirstFrame.jpg&amp;containerwidth=235&amp;containerheight=124&amp;loaderstyle=jing&amp;content=http://content.screencast.com/users/Lakhlani_Prashant/folders/Jing/media/fde7a6bb-ab66-4915-b721-4e6aceb8ffbc/2009-05-14_1008.swf"&gt;&lt;/param&gt; &lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt; &lt;param name="scale" value="showall"&gt;&lt;/param&gt; &lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt; &lt;param name="base" value="http://content.screencast.com/users/Lakhlani_Prashant/folders/Jing/media/fde7a6bb-ab66-4915-b721-4e6aceb8ffbc/"&gt;&lt;/param&gt;  &lt;embed src="http://content.screencast.com/users/Lakhlani_Prashant/folders/Jing/media/fde7a6bb-ab66-4915-b721-4e6aceb8ffbc/jingswfplayer.swf" quality="high" bgcolor="#FFFFFF" width="235" height="124" type="application/x-shockwave-flash" allowScriptAccess="always" flashVars="thumb=http://content.screencast.com/users/Lakhlani_Prashant/folders/Jing/media/fde7a6bb-ab66-4915-b721-4e6aceb8ffbc/FirstFrame.jpg&amp;containerwidth=235&amp;containerheight=124&amp;loaderstyle=jing&amp;content=http://content.screencast.com/users/Lakhlani_Prashant/folders/Jing/media/fde7a6bb-ab66-4915-b721-4e6aceb8ffbc/2009-05-14_1008.swf" allowFullScreen="true" base="http://content.screencast.com/users/Lakhlani_Prashant/folders/Jing/media/fde7a6bb-ab66-4915-b721-4e6aceb8ffbc/" scale="showall"&gt;&lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;So let's start building the sample right away:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Right click on Admin/Skins folder and add a new web control(C#), let's name it SwitchMenu.ascx&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Go to code behind view and add this:&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;&lt;br /&gt;protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;        DotNetNuke.Framework.jQuery.RequestRegistration();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Go to design view and add following:&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&lt;br /&gt;&amp;lt;a href="javascript:void(0)" id="lnkNavy"&amp;gt;Navy&amp;lt;/a&amp;gt;  &amp;lt;a href="javascript:void(0)" id="lnkBlue" &amp;gt;Blue&amp;lt;/a&amp;gt;  &amp;lt;a href="javascript:void(0)" id="lnkOrange" &amp;gt;Orange&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;script language="javascript" type="text/javascript"&amp;gt;&lt;br /&gt; jQuery(document).ready(function() { &lt;br /&gt;    &lt;br /&gt;     jQuery('#lnkNavy').click(function(e) { &lt;br /&gt;        &lt;br /&gt;            if(jQuery('#dnn_dnnNAV_ctldnnNAV').hasClass('dnnBlueMenu'))&lt;br /&gt;            {&lt;br /&gt;                jQuery('#dnn_dnnNAV_ctldnnNAV').removeClass('dnnBlueMenu');&lt;br /&gt;                jQuery('#dnn_dnnNAV_ctldnnNAV').addClass('mainMenu');&lt;br /&gt;                jQuery('#menu').removeClass('menu_bg_blue');&lt;br /&gt;                jQuery('#menu').addClass('menu_bg_navy');               &lt;br /&gt;            }   &lt;br /&gt;            else if(jQuery('#dnn_dnnNAV_ctldnnNAV').hasClass('dnnOrangeMenu'))&lt;br /&gt;            {&lt;br /&gt;                jQuery('#dnn_dnnNAV_ctldnnNAV').removeClass('dnnOrangeMenu');&lt;br /&gt;                jQuery('#dnn_dnnNAV_ctldnnNAV').addClass('mainMenu');&lt;br /&gt;                jQuery('#menu').removeClass('menu_bg_orange');&lt;br /&gt;                jQuery('#menu').addClass('menu_bg_navy');             &lt;br /&gt;            }&lt;br /&gt;         });&lt;br /&gt;          jQuery('#lnkBlue').click(function(e) { &lt;br /&gt;           &lt;br /&gt;            if(jQuery('#dnn_dnnNAV_ctldnnNAV').hasClass('mainMenu'))&lt;br /&gt;            {&lt;br /&gt;                jQuery('#dnn_dnnNAV_ctldnnNAV').addClass('dnnBlueMenu');&lt;br /&gt;                jQuery('#dnn_dnnNAV_ctldnnNAV').removeClass('mainMenu');&lt;br /&gt;                jQuery('#menu').addClass('menu_bg_blue');&lt;br /&gt;                jQuery('#menu').removeClass('menu_bg_navy');               &lt;br /&gt;            }   &lt;br /&gt;            else if(jQuery('#dnn_dnnNAV_ctldnnNAV').hasClass('dnnOrangeMenu'))&lt;br /&gt;            {&lt;br /&gt;                jQuery('#dnn_dnnNAV_ctldnnNAV').addClass('dnnBlueMenu');&lt;br /&gt;                jQuery('#dnn_dnnNAV_ctldnnNAV').removeClass('dnnOrangeMenu');&lt;br /&gt;                jQuery('#menu').addClass('menu_bg_blue');&lt;br /&gt;                jQuery('#menu').removeClass('menu_bg_orange');               &lt;br /&gt;            }&lt;br /&gt;         });&lt;br /&gt;         jQuery('#lnkOrange').click(function(e) { &lt;br /&gt;           &lt;br /&gt;            if(jQuery('#dnn_dnnNAV_ctldnnNAV').hasClass('mainMenu'))&lt;br /&gt;            {&lt;br /&gt;                jQuery('#dnn_dnnNAV_ctldnnNAV').addClass('dnnOrangeMenu');&lt;br /&gt;                jQuery('#dnn_dnnNAV_ctldnnNAV').removeClass('mainMenu');&lt;br /&gt;                jQuery('#menu').addClass('menu_bg_orange');&lt;br /&gt;                jQuery('#menu').removeClass('menu_bg_navy');               &lt;br /&gt;            }   &lt;br /&gt;            else if(jQuery('#dnn_dnnNAV_ctldnnNAV').hasClass('dnnBlueMenu'))&lt;br /&gt;            {&lt;br /&gt;                jQuery('#dnn_dnnNAV_ctldnnNAV').addClass('dnnOrangeMenu');&lt;br /&gt;                jQuery('#dnn_dnnNAV_ctldnnNAV').removeClass('dnnBlueMenu');&lt;br /&gt;                jQuery('#menu').addClass('menu_bg_orange');&lt;br /&gt;                jQuery('#menu').removeClass('menu_bg_navy');               &lt;br /&gt;            }&lt;br /&gt;         });&lt;br /&gt;    });&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Go to your sample skin page and register the new skin object&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&lt;br /&gt;&amp;lt;%@ Register TagPrefix="PA" TagName="SWITCHMENU" Src="~/Portals/_default/Skins/Planet Aviator_0_1_0/SwitchMenu.ascx" %&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now, let's add DNN Navigation control to the skin. Add this:&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&lt;br /&gt;&amp;lt;dnn:NAV runat="server" ID="dnnNAV" ProviderName="DNNMenuNavigationProvider" IndicateChildren="false"&lt;br /&gt;            ControlOrientation="Horizontal" CSSControl="dnnBlueMenu"&amp;gt;&lt;br /&gt;        &amp;lt;/dnn:NAV&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Let's add css for all the dynamic menu now:&lt;br /&gt;&lt;pre class="css" name="code"&gt;&lt;br /&gt;.menu_bg_blue {background-color:Blue;}&lt;br /&gt;.menu_bg_navy {background-color:Navy;}&lt;br /&gt;.menu_bg_orange {background-color:orange;}&lt;br /&gt;/*----------------------------------------------------------------------*/&lt;br /&gt;/* menu container css */&lt;br /&gt;.dnnBlueMenu                       {font-family: Verdana, Arial, Helvetica, sans-serif; cursor: pointer; font-size: 13px}&lt;br /&gt;.dnnBlueMenu_bg                    {margin: 0 10px 0 10px; height: 40px;}&lt;br /&gt;.dnnBlueMenu_left                  {}&lt;br /&gt;.dnnBlueMenu_right                 {}&lt;br /&gt;&lt;br /&gt;/* root menu css */&lt;br /&gt;.dnnBlueMenu .root                 {text-align: center; line-height: 40px; padding: 12px 12px 12px 12px; color: White;background-color:Blue}&lt;br /&gt;&lt;br /&gt;/* general submenu css */&lt;br /&gt;.dnnBlueMenu .m                    {width: 160px; font-size: 11px; z-index: 1000; line-height: 2em;}&lt;br /&gt;.dnnBlueMenu .hov, .dnnBlueMenu .bc   {}&lt;br /&gt;.dnnBlueMenu .m .mi                {background-color: Blue;}&lt;br /&gt;.dnnBlueMenu .m .icn               {padding-left: 5px; width: 20px;}&lt;br /&gt;.dnnBlueMenu .m .mi *              {color: white; margin-right: 5px;}  /* change * to .txt with latest webcontrols */&lt;br /&gt;.dnnBlueMenu .m .sel, .dnnBlueMenu .m .bc {}&lt;br /&gt;.dnnBlueMenu .m .hov               {background-color:gray;}&lt;br /&gt;&lt;br /&gt;/* glossy rounded corners */&lt;br /&gt;.dnnBlueMenu .m .first             {height: 30px;}&lt;br /&gt;.dnnBlueMenu .m .first .icn        {}                 /*needed to hide TR/TD image tiling*/&lt;br /&gt;.dnnBlueMenu .m .first.hov         {height: 30px;}&lt;br /&gt;.dnnBlueMenu .m .first.hov .icn    {}   /*needed to hide TR/TD image tiling*/&lt;br /&gt;&lt;br /&gt;.dnnBlueMenu .m .first.last        {height: 32px;}&lt;br /&gt;.dnnBlueMenu .m .first.last .icn   {}    /*needed to hide TR/TD image tiling*/&lt;br /&gt;.dnnBlueMenu .m .first.last.hov    {height: 32px;}&lt;br /&gt;.dnnBlueMenu .m .first.last.hov .icn {} /*needed to hide TR/TD image tiling*/&lt;br /&gt;&lt;br /&gt;.dnnBlueMenu .m .last              {height: 26px;}&lt;br /&gt;.dnnBlueMenu .m .last .icn         {}    /*needed to hide TR/TD image tiling*/&lt;br /&gt;.dnnBlueMenu .m .last.hov          {height: 26px;}&lt;br /&gt;.dnnBlueMenu .m .last.hov .icn     {} /*needed to hide TR/TD image tiling*/&lt;br /&gt;&lt;br /&gt;.m .break .icn                  {font-size: 1px; height: 1px; } /*ensure that all menu breaks are only 1px high */&lt;br /&gt;/*----------------------------------------------------------------------*/&lt;br /&gt;/* menu container css */&lt;br /&gt;.dnnOrangeMenu                       {font-family: Verdana, Arial, Helvetica, sans-serif; cursor: pointer; font-size: 13px;}&lt;br /&gt;.dnnOrangeMenu_bg                    {margin: 0 10px 0 10px; height: 40px;}&lt;br /&gt;.dnnOrangeMenu_left                  {}&lt;br /&gt;.dnnOrangeMenu_right                 {}&lt;br /&gt;&lt;br /&gt;/* root menu css */&lt;br /&gt;.dnnOrangeMenu .root                 {text-align: center; line-height: 40px; padding: 12px 12px 12px 12px; color: Black;background-color:orange}&lt;br /&gt;&lt;br /&gt;/* general submenu css */&lt;br /&gt;.dnnOrangeMenu .m                    {width: 160px; font-size: 11px; z-index: 1000; line-height: 2em;}&lt;br /&gt;.dnnOrangeMenu .hov, .dnnBlueMenu .bc   {}&lt;br /&gt;.dnnOrangeMenu .m .mi                {color: Black;background-color:orange}&lt;br /&gt;.dnnOrangeMenu .m .icn               {padding-left: 5px; width: 20px;}&lt;br /&gt;.dnnOrangeMenu .m .mi *              {color: white; margin-right: 5px;}  /* change * to .txt with latest webcontrols */&lt;br /&gt;.dnnOrangeMenu .m .sel, .dnnBlueMenu .m .bc {}&lt;br /&gt;.dnnOrangeMenu .m .hov               {background-color:gray;}&lt;br /&gt;&lt;br /&gt;/* glossy rounded corners */&lt;br /&gt;.dnnOrangeMenu .m .first             {height: 30px;}&lt;br /&gt;.dnnOrangeMenu .m .first .icn        {}                 /*needed to hide TR/TD image tiling*/&lt;br /&gt;.dnnOrangeMenu .m .first.hov         {height: 30px;}&lt;br /&gt;.dnnOrangeMenu .m .first.hov .icn    {}   /*needed to hide TR/TD image tiling*/&lt;br /&gt;&lt;br /&gt;.dnnOrangeMenu .m .first.last        {height: 32px;}&lt;br /&gt;.dnnOrangeMenu .m .first.last .icn   {}    /*needed to hide TR/TD image tiling*/&lt;br /&gt;.dnnOrangeMenu .m .first.last.hov    {height: 32px;}&lt;br /&gt;.dnnOrangeMenu .m .first.last.hov .icn {} /*needed to hide TR/TD image tiling*/&lt;br /&gt;&lt;br /&gt;.dnnOrangeMenu .m .last              {height: 26px;}&lt;br /&gt;.dnnOrangeMenu .m .last .icn         {}    /*needed to hide TR/TD image tiling*/&lt;br /&gt;.dnnOrangeMenu .m .last.hov          {height: 26px;}&lt;br /&gt;.dnnOrangeMenu .m .last.hov .icn     {} /*needed to hide TR/TD image tiling*/&lt;br /&gt;&lt;br /&gt;.m .break .icn                  {font-size: 1px; height: 1px; } /*ensure that all menu breaks are only 1px high */&lt;br /&gt;/*----------------------------------------------------------------------*/&lt;br /&gt;/* menu container css */&lt;br /&gt;.mainMenu                       {font-family: Verdana, Arial, Helvetica, sans-serif; cursor: pointer; font-size: 13px}&lt;br /&gt;.mainMenu_bg                    {margin: 0 10px 0 10px; height: 40px;}&lt;br /&gt;.mainMenu_left                  {}&lt;br /&gt;.mainMenu_right                 {}&lt;br /&gt;&lt;br /&gt;/* root menu css */&lt;br /&gt;.mainMenu .root                 {text-align: center; line-height: 40px; padding: 12px 12px 12px 12px; color: White;background-color:Navy}&lt;br /&gt;&lt;br /&gt;/* general submenu css */&lt;br /&gt;.mainMenu .m                    {width: 160px; font-size: 11px; z-index: 1000; line-height: 2em;}&lt;br /&gt;.mainMenu .hov, .dnnBlueMenu .bc   {}&lt;br /&gt;.mainMenu .m .mi                {background-color: Navy;}&lt;br /&gt;.mainMenu .m .icn               {padding-left: 5px; width: 20px;}&lt;br /&gt;.mainMenu .m .mi *              {color: white; margin-right: 5px;}  /* change * to .txt with latest webcontrols */&lt;br /&gt;.mainMenu .m .sel, .dnnBlueMenu .m .bc {}&lt;br /&gt;.mainMenu .m .hov               {background-color:gray;}&lt;br /&gt;&lt;br /&gt;/* glossy rounded corners */&lt;br /&gt;.mainMenu .m .first             {height: 30px;}&lt;br /&gt;.mainMenu .m .first .icn        {}                 /*needed to hide TR/TD image tiling*/&lt;br /&gt;.mainMenu .m .first.hov         {height: 30px;}&lt;br /&gt;.mainMenu .m .first.hov .icn    {}   /*needed to hide TR/TD image tiling*/&lt;br /&gt;&lt;br /&gt;.mainMenu .m .first.last        {height: 32px;}&lt;br /&gt;.mainMenu .m .first.last .icn   {}    /*needed to hide TR/TD image tiling*/&lt;br /&gt;.mainMenu .m .first.last.hov    {height: 32px;}&lt;br /&gt;.mainMenu .m .first.last.hov .icn {} /*needed to hide TR/TD image tiling*/&lt;br /&gt;&lt;br /&gt;.mainMenu .m .last              {height: 26px;}&lt;br /&gt;.mainMenu .m .last .icn         {}    /*needed to hide TR/TD image tiling*/&lt;br /&gt;.mainMenu .m .last.hov          {height: 26px;}&lt;br /&gt;.mainMenu .m .last.hov .icn     {} /*needed to hide TR/TD image tiling*/&lt;br /&gt;&lt;br /&gt;.m .break .icn                  {font-size: 1px; height: 1px; } /*ensure that all menu breaks are only 1px high */&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Okie, that's it, now we are ready for the test. As simple as that...&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Further Improvements:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Add some personalization so that we can save this setting for all users seperately.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;As I'm new to both JQuery and Dotnetnuke 5.0, I would like to know what more we can improve here&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-4081298936021515500?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/4081298936021515500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/using-jquery-to-dynamically-change-dnn.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4081298936021515500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4081298936021515500'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/using-jquery-to-dynamically-change-dnn.html' title='Using JQuery to dynamically change dnn menu'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-3380053143453372226</id><published>2009-05-13T15:56:00.000+05:30</published><updated>2009-05-13T15:58:40.579+05:30</updated><title type='text'>Thanks freednnskins.com for posting about my skin CASH</title><content type='html'>Thank you &lt;a href="http://freednnskins.com/Home/tabid/152/articleType/ArticleView/articleId/16/Cash.aspx"&gt;freednnskins.com&lt;/a&gt;&lt;br /&gt;Thank you for appriciating the skin Cash and including it in your article about free dotnetnuke skins. Thanks very much.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-3380053143453372226?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/3380053143453372226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/thanks-freednnskinscom-for-posting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/3380053143453372226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/3380053143453372226'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/thanks-freednnskinscom-for-posting.html' title='Thanks freednnskins.com for posting about my skin CASH'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-4598517522222605462</id><published>2009-05-13T15:49:00.000+05:30</published><updated>2009-05-13T15:54:54.259+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Announcement'/><category scheme='http://www.blogger.com/atom/ns#' term='OSDNNSKINS'/><title type='text'>Who is using skins of OSDNNSKIN?</title><content type='html'>hey All,&lt;br /&gt;       Thanks for evaluating all the free skins. I'm not quite getting any response or feedback from any of the users. Please get back to me with some suggessions, feedbacks and bugs so that I can countinue working with skin. Tell me which are the sites you are using these skins.&lt;br /&gt;Also post suggessions about which xhtml template you like to see as free dotnetnuke skin?&lt;br /&gt;Thanks for the greate help again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-4598517522222605462?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/4598517522222605462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/who-is-using-skins-of-osdnnskin.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4598517522222605462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4598517522222605462'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/who-is-using-skins-of-osdnnskin.html' title='Who is using skins of OSDNNSKIN?'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-9213132307401754040</id><published>2009-05-12T17:37:00.000+05:30</published><updated>2009-05-12T17:58:38.812+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke 5.0'/><title type='text'>All new Dotnetnuke Navigation Provide</title><content type='html'>Hey&lt;br /&gt;Dotnetnuke navigation provider is also upgraded with many new releases of dotnetnuke. I come across some nice demo of all new features. Now you can create an entire menu css using a single attribut in dnnNav control with CSSControl attribute. There are some good tutorial video to learning this new feature at : &lt;a href="http://www.codeendeavors.com/"&gt;http://www.codeendeavors.com/&lt;/a&gt;. MimimalExtropy skin in download section of this website is very usefull for learning the new provider.&lt;br /&gt;Hope this also help you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-9213132307401754040?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/9213132307401754040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/all-new-dotnetnuke-navigation-provide.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/9213132307401754040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/9213132307401754040'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/all-new-dotnetnuke-navigation-provide.html' title='All new Dotnetnuke Navigation Provide'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-4646487274645737275</id><published>2009-05-12T17:14:00.000+05:30</published><updated>2009-05-12T17:35:42.883+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Skinning Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke 5.0'/><title type='text'>Dotnetnuke 5.0 skin packaging</title><content type='html'>Hey, Welcome back!&lt;br /&gt;         I'm learning Dotnetnuke 5.0 skinning, and I think I must share some of the beautiful things I like about dotnetnuke 5.0 skinning and packaging.&lt;br /&gt;         When I come to know that dotnetnuke 5.0 skinning introduces a new packaging for skin install and that includes xml file with .dnn extension. It contains license, release notes and version text. Another thing was, each file you want to include in package should have an entry in .dnn xml file. So that is really a boaring task. Creating &lt;skinfile&gt; node and adding &lt;path&gt; and &lt;name&gt; tags for each of the package file.&lt;br /&gt;       So I thought we can just write a console application that generates the .dnn file for us. And thinking about using &lt;em&gt;System.IO&lt;/em&gt; and &lt;em&gt;System.Xml&lt;/em&gt; namespaces of  .net framework to do so. But you know, I then come across a feature. If you login to host and go to Host &gt; Skin and if you are in edit mode, it will show you an option 'Create Skin package'. That will help you create a skin package for your existing skin.&lt;br /&gt;      So here is how I develop a new skin:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a folder for skin, copy version.txt, releasenotes.txt, license.txt and a single .ascx control  with &lt;div id="ContentPane" runat="Server"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Copy .dnn file from existing skin, and rename it by your skin name. &lt;/li&gt;&lt;li&gt;Remove all file entries in the skin section and add your 5 entries.&lt;/li&gt;&lt;li&gt;zip and install skin.&lt;/li&gt;&lt;li&gt;start  developing skin, add images and css.&lt;/li&gt;&lt;li&gt;use create package wizard to regenerate the dnn file again with all your files.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Hope this helps&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-4646487274645737275?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/4646487274645737275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/dotnetnuke-50-skin-packaging.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4646487274645737275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4646487274645737275'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/dotnetnuke-50-skin-packaging.html' title='Dotnetnuke 5.0 skin packaging'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-7488997942355487320</id><published>2009-05-12T17:07:00.000+05:30</published><updated>2009-05-12T17:14:01.165+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Recaptcha.Net'/><title type='text'>Recaptcha.net control in UpdatePanel</title><content type='html'>Hey,&lt;br /&gt;      If you are looking for good free advanced captcha tool, just use &lt;a href="http://www.recaptcha.net/"&gt;Recaptcha&lt;/a&gt;. Its a nice free to use pluging available as asp.net plugin dll. There are code plugins available for various programming languages, ajax and non-javascript environment. So i like it. I just find it from some place and started integrating it to my demo project.&lt;br /&gt;     Everything goest well with it, accept when I place the control between UpdatePanel control, it was causing problem. It was disapearing when the page postbacks. The work arround to fix this is to make the &lt;strong&gt;ChildrenAsTrigger=false. &lt;/strong&gt;This will fix the problem.&lt;br /&gt;     Have fun with this ready made feature and use it without worry in  your asp.net projects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-7488997942355487320?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/7488997942355487320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/recaptchanet-control-in-updatepanel.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7488997942355487320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7488997942355487320'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/recaptchanet-control-in-updatepanel.html' title='Recaptcha.net control in UpdatePanel'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-7582265517724501368</id><published>2009-05-12T17:06:00.001+05:30</published><updated>2009-05-12T17:07:46.731+05:30</updated><title type='text'>I'm back</title><content type='html'>Hey friends,&lt;br /&gt;        There is long time since we posting an entry to a blog, it was like a vacation mode for my blog. But don't worry, I'm back with more tips, tricks, free stuff and more, keep in touch.&lt;br /&gt;&lt;br /&gt;Thanks&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-7582265517724501368?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/7582265517724501368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/im-back.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7582265517724501368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7582265517724501368'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/05/im-back.html' title='I&apos;m back'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-2117809257984541323</id><published>2009-04-08T14:56:00.000+05:30</published><updated>2009-04-08T15:05:59.546+05:30</updated><title type='text'>New version of Cash released</title><content type='html'>Hey all,&lt;br /&gt;New version of skin Cash is released. Here is a quick update:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cash0.2 released&lt;/li&gt;&lt;li&gt;New containes (left, special, default, default-notitle)&lt;/li&gt;&lt;li&gt;fixed submenu styling issues&lt;/li&gt;&lt;li&gt;dotnetnuke logo is added&lt;/li&gt;&lt;li&gt;login, user and break crumb controls are moved above content pane&lt;/li&gt;&lt;li&gt;preview images are added&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Here is a screenshot:&lt;br /&gt;&lt;img src="http://www.fileqube.com/thumb/anqZhBDmt1404819" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-2117809257984541323?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/2117809257984541323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/04/new-version-of-cash-released.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2117809257984541323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2117809257984541323'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/04/new-version-of-cash-released.html' title='New version of Cash released'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-7052123440312790838</id><published>2009-04-03T13:05:00.000+05:30</published><updated>2009-04-03T13:10:44.374+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='modal popup'/><category scheme='http://www.blogger.com/atom/ns#' term='flesh'/><title type='text'>Modal popup and flash</title><content type='html'>Adding a modal popup in a document which is having a flash's object tag may make you in trouble. Because I was having a same kind of problem. To fix it just add another parameter to your object tag (and also to embed tag if any) &lt;span style="color:#6666cc;"&gt;wmode="opaque"&lt;/span&gt;. This will allow your popup to show above the flash file.&lt;br /&gt;For those who are using swfobject.js for displaying the flash swf file, just go to shource of the the js file and find &lt;em&gt;&lt;span style="color:#6666cc;"&gt;this.addParam("quality",q);&lt;/span&gt;&lt;/em&gt; line. Add another like before or after it,&lt;br /&gt;&lt;em&gt;&lt;span style="color:#6666cc;"&gt;this.addParam("wmode","opaque");&lt;/span&gt;&lt;/em&gt; This will fix your problem.&lt;br /&gt;Hope this will help to you also.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-7052123440312790838?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/7052123440312790838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/04/modal-popup-and-flash.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7052123440312790838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7052123440312790838'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/04/modal-popup-and-flash.html' title='Modal popup and flash'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-8331991268599505705</id><published>2009-04-01T11:05:00.000+05:30</published><updated>2009-04-01T11:09:20.429+05:30</updated><title type='text'>Keep it up</title><content type='html'>&lt;div&gt;I would like to thank all my visitors and will keep the good work going. March was a very good month as a technical blog for me. I would look forward for more and more technical source code, tutorials, articles etc. Please keep in touch and post your feedbacks.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Here is a quick statistics of the march month:&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5319593347826408738" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 129px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_ymCJ0BMOmwE/SdL99ya5XSI/AAAAAAAAAxA/5HBiR8GbU4c/s320/march.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-8331991268599505705?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/8331991268599505705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/keep-it-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8331991268599505705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8331991268599505705'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/keep-it-up.html' title='Keep it up'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ymCJ0BMOmwE/SdL99ya5XSI/AAAAAAAAAxA/5HBiR8GbU4c/s72-c/march.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-36820245011932775</id><published>2009-04-01T10:56:00.000+05:30</published><updated>2009-04-01T11:04:25.876+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Free DNN Skin'/><title type='text'>All my free skins are now opensource under New BSD License</title><content type='html'>I have just created an open source project on codeplex.com for &lt;a id="ctl00_ctl00_MasterContent_ProjectTitleControl1_ProjectTitleLink1" href="http://osdnnskins.codeplex.com/"&gt;Open Source DotNetNuke Skins&lt;/a&gt;. This is an open source initiative to provide good quality dotnetnuke skins for free. Downloads of all my free skins are available there under New BSD Licence. I would like to here from you guys which open source template you would like to get as dotnetnuke skin. I'm also looking for developers who can actively participate into it. Please visit project page for more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-36820245011932775?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/36820245011932775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/all-my-free-skins-are-now-opensource.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/36820245011932775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/36820245011932775'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/all-my-free-skins-are-now-opensource.html' title='All my free skins are now opensource under New BSD License'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-9152097200902445357</id><published>2009-03-25T14:17:00.000+05:30</published><updated>2009-03-25T14:19:12.333+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><title type='text'>DotNetNuke - sql to get if there are sub tabs to a tab</title><content type='html'>&lt;pre name="code" class="sql"&gt;&lt;br /&gt;SELECT  * FROM tabs&lt;br /&gt;where parentid=@TABID&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-9152097200902445357?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/9152097200902445357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/dotnetnuke-sql-to-get-if-there-are-sub.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/9152097200902445357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/9152097200902445357'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/dotnetnuke-sql-to-get-if-there-are-sub.html' title='DotNetNuke - sql to get if there are sub tabs to a tab'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-4915462464000828909</id><published>2009-03-25T14:06:00.000+05:30</published><updated>2009-03-25T14:10:15.807+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><title type='text'>DotNetNuke - Copy skin of tab to multiple pages using T-SQL</title><content type='html'>&lt;pre class="sql" name="code"&gt;&lt;br /&gt;UPDATE Tabs&lt;br /&gt;SET&lt;br /&gt;   SkinSrc = (SELECT SKINSRC FROM Tabs WHERE TabId=@TABID_TO_COPY_FROM)&lt;br /&gt;WHERE TABID = @DTABID_TO_UPDATE&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;From &lt;a href="http://forums.dotnetnuke.com/"&gt;DotNetNuke Forums&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-4915462464000828909?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/4915462464000828909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/dotnetnuke-copy-skin-of-tab-to-multiple.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4915462464000828909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4915462464000828909'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/dotnetnuke-copy-skin-of-tab-to-multiple.html' title='DotNetNuke - Copy skin of tab to multiple pages using T-SQL'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-5422887089264777490</id><published>2009-03-23T12:45:00.000+05:30</published><updated>2009-03-23T12:52:16.011+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><title type='text'>Getting the code you want from DotNetNuke</title><content type='html'>&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;br /&gt;DotNetNuke development is always an interesting for me. New developers come to the forums posting same silly questions again and again, and guys out there on the forums give them a gentle reply with some guidelines. This happens always everyday on DotNetNuke Forums. Sometimes i think is it really hard to find what we want from DotNetNuke source and DotNetNuke web app?&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Understanding the way DotNetNuke works:&lt;br /&gt;&lt;/strong&gt;I think developers should start learning DotNetNuke from the basic understanding about portals, tabs, modules, skins, skin objects etc. Don't start your development before understanding these terms. I am not going to introduce or summarize these terms as you will find many web logs regarding this. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Getting started with development:&lt;/strong&gt;&lt;br /&gt;Once you get basic understanding about this, you will be able to understand how DotNetNuke development will go for you. Once you are done with this, whenever you need to write a code that you don't have ask this questions to your self: Is DotNetNuke doing this? How DotNetNuke is doing this? For instance, if you are looking for code to dynamically create a tab in dotnenuke. you should ask, is DotNetNuke creating dynamic tabs? and the answer is obviously yes. Second question is how it is creating the tab? This is a hard question for new developer. Basically, all the DotNetNuke admin related stuff can be found in admin directory. If you look at ~/Admin/Tabs/ManageTabs.ascx, You will see the page that is used to create a new tab from DotNetNuke UI. Click on update link and you can easily find the code written in vb. You just need to find a part of code you basically want. You can also convert this code to c#.&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;How to search the code i want?&lt;br /&gt;&lt;/strong&gt;Well its really depends upon what code you want. But if you think like the way I demonstrated above, you will probably find the code you want after some trial and errors. The big help will be from the DotNetNuke UI and the way the directory structure is provided. Let's take another example of updating a user. So for finding that code, if you look at admin folder, you will find ~/Admin/Users where we think the code can be. Let's try that folder first. Opps! looking at the folder increases the problems, we have many controls in it unlike tabs folder. So let's try the controls one by one. Just open the ascx control on by one in design mode and see if you can find update button on it. Well the control ~/Users/User.ascx controls a floppy icon which is obviously a universal icon for save in DotNetNuke . so let's see what is written in the code of the click event of it. Well it contains a code to create a new user as well as update an existing user. Am I right? Ok, so this code says UserController.UpdateUser() is a method you can use to update the user. Just pass userportalid and userinfo object to it, and it will update the stuff. So if you want to implement a custom user profile update page, you just need to get the userInfo object from UserController.GetUserByName and assign the new values to the object properties and UserUser Method of the UserController class. An you are done.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Conclusion:&lt;br /&gt;&lt;/strong&gt;So basically DotNetNuke has all the code you want. You just need to guests where can i find the code and just go through the code and you will definately find the code you want. Accessing source code is more complecated than accessing web application because you don't have UIs to compare with, but once you got familiar with DotNetNuke , you will find your required code in the source code also. I think DotNetNuke documentation is also helpful finding the right code as well as if you understand the way DataProvider and SqlDataProvider implemented, it will be fun digging into the code.&lt;br /&gt;Best luck with your DotNetNuke code review and hope you will find the code you need from DotNetNuke .&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-5422887089264777490?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/5422887089264777490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/getting-code-you-want-from-dotnetnuke.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5422887089264777490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5422887089264777490'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/getting-code-you-want-from-dotnetnuke.html' title='Getting the code you want from DotNetNuke'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-688965819587431626</id><published>2009-03-20T17:24:00.000+05:30</published><updated>2009-03-23T10:50:47.482+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='BluePrint Css'/><category scheme='http://www.blogger.com/atom/ns#' term='Free Web designs'/><category scheme='http://www.blogger.com/atom/ns#' term='Free DNN Skin'/><title type='text'>Free DotNetNuke skin template of BluePrint CSS framework</title><content type='html'>There are lots and lots of css framework available across the world which means to solve the repetative css code writing problem for you. There are two remarkable frameworks that earn respect in the designing web 2.0 websites, &lt;a href="http://www.960.gs/"&gt;960 grid framework&lt;/a&gt; and &lt;a href="http://code.google.com/p/blueprintcss/"&gt;BluePrint css framework&lt;/a&gt;. There are some good articles for comparing the the two and lots of other one, and most of the discussions ends with &lt;a href="http://code.google.com/p/blueprintcss/"&gt;BluePrint css framwork&lt;/a&gt; is better than anyone else and after that &lt;a href="http://www.960.gs/"&gt;960 css framework&lt;/a&gt;. You can just &lt;a href="http://www.google.co.in/search?q=960+vs+blueprint+css&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a"&gt;click here&lt;/a&gt; for search results about comparing &lt;a href="http://code.google.com/p/blueprintcss/"&gt;BluePrint&lt;/a&gt; vs &lt;a href="http://www.960.gs/"&gt;960&lt;/a&gt; framwork. There are good css frameworks which can be found through google by the term &lt;a href="http://www.google.co.in/search?hl=en&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;hs=J7I&amp;amp;q=Css+Framework&amp;amp;btnG=Search&amp;amp;meta="&gt;Css Framework&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_ymCJ0BMOmwE/ScOIQF0qcCI/AAAAAAAAAwc/i7VxmoMcQSk/s1600-h/BluePrint.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5315241795249664034" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 161px" alt="" src="http://4.bp.blogspot.com/_ymCJ0BMOmwE/ScOIQF0qcCI/AAAAAAAAAwc/i7VxmoMcQSk/s320/BluePrint.JPG" border="0" /&gt;&lt;/a&gt;I found an implementation of &lt;a href="http://www.960.gs/"&gt;960 grid framework&lt;/a&gt; for dotnetnuke in &lt;a href="http://forums.dotnetnuke.com/"&gt;dotnetnuke forums&lt;/a&gt;. You can visit the site &lt;a href="http://www.dnngrid960.com/"&gt;here&lt;/a&gt;. Its always helpful to get this kind of efforts available online. Because of this implementation news, I started thinking about which is the css framework that really can help speed up the skin development in dotnetnuke. As &lt;a href="http://www.g60.gs/"&gt;960&lt;/a&gt; is a good option to go with, those who want to use 960 will get started with the implementation at &lt;a href="http://www.dnngrid960.com/"&gt;http://www.dnngrid960.com/&lt;/a&gt;. Those who think &lt;a href="http://www.dnngrid960.com/"&gt;BluePrint&lt;/a&gt; is a better option, I implemented a very basic skin. Here is how it looks like the one shown in the image. Here is a quick summary:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The template is of so basic lavel&lt;/li&gt;&lt;li&gt;There is a single container&lt;/li&gt;&lt;li&gt;Single skin file with html4 strict doctype validation.&lt;/li&gt;&lt;li&gt;No skin objects or dotnetnuke controls are added in it&lt;/li&gt;&lt;li&gt;Very light weight and simple template&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;You can &lt;a href="http://www.fileqube.com/shared/pfqzDII1387626"&gt;download&lt;/a&gt; the skin template from &lt;a href="http://www.fileqube.com/shared/pfqzDII1387626"&gt;here&lt;/a&gt;. The template will help you implementing your skin quickly. &lt;/p&gt;&lt;p&gt;You can find an &lt;a href="http://www.fileqube.com/shared/HuIyK1389704"&gt;example skin&lt;/a&gt; BluePrint0.1 implemented &lt;a href="http://www.fileqube.com/shared/HuIyK1389704"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The example skin implementation is a very basic level and same as the default dnn blue skin&lt;/li&gt;&lt;li&gt;Tried implementing the sking with just a grid.css and only core basic classes so that everyone can understand the dnn classes as well as blue print css classes easily&lt;/li&gt;&lt;li&gt;IE and Mozilla fonts are leaved intentionally different so that users can understand they can fix ie related css stuff in ie.css&lt;/li&gt;&lt;li&gt;No images, single basic container.&lt;/li&gt;&lt;li&gt;YSlow : 28.4k Stylesheet files(4 files), 0.05k image (BluePrint.png), 169.2k Javascript files, total 214.4k with 17 requests.&lt;/li&gt;&lt;/ul&gt;Hope this will help you understand the BluePrint css implementation as well as help speed up your dotnetnuke skin development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-688965819587431626?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/688965819587431626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/free-dotnetnuke-skin-template-of.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/688965819587431626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/688965819587431626'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/free-dotnetnuke-skin-template-of.html' title='Free DotNetNuke skin template of BluePrint CSS framework'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ymCJ0BMOmwE/ScOIQF0qcCI/AAAAAAAAAwc/i7VxmoMcQSk/s72-c/BluePrint.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-2370957623009352207</id><published>2009-03-05T16:25:00.000+05:30</published><updated>2009-03-13T15:13:03.961+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Free DNN Skin'/><title type='text'>Free DotNetNuke Skin - Nutica</title><content type='html'>&lt;p&gt;My third free &lt;a href="http://www.dotnetnuke.com/"&gt;dotnetnuke&lt;/a&gt; &lt;a href="http://lakhlaniprashant.blogspot.com/search/label/Free%20DNN%20Skin"&gt;skin&lt;/a&gt; converted from a &lt;a href="http://www.oswd.org/design/preview/id/3138"&gt;free xhtml template&lt;/a&gt;. Here is a quick description:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Different &lt;a href="http://blog.html.it/layoutgala/"&gt;layout&lt;/a&gt; support - supports one column, two column, three columns&lt;/li&gt;&lt;li&gt;Different containers - 4 containers, each for left, right and middle column and a middle column block quote container&lt;/li&gt;&lt;li&gt;Single package for skin and container, its working in dotnetnuke 4.5.5, but if its not working for you, extrack the file, and you will get different zips for skin and container, paste them to different folder and rename them with Nutica.zip&lt;/li&gt;&lt;li&gt;Again, the limitation with this is, menu and submenu are not formated properly and not looking too good. please tell me how can we improve this?&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.fileqube.com/hl/RahYRxIV1373276/Nutica.zip"&gt;Download the skin&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Please give your valueable feedbacks about the skin, so that i can improve the stuff. Providing feedback will help me understanding the skins conversion, that will help me write my tutorial about converting xhtml template to a dotnetnuke skin.&lt;/p&gt;&lt;p&gt;Note: Free skins are in this blog are distributed under creative common licence, you can use all skins for free, but please provide credit link to my blog. Thanks&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-2370957623009352207?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/2370957623009352207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/free-dotnetnuke-skin-nutica.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2370957623009352207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2370957623009352207'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/free-dotnetnuke-skin-nutica.html' title='Free DotNetNuke Skin - Nutica'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-1093248751656621280</id><published>2009-03-04T10:39:00.000+05:30</published><updated>2009-03-13T15:15:00.742+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><title type='text'>Adding javascript events to dropdownlist items</title><content type='html'>This code applies to all the controls which contains ListItem, Here is a code sample for DropDownList:&lt;br /&gt;XHTML Code&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&lt;br /&gt;&amp;lt;asp:DropDownList ID="DropDownList1" runat="server"&amp;gt;&lt;br /&gt; &amp;lt;asp:ListItem Value="1"&amp;gt;Item 1&amp;lt;/asp:ListItem&amp;gt;&lt;br /&gt; &amp;lt;asp:ListItem Value="2"&amp;gt;Item 2&amp;lt;/asp:ListItem&amp;gt;&lt;br /&gt;&amp;lt;/asp:DropDownList&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;C# code&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;&lt;br /&gt;foreach (ListItem item in DropDownList1.Items)&lt;br /&gt;{&lt;br /&gt;        item.Attributes.Add("onclick", "itemclick(this);");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Javascript code:&lt;br /&gt;&lt;pre class="javascript" name="code"&gt;&lt;br /&gt;function itemclick(obj)&lt;br /&gt;{&lt;br /&gt;            alert(obj.text);&lt;br /&gt;            alert(obj.value);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-1093248751656621280?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/1093248751656621280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/adding-javascript-events-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/1093248751656621280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/1093248751656621280'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/adding-javascript-events-to.html' title='Adding javascript events to dropdownlist items'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-8425782072963342943</id><published>2009-03-04T10:22:00.000+05:30</published><updated>2009-03-13T15:15:45.258+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke 5.0'/><title type='text'>DNN 5 - Get All tabs</title><content type='html'>&lt;pre class="csharp" name="code"&gt;&lt;br /&gt;TabController controller = new TabController();&lt;br /&gt;TabCollection tabs = controller.GetTabsByPortal(0);&lt;br /&gt;IDictionaryEnumerator hs = tabs.GetEnumerator();&lt;br /&gt;while (hs.MoveNext())&lt;br /&gt;{&lt;br /&gt;        TabInfo tab = (TabInfo)hs.Entry.Value;&lt;br /&gt;        Response.Write(tab.TabName + "&amp;lt;br/&amp;gt;");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-8425782072963342943?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/8425782072963342943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/dnn-5-get-all-tabs.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8425782072963342943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8425782072963342943'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/dnn-5-get-all-tabs.html' title='DNN 5 - Get All tabs'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-2326542871236149875</id><published>2009-03-03T14:32:00.000+05:30</published><updated>2009-03-13T15:16:30.403+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash 8'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetFlex'/><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript 2'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash Remoting'/><category scheme='http://www.blogger.com/atom/ns#' term='AMF.NET'/><title type='text'>Flash Remoting with ASP.NET</title><content type='html'>Before some time, I was involved with the project which requires a flash application to call asp.net application and gets data from there. There are obviously many ways for doing it. The way we implemented it was a bit tricky. We used &lt;a href="http://www.adobe.com/products/flashremoting/"&gt;Macromedia Flash Remoting MX&lt;/a&gt; which is a product by &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt;. &lt;a href="http://www.adobe.com/products/flashremoting/"&gt;Macromedia Flash Remoting MX&lt;/a&gt; allows a flash application to call an asp.net service (method) using remoting connection. According to the theories i've gone through on adobe, this way of calling a service of asp.net in place of using web services is more faster. The bad part of that experience was, none of the documentation samples were working directly and there are lots and lots of duplicate articles and links which discribes almost same code for sample. Finally, we manage to get through that and created a FACADE architecture at asp.net side which works like following:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Flash application will call gateway.aspx at the asp.net website with some parameters in the request and name of class which is remotely invoked&lt;/li&gt;&lt;li&gt;gateway.aspx will create an instance of the class described by the service parameter and passes all the request params to constructor as a collection&lt;/li&gt;&lt;li&gt;The FACADE class then reads the parameters and decides which method to call, and it calls that method from business logic layer and returns the output to flash application&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This story works nicely as a theory and practical for us, and I was satisfied with the way it was working. &lt;/p&gt;&lt;p&gt;There is almost a year passed after that, and today morning i came across an open source project &lt;a href="http://amfnet.openmymind.net/"&gt;AMF.NET &lt;/a&gt;which is an &lt;a href="http://www.opensource.org/"&gt;open source&lt;/a&gt; version of flash remoting. I was just reading the documentation and wondering if i can implement the thing again. I was surpriced that i get through this also. &lt;/p&gt;&lt;p&gt;Initially, i started implementing it and i was not quite getting it, then i came across an article on &lt;a href="http://codebetter.com/blogs/karlseguin/archive/2006/04/13/142770.aspx"&gt;http://codebetter.com/blogs/karlseguin/archive/2006/04/13/142770.aspx&lt;/a&gt; which has some links about the documentation. I didn't quite get some good documentation but a comment on the post also helped me. &lt;/p&gt;&lt;p&gt;You can &lt;a href="http://www.fileqube.com/hl/HElwN1371101/AMFNET.zip"&gt;download the code &lt;/a&gt;from &lt;a href="http://www.fileqube.com/hl/HElwN1371101/AMFNET.zip"&gt;here&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Using Sample code:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Extract zip file and open the project.&lt;/li&gt;&lt;li&gt;Add a blank Default.aspx page and run it. &lt;/li&gt;&lt;li&gt;the url looks like &lt;a href="http://localhost:3434/AMF/Default.aspx"&gt;http://localhost:3434/AMF/Default.aspx&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Now open the facade.fla in flash 8. Also open util.as&lt;/li&gt;&lt;li&gt;In Util.as, line 12, you will require a service url as a first parameter, replace the with gateway.aspx of your application url, for example, &lt;a href="http://localhost:3434/AMF/gateway.aspx"&gt;http://localhost:3434/AMF/gateway.aspx&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;gateway.aspx will be available in the dll in the bin directory.&lt;/li&gt;&lt;li&gt;That's it, run your AMF project and be in the debug mode, place breakpoint at getUser method of the User.cs in the app_code.&lt;/li&gt;&lt;li&gt;Run your flash application and enter username and password, and click on button. If everything goes well, you will be redirected to scene 2 and will see label over there.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;After some days of writing this article, I got a comment from a user who pointed me to yet another flash remoting open source library. This one is a simple to understand. You can find the library on &lt;a href="http://www.codeplex.com/"&gt;codeplex&lt;/a&gt; at &lt;a href="http://dotnetflex.codeplex.com/"&gt;http://dotnetflex.codeplex.com/&lt;/a&gt; the source code is available. This library gives some better implementation of flash remoting because its much more simpler to understand than AMF. I downloaded the library from the source code section of the site and try my hand on it. I got it working in almost an hour. So hopefully developers will simply get a quick start with this. The wiki on the site provides some implementation details from &lt;a href="http://www.asp.net/"&gt;asp.net &lt;/a&gt;side, but there is no source code sample for flash, I just tried same file as i used in the AMF.NET with some minor changes and its working nicely. Hope you all find it helpful. &lt;/p&gt;&lt;p&gt;You can download the file from &lt;a href="http://www.fileqube.com/hl/FVOueUC1377248/SampleWWW.zip"&gt;here&lt;/a&gt;. You can also find a link in DOWNLOAD section of this blog also. To test the code, follow the same step described in AMF.NET section. Sample Application description: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Flash application displays a Login page with username and password and a login button&lt;br /&gt;clicking on login will calls a method getUser(HashTable ht) of an asp.net application from flash side &lt;/li&gt;&lt;li&gt;after getting a successfull return value, it redirects to scene2 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Enhancements that can be applied at Flash Side: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;I don't even know how to create a password textbox in flash, and i want to display a username returned from asp.net in scene2. &lt;/li&gt;&lt;li&gt;I'm working on this but if anybody can help, it would be appriciated.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Please note that I don't know flash as well as action scripts, But I'm good at learning, and i have good experience on developing asp.net applications.&lt;/p&gt;&lt;p&gt;Thanks and happy coding. :)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-2326542871236149875?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/2326542871236149875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/flash-remoting-with-aspnet.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2326542871236149875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2326542871236149875'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/03/flash-remoting-with-aspnet.html' title='Flash Remoting with ASP.NET'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-5524174352582627434</id><published>2009-02-25T16:19:00.000+05:30</published><updated>2009-02-25T16:21:43.691+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='WebParts'/><title type='text'>How to use  DotNetNuke Module Control in WebParts</title><content type='html'>Some days ago i was working on an assignment and was wondering how we can use a DotNetNuke module control in Web Part control. I developed a dotnetnuke module's view type of control which shows top 10 guest book comments and its working properly in dotnetnuke. Now the questions is, how can I use the same control in webparts framework also?&lt;br /&gt;&lt;br /&gt;Well I've started some research and started with some basics. DotNetNuke module controls are inherited from DotNetNuke.Entities.Modules.PortalModuleBase. They can then import various DotNetNuke interfaces for plugable features like IActionable, IModuleListener, IModuleCommunicator etc. To use a control as a webpart control, it must inherit IWebPart interface and implement it. So I just do that:&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;&lt;br /&gt;#region IWebPart Members&lt;br /&gt;        private string _ImageUrl;&lt;br /&gt;        private string _title;&lt;br /&gt;        private string _description;&lt;br /&gt;        private string _subtitle;&lt;br /&gt;        private string _titleIconImageUrl;&lt;br /&gt;        private string _titleUrl;&lt;br /&gt;        public string CatalogIconImageUrl&lt;br /&gt;        {&lt;br /&gt;            get&lt;br /&gt;            {&lt;br /&gt;                return _ImageUrl;&lt;br /&gt;            }&lt;br /&gt;            set&lt;br /&gt;            {&lt;br /&gt;                _ImageUrl =  value;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public string Description&lt;br /&gt;        {&lt;br /&gt;            get&lt;br /&gt;            {&lt;br /&gt;                return _description;&lt;br /&gt;            }&lt;br /&gt;            set&lt;br /&gt;            {&lt;br /&gt;                _description = value;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public string Subtitle&lt;br /&gt;        {&lt;br /&gt;            get { return _subtitle; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public string Title&lt;br /&gt;        {&lt;br /&gt;            get&lt;br /&gt;            {&lt;br /&gt;                return _title;&lt;br /&gt;            }&lt;br /&gt;            set&lt;br /&gt;            {&lt;br /&gt;                _title = value;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public string TitleIconImageUrl&lt;br /&gt;        {&lt;br /&gt;            get&lt;br /&gt;            {&lt;br /&gt;                return _titleIconImageUrl;&lt;br /&gt;            }&lt;br /&gt;            set&lt;br /&gt;            {&lt;br /&gt;                _titleIconImageUrl = value;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public string TitleUrl&lt;br /&gt;        {&lt;br /&gt;            get&lt;br /&gt;            {&lt;br /&gt;                return _titleUrl;&lt;br /&gt;            }&lt;br /&gt;            set&lt;br /&gt;            {&lt;br /&gt;                _titleUrl = value;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        #endregion&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After that, I started using it on my webpart's page. I just register that control and use it under CatalogZone control's WebPartTemplate.&lt;br /&gt;&lt;br /&gt;My module is working well as well as my webpart control is also working cool. Anybody who want to do this can simply learn the basics for implementing webparts, and for that, just go through the walkthroughs of msdn for webparts and then try my trick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-5524174352582627434?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/5524174352582627434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/how-to-use-dotnenuke-module-control-in.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5524174352582627434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5524174352582627434'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/how-to-use-dotnenuke-module-control-in.html' title='How to use  DotNetNuke Module Control in WebParts'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-66789530973467011</id><published>2009-02-20T18:00:00.000+05:30</published><updated>2009-03-13T15:17:09.958+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><title type='text'>DotNetNuke - Clearing cache dynamically or programmaticaly</title><content type='html'>Perfomance is a key requirement for every application, and so does it is for &lt;a href="http://www.dotnetnuke.com/"&gt;DotNetNuke&lt;/a&gt; web applications also. DotNetnuke uses data caching as an inbuilt approach and provides a provider for cache also. It always adds good perfomance gain by setting the proper cache value and cache policy to you dotnetnuke web application. But there are times when you need to clear the cache of the application. If you are a host or admin and you want to manage it from the from end, you can go to :&lt;br /&gt;Host - Host Settings - Advance Settings - Perfomance Settings&lt;br /&gt;You can find a clear cache button there which will help you clearing cache. But there are times when this is not logical. For intance if you are allowing a user to choose a new skin from the list, when user clicks and applies a new skin, at that time you have to clear the cache manually, otherwise changes will not reflect properly.&lt;br /&gt;&lt;br /&gt;DotNetNuke.Common.Utilities.DataCache is a class which will help you clearing cache at various occations like I discussed above. In our scenerio, we have to clear portal cache and we can do that by calling&lt;br /&gt;DotNetNuke.Common.Utilities.DataCache.ClearPortalCache(PortalId, false);&lt;br /&gt;And its as simple as that. There are lots of other functions to clear cache starting from clear, like ClearModuleCache or ClearModulePermissionCache. You can use them as and when required.&lt;br /&gt;Hope that helps&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-66789530973467011?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/66789530973467011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/dotnetnuke-clearing-cache-dynamically.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/66789530973467011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/66789530973467011'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/dotnetnuke-clearing-cache-dynamically.html' title='DotNetNuke - Clearing cache dynamically or programmaticaly'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-5384885323856273895</id><published>2009-02-20T17:50:00.000+05:30</published><updated>2009-03-13T15:17:42.698+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL Code Snippets'/><title type='text'>DotNetNuke - Reset LoginTabId of a portal</title><content type='html'>Hey friends,&lt;br /&gt;lots of time in &lt;a href="http://www.dotnetnuke.com/"&gt;DotNetNuke&lt;/a&gt; development, we change the default LoginTabId from site settings for portal 0 and forget to add the login module in the newly added tab. That will cause you into the problem. You can reset it by executing the following t-sql script:&lt;br /&gt;&lt;pre class="sql" name="code"&gt;&lt;br /&gt;update Update {databaseOwner}{objectQualifier}Portals&lt;br /&gt;Set&lt;br /&gt;   LoginTabId=NULL&lt;br /&gt;Where PortalId=@portalid&lt;br /&gt;-- by default if its in portal 0 with no qualifier then you can execute&lt;br /&gt;--update Update dbo.Portals&lt;br /&gt;--Set&lt;br /&gt;--   LoginTabId=NULL&lt;br /&gt;--Where PortalId=0&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-5384885323856273895?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/5384885323856273895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/dotnetnuke-reset-logintabid-of-portal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5384885323856273895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5384885323856273895'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/dotnetnuke-reset-logintabid-of-portal.html' title='DotNetNuke - Reset LoginTabId of a portal'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-4217587215625216808</id><published>2009-02-20T17:35:00.000+05:30</published><updated>2009-03-13T15:18:20.128+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>JavaScript Validation: Alphanumeric and underscore only</title><content type='html'>&lt;pre class="javascript" name="code"&gt;&lt;br /&gt;//add this to textbox :onkeypress="validate(event);"&lt;br /&gt;// validates and don't allow typing characters other than a-z,A-Z, 0-9 and _&lt;br /&gt;function validatePortalName(e)&lt;br /&gt;{&lt;br /&gt;if(window.event) // IE&lt;br /&gt;keynum = e.keyCode;&lt;br /&gt;else if(e.which) // Netscape/Firefox/Opera&lt;br /&gt;keynum = e.which;&lt;br /&gt;return ((keynum &amp;gt;= 97 &amp;amp;&amp;amp; keynum &amp;lt;=122)(keynum &amp;gt;= 65 &amp;amp;&amp;amp; keynum &amp;lt;=90)(keynum&amp;gt;=48 &amp;amp;&amp;amp; keynum&amp;lt;=57) keynum==95);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note: code is tested in ie7 and mozilla firefox 3.0.6. Please test in the borwser you target before using it in production. regards&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-4217587215625216808?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/4217587215625216808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/javascript-validation-alphanumeric-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4217587215625216808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4217587215625216808'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/javascript-validation-alphanumeric-and.html' title='JavaScript Validation: Alphanumeric and underscore only'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-4365145056268410083</id><published>2009-02-19T16:44:00.000+05:30</published><updated>2009-03-13T15:19:11.440+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='JQUERY'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>converting JQuery samples into ASP.NET - Coda-Slider</title><content type='html'>&lt;a href="http://www.jquery.org/"&gt;JQuery&lt;/a&gt; is becoming popular now a days and there are lots and lots of new samples, plugings and small utilities are available across the web. Apart from the too many demos of &lt;a href="http://plugins.jquery.com/"&gt;plugins&lt;/a&gt; and &lt;a href="http://ui.jquery.com/"&gt;UI&lt;/a&gt;, people are building nice looking samples which can be a plugable add on to your website. When I was browsing through google for JQuery samples, I see &lt;a href="http://www.ndoherty.com/blog/category/coda-slider/"&gt;Coda-Slider&lt;/a&gt;, an HTML, CSS, JQuery sample that looks like a tab at first signt but when you change the tab, and actually it is, but it changes the slides stylishly.&lt;br /&gt;&lt;br /&gt;After getting that, what i was doing is, trying to create and xml for the slides and get it working on asp.net with c# backend. So downloaded the files and just started converting it. Here is what i've done.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I assumed i need to dislpay different product slides on the home page of the site, so I have created the xml and placed some dummy product data into it.&lt;/li&gt;&lt;li&gt;Used sample html, and pasted all the required js and css into root directory.&lt;/li&gt;&lt;li&gt;Added the requeired code in the aspx file and used repeater for the slides&lt;/li&gt;&lt;li&gt;And that's it, i got it working.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I just name it a product slider. There are lots of improvements that can be done on it, but before that I am trying to implement it in &lt;a href="http://dotnetnuke.com/"&gt;DotNetNuke&lt;/a&gt;. From this code, anyone can create a module called ProductSlider, and just adjust the paths of js and renaming the css with modules.css will work. &lt;/p&gt;&lt;p&gt;You can &lt;a href="http://www.ndoherty.com/blog/category/coda-slider/"&gt;download Coda-Slider&lt;/a&gt; from its website. You can aslo donwload asp.net version of it which i named &lt;a href="http://www.fileqube.com/hl/dsKiuyUJx1359029/ProductSlider.zip"&gt;Product Slider&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Please write back if you have troubles with implementation of dotnetnuke module. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-4365145056268410083?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/4365145056268410083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/converting-jquery-samples-into-aspnet.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4365145056268410083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4365145056268410083'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/converting-jquery-samples-into-aspnet.html' title='converting JQuery samples into ASP.NET - Coda-Slider'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-6715018050473360812</id><published>2009-02-10T22:21:00.000+05:30</published><updated>2009-03-13T15:19:48.272+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Free DNN Skin'/><title type='text'>Free DotNetNuke Skin : Nature</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ymCJ0BMOmwE/SZGxWhgLblI/AAAAAAAAAvk/0KnKaz2aTWI/s1600-h/Skin.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5301213236900359762" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; HEIGHT: 257px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_ymCJ0BMOmwE/SZGxWhgLblI/AAAAAAAAAvk/0KnKaz2aTWI/s320/Skin.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Free &lt;a href="http://www.oswd.org/"&gt;oswd.org&lt;/a&gt; template &lt;a href="http://www.oswd.org/design/preview/id/3614"&gt;Nature&lt;/a&gt; is converted into a &lt;a href="http://www.dotnetnuke.com/"&gt;dotnetnuke&lt;/a&gt; skin.&lt;br /&gt;Here is a quick summary of the skin:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://validator.w3.org/check/referer"&gt;Validate XHTML 1.0 Strict&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Only root level menu its are having styles&lt;/li&gt;&lt;li&gt;Dnn logo and search, login and username skin object styles can be improved by adding appropriate styles.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;You are free to download and use this skin under creative common licence. You can download the skin from &lt;a href="http://www.fileqube.com/shared/EYUxrfIMA1349143"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-6715018050473360812?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/6715018050473360812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/free-dotnetnuke-skin-nature.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6715018050473360812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6715018050473360812'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/free-dotnetnuke-skin-nature.html' title='Free DotNetNuke Skin : Nature'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ymCJ0BMOmwE/SZGxWhgLblI/AAAAAAAAAvk/0KnKaz2aTWI/s72-c/Skin.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-6830694905192139162</id><published>2009-02-06T10:17:00.000+05:30</published><updated>2009-03-13T15:20:33.210+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='modal popup'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Modalpopup in DotNetNuke</title><content type='html'>&lt;b stype="font-variant:small-caps;font-size:2em"&gt;Introduction&lt;/b&gt;&lt;br /&gt;Web application interfaces are becaming more and more advanced and we see modal dialogs in many popular websites. One of the best social bookmarking site &lt;a href="http://www.digg.com/"&gt;Digg&lt;/a&gt; uses modal popup for log In. As a developer, when you want to implement modal popups, you should know abcs of it. I've written an article about creating a &lt;a href="http://lakhlaniprashant.blogspot.com/2008/12/creating-modal-popup-in-html-4-using.html"&gt;simple modal popup in HTML4&lt;/a&gt; after learning some basics of html, css and javascript. After almost a month, I was looking at the search keywords and &lt;a href="http://forums.dotnetnuke.com/"&gt;dotnetnuke forums&lt;/a&gt;, and I have come to know that users want to implement modal popup in dotnetnuke also. So I just thought it would help to just guide those users.&lt;br /&gt;&lt;b stype="font-variant:small-caps;font-size:font-size:2em"&gt;Which Doctype are you using? &lt;/b&gt;&lt;br /&gt;Well If you are using dotnetnuke 4.x and want to implement modal popup, first thing you should check is, which doctype your sking is using. If you don't know that, its really simple to know that. Just run your application in browser, and from View &gt; View Source look at the very first line of browser source, it must be showing a doctype tag.&lt;br /&gt;&lt;b stype="font-variant:small-caps;font-size:font-size:2em"&gt;Implement in HTML4 &lt;/b&gt;&lt;br /&gt;Once you know the doctype tag, if you are using HTML4 doctype, then you can use my &lt;a href="http://lakhlaniprashant.blogspot.com/2008/12/creating-modal-popup-in-html-4-using.html"&gt;previous article&lt;/a&gt; which shows how you can create modal popup in HTML4. That article focus on javascript and css code to implement a simple modal popup dialog in your web application. You can change that modal background color and design your own popup design using that. The javascript code can be used as it is except you need to change the control ids according to your code if you are not using same ids as i have used in my html code give in that article.&lt;br /&gt;&lt;b stype="font-variant:small-caps;font-size:font-size:2em"&gt;Implement in XHTML &lt;/b&gt;&lt;br /&gt;If you are using XHTML strict or transitional doctype then you can &lt;a href="http://ajax.asp.net/"&gt;Ajax Control Toolkit&lt;/a&gt;'s &lt;a href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ModalPopup/ModalPopup.aspx"&gt;modal popup extender control&lt;/a&gt;. If you want to use ajax control toolkit controls in dotnetnuke, you have to learn how to do that, and &lt;a href="http://adefwebserver.com/DotNetNukeHELP/Misc/Dotnetnuke_AJAX_ControlToolkit.htm"&gt;this article&lt;/a&gt; can help you to quickly get familiar with that.&lt;br /&gt;&lt;b stype="font-variant:small-caps;font-size:font-size:2em"&gt;Implement using jQuery &lt;/b&gt;&lt;br /&gt;Another way to implement modal popup in dotnetnuke for XHTML doctype is to use &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;. You can easily get a modal popup plugin written in jQuery which you can use in dotnetnuke also. &lt;a href="http://www.google.com/search?hl=en&amp;amp;rls=com.microsoft%3Aen-us%3AIE-SearchBox&amp;amp;rlz=1I7RNWN&amp;amp;q=jquery%2Bmodal+popup"&gt;Here&lt;/a&gt; is an example to get it from google search.&lt;br /&gt;&lt;br /&gt;If you are having problems referencing jQuery js and other js files, you can use ModulePath and SkinPath variables, to help browsers find right path in dotnetnuke application. If you are adding jQuery at module level and you have placed the jquery js and plugin js in module's directory, then used prefix like following to make sure browser will get the js properly.&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&lt;br /&gt;&amp;lt;script src="&amp;lt;%=ModulePath%&amp;gt;jquery.js" type="text/javascript" /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and in same way if you using jquery at skin level then you can use SkinPath variable.&lt;br /&gt;&lt;br /&gt;Hope you enjoyed the summary about creating a modal popup in dotnetnuke. Please write me your feedback if you need code along with this.&lt;br /&gt;Happy coding :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-6830694905192139162?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/6830694905192139162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/modalpopup-in-dotnetnuke.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6830694905192139162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6830694905192139162'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/modalpopup-in-dotnetnuke.html' title='Modalpopup in DotNetNuke'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-55085548844368380</id><published>2009-02-05T11:09:00.000+05:30</published><updated>2009-03-13T15:21:05.551+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map API'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Google Map Asp.Net Control</title><content type='html'>Hey friends,&lt;br /&gt;&lt;a href="http://code.google.com/apis/maps/"&gt;Google's Map API&lt;/a&gt; is one of the well known apis for mapping. Integrating that api into an asp.net web applications is a challenging working and we were googling around the web for getting an asp.net control for google map api.&lt;br /&gt;&lt;br /&gt;First of all, we implemented javascript based apis for google maps. That was working nicely. The only problem we found that map is loading after all of the content of the page is loaded. The obvious reason behind that is, we are using javascript. So we thought we can improve the code by making a server side implementation of the code.&lt;br /&gt;&lt;br /&gt;There are lots and lots of results on the web and most of them are not usable for me, either they are not working or they are implemented in framework 3.5 and we need for framework 2.0.&lt;br /&gt;&lt;br /&gt;After juggling with downloading codes and testing them around, finally we got a working example. here is a link: &lt;a href="http://www.codeproject.com/KB/webforms/Google-Maps-User-Control.aspx"&gt;http://www.codeproject.com/KB/webforms/Google-Maps-User-Control.aspx&lt;/a&gt;. I hope this will help when you need to implement your code, and you will not have to go for google it again and again.&lt;br /&gt;Happy coding :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-55085548844368380?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/55085548844368380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/google-map-aspnet-control.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/55085548844368380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/55085548844368380'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/02/google-map-aspnet-control.html' title='Google Map Asp.Net Control'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-6145320141881788481</id><published>2009-01-27T18:25:00.000+05:30</published><updated>2009-03-13T15:21:35.482+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><title type='text'>Accessing ASP.Net Controls in JavaScript</title><content type='html'>Hey again,&lt;br /&gt;Many times in our developement, we need some code to clear a form, or setting all the drop down lists to its zeroth indexes, or something related to that. At that time, writing a server side code using ajax is not a good practice, and doing it right away without ajax is the worst idea to deal with the situation.&lt;br /&gt;Keeping that in mind, following code will help a lot, for example if we want to clear all the text boxes of the form we can write something like:&lt;br /&gt;&lt;br /&gt;&lt;pre class="javascript" name="code"&gt;&lt;br /&gt;var inputElements = document.getElementsByTagName("input");&lt;br /&gt;for (var count=0; count &amp;lt; inputElements.length; count++){&lt;br /&gt;    if(inputElements[count].type === "text"){&lt;br /&gt;       inputElements[count].value="";&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here is a list of input types that you can deal with like i have done in line 3 (inputElements[count].type)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;For TextBox we have text&lt;/li&gt;&lt;li&gt;For DropDownList or html select, we have select&lt;/li&gt;&lt;li&gt;For RadioButton or RadioButton list, we have radio&lt;/li&gt;&lt;li&gt;For CheckBox or Checkboxlist, we have checkbox&lt;/li&gt;&lt;li&gt;For File Input, we have file&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Note that all the types are in lower case. Regardless of they are asp.net controls or html controls, they will all became inputs at the clients end, so we can easily deal with them like above javascript. The only difference between them will be their ids. If any control is marked with runat=server attribute, its id will be generated by asp.net and that id can be accessible using control's ClientID property.&lt;/p&gt;&lt;p&gt;Hope this will help. Happy coding with js :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-6145320141881788481?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/6145320141881788481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/01/accessing-aspnet-controls-in-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6145320141881788481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6145320141881788481'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/01/accessing-aspnet-controls-in-javascript.html' title='Accessing ASP.Net Controls in JavaScript'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-6008124158444226730</id><published>2009-01-27T12:17:00.000+05:30</published><updated>2009-03-13T15:22:01.389+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='Free DNN Skin'/><title type='text'>Free DotNetNuke Skin : Cash</title><content type='html'>Hey friends,&lt;br /&gt;Here is a cool new &lt;a href="http://www.oswd.org/" target="_blank"&gt;oswd&lt;/a&gt; html template converted into DotNetNuke Skin. The original template can be &lt;a href="http://www.oswd.org/design/preview/id/3695" target="_blank"&gt;found here&lt;/a&gt;. I've just converted that cool template into DotNetNuke skin. Now its ready to use for all of you under Creative common licence, so you can use the skin for free but you have to place the credit links for hosting columbia and my blog as it is.&lt;br /&gt;Please note that this skin is part of my excersice of how to create a DotNetNuke skin from xhtml template. so its not ready for the production purpose.&lt;br /&gt;You can donwload the &lt;a href="http://www.fileqube.com/shared/IOShC1337897" target="_blank"&gt;skin here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is a quick summary:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;CSS and XHTML 1.0 Transitional Validation.&lt;/li&gt;&lt;li&gt;Tested in DNN 4.5.8 and works well.&lt;/li&gt;&lt;li&gt;Tested in IE6 and Mozilla 2,3 and works well.&lt;/li&gt;&lt;li&gt;submenus are not looking as per skins root level menu its, its still to be fixed&lt;/li&gt;&lt;li&gt;You can do whatever you want with this template, just keep the Hosting Colombia link at the bottom as well as my blog's link for credits. Enjoy! &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I'm preparing the tutorial for converting the template into a dnn skin and will publish soon, stay tuned...&lt;/p&gt;&lt;p&gt;Hope this will help...thanks&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-6008124158444226730?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/6008124158444226730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/01/free-dotnetnuke-skin-cash.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6008124158444226730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6008124158444226730'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/01/free-dotnetnuke-skin-cash.html' title='Free DotNetNuke Skin : Cash'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-4862442313706871626</id><published>2009-01-21T12:58:00.000+05:30</published><updated>2009-03-13T15:22:39.800+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><title type='text'>How to create a simple SEO Module in ASP.NET</title><content type='html'>Hey friends,&lt;br /&gt;In the development life, we often develop asp.net pages that shows various category listings and product listings. Creating a page somewhat like http://yourDomain.Com/Categories.aspx?cid=123. As we all know, this kinda urls are not &lt;a href="http://www.google.com/search?q=search+engine+friendly+urls&amp;amp;rls=com.microsoft:en-us:IE-SearchBox&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8&amp;amp;sourceid=ie7&amp;amp;rlz=1I7RNWN"&gt;search engine friendly urls&lt;/a&gt;. The simplest way to make these urls search engine friendly is to use &lt;a href="http://www.google.com/search?q=url+rewriting+in+C%23&amp;amp;rls=com.microsoft:en-us:IE-SearchBox&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8&amp;amp;sourceid=ie7&amp;amp;rlz=1I7RNWN"&gt;url rewrites&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There are lots and lots of url rewrites available across the web which converts above url to something like: http://yourDomain.com/cid/123/Categories.aspx or may be http://yourDomain.com/Categories123.htm. So that would make the url &lt;a href="http://www.google.com/search?q=search+engine+friendly+urls&amp;amp;rls=com.microsoft:en-us:IE-SearchBox&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8&amp;amp;sourceid=ie7&amp;amp;rlz=1I7RNWN"&gt;search engine friendly&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The next thing comes in SEO is to make proper entries for page's title, Description and keywords. We can set these things using meta tags. which looks something like&lt;br /&gt;&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;meta content="Description of the content in the page" name="description"/&amp;gt;&lt;br /&gt;&amp;lt;meta content="keywords related to the content" name="keywords"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So next thing comes is, how to make title, description and keywords different according to the querystring value of category in our above example. Well my approach to deal with this is:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Create an Xml file which stores category id, title, description and keywords. Here is a sample xml that looks like:&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;&lt;br /&gt;&amp;lt;category&amp;gt;&lt;br /&gt; &amp;lt;entry id="29" keywords="keywords for category 29" title="category name and some most relevant keywords" description="description about category"/&amp;gt;&lt;br /&gt; &amp;lt;entry id="31" keywords="keywords for category 31" title="category name and some most relevant keywords" description="description about category"/&amp;gt;&lt;br /&gt; &amp;lt;entry id="32" keywords="keywords for category 32" title="category name and some most relevant keywords" description="description about category"/&amp;gt;&lt;br /&gt;&amp;lt;/category&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Add asp.net literal control to header of the page. Please note that if you are using the master page, you should add this control to header tag of master page, otherwise you should add it to page's header. Another thing is, you should mark the header tag with runat=server to get this working&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&lt;br /&gt;&amp;lt;asp:literal runat="server" id="lMetaContainer"&amp;gt;&amp;lt;/asp:literal&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Read the xml in page load event and find the relative category in xml node. Here a c# code for that is having a literal control in master page. As i know its very easy to work with the normal page.&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;&lt;br /&gt;//using System.Xml;&lt;br /&gt;if (!IsPostBack)&lt;br /&gt;           {&lt;br /&gt;               if(Request.QueryString["cat"] !=null)&lt;br /&gt;               {&lt;br /&gt;                   string cat = Request.QueryString["cat"].ToString();&lt;br /&gt;                   XmlDocument xmlDoc = new XmlDocument();&lt;br /&gt;                   xmlDoc.Load(Server.MapPath("~/CategoryData.xml"));&lt;br /&gt;                   //Use appropriate path in Server.MapPath&lt;br /&gt;                   XmlElement currentCat = null;&lt;br /&gt;                   XmlElement root = xmlDoc.DocumentElement;&lt;br /&gt;                   // i know this can be optimized by using&lt;br /&gt;                   // root.SelectSingleNode method, :) try it yourself&lt;br /&gt;                   foreach (XmlElement ele in root.ChildNodes)&lt;br /&gt;                   {&lt;br /&gt;                       if (ele.Attributes["id"].Value == cat)&lt;br /&gt;                       {&lt;br /&gt;                           currentCat = ele;&lt;br /&gt;                           break;&lt;br /&gt;                       }&lt;br /&gt;                   }&lt;br /&gt;                   if (currentCat != null)&lt;br /&gt;                   {&lt;br /&gt;                       string catTitle = currentCat.Attributes["title"].Value.ToString();&lt;br /&gt;                       string catMetaDesc = currentCat.Attributes["description"].Value.ToString();&lt;br /&gt;                       string catMetaKeywords = currentCat.Attributes["keywords"].Value.ToString();&lt;br /&gt;&lt;br /&gt;                       this.Page.Title =  catTitle ;&lt;br /&gt;                       Literal lMeta = (Literal)this.Page.Header.FindControl("lMetaContainer");&lt;br /&gt;//tip:comment out above line if you are not using master page and replace lMeta with&lt;br /&gt;//your literal control"s id in the below code&lt;br /&gt;                       System.Text.StringBuilder meta = new System.Text.StringBuilder();&lt;br /&gt;                       meta.Append("&amp;lt;meta name=\"description\" content=\"" + catMetaDesc + "\" /&amp;gt;");&lt;br /&gt;                       meta.Append("&amp;lt;meta name=\"keywords\" content=\"" + catMetaKeywords + "\" /&amp;gt;");&lt;br /&gt;                       lMeta.Text = meta.ToString();&lt;br /&gt;                   }&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;Using xml in the module will make the implementation of the SEO separate. So the guy who writes SEO keywords, descriptions, and titles will get only xml to modify. If its not convinient to do so for an SEO guy, we can write a simple window base tool that will read and write the xml accordingly.&lt;br /&gt;&lt;br /&gt;Also, we can extend this for multiple items, or make savaral xmls for each listings as required. Tell me what you think about this module so that we can improve this...&lt;br /&gt;&lt;br /&gt;You can easily modify the code in whatever the way you want and implement the SEO friendly web pages in your website. Feel free to ask for more details or modifications.&lt;br /&gt;&lt;p&gt;Happy coding :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-4862442313706871626?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/4862442313706871626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/01/seo-how-to-create-simple-seo-module.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4862442313706871626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4862442313706871626'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/01/seo-how-to-create-simple-seo-module.html' title='How to create a simple SEO Module in ASP.NET'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-399395729214465947</id><published>2009-01-12T12:24:00.000+05:30</published><updated>2009-03-13T15:23:24.599+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='LightBox WebGallery Creator'/><title type='text'>How to create Web Gallery with LightBox WebGallery Generator in ASP.NET</title><content type='html'>Dear Friends,&lt;br /&gt;While i was looking for a javascript slide show options across the web, i come across the &lt;a href="http://pranas.net/WebGalleryCreator/"&gt;LightBox WebGallery Creator &lt;/a&gt;. This is a simple exe file that allows you to generate html slide show from your images. I was looking to implement the same gallery in my asp.net page. I was having images in some folder of my website and the file names are coming from database table. so i was looking how can i use the light box to show a gallery with slide show.&lt;br /&gt;The integration was quite simple as i required my own look and feel and i just have to get the slide show functionality working. so i copy pasted the supported files and added a simple attribute to my image tag &lt;span style="FONT-WEIGHT: bold"&gt;rel='lightbox[gallery]'&lt;span style="FONT-STYLE: italic"&gt;&lt;/span&gt;&lt;/span&gt; and it worked. :) I was expecting atleast 4-5 hours work and that makes me smile.&lt;br /&gt;&lt;br /&gt;Hope this would also help you make the slide show plugin easily.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-399395729214465947?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/399395729214465947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/01/how-to-create-web-gallery-with-lightbox.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/399395729214465947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/399395729214465947'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/01/how-to-create-web-gallery-with-lightbox.html' title='How to create Web Gallery with LightBox WebGallery Generator in ASP.NET'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-8130595816831132665</id><published>2009-01-12T10:23:00.000+05:30</published><updated>2009-03-13T15:23:58.651+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='LinkList'/><title type='text'>How to create link list with javascript</title><content type='html'>Dear Friends,&lt;br /&gt;I found data structures as one of the most interesting subjects in the academic i learned. Before some day i was learning object oriented features of javascript. I tried my hand on implementing a Link List algorithm in javascript and here is what i get.&lt;br /&gt;&lt;br /&gt;Let's start building a Link List using JavaScript:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Declaring The basic data structures&lt;br /&gt;&lt;br /&gt;&lt;pre class="javascript" name="code"&gt;&lt;br /&gt;function LinkListNode()&lt;br /&gt;{&lt;br /&gt;    this.Data = 0;&lt;br /&gt;    this.Next = null;&lt;br /&gt;}&lt;br /&gt;function List()&lt;br /&gt;{&lt;br /&gt;    var First = new LinkListNode();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Adding an Insert method&lt;br /&gt;&lt;br /&gt;&lt;pre class="javascript" name="code"&gt;&lt;br /&gt;List.prototype.addNode=function(_node)&lt;br /&gt;{&lt;br /&gt;    if(this.First == null)&lt;br /&gt;    {&lt;br /&gt;        this.First = _node;           &lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        var temp = this.First;&lt;br /&gt;        while(temp.Next != null)&lt;br /&gt;            temp=temp.Next;&lt;br /&gt;        temp.Next = _node;                       &lt;br /&gt;       &lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Adding Search Method&lt;br /&gt;&lt;br /&gt;&lt;pre class="javascript" name="code"&gt;&lt;br /&gt;List.prototype.search=function(intData)&lt;br /&gt;{&lt;br /&gt;    var temp = this.First;&lt;br /&gt;    var node = null;&lt;br /&gt;    while(temp !=null)&lt;br /&gt;    {&lt;br /&gt;        if(temp.Data == intData)&lt;br /&gt;        {&lt;br /&gt;            node= temp;&lt;br /&gt;            break;&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;            temp = temp.Next;&lt;br /&gt;    }&lt;br /&gt;    return node;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Adding Display Method&lt;br /&gt;&lt;br /&gt;&lt;pre class="javascript" name="code"&gt;&lt;br /&gt;List.prototype.show=function()&lt;br /&gt;{&lt;br /&gt;    var temp = this.First;&lt;br /&gt;    while(temp != null)&lt;br /&gt;    {&lt;br /&gt;        alert(temp.Data);&lt;br /&gt;        temp=temp.Next;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Adding Edit Method&lt;br /&gt;&lt;br /&gt;&lt;pre class="javascript" name="code"&gt;&lt;br /&gt;List.prototype.edit=function(oldValue,newValue)&lt;br /&gt;{&lt;br /&gt;    var node = this.search(oldValue);&lt;br /&gt;    if(node !=null)&lt;br /&gt;        node.Data =newValue;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Adding Delete Method&lt;br /&gt;&lt;br /&gt;&lt;pre class="javascript" name="code"&gt;&lt;br /&gt;List.prototype.remove=function(value)&lt;br /&gt;{&lt;br /&gt;    debugger;&lt;br /&gt;    //if first&lt;br /&gt;    if(this.First.Data == value)&lt;br /&gt;    {&lt;br /&gt;        this.First = this.First.Next&lt;br /&gt;        return value;&lt;br /&gt;    }&lt;br /&gt;    //else&lt;br /&gt;    var temp = this.First.Next;&lt;br /&gt;    var prev = this.First.Next;&lt;br /&gt;    while(temp!=null)&lt;br /&gt;    {&lt;br /&gt;        if(temp.Data == value)&lt;br /&gt;        {&lt;br /&gt;            if(prev.Data == temp.Data)&lt;br /&gt;                this.First.Next = temp.Next;&lt;br /&gt;            else&lt;br /&gt;                prev.Next=temp.Next;&lt;br /&gt;            return;&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            prev = temp;&lt;br /&gt;            temp = temp.Next;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Let's test the stuff&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="javascript" name="code"&gt;&lt;br /&gt;//create data structure object&lt;br /&gt;var _list=  new List();&lt;br /&gt;//add nodes&lt;br /&gt;var node = new LinkListNode();&lt;br /&gt;node.Data = 11;&lt;br /&gt;_list.addNode(node);&lt;br /&gt;&lt;br /&gt;node = new LinkListNode();&lt;br /&gt;node.Data = 33;&lt;br /&gt;_list.addNode(node);&lt;br /&gt;&lt;br /&gt;node = new LinkListNode();&lt;br /&gt;node.Data = 44;&lt;br /&gt;_list.addNode(node);&lt;br /&gt;&lt;br /&gt;node = new LinkListNode();&lt;br /&gt;node.Data = 22;&lt;br /&gt;_list.addNode(node);&lt;br /&gt;&lt;br /&gt;node = new LinkListNode();&lt;br /&gt;node.Data = 55;&lt;br /&gt;_list.addNode(node);&lt;br /&gt;&lt;br /&gt;_list.show();&lt;br /&gt;//test edit&lt;br /&gt;_list.edit(11,99);&lt;br /&gt;_list.show();&lt;br /&gt;//test remove&lt;br /&gt;_list.remove(22);&lt;br /&gt;_list.show();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-8130595816831132665?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/8130595816831132665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/01/creating-link-list-with-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8130595816831132665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8130595816831132665'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/01/creating-link-list-with-javascript.html' title='How to create link list with javascript'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-6534664067686857891</id><published>2009-01-05T15:00:00.000+05:30</published><updated>2009-03-13T15:24:27.498+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><title type='text'>DotNetNuke Code Snippet: Update user email</title><content type='html'>&lt;pre class="csharp" name="code"&gt;&lt;br /&gt;//update DNN User Email&lt;br /&gt;string oldEmail = UserInfo.Email;&lt;br /&gt;this.UserInfo.Email = txtEmail.Text;&lt;br /&gt;UserController.UpdateUser(PortalId,this.UserInfo);&lt;br /&gt;// Update User Email&lt;br /&gt;MembershipUser oUser = Membership.GetUser(UserInfo.Username);&lt;br /&gt;oUser.Email = txtEmail.Text;&lt;br /&gt;Membership.UpdateUser(oUser);&lt;br /&gt;&lt;br /&gt;//note: please assume you have a textbox with id txtEmail in your front end. you can&lt;br /&gt;//take a static string email in place of txtEmail.Text&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-6534664067686857891?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/6534664067686857891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/01/dotnetnuke-code-snippet-update-user.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6534664067686857891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6534664067686857891'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/01/dotnetnuke-code-snippet-update-user.html' title='DotNetNuke Code Snippet: Update user email'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-8448934399261951324</id><published>2009-01-05T14:40:00.000+05:30</published><updated>2009-03-13T15:24:54.043+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><title type='text'>DotNetNuke Code Snippet: Get All Portal Tabs</title><content type='html'>&lt;pre class="csharp" name="code"&gt;&lt;br /&gt;//add following using derectives to your code file&lt;br /&gt;//using DotNetNuke.Entities.Tabs;&lt;br /&gt;//using System.Collections.Generic;&lt;br /&gt;TabController tController = new TabController();&lt;br /&gt;Dictionary&amp;lt;int,TabInfo&amp;gt; tabs = tController.GetTabsByPortal(PortalId);&lt;br /&gt;while (hs.MoveNext())&lt;br /&gt;{&lt;br /&gt;    TabInfo tInfo = (TabInfo)hs.Value;&lt;br /&gt;    if (!tInfo.IsAdminTab &amp;amp;&amp;amp; tInfo.IsVisible)&lt;br /&gt;    {&lt;br /&gt;        //TODO process tab operation from here&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-8448934399261951324?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/8448934399261951324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/01/dotnetnuke-code-snippet-get-all-portal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8448934399261951324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8448934399261951324'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2009/01/dotnetnuke-code-snippet-get-all-portal.html' title='DotNetNuke Code Snippet: Get All Portal Tabs'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-3995014087615678112</id><published>2008-12-30T09:34:00.000+05:30</published><updated>2012-01-02T12:43:36.991+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='modal popup'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Creating modal popup in HTML 4 using CSS and Javascript</title><content type='html'>Hi all,&lt;br /&gt;Creating a modal popup for asp.net users is always easy, its simply a modal panel, modal popup extender of asp.net ajax and all is done. but creating the modal popup that way will not work properly when you are having a following doctype:&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and that's why we are looking into a simple method which uses javascript, and a tricky css to show the same kinda popup to work with the above doctype also.&lt;br /&gt;here is how we can do so.&lt;br /&gt;(1) add following css in your css or html document's style tag:&lt;br /&gt;&lt;pre class="css" name="code"&gt;.graydiv&lt;br /&gt;{&lt;br /&gt;position: absolute;&lt;br /&gt;background-color: #5B5B5B;&lt;br /&gt;left: 0px;&lt;br /&gt;top: 0px;&lt;br /&gt;z-index: 10000;&lt;br /&gt;display: none;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.ModalBackground&lt;br /&gt;{&lt;br /&gt;background-color: black;&lt;br /&gt;filter: alpha(opacity=70);&lt;br /&gt;opacity: 0.7;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;(2) add following html markup at the end of your html document:&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&amp;lt;div id="divg" class="ModalBackground graydiv"&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div id="divSignin" style="border: '1px soild green'; display: none; z-index: 100002;&lt;br /&gt;width: 550px; position: absolute;"&amp;gt;&lt;br /&gt;&amp;lt;div style="text-align:right;height:100px;width:100px;background-color:White;border:solid 1px lightyellow"&amp;gt;&lt;br /&gt;This is a popup;&lt;br /&gt;&amp;lt;input type="button" value="Close Me" onclick="closePopup();" /&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;(3) add following javascript in the script tag of your document or in your javascript file:&lt;br /&gt;&lt;pre class="js" name="code"&gt;function closePopup()&lt;br /&gt;{&lt;br /&gt;document.getElementById("divSignin").style.display="none";    &lt;br /&gt;objDiv = document.getElementById("divg");&lt;br /&gt;objDiv.style.display = "none"; &lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;function showPopup()&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;{  &lt;br /&gt;document.getElementById("divSignin").style.display="block";    &lt;br /&gt;objDiv = document.getElementById("divg");&lt;br /&gt;objDiv.style.display = "block"; &lt;br /&gt;objDiv.style.width = document.body.scrollWidth;&lt;br /&gt;objDiv.style.height= document.body.scrollHeight;         &lt;br /&gt;fnSetDivSigninLeft("divSignin");        &lt;br /&gt;}&lt;br /&gt;catch(e)&lt;br /&gt;{&lt;br /&gt;alert(e);&lt;br /&gt;}&lt;br /&gt;return false   &lt;br /&gt;}&lt;br /&gt;function fnSetDivSigninLeft(oElement)&lt;br /&gt;{&lt;br /&gt;var DivWidth = parseInt(document.getElementById(oElement).offsetWidth,10)&lt;br /&gt;var DivHeight = parseInt(document.getElementById(oElement).offsetHeight,10)&lt;br /&gt;document.getElementById(oElement).style.left = (document.body.offsetWidth / 2) - (DivWidth / 2)+200;&lt;br /&gt;document.getElementById(oElement).style.top = (document.body.offsetHeight / 2) -  ( DivHeight / 2);&lt;br /&gt;&lt;br /&gt;return false;     &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and that's it, your popup is ready, the last step is to call this popup in your control and call its &lt;span style="FONT-STYLE: italic"&gt;showPopup()&lt;/span&gt; event. here is a sample input button that calls the popup.&lt;br /&gt;&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&amp;lt;input type="button" value="Show Popup" onclick="showPopup();" /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Note:&lt;/span&gt; If you want to show multiple popups, you can extend this code.&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Note:&lt;/span&gt; You can use any color for modal background, for doing so, modify the change background color property of the ModalBackground class and try using the code.&lt;br /&gt;&lt;br /&gt;Another simple way to implement this thing is to use &lt;a href="http://webcloud.se/article/Building_modal_panels_with_jQuery"&gt;JQuery Plugin&lt;/a&gt; but i don't know if they work well with HTML 4 or not. This one is a simple nice and clean approach to deal with modal poups.&lt;br /&gt;&lt;br /&gt;happy coding :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-3995014087615678112?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/3995014087615678112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/creating-modal-popup-in-html-4-using.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/3995014087615678112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/3995014087615678112'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/creating-modal-popup-in-html-4-using.html' title='Creating modal popup in HTML 4 using CSS and Javascript'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-6019886927847180307</id><published>2008-12-29T10:02:00.000+05:30</published><updated>2009-03-13T15:26:19.523+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><title type='text'>Javascript : Accessing ASP.NET RadioButtonList or CheckBoxList in Javascript</title><content type='html'>here is a sample radio button list&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&lt;br /&gt;&amp;lt;asp:radiobuttonlist id="RadioButtonList1" runat="server"&amp;gt;&lt;br /&gt;           &amp;lt;asp:listitem value="1"&amp;gt;One&amp;lt;/asp:listitem&amp;gt;&lt;br /&gt;           &amp;lt;asp:listitem value="2"&amp;gt;Two&amp;lt;/asp:listitem&amp;gt;&lt;br /&gt;           &amp;lt;asp:listitem value="3"&amp;gt;Three&amp;lt;/asp:listitem&amp;gt;&lt;br /&gt;&amp;lt;/asp:radiobuttonlist&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;here is a sample script to check atleast one item should be checked&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;function validateRadio()&lt;br /&gt;{&lt;br /&gt;   var count = &amp;lt;%=RadioButtonList1.Items.Count %&amp;gt;;&lt;br /&gt;   var id = "&amp;lt;%=RadioButtonList1.ClientID%&amp;gt;";&lt;br /&gt;   var checked = false;&lt;br /&gt;   for(i=0;i&amp;lt;count;i++)&lt;br /&gt;   {&lt;br /&gt;      if(document.getElementById(id+"_"+i.toString()).checked==true)&lt;br /&gt;      {&lt;br /&gt;         checked = true;&lt;br /&gt;         break;&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;   return checked;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;RadioButtonList and CheckBoxList works exactly same way, so go ahead and use the same funtion for the CheckBoxList also, and you can create as many validations as you think of! happy coding :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-6019886927847180307?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/6019886927847180307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/javascript-accessing-aspnet.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6019886927847180307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6019886927847180307'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/javascript-accessing-aspnet.html' title='Javascript : Accessing ASP.NET RadioButtonList or CheckBoxList in Javascript'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-2436973930140791853</id><published>2008-12-29T09:54:00.000+05:30</published><updated>2009-03-13T15:26:59.908+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL Code Snippets'/><title type='text'>T-SQL : Updating Database Image Name</title><content type='html'>hey there again,&lt;br /&gt;I had a database table which stores an event image. I have a column called ImageName which stores image name. Now problem was, when i upload an image with new event, and then update something other than an event image, it was set back to null.&lt;br /&gt;&lt;br /&gt;That was because, the update query sent to the stored procedure was like that, so this can be solved in many ways, but the minimum change way is this one:&lt;br /&gt;&lt;pre class="sql" name="code"&gt;&lt;br /&gt;Update Events&lt;br /&gt;set&lt;br /&gt;     column1 = @column1Value,&lt;br /&gt;     column2 = @column2Value,&lt;br /&gt;     column3 = @column3Value,&lt;br /&gt;     ImageName = isnull(@imageName,imageName),&lt;br /&gt;[ where condition goes here]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Nice fix, I know generally people choose front end way to pass proper data, but this one is also nice one&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-2436973930140791853?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/2436973930140791853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/t-sql-updating-database-image-name.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2436973930140791853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2436973930140791853'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/t-sql-updating-database-image-name.html' title='T-SQL : Updating Database Image Name'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-4686821315422939306</id><published>2008-12-25T17:06:00.000+05:30</published><updated>2009-03-13T15:27:19.074+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke Resources'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><title type='text'>DotNetNuke Resources</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.adefwebserver.com/DotNetNukeHELP/Misc/ModuleNavigationOptions.htm"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Understanding DotNetNuke Navigation&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;a href="http://www.adefwebserver.com/DotNetNukeHELP/"&gt;DotNetNuke Help Articles&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;a href="http://www.codeplex.com/"&gt;CodePlex Website &lt;/a&gt;- here you can find useful sample DNN Modules&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;a href="http://bi4rce.com/"&gt;Bi4rce.com&lt;/a&gt; - Free DNN Skins and Modules&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;a href="http://dnncreative.com/"&gt;DNNCreative&lt;/a&gt; - Useful free and paid articles, tutorials, videos about DNN&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;a href="http://www.dotnetnuke.com/Resources/Documentation/BooksandTrainingVideos/tabid/810/Default.aspx"&gt;official DotNetNuke Videos &amp;amp; Documents&lt;/a&gt; - Requires login to &lt;a href="http://www.dotnetnuke.com/"&gt;DotNetNuke.com&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="FONT-WEIGHT: bold"&gt;DoNetNuke Articles: &lt;a href="http://www.dnngear.com/DotNetNuke-Articles.aspx"&gt;DNNGear&lt;/a&gt;,&lt;a href="http://www.codeproject.com/info/search.aspx?artkw=dotnetnuke"&gt;CodeProject&lt;/a&gt;,&lt;a href="http://www.ventrian.com/Resources/Articles/tabid/213/articleType/CategoryView/categoryId/9/DotNetNuke.aspx"&gt;Ventrian&lt;/a&gt;,&lt;a href="http://www.datasprings.com/Resources/ArticlesInformation/tabid/735/language/en-US/Default.aspx"&gt;DataSprings&lt;/a&gt;,&lt;a href="http://www.dnnskin.com/KnowledgeBase/tabid/501/Default.aspx"&gt;DNNSkin.Com&lt;/a&gt;,&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-4686821315422939306?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/4686821315422939306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/dotnetnuke-module-developemnt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4686821315422939306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/4686821315422939306'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/dotnetnuke-module-developemnt.html' title='DotNetNuke Resources'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-2280963933859877854</id><published>2008-12-24T15:47:00.000+05:30</published><updated>2009-03-13T15:27:42.793+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL Code Snippets'/><title type='text'>T-SQL : Display structure of a table</title><content type='html'>Hi all,&lt;br /&gt;Last night, when i was dealing with some server side error with my module of dotnetnuke and using the SQL page of the dotnetnuke, i was trying to access structure of an sql table, i search throug the web and here is what i get:&lt;br /&gt;1)using a select statement:&lt;br /&gt;&lt;pre class="sql" name="code"&gt;&lt;br /&gt;SELECT *&lt;br /&gt;FROM INFORMATION_SCHEMA.COLUMNS&lt;br /&gt;WHERE TABLE_CATALOG = 'Database name' AND&lt;br /&gt;TABLE_NAME = 'Table Name'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This will display a nice table formated output of the columns with all the data associated with it.&lt;br /&gt;2)Another way is:&lt;br /&gt;&lt;pre class="sql" name="code"&gt;&lt;br /&gt;exec sp_columns TableName&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-2280963933859877854?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/2280963933859877854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/t-sql-display-structure-of-table.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2280963933859877854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/2280963933859877854'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/t-sql-display-structure-of-table.html' title='T-SQL : Display structure of a table'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-7013748763878153739</id><published>2008-12-22T11:07:00.000+05:30</published><updated>2009-03-13T15:28:12.104+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><title type='text'>DotNetNuke : Getting Portal Alias By PortalID</title><content type='html'>&lt;pre class="csharp" name="code"&gt;&lt;br /&gt;// using DotNetNuke.Entities.Portals;&lt;br /&gt;// using System.Collections;&lt;br /&gt;PortalAliasController paController = new PortalAliasController();&lt;br /&gt;PortalAliasCollection paCollection = portalControler.GetPortalAliasByPortalID(PortalId);&lt;br /&gt;IDictionaryEnumerator hs = paCollection.GetEnumerator();&lt;br /&gt;hs.MoveNext();&lt;br /&gt;PortalAliasInfo paInfo = (PortalAliasInfo)hs.Entry.Value;&lt;br /&gt;string PortalAlias = paInfo.HTTPAlias;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In most of the cases when you are in Module developement, and coding in Module control, you will directly get the HTTPAlias from PortalSetting.PortalAlias.HTTPAlias.&lt;br /&gt;&lt;br /&gt;When you are coding in a DotNetNuke page, i.e. if you have inherited an aspx page from DotNetNuke.Framework.PageBase, at that time also you will get the same property as well.&lt;br /&gt;&lt;br /&gt;But when you are in a parent portal and you want to do redirects to child portals, at that time you can use this code.&lt;br /&gt;This code can be easily modified to get all the http alias of a portal.&lt;br /&gt;&lt;br /&gt;Wish you all happy coding with DotNetNuke :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-7013748763878153739?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/7013748763878153739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/dotnetnuke-getting-portal-alias-by.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7013748763878153739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7013748763878153739'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/dotnetnuke-getting-portal-alias-by.html' title='DotNetNuke : Getting Portal Alias By PortalID'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-3637297879560958148</id><published>2008-12-18T11:28:00.000+05:30</published><updated>2009-03-13T15:28:44.274+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><title type='text'>Creating a DotNetNuke User Dynamically</title><content type='html'>Hey friends,&lt;br /&gt;Working on DotNetNuke is really a great experience. I really love DotNetNuke. DotNetNuke is an aswer to great CMS solution for asp.net and there is no doubt about that. Recently, we decided to develop some modules which are really simple and don't required CMS facilities, so we decided to go for pur asp.net module in place of a dotnetnuke module.&lt;br /&gt;Because we were using dotnetnuke providers for storing users and registering them, we have two questions regarding the new modules:&lt;br /&gt;1) how to make existing dotnetnuke users use the module without new registration&lt;br /&gt;2) how to make new registrations in module that can make the user use whole site. (i.e. new module's users can use all the site)&lt;br /&gt;&lt;br /&gt;Well after some juggling, I got both the things working. To implement this, we implemented login and registration pages which uses dotnetnuke's apis for login and creating a new user respectively.&lt;br /&gt;&lt;br /&gt;here are some code snippets which you can use to create a new DotNetNuke User:&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;&lt;br /&gt;DotNetNuke.Entities.Users.UserInfo uInfo = new UserInfo();&lt;br /&gt;uInfo.Username = txtEmail.Text.ToString();&lt;br /&gt;uInfo.Membership.Password = txtPassWord.Text.ToString();&lt;br /&gt;uInfo.PortalID = 0;&lt;br /&gt;uInfo.Email = txtEmail.Text.ToString();&lt;br /&gt;DotNetNuke.Security.Membership.UserCreateStatus status = DotNetNuke.Entities.Users.UserController.CreateUser(ref uInfo);&lt;br /&gt;if (status == DotNetNuke.Security.Membership.UserCreateStatus.Success)&lt;br /&gt;{&lt;br /&gt;     //TODO User Created Successfully&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;   //TODO Error Creating user s&lt;br /&gt;   lblError.Text = status.ToString();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-3637297879560958148?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/3637297879560958148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/using-dotnetnuke-users-in-non.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/3637297879560958148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/3637297879560958148'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/using-dotnetnuke-users-in-non.html' title='Creating a DotNetNuke User Dynamically'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-8725551422583380756</id><published>2008-12-17T12:29:00.000+05:30</published><updated>2009-03-13T15:29:19.599+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>ASP.NET Radio Button List Styling problem with IE 6</title><content type='html'>Hey friends.&lt;br /&gt;Another strange problem. I'm having an ASP.NET control RadioButtonList on my page which is having some background color other than white. now when i see the page in firefox it was looking proper. but when i see the same in IE 6 its was not looking proper. see this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ymCJ0BMOmwE/SUil0IT4y1I/AAAAAAAAAuE/B5lyY7Mi-AE/s1600-h/2008-12-17_1239.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5280652878094584658" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 308px; CURSOR: pointer; HEIGHT: 76px" alt="" src="http://3.bp.blogspot.com/_ymCJ0BMOmwE/SUil0IT4y1I/AAAAAAAAAuE/B5lyY7Mi-AE/s320/2008-12-17_1239.png" border="0" /&gt;&lt;/a&gt;So as you can see the output, i was not not happy at all and wondering why my page is displayed like that in IE.&lt;br /&gt;So I started analyzing it by IEDeveloper tool bar plugin.&lt;br /&gt;&lt;br /&gt;here is my markup of the drop down:&lt;br /&gt;&lt;pre class="xhtml" name="code"&gt;&lt;br /&gt;&amp;lt;asp:RadioButtonList ID="rdoSize" runat="server" CellPadding="3" class="rdo" RepeatDirection="Horizontal"&amp;gt;&lt;br /&gt;&amp;lt;asp:ListItem Value="1" Selected="True"&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span class='rdoItem'&amp;gt;12"x18"&amp;lt;br/&amp;gt;Rs. 349&amp;lt;/span&amp;gt;&amp;lt;/asp:ListItem&amp;gt;&lt;br /&gt;&amp;lt;asp:ListItem Value="2"&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span class='rdoItem'&amp;gt;16"x20"&amp;lt;br/&amp;gt;Rs. 449&amp;lt;/span&amp;gt;&amp;lt;/asp:ListItem&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;asp:ListItem Value="3"&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span class='rdoItem'&amp;gt;20"x24"&amp;lt;br/&amp;gt;Rs. 549&amp;lt;/span&amp;gt;&amp;lt;/asp:ListItem&amp;gt;&lt;br /&gt;&amp;lt;asp:ListItem Value="4"&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span class='rdoItem'&amp;gt;20"x30"&amp;lt;br/&amp;gt;Rs. 649&amp;lt;/span&amp;gt;&amp;lt;/asp:ListItem&amp;gt;&lt;br /&gt;&amp;lt;/asp:RadioButtonList&amp;gt;&lt;/pre&gt;&lt;br /&gt;so I just added this to my css and its fixed now and looking proper in both browsers.&lt;br /&gt;&lt;pre class="css" name="code"&gt;&lt;br /&gt;table.rdo td /*this is only for good formating */&lt;br /&gt;{&lt;br /&gt; vertical-align:top;&lt;br /&gt; text-align:center;&lt;br /&gt; width:50px;&lt;br /&gt; background-color:Transparent;&lt;br /&gt;}&lt;br /&gt;table.rdo td input /*this has resolved the actual problem*/&lt;br /&gt;{&lt;br /&gt;background-color:Transparent;&lt;br /&gt;border:none;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and here is what I get:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ymCJ0BMOmwE/SUio_urj6AI/AAAAAAAAAuM/0aMUYthyMaM/s1600-h/2008-12-17_1240.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5280656375907870722" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 261px; CURSOR: pointer; HEIGHT: 55px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_ymCJ0BMOmwE/SUio_urj6AI/AAAAAAAAAuM/0aMUYthyMaM/s320/2008-12-17_1240.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Hope this will help you all as well.&lt;br /&gt;wish you all happy coding :)&lt;br /&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-8725551422583380756?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/8725551422583380756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/aspnet-radio-button-list-styling.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8725551422583380756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/8725551422583380756'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/aspnet-radio-button-list-styling.html' title='ASP.NET Radio Button List Styling problem with IE 6'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ymCJ0BMOmwE/SUil0IT4y1I/AAAAAAAAAuE/B5lyY7Mi-AE/s72-c/2008-12-17_1239.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-6199067086457057695</id><published>2008-12-17T11:38:00.000+05:30</published><updated>2009-03-13T15:30:02.563+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='WebParts'/><title type='text'>Using DotNetNuke Module Control in WebParts</title><content type='html'>Some days ago i was working on an assignment and was wondering how we can use a DotNetNuke module control in Web Part control. I developed a dotnetnuke module's view type of control which shows top 10 guest book comments and its working properly in dotnetnuke. Now the questions is, how can I use the same control in webparts framework also?&lt;br /&gt;&lt;br /&gt;Well I've started some research and started with some basics. DotNetNuke module controls are inherited from DotNetNuke.Entities.Modules.PortalModuleBase. They can then import various DotNetNuke interfaces for plugable features like IActionable, IModuleListener, IModuleCommunicator etc. To use a control as a webpart control, it must inherit IWebPart interface and implement it. So I just do that:&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;&lt;br /&gt;#region IWebPart Members&lt;br /&gt;        private string _ImageUrl;&lt;br /&gt;        private string _title;&lt;br /&gt;        private string _description;&lt;br /&gt;        private string _subtitle;&lt;br /&gt;        private string _titleIconImageUrl;&lt;br /&gt;        private string _titleUrl;&lt;br /&gt;        public string CatalogIconImageUrl&lt;br /&gt;        {&lt;br /&gt;            get&lt;br /&gt;            {&lt;br /&gt;                return _ImageUrl;&lt;br /&gt;            }&lt;br /&gt;            set&lt;br /&gt;            {&lt;br /&gt;                _ImageUrl =  value;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public string Description&lt;br /&gt;        {&lt;br /&gt;            get&lt;br /&gt;            {&lt;br /&gt;                return _description;&lt;br /&gt;            }&lt;br /&gt;            set&lt;br /&gt;            {&lt;br /&gt;                _description = value;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public string Subtitle&lt;br /&gt;        {&lt;br /&gt;            get { return _subtitle; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public string Title&lt;br /&gt;        {&lt;br /&gt;            get&lt;br /&gt;            {&lt;br /&gt;                return _title;&lt;br /&gt;            }&lt;br /&gt;            set&lt;br /&gt;            {&lt;br /&gt;                _title = value;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public string TitleIconImageUrl&lt;br /&gt;        {&lt;br /&gt;            get&lt;br /&gt;            {&lt;br /&gt;                return _titleIconImageUrl;&lt;br /&gt;            }&lt;br /&gt;            set&lt;br /&gt;            {&lt;br /&gt;                _titleIconImageUrl = value;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public string TitleUrl&lt;br /&gt;        {&lt;br /&gt;            get&lt;br /&gt;            {&lt;br /&gt;                return _titleUrl;&lt;br /&gt;            }&lt;br /&gt;            set&lt;br /&gt;            {&lt;br /&gt;                _titleUrl = value;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        #endregion&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After that, I started using it on my webpart's page. I just register that control and use it under CatalogZone control's WebPartTemplate.&lt;br /&gt;&lt;br /&gt;My module is working well as well as my webpart control is also working cool. Anybody who want to do this can simply learn the basics for implementing webparts, and for that, just go through the walkthroughs of msdn for webparts and then try my trick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-6199067086457057695?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/6199067086457057695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/using-dotnetnuke-module-control-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6199067086457057695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/6199067086457057695'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/using-dotnetnuke-module-control-in.html' title='Using DotNetNuke Module Control in WebParts'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-1614055761286267694</id><published>2008-12-17T11:24:00.000+05:30</published><updated>2009-03-13T15:30:36.770+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><title type='text'>Javascript : Dynamically setting onclick event</title><content type='html'>hey friends,&lt;br /&gt;some time ago I was working on a project which required a little functionality. I was trying to implement that using dynamically adding an &lt;span style="FONT-STYLE: italic"&gt;onclick&lt;/span&gt; event to the anchor tag using DOM. As it seems too easy to deal, it was not too straight. so after some googling i found following code which is now working in IE and FireFox both.&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;if(navigator.userAgent.indexOf("Gecko")&gt;-1)&lt;br /&gt;    signIn.setAttribute("onclick","functionName(args)");&lt;br /&gt;else&lt;br /&gt;    signIn.onclick = function() { functionName(args) }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-1614055761286267694?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/1614055761286267694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/javascript-dynamically-setting-onclick.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/1614055761286267694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/1614055761286267694'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/javascript-dynamically-setting-onclick.html' title='Javascript : Dynamically setting onclick event'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-1300617161073248451</id><published>2008-12-03T09:43:00.000+05:30</published><updated>2009-03-13T15:31:18.097+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript Code Snippets'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Snippets'/><title type='text'>Javascript Snippet : Select All, None, Invert checkbox</title><content type='html'>&lt;pre class="js" name="code"&gt;&lt;br /&gt;//int mode&lt;br /&gt;// mode = 0 invert selection&lt;br /&gt;// mode = 1 select none&lt;br /&gt;// mode = other than 0 or 1, select all&lt;br /&gt;function checkChange(mode)&lt;br /&gt;{&lt;br /&gt;            for(i=0;i&amp;lt;document.forms[0].elements.length;i++)&lt;br /&gt;            {&lt;br /&gt;                var ele = document.forms[0].elements[i];&lt;br /&gt;                if(ele.type == 'checkbox')&lt;br /&gt;                {&lt;br /&gt;                  if(ele.disabled=false)&lt;br /&gt;                  {&lt;br /&gt;                   if(mode==0) //invert selection&lt;br /&gt;                        ele.checked = !ele.checked;&lt;br /&gt;                   else if(mode==1) //none&lt;br /&gt;                        ele.checked = false;&lt;br /&gt;                   else&lt;br /&gt;                        ele.checked = true;&lt;br /&gt;                  }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-1300617161073248451?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/1300617161073248451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/javascript-snippet-select-all-none.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/1300617161073248451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/1300617161073248451'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/javascript-snippet-select-all-none.html' title='Javascript Snippet : Select All, None, Invert checkbox'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-7186741697502112715</id><published>2008-12-02T16:24:00.000+05:30</published><updated>2009-03-13T15:32:22.301+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNetNuke'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Cannot create file when it already exists</title><content type='html'>hey friends,&lt;br /&gt;when i was workin on my DotNetNuke project's module, which has functionality to upload a photo, i was getting a strange error like following:&lt;br /&gt;&lt;br /&gt;Cannot create file when its already exists.&lt;br /&gt;Message Cannot create a file when that file already exists.&lt;br /&gt;Source mscorlib&lt;br /&gt;TargetSite Void WinIOError(Int32, System.String)&lt;br /&gt;StackTrace at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.__Error.WinIOError() at System.IO.FileInfo.MoveTo(String destFileName) at your function&lt;br /&gt;&lt;br /&gt;This is strange, i looked at my code and it was almost perfect. so I was not able to find the any error.&lt;br /&gt;&lt;br /&gt;After some debugging, i was able to find the error, and you will be surprised to know that it was coming when someone uploads a read only file.&lt;br /&gt;&lt;br /&gt;:) i hope this will help you in case you are getting the same kinda error&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-7186741697502112715?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/7186741697502112715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/cannot-create-file-when-it-already.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7186741697502112715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7186741697502112715'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/12/cannot-create-file-when-it-already.html' title='Cannot create file when it already exists'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-7084615129805561421</id><published>2008-02-25T12:24:00.000+05:30</published><updated>2008-02-25T12:26:02.918+05:30</updated><title type='text'>HOW TO REDIRECT TO SPECIFIC CONTROL OF SPECIFIC TAB IN DOTNETNUKE?</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;As every newbie starting the DotNetNuke development has always a question like this in their lives. The basic idea behind doing this is: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;We need TABID for      redirection to specific TAB. we will pass a query string parameter along      with the redirect URL to tell which control to load.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;At the default control      of that specific module, we will just read the query string and load .ASCX      control accordingly into a placeholder control. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;I’m trying to make sure how easily we can do this using an example.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;STEP 1: Create a default control&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;Create a control called _default in your root directory which looks like this&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;u&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;_DEFAULT.ASCX&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="background: yellow none repeat scroll 0% 50%; font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;%&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;@&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;Control&lt;/span&gt; &lt;span style="color: red;"&gt;Language&lt;/span&gt;&lt;span style="color: blue;"&gt;="C#"&lt;/span&gt; &lt;span style="color: red;"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color: blue;"&gt;="true"&lt;/span&gt; &lt;span style="color: red;"&gt;CodeFile&lt;/span&gt;&lt;span style="color: blue;"&gt;="_Default.ascx.cs"&lt;/span&gt; &lt;span style="color: red;"&gt;Inherits&lt;/span&gt;&lt;span style="color: blue;"&gt;=" _Default"&lt;/span&gt; &lt;span style="background: yellow none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;%&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;&lt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(163, 21, 21);"&gt;table&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;="Table1"&lt;/span&gt; &lt;span style="color: red;"&gt;cellspacing&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&lt;/span&gt; &lt;span style="color: red;"&gt;cellpadding&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&lt;/span&gt; &lt;span style="color: red;"&gt;width&lt;/span&gt;&lt;span style="color: blue;"&gt;="100%"&lt;/span&gt; &lt;span style="color: red;"&gt;align&lt;/span&gt;&lt;span style="color: blue;"&gt;="center"&lt;/span&gt; &lt;span style="color: red;"&gt;border&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;tr&lt;/span&gt;&lt;span style="color: blue;"&gt;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;td&lt;/span&gt; &lt;span style="color: red;"&gt;valign&lt;/span&gt;&lt;span style="color: blue;"&gt;="top"&lt;/span&gt; &lt;span style="color: red;"&gt;align&lt;/span&gt;&lt;span style="color: blue;"&gt;="center"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;p&lt;/span&gt; &lt;span style="color: red;"&gt;align&lt;/span&gt;&lt;span style="color: blue;"&gt;="center"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;b style=""&gt;&lt;span style="color: blue;"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;asp&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;PlaceHolder&lt;/span&gt; &lt;span style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: blue;"&gt;="phMain"&lt;/span&gt; &lt;span style="color: red;"&gt;runat&lt;/span&gt;&lt;span style="color: blue;"&gt;="server"&gt;&lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;asp&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;PlaceHolder&lt;/span&gt;&lt;span style="color: blue;"&gt;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;p&lt;/span&gt;&lt;span style="color: blue;"&gt;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;td&lt;/span&gt;&lt;span style="color: blue;"&gt;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;tr&lt;/span&gt;&lt;span style="color: blue;"&gt;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;tr&lt;/span&gt;&lt;span style="color: blue;"&gt;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;td&lt;/span&gt; &lt;span style="color: red;"&gt;valign&lt;/span&gt;&lt;span style="color: blue;"&gt;="top"&lt;/span&gt; &lt;span style="color: red;"&gt;align&lt;/span&gt;&lt;span style="color: blue;"&gt;="center"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;asp&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Label&lt;/span&gt; &lt;span style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: blue;"&gt;="lblModuleSettings"&lt;/span&gt; &lt;span style="color: red;"&gt;runat&lt;/span&gt;&lt;span style="color: blue;"&gt;="server"&lt;/span&gt; &lt;span style="color: red;"&gt;resourcekey&lt;/span&gt;&lt;span style="color: blue;"&gt;="lblModuleSettings"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color: red;"&gt;ForeColor&lt;/span&gt;&lt;span style="color: blue;"&gt;="Red"&lt;/span&gt; &lt;span style="color: red;"&gt;Visible&lt;/span&gt;&lt;span style="color: blue;"&gt;="False"&gt;&lt;/span&gt;Please update module settings...Portal Admin.&lt;span style="color: blue;"&gt;&lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;asp&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Label&lt;/span&gt;&lt;span style="color: blue;"&gt;&gt;&lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;td&lt;/span&gt;&lt;span style="color: blue;"&gt;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;tr&lt;/span&gt;&lt;span style="color: blue;"&gt;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;&lt;/&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(163, 21, 21);"&gt;table&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;u&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;_DEFAULT.ASCX.CS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; System.Data;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; System.Configuration;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; System.Collections;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; System.Web;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; System.Web.Security;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; System.Web.UI;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; System.Web.UI.WebControls;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; System.Web.UI.WebControls.WebParts;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; System.Web.UI.HtmlControls;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; DotNetNuke;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; DotNetNuke.Common;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; DotNetNuke.Common.Utilities;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; DotNetNuke.Entities.Modules;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; DotNetNuke.Services.Exceptions;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; DotNetNuke.Services.Localization;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;namespace&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;your&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;partial&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;_Default&lt;/span&gt; : &lt;span style="color: rgb(43, 145, 175);"&gt;PortalModuleBase&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; m_ModuelControl = &lt;span style="color: rgb(163, 21, 21);"&gt;"Contacts.ascx"&lt;/span&gt;;&lt;span style="color: olive;"&gt;//1. Default Control to Load&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: rgb(43, 145, 175);"&gt;EventArgs&lt;/span&gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;LoadModuleControl();&lt;span style="color: olive;"&gt;//2. Call Module control Loading Logic&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; LoadModuleControl()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (Request.QueryString[&lt;span style="color: rgb(163, 21, 21);"&gt;"mctl"&lt;/span&gt;] != &lt;span style="color: blue;"&gt;null&lt;/span&gt;) &lt;span style="color: olive;"&gt;//3. Read control name from querystring&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                &lt;/span&gt;m_ModuelControl = Request.QueryString[&lt;span style="color: rgb(163, 21, 21);"&gt;"mctl"&lt;/span&gt;].ToString()) + &lt;span style="color: rgb(163, 21, 21);"&gt;".ascx"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;             &lt;/span&gt;&lt;span style="color: green;"&gt;//4. check authorization here if you want. Otherwise comment out this switch &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;switch&lt;/span&gt; (m_ModuelControl)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style=""&gt;     &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;"Contact.ascx"&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;&lt;span style="color: green;"&gt;//5. Use this code to redirect to access Denied page of DotNetNuke&lt;span style=""&gt;    &lt;/span&gt;Response.Redirect(Globals.NavigateURL("Access Denied"), true);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;"ContactNotes.ascx"&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;     &lt;/span&gt;&lt;span style=""&gt;               &lt;/span&gt;&lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;"ContactPrivate.ascx"&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;"Contacts.ascx"&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;"ContactSearch.ascx"&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;"ContactSearchDetail.ascx"&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;"EditContact.ascx"&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;"EditNote.ascx"&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;//&lt;span style="color: olive;"&gt;6. Load A specific control&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(43, 145, 175);"&gt;PortalModuleBase&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; objPortalModuleBase = (&lt;span style="color: rgb(43, 145, 175);"&gt;PortalModuleBase&lt;/span&gt;)LoadControl(m_ModuelControl);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;objPortalModuleBase.ModuleConfiguration = ModuleConfiguration;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;objPortalModuleBase.ID = System.IO.&lt;span style="color: rgb(43, 145, 175);"&gt;Path&lt;/span&gt;.GetFileNameWithoutExtension(m_ModuelControl);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt;           &lt;/span&gt;phMain.Controls.Add(objPortalModuleBase);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;So let’s step by step go through the details of the code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;span style=""&gt;1.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;If you look at the bold code in _default.ascx,&lt;span style=""&gt;  &lt;/span&gt;&lt;b style=""&gt;&lt;asp:placeholder id="phMain" runat="server"&gt;&lt;/asp:PlaceHolder&gt;&lt;/b&gt;, that is a place holder control of asp.net in which we will load another .ascx control at runtime.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;span style=""&gt;2.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Now if you look at the code in _default.aspx.cs you can find the steps in the comment at various places of the code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;span style=""&gt;3.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Use a private variable to hold the control name into it. Initialize it with the default control that we will load if no query string parameter is found in the URL.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;span style=""&gt;4.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Initialize the variable with the query string parameter if it is specified in the URL&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;span style=""&gt;5.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Include the switch statement for authorization if you need to authorize the user, Otherwise put that code in comment&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;span style=""&gt;6.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Load the specific control in the phMain placeholder of the default control.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;So the last thing to do is, When you redirect from any tab, just do this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(43, 145, 175);"&gt;TabController&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; objtab = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;TabController&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(43, 145, 175);"&gt;TabInfo&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; objtabinfo = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;TabInfo&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;objtabinfo = objtab.GetTabByName(&lt;span style="color: rgb(163, 21, 21);"&gt;"Contacts"&lt;/span&gt;, PortalId);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Response.Redirect(&lt;span style="color: rgb(43, 145, 175);"&gt;Globals&lt;/span&gt;.NavigateURL(objtabinfo.TabID, &lt;span style="color: rgb(163, 21, 21);"&gt;""&lt;/span&gt;, &lt;span style="color: rgb(163, 21, 21);"&gt;"mctl="&lt;/span&gt; + &lt;span style="color: rgb(163, 21, 21);"&gt;"ContactNote"&lt;/span&gt;)));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Remember that for this code to work:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;You need a tab called “Contacts“ in your portal&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;You need a control called ContactNote.ascx in your module&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;You need to include the namespace DotNetNuke.Entities.Tabs at the top of your page where you write the redirect code above.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Wish you a Happy coding with DotNetNuke.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-7084615129805561421?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/7084615129805561421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/02/how-to-redirect-to-specific-control-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7084615129805561421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/7084615129805561421'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2008/02/how-to-redirect-to-specific-control-of.html' title='HOW TO REDIRECT TO SPECIFIC CONTROL OF SPECIFIC TAB IN DOTNETNUKE?'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-556731575261585802.post-5865206179566687999</id><published>2007-11-24T19:01:00.001+05:30</published><updated>2008-04-29T15:23:22.768+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Free Web designs'/><title type='text'>Free Web Design Resources</title><content type='html'>Hi all,&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Here I'm trying to include free web design resource which will help designer's and beginners to learn from the good examples. Please add resources by adding comments if you know more than this listing, I will try to update the listing&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Free Open Source HTML/XHTML Designs&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;ul&gt;&lt;li&gt;Open Designs -- &lt;a href="http://www.opendesigns.org/profile/?user=gwolfgang"&gt;www.opendesigns.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Open Webdesign -- &lt;a href="http://www.openwebdesign.org/userinfo.phtml?user=gwolfgang"&gt;www.openwebdesign.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Open Source Webdesign -- &lt;a href="http://www.oswd.org/designs/search/designer/id/10227/"&gt;www.oswd.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Free Layouts -- &lt;a href="http://www.freelayouts.com/users/gwolfgang"&gt;www.freelayouts.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;1234.info-- &lt;a href="http://1234.info/webtemplates/"&gt;www.1234.info&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;Thanks And Regards&lt;br /&gt;Prashant&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/556731575261585802-5865206179566687999?l=lakhlaniprashant.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lakhlaniprashant.blogspot.com/feeds/5865206179566687999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lakhlaniprashant.blogspot.com/2007/11/free-web-design-resources.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5865206179566687999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/556731575261585802/posts/default/5865206179566687999'/><link rel='alternate' type='text/html' href='http://lakhlaniprashant.blogspot.com/2007/11/free-web-design-resources.html' title='Free Web Design Resources'/><author><name>Prashant Lakhlani</name><uri>https://profiles.google.com/105409843522266344286</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
