RSS Feed Available AddThis - Bookmarking and Sharing Button Printer Friendly
  •  
  •  
  •  
  •  
  •  

A DotNetNuke Experiment - DNN Exposed

by Will Morgenweck on 30 Dec 2010 04:39 PM

Several weeks ago I decided to conduct a small experiment with DotNetNuke and Active Forums 4.3.  My goals for this experiment started off pretty simple: Setup a fictitious site using shared hosting, DotNetNuke 5.6 and Active Forums 4.3 Enterprise.  Turned out, the hardest part was coming up with a fictitious purpose for the site.  I ended up putting this project on hold for awhile until I could come up with a decent purpose.  Sure, I could have just thrown a site together and set everything up, but I really wanted to tackle a project with a real goal in mind.  

Something I've always wanted to do was put together a site for reviewing modules.  Not something like reviews you see on Snowcovered, but real, structured reviews.  I look at the reviews on Snowcovered on a fairly regular basis. A couple weeks ago I saw a 1 star review for a fairly popular module which triggered my idea of a module review site.  I decided that I should build a DotNetNuke Module Review site for my experiment.  Now my goals for this experiment started to change and expand.

I really wanted to use Active Forums 4.3 for this experiment, but wasn't sure if it could accomplish everything I needed out of the box.  I knew I wanted to use Active Forums or a blogging module.  In the interest of keeping this experiment as real as possible I decided to create a list of goals, objectives and specifications for the project.  Below is a translation from my original, handwritten notes:
  1. A primary author will create reviews in a consistent, point based structure.
  2. Site will be search engine optimized with proper page titles and friendly urls.
  3. Skin will be custom so that it is as lightweight as possible.
  4. Use existing module without source code changes. Ability to create review/article with following characteristics:
    1. Tags and Categories
    2. Custom Fields for review data
    3. SEO friendly urls
    4. SEO friendly Title, Description and Keywords.
    5. Allow article rating.
    6. Allow comments with moderation tools.
      1. threaded
      2. anon
      3. simple layout
    7. Email and RSS subscription options.
    8. DNN Search integration
    9. Allow for community based reviews on article subject (biggest challenge).
    10. Flexible template options.
  5. May need custom skin object or controls, but no custom modules.
  6. Any user will be able to rate and comment on the review.  
  7. Site registration will be optional for comments.
  8. All posts from anonymous users will be moderated.
  9. First 20 comments from registered users will be moderated.  
  10. Comments should be threaded and easy to follow.
    1. Plain text.
    2. No attachments.
  11. In addition to comments, users should be able to submit their own review of the module.
    1. Community reviews should appear similar to comments and within the context of the main article.
    2. A community should also assign a score value to the review.
    3. Probably will require a custom control/module.
  12. Each review will have a score given by the author and also a average score from community reviews.
  13. Users will be able suggest modules to review.
  14. Site navigation will be based on list of reviews.
    1. Ability to browse reviews by category.
    2. Ability to browse reviews by search.
    3. Ability to browse reviews by tag.
  15. Complete site build over a weekend.
  16. Purchase domain.
  17. Use godaddy shared hosting.
  18. Create twitter account.
  19. Make site live.  
  20. Keep a journal of project.
  21. Write blog about experience.

Domain Name, Hosting and DotNetNuke Install
I purchased a domain from godaddy and signed up for the Deluxe Shared Windows Hosting plan.  The first thing I wanted to do was get DotNetNuke installed.  Working with godaddy hosting before, I knew that their automated DotNetNuke install doesn't allow for DotNetNuke to be installed at the root level.  I did a quick google search and found a great article that will walk you through the entire process.  Once DotNetNuke was installed I then went through my normal process of setting performance options, removing unused files, configuring SMTP and setting up test user accounts.  Now I had fresh, clean DotNetNuke install with just the required modules installed and default pages.  The site was ridiculously slow.  I figured this was just the norm for shared hosting and decided to revisit performance later.  

Skin Selection
I really didn't care much about the color scheme of the site.  I knew I wanted a skin that simple, clean and as lightweight as possible.  I spent a few minutes looking through Snowcovered and realized I was going to build my own.  While having dozens of different panes on a page makes layout more convenient, it comes with the weight of extra HTML markup that I didn't need.  I also knew I wasn't going to use any kind of menu other than static navigation.  I built a very simple skin and used an online color scheme tool to come up with the color palette.  I also loaded my "Plain" container which I have been using for as long as I can remember.   I had the skin complete in just a couple hours.  

Module Selection
I would be lying if I said I didn't want to use Active Forums the start, but I became more focused(almost obsessed) on the idea of building a quality, detailed module review site.    I knew how I wanted reviews to be structured, how I wanted everything displayed and how I wanted community participation.  I didn't want to build a custom module or modify the source of Active Forums because that would interfere with our normal product development.  I was going to use Active Forums or a blog/article module.  I evaluated a couple products and it really came down to two deciding factors: custom fields and dynamic templates.  I had this vision in my head for how I wanted the Article, comments and community reviews to be integrated and there wasn't a single module that could deliver that out of the box.  I knew I would need to build the community review section, but I would need to be integrated with the module that was serving the primary article.  I also knew that I wasn't going to make source code changes or build a new module from scratch.  I was going to need to build an asp.net control that would manage the community reviews and integrate with the primary module.  Active Forums has always been able to load custom controls in templates and 4.3 added support custom fields.  It only took a few hours to build the control for the community reviews, but then scope creep began.  

Threaded Comments, AJAX Quick Reply and Active Forums API
We added support to the Active Forums data model with the 4.0 release for threaded replies.  The hard part is coming up with a UI that is user friendly.  I came across a blog that had a very nice, ajax style way to reply to comments.  I wanted to mimic that behavior for this project.  I created a new quick reply editor using the Active Forums API and added it to my template.  Worked exactly how I wanted, but it didn't really make sense without the comments appearing threaded.  Again, using the Active Forums API, I built a control to render the comments(replies) in a threaded fashion instead of the standard reply layout.  This was actually easier than building the quick reply control.  

Broke One Rule, Fixed Two Bugs
I did break the rule regarding no source code changes, but I think I had pretty good reason.  While working with the API I found a bug that prevented access to certain methods that are necessary for retrieving replies.  I also found a bug with how the replies were being tracked in order to display a threaded view.  Those fixes will be included in the next release.  

What's Next?
After going through this exercise and coming up with a good way to review modules, I realized that not only do I not have the time to complete these detailed reviews, it probably isn't a good idea for a module vendor to review other modules.  I'm not quite sure what will happen with the site, but I know the end result will not go to waste.  I learned more than I ever wanted to know regarding GoDaddy Shared and VPS hosting which I will share in another blog.   The controls I created for quick reply and threaded view really aren't complete enough for inclusion with the main code base, but they are a good starting point.  Feel free to take a look.
DNNExposed.com - (not hosted with GoDaddy)





    3 Comments for A DotNetNuke Experiment - DNN Exposed

    drew curry
    drew curry
    31 Dec 2010 10:18 PM

    Nice post Will! Would luv to see a detailed blog on this bit:

    Once DotNetNuke was installed I then went through my normal process of setting performance options, removing unused files, configuring SMTP and setting up test user accounts. Now I had fresh, clean DotNetNuke install with just the required modules installed and default pages. The site was ridiculously slow. I figured this was just the norm for shared hosting and decided to revisit performance later.
    Larry
    Larry
    01 Jan 2011 01:59 PM

    I can see lots of value here. It is good for module vendors to use their wares in a real world scenario like this to get an end-user perspective. AF users will certainly benefit...

    Good work, Will! Interesting. With AS/AF/AP, I don't know where you find the time though.
    Matt Marlor
    Matt Marlor
    04 Jan 2011 10:13 AM

    Heh, I love "(not hosted with GoDaddy)". Almost speaks volumes :-)
    test
    Copyright 2012 by DotNetNuke Corporation / Terms of Use / Privacy