Search

The Latest Community DotNetNuke Blog Posts

Engage Software
Tuesday, November 18, 2008 3:06:17 PM
So for those of you who attended the Post Conference training last week after OpenForce you know we tried to squeeze too much information into the session and had to leave out some of the important items from the module development topics. This blog post will hopefully serve as a pointer to get you headed in the right direction for your module development!
Peter Donker
Tuesday, November 18, 2008 11:59:12 AM

Document Exchange was designed to be a flexible framework with which you could do all necessary tasks of document management, but also on which you could build other applications that go beyond the regular. The idea of extending the module came from being involved in custom projects back in the days of the first version. It quickly became apparent that all customers would be on forks of the module and just keeping track of this was a challenge as best.

Hilbert Solutions, LLC - HilbertSolutions.com
Tuesday, November 18, 2008 11:00:00 AM

I was looking through the photos on Flickr for OpenForce 08 and found one of me in there.  If you want to look at all the pictures head this way.... http://www.flickr.com/groups/openforce08/pool/.


Here is a picture of me winning the Engage module suite at the OpenForce Social.  

 

Joe Brinkman
Tuesday, November 18, 2008 10:28:35 AM

During the OpenForce Conference, I heard from several designers that the DNNMenu had problems with Search Engine Optimization (SEO) because it rendered menu items that used JavaScript for navigation.  While I assured them that this was not the case and that the menu rendered a down-level version for search bots, I thought I would perform further testing and document the exact behavior.  In the process, I found that while the DNNMenu performed as expected, ASP.Net did not.

To observe the behavior of the menu, I used Firefox 3 with the User Agent Switcher plug-in.  This plug-in allows you to simulate any user agent string you wish.  For testing purposes you can find a complete list of user agent strings at useragentstring.com.

Below is the DNNMenu as rendered in the standard Firefox browser.

MozillaMenu

To change user agents, create a set of new user-agent using the Tools>>User Agent Switcher>>Options>>Options screen and add the string for the browser or web crawler you wish to emulate.  If you are emulating a web crawler, you should also disable JavaScript.  With the GoogleBot user-agent enabled and JavaScript disabled, Firefox will render the menus as seen by Google.  You can see this behavior in the picture below.

GoogleMenu

Opening Firebug, you can easily verify that the menu is rendered as a series of hyperlinks as shown below.

GoogleMenuRendering

Everything appeared to work as I expected.  Unfortunately, when I tested the user-agents for Yahoo and ask.com, I found that the menu did not behave the same as for the Google and MSN/Live bots. 

The DNNMenu IsDownLevel property determines whether to render the full JavaScript menu or to render a down-level version that doesn’t require JavaScript.  If the “browser” is a web crawler, then the menu should always render as down-level.  Looking at the IsDownLevel code below we see that the key is the IsCrawler property which further delegates the crawler check to the ASP.Net framework.

Public ReadOnly Property IsDownLevel() As Boolean
    Get
        If ForceDownLevel OrElse Me.IsCrawler OrElse _
         DotNetNuke.UI.Utilities.ClientAPI.BrowserSupportsFunctionality(Utilities.ClientAPI.ClientFunctionality.DHTML) = False OrElse _
         DotNetNuke.UI.Utilities.ClientAPI.BrowserSupportsFunctionality(Utilities.ClientAPI.ClientFunctionality.XML) = False _
        Then
            Return True
        Else
            Return False
        End If
    End Get
End Property
 
Public Property IsCrawler() As Boolean
    Get
        If Len(ViewState("IsCrawler")) = 0 Then
            Return System.Web.HttpContext.Current.Request.Browser.Crawler
        Else
            Return CBool(ViewState("IsCrawler"))
        End If
 
    End Get
    Set(ByVal Value As Boolean)
        ViewState("IsCrawler") = Value
    End Set
End Property

Looking at this code, I see that for some reason ASP.Net is not properly detecting any bots other than GoogleBot and MSN.  After doing further research I found that browser detection is controlled by the .Net 2.0 .browser files that are located at %FrameworkDir%\v2.0.50727\CONFIG\Browsers.  A quick WinGrep determined that the only browser file that sets the Crawler property is the gateway.browser file.  The relevant portion of the file is:

<gateway id="Crawler" parentID="Default">
    <identification>
        <userAgent match="crawler|Crawler|Googlebot|msnbot" />
    </identification>
 
    <capture>
    </capture>
 
    <capabilities>
        <capability name="crawler" value="true" />
    </capabilities>
</gateway>

Clearly, this is only detecting Google and MSN.  Further research indicated that this is a known problem with the default ASP.net behavior.  ASP.Net 2.0 added the ability to define .browser files in the App_Browsers folder of your web application.  By defining custom .browser files we should be able to correctly identify targeted search bots.

The below slurp.browser file will detect the Yahoo crawler.

<browsers>
    <browser id="Slurp" parentID="Mozilla">
        <identification>
            <userAgent match="Slurp" />
        </identification>
        <capabilities>
            <capability name="browser" value="Yahoo!Slurp" />
            <capability name="crawler" value="true" />
            <capability name="cookies" value="false" />
            <capability name="css1" value="true" />
            <capability name="css2" value="true" />
            <capability name="javascript" value="false" />
            <capability name="tables" value="true" />
            <capability name="w3cdomversion" value="1.0" />
            <capability name="xml" value="true" />
            <capability name="tagwriter" value="System.Web.UI.HtmlTextWriter" />
        </capabilities>
    </browser>
</browsers>

Most of the crawlers use a Mozilla compatible string like Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp) and so you need to make sure to set the parentID to “Mozilla” so that the browser detection works correctly.

As you can see, DotNetNuke has good support for search engines in the default DNNMenu.  There are still optimizations you must make if you wish to cater to search engines beyond Google and Windows Live/MSN.  One of the great aspects of DotNetNuke is that if you don’t care for the tradeoffs that the DNNMenu makes, then you can choose to use a third-party CSS menu like the HouseMenu or Snapsis CSS NavMenu

All of this works just fine in DotNetNuke 4.4 and beyond, however, in DotNetNuke 5.0 SEO will get a slight boost.  The down-level rendering in previous versions of the DNNMenu was not very lightweight nor was did it use semantic markup.  The next version of DNNMenu in DotNetNuke 5.0 allows the menu to be rendered as an unordered list which should help search engines to better understand the menu structure.  I will have a separate post to discuss this version of the menu.

Hilbert Solutions, LLC - HilbertSolutions.com
Tuesday, November 18, 2008 7:47:00 AM

With DNN 5 RC2 coming out last week the general public finally has the ability to get hands on with the latest version of Dotnetnuke.  I downloaded and istalled it this weekend for my first hands on experience with it.

Here is a quick list of items I noted while taking  quick run through it.

  • Install and Setup went without a hitch and was painless.  I did notice a few changes in the wizard, but nothing major.
  • We now have the ability to Deny roles and users when assigning permissions.  This is something that I have written into a number of modules on my own over the years.
  • Modules support Web Slices in IE8
  • Modules that were once only available to people with Administrator access are now available to to be dropped on pages.   One of these modules is called "Tabs" which I think should really be titled pages.
  • Support for Skin Widgets.  I saw some Skin Widget stuff at OpenForce08.  Very cool!  Basically, they allow you better control over the skin for formatting and SEO type work.
  • The Module Install, Skin Installer and Authentication Provider installer have been all placed in one nice area called, "Extensions".
  • The Icon set has been updated and looks much newer.
  • The ability to setup notifications so DNN will let you know about Updates to your site features.
  • You can enable/disable the "Remember Me" option when logging in.
  • Seemed must faster in my development enviroment

I am looking forward to digging in deeper but that is what I saw just by spending a few minutes with it on Sunday.

Mitchel Sellers
Tuesday, November 18, 2008 2:16:00 AM

I thought I would take a quick moment to post one final update regarding the progress on my Professional DotNetNuke Module Programming book.  Tonight I have finished writing the two most complicated sections of the book, the Dedication and Acknowledgments.  I can't believe how hard it was to write those two small pieces of the book.

The good news is that this milestone essentially marks the 100% complete mark in the process on my side.  Author Review has been completed on all but one chapter, and I will have that finished tomorrow.  Once I am done with that, the folks with Wrox Press will take it from there and get the book ready for production.  Last week I talked with the managing editor and the updated cover art to include my picture should be going out soon, and as soon as I have a firm publication date I will let everyone know!

As I have mentioned before, thank you all for the support and feedback during this process, it has been a true learning experience for me!

Active Modules
Tuesday, November 18, 2008 12:38:21 AM
It was great getting to talk with so many people at OpenForce last week.  Below are some of the common questions we received along with answers.

Q: How much will Active Social cost?
A: Active Social will be available in 3 versions:
     Active Social ($499) - This is a standalone version that is pre-packaged with a custom DotNetNuke installation.
     Active Social For DotNetNuke ($399) - This is the Active Social Module package for those that already have DotNetNuke installed.
     Active Social Live ($15-$50/month) - This is a hosted version of Active Social. 

Q:  When will Active Social be released?
A:  Active Social will be made available to a limited number of pre-selected customers this week.  We expect to have the first public release available no later than December 15th.

Q: I already own Active Forums Enterprise and Active Profile.  What is it going to cost me to upgrade?
A: If your Active Forums Enterprise license hasn't expired, then you will receive a free upgrade to Active Social.

Q: How does Active Forums and Active Social work together?
A: We wanted to have complete integration with Active Forums and Active Social.  In order to make this as easy as possible for you, we decided to include Active Forums Enterprise with Active Social.  Yes, Active Social will include a full Active Forums Enterprise license.

Q: I'm already using another social networking module set.  Will I be able to migrate to Active Social?
A:  Yes, we will provide a set of migration scripts so that you can easily migrate profiles and groups to Active Social.

Q: Is there a demo site available for Active Social?
A:  The demo site we used for Active Social at OpenForce will be available by Nov. 26th.
Active Modules
Tuesday, November 18, 2008 12:10:17 AM
One of the common requests we received with Active Profile was, "How could every user have a default profile?".  Active Social uses the built-in profile information from DotNetNuke.  This has several advantages:
1) Every user will now have a profile.
2) The profile can be maintained in one location.
3) Custom profile fields in DotNetNuke are immediately available in Active Social.

While relying on the DotNetNuke profile mechanism provides the best form of integration, we did face some challenges.

1) We wanted to be able to register and complete profile information as a seamless process.
2) We wanted to have the option to upload a picture as part of the initial registration.
3) We needed to preserve all of the existing DotNetNuke registration logic.
4) We wanted to add further options that allow you to have better control and greater flexibility for the registration process.  New options include:
      a) Registration blacklist by email and username
      b) Option to require unique email address
      c) Option to require unique display name
      d) Option to use email address in place of username.
      e) Option to disable display name.
      f) Option to force profile update.
    
5) The profile display, edit and registration process needed to be 100% template driven.

Below are a few screen shots that will show some of the items I have listed above.
















Active Modules
Monday, November 17, 2008 10:23:18 AM
I don't contribute much to the community but I wanted to get on here and thank everyone that came by the booth last week at OpenForce.  We had a great turnout at our social event and I had a great time meeting all our present and hopefully future customers. 
Hilbert Solutions, LLC - HilbertSolutions.com
Saturday, November 15, 2008 11:17:00 PM

Dotnetnuke has a pretty good system for utilizing SSL with your Dotnetnuke site.  The implementation is straight forward and easy to use.  I will attempt to give a high level summary of how easy it is to use SSL with your Dotnetnuke site.  This tutorial will assume you already have setup and configured your SSL certificate correctly on your server or with your hosting company.

Smart-Thinker
Saturday, November 15, 2008 7:00:00 PM

There is a very interesting proposal/debate going on on the Smart-Thinker Forums regarding the leveraging of multiple customer's buying power to pay for Sponsored Enhancements (Crowdsourcing) to increase the Smart-Thinker productivity output.

Antonio Chagoury
Saturday, November 15, 2008 11:58:58 AM

OpenForce '08 has finally come to an end :-( and I am now back home in Northern Virginia (Washington DC area).

While at OpenForce, between the presentations, manning the DotNetNuke Community booth from time to time, and meeting a lot of great people, my work backlog begun to pile up.

More...
Antonio Chagoury
Friday, November 14, 2008 1:39:30 PM

Community Champions While attending OpenForce '08 in Las Vegas this past week I received a very unexpected email from INETA, one that left me shocked and honored and humbled all the same time. A weird feeling to say the least.

In a nut-shell here is what they had to say:

More...
Hilbert Solutions, LLC - HilbertSolutions.com
Friday, November 14, 2008 12:45:00 PM

People are constantly asking if they should use Dotnetnuke or Sharepoint or why use one or the other.   The answer is complicated.   I decided to post my thoughts and experiences using, coding and managing for both.

I have managed both DNN and Sharepoint intranet and internet sites in a corporate enviroment, so I have experiences in both worlds.

First let's start with the annoucement of Dotnetnuke Professional and what information we know about it.  I have been at OpenForce all week and have heard the buzz and I have posted a few entries on my blog with my understanding and my guesses as to what is going to happen with Dotnetnuke Professional.

Sharepoint as an intranet solution makes a lot of sense for a Microsoft centric community that will actually utilize the the work flow, versioning, etc of Sharepoint.   Far too often Sharepoint turns into nothing more than a $40K network drive to store files.  

Dotnetnuke is certainly making headway in support a "toned down" feature set that Sharepoint provides.   While versioning and Work Flow aren't apart of the core p