Search

The Latest Community DotNetNuke Blog Posts

DNNDaily.com
Thursday, March 11, 2010 1:55:04 PM

If you are anywhere in the San Francisco Bay or Silicon Valley area this post is for you. Others are welcome, but you might find the drive a little long depending on where you are.

On 3/23/2010 we are going to be holding our first DotNetNuke User’s Group here in the DotNetNuke Corporation’s Headquarters in San Mateo, CA. All are invited and encouraged to attend, it doesn’t matter if you know DotNetNuke or not yet, user groups are a great way to learn about the software, and get to meet other people using the platform for a variety of different things.

You can get more information from our website, but here is some of the basic info:

Date/time: 3/23/2010 6pm

Location: DotNetNuke HQ (Grant St)

Come out and meet fellow DotNetNuke User's from the San Francisco Bay Area held at DotNetNuke Corporation's HQ! This will likely be the one and only DNN user group meeting held in this office as we'll be moving in the near future, but we hope to have more group meetings at the new office as well (just down the street).

Topic: What are you doing with DotNetNuke?

Description: Come out and tell everyone else in the Bay Area what you are doing with DotNetNuke. Got something cool to share, please feel free to do so. If you're the quite type, don't fear, we won't make everyone talk, just those interested. You'll also get to meet some of the DotNetNuke Corp employees here in the area.

Organizer: Chris Hammond, Director of Training Programs, DotNetNuke Corporation. (recently relocated to the bay area)

Food: Pizza and Sodas provided by DNN Corp!

RSVP: So we can plan on the proper amount of food please RSVP prior to 6pm on Monday the 22nd. Send an email to info@baydug.org to let us know

 

Not in the Northern California area? Then be sure to check out the DotNetNuke User Groups page to locate a group close to you.

TressleWorks
Thursday, March 11, 2010 11:22:00 AM

On Tuesday March 9th, I presented at the Orlando DotNetNuke User Group (ODUG) and had a great time.

The fact that I was presenting added to the fun and enjoyment of the night, so I thought I would share a bit of the experience.  Primarily I want to encourage other DotNetNuke Users to pass along their knowledge.

So, here is my story…

More...
Charles Nurse
Wednesday, March 10, 2010 9:49:40 AM

A year or so ago I wrote a series of blog posts about building testable modules using the Model-View-Presenter (MVP) pattern.  The MVP pattern of development provides many of the benefits attributed to the Model-View-Controller (MVC) pattern, which has become very popular recently as an alternative approach to ASP.NET development. 

You can have your cake and eat it too.

Its main strength though is that it retains most of the benefits of the WebForms Framework of rich controls, with which we are familiar. 

The MVP pattern achieves this by requiring the View (usually a UserControl or Page)which receives control from the WebForms Framework to pass “control” to a Presenter class, and it requires a good deal of discipline from developers to ensure that the pattern is followed. 

The pattern also requires developers to “wire-up” the three classes View, Presenter and Model (or ViewModel) every time they need a new control (or View).

This degree of complexity has tended to hamper the use of the MVP pattern, as it requires much more work on the part of developers in general (and module developers in particular).

I am pleased to announce that in the next public release of DNN (version 5.3) we will be including a set of base classes that provide most of this wiring-up out-of-the-box. 

This new framework is based on a fairly new Codeplex project WebFormsMVP from Tatham Oddie (of Readify in Australia) and Damian Edwards (formerly of Readify, but now assimilated by the Borg (Microsoft)).  Many of you will know that Phillip Beadle a long-time DNN Community member and now DNNCorp Employee also used to work at Readify.

We had already decided to add MVP support for module development in this development cycle and after meeting with Damian and Tatham at the recent MVP (as in Microsoft Most Valuable Professional) summit in Redmond, we decided to replace our MVP (Model-View-Presenter) code with their Library, which was much more advanced, and was licensed under a compatible Open Source license.  Tatham and Damian have used the WebFormsMVP framework on a number of high-profile websites in Australia so it is well-tested

Move over PortalModuleBase – Hello ModulePresenter and ModuleView<Model>

In order to take as much advantage as we can from this new framework we have built a thin layer on top of their code to ensure that the Presenters and Views all know about Module Context and Portal Settings. 

Two new modules that we will be delivering as part of the 5.3 release have been built on this new framework and will showcase how to use the framework and how to write tests at every layer of the application.

In addition, I will blog in future article(s) on how you can use this new framework to create testable modules of your own.

The Mighty Blog
Wednesday, March 10, 2010 2:03:00 AM

I ran into an interesting situation last night.  I don’t know why I hadn’t noticed this in the past.  My blog site was originally one of many in a single DotNetNuke® installation or instance.  Since it has grown in popularity and traffic, I had to move it to it’s own standalone DNN instance.  The quickest way to make that happen was to move a copy of the original instance, and delete all of the other portals that came with it.  In doing so, this left all of the users from the other portals still in the Users table in the database.

WARNING!!! Don’t just run the queries here. Read the post in detail first. Also, BACKUP your database before manually changing any data.  You may severely mess up your site. You’ve been warned!

At first, I kind of panicked, because I was looking at the users in my Superusers Account module.  It was 100+ pages of users!  We all know that there is probably not a single site out there that has 10 super users, much less 100+ pages worth of super users.  In the first page, there were several test accounts, so my first thought was that I had been hacked at some point.  However, I didn’t take the history of the portal into account. 

As it turns out, I had learned in a very scary way how DNN handles user accounts when portals are deleted.  I am not sure of the thought process behind it, but the users are soft deleted from the portals that get deleted.  In this situation, this has a couple of distinctive attributes to take note of.

  • The IsDeleted column in the Users table is 1
  • The PortalId column in the UserPortals table is NULL

You can see these attributes by running the following query:

   1: SELECT up.[PortalId], u.[UserID], u.[Username], u.[FirstName], u.[LastName], u.[IsSuperUser], u.[Email], u.[DisplayName], u.[IsDeleted] 
   2: FROM [databaseOwner}[{objectQualifier}Users] u 
   3: LEFT OUTER JOIN [dbo].[UserPortals] up ON u.[UserId] = up.[UserId] 
   4: ORDER BY up.[PortalId], up.[UserId];
   5: -- OR --
   6: SELECT up.[PortalId], u.[UserID], u.[Username], u.[FirstName], u.[LastName], u.[IsSuperUser], u.[Email], u.[DisplayName], u.[IsDeleted] 
   7: FROM [dbo].[Users] u 
   8: LEFT OUTER JOIN [dbo].[UserPortals] up ON u.[UserId] = up.[UserId] 
   9: ORDER BY up.[PortalId], up.[UserId];

At first glance, this appears to be an easy fix.  That is, if you’re not paying attention.  Just delete all of the users that are no longer associated with a portal.  Let’s try it!

   1: DELETE FROM {databaseOwner}[{objectQualifier}Users] 
   2: WHERE [UserId] IN (
   3:     SELECT u.[UserId] 
   4:     FROM {databaseOwner}[{objectQualifier}Users] u 
   5:     LEFT OUTER JOIN {databaseOwner}[{objectQualifier}UserPortals] up ON u.[UserId] = up.[UserId] 
   6:     WHERE up.[PortalId] IS NULL
   7: )
   8: -- OR -- 
   9: DELETE FROM [dbo].[Users] 
  10: WHERE [UserId] IN (
  11:     SELECT u.[UserId] 
  12:     FROM [dbo].[Users] u 
  13:     LEFT OUTER JOIN [dbo].[UserPortals] up ON u.[UserId] = up.[UserId] 
  14:     WHERE up.[PortalId] IS NULL
  15: )

Well, that didn’t work so well.  What I failed to notice is what you might not have as well.  Super User accounts are not associated to a portal.  So the previous query would have deleted all of those users as well.  D’oh!  Luckily, I backup my database before I do anything like this, so I just restored it real quick. 

To delete all of the soft deleted users from the other portals, we need to adjust the previous query to filter out the super user accounts.

   1: DELETE FROM {databaseOwner}[{objectQualifier}Users] 
   2: WHERE [UserId] IN (
   3:     SELECT u.[UserId] 
   4:     FROM {databaseOwner}[{objectQualifier}Users] u 
   5:     LEFT OUTER JOIN {databaseOwner}[{objectQualifier}UserPortals] up ON u.[UserId] = up.[UserId] 
   6:     WHERE up.[PortalId] IS NULL AND NOT u.[IsSuperUser] = 1
   7: )
   8: -- OR -- 
   9: DELETE FROM [dbo].[Users] 
  10: WHERE [UserId] IN (
  11:     SELECT u.[UserId] 
  12:     FROM [dbo].[Users] u 
  13:     LEFT OUTER JOIN [dbo].[UserPortals] up ON u.[UserId] = up.[UserId] 
  14:     WHERE up.[PortalId] IS NULL AND NOT u.[IsSuperUser] = 1
  15: )

Viola!  That did the trick.  All of the goodness, none of the oversights.  I hope this helps you too!

Active Modules, Inc.
Tuesday, March 09, 2010 4:08:27 AM
This is the first major release for Active Forums in over a year.  I know there has been some confusion between Active Forums 4.2 and 5.0.  I want to clear a few things up and make sure we set some expectations prior to the release. 

Active Forums 4.2 is not a replacement for Active Forums 5.0.  Active Forums 4.2 fixes two major aspects that will not be visible as features.  First and foremost is performance.  Active Forums has always been known for the fastest and most stable forum solution for DotNetNuke.  Active Forums has also been known for the very flexible and granular security options.  With Active Forums 4.0 we implemented a new security model to address a limitation with the number of roles that could be assigned to a security option.  This revised security model proved to have some challenges with larger sites.  After several patches we were able to get the performance back up to normal standards.  However, performance still wasn't quite what we had with Active Forums 3.7 with larger sites.  Active Forums 4.2 takes the best parts of the security model 3.7 and 4.0 to give us the best performance with the most flexibility.  Next we needed to address forum security and how it relates to Groups within Active Social. 

Due to a limitation in DotNetNuke with the number of roles to which a person can belong, we needed Active Forums to see Active Social Groups as a security role.  We also needed Active Forums to see the difference between a Group Admin and a Group Member.  This also meant that the Active Forums Security admin needed to be able to accommodate Roles, Active Social Group Admins, Active Social Group Members and individual users.  In addition, we wanted to provide the flexibility of inheriting features and security for forums belonging to an Active Social Group.   While these changes will not be visibly apparent to most people, they are extremely important to the overall usability and the future capabilities of both products.

Active Forums 5.0 is still at the top of our priority list and I will be posting more about that release shortly.  Full release notes for Active Social 1.5 and Active Forums 4.2 will be available within the next couple days.
Active Modules, Inc.
Tuesday, March 09, 2010 3:07:57 AM
We are just a couple days away from releasing Active Social 1.5 and Active Forums 4.2.  One of the main goals for this release was to make the setup process for Active Social even easier.  We want you to have your site up and running quickly; not overwhelm you with dozens of module options.  

The Quick Start Wizard will provide you with 3 options: Simple, Standard and Expert.  If you select Simple or Standard everything will be configured for you.  This includes creating the appropriate pages, adding the modules to the page, configuring the necessary settings and even configuring Active Forums. 

This gives you the ability to have Active Social completely installed and ready to use with just 4 mouse clicks.   Now a process that could easily take 20 minutes, not counting reading the documentation, can be done in less than 5 minutes.






The St. Louis DotNetNuke Blog
Monday, March 08, 2010 5:22:12 PM

 This month we have a special speaker for our monthly St. Louis DotNetNuke User Group meeting.

This months speaker is Brandon Haynes, who I had the pleasure of meeting at last year's DotNetNuke Connections event in Las Vegas. He is an excellent speaker and an active, knowledgeable member of the community, so I hope you will be able to attend.

Of note this month, we're planning to make available a higher quality broadcast of the meeting. We'll be streaming from Brandon's computer (showing his slides,demos etc directly) with a "picture in picture" of Brandon speaking in the corner of the video.

This will be the first attempt at this arrangement for an actual meeting, but we've done some testing and are excited about the results so far. I believe this will bring our online viewers much nearer to a first class experience.

Help show your support for DotNetNuke in St. Louis and around the world by participating online! You'll be able to find our stream on our Bambuser channel and if you check the website the day of the meeting you can find our GoTo Webinar information.

About Brandon:

Brandon Haynes is a member of the DotNetNuke core team, and serves primarily by providing security-related and organizational guidance. He is the chief executive officer at Everysport.net Inc., which delivers enterprise resource planning, web-presence, e-commerce, and integration-related functionality to recreational organizations. With more than twenty years of experience in software development, Brandon’s professional interests are currently focused on the nexus between intellectual property law, technology, and business. He is currently pursuing a graduate degree at Harvard University.

 

 

Joe Brinkman
Monday, March 08, 2010 12:40:45 PM

We-Want-You As I indicated last week, I am pleased to announce the Call for Speakers for the 2010 DotNetNuke Connections conference.  Once again, this years conference will be held at the Mandalay Bay in Las Vegas from November 1st through the 4th with pre and post-conference training available as well. 

We could not do this show without our speakers and we have been fortunate in the past to have had some great session proposals by many well respected speakers.  Some of those speakers have been selected to present their sessions and unfortunately some of them have not been.  Such is the nature of any conference.  As usual we will continue to look for new speakers to bring fresh new topics to the conference.  So if you have submitted sessions in the past then I would encourage you to submit again.  If you have public speaking experience and some great ideas for sessions then I would invite you to submit your sessions as well.

Remember that all speakers will be required to present at least two sessions.  So make sure you submit plenty of session abstracts to improve your odds of getting selected.

Speaker Benefits

Every speaker at the DotNetNuke Connections conference will receive 4 nights of lodging at the Mandalay Bay Casino and Hotel along with free conference registration. Conference registration will allow every attendee full access to the expo hall, and all sessions at the DevConnections and DotNetNuke Connections conferences. (Pre and Post conference training days are not covered in the complimentary registration).

The Mighty Blog
Sunday, March 07, 2010 5:20:00 PM

It was less than a year ago that I created the Lightbox Gallery Module, as a proof of concept for using jQuery in a DotNetNuke® module.  It has been quite popular considering I only ever expected those who attended my code camp sessions to enjoy it.  Since its first release, it has had over 1600 downloads!  I am sure that less than 50 people have physically attended those sessions, so that number is staggering for me.  That being said, I am pleased to announce that I have another release ready for you to use and abuse.

If you don’t already know, Lightbox is the highly interactive method of displaying pictures on a website.  The thing that separates Lightbox out from the uncountable others is that its fast, user-friendly, interactive, very stable, and the average website visitor has fun using it.  This method of displaying pictures has been around since long before jQuery came into our hearts.  When jQuery came along, it just made it that much easier and more fun for us to implement as designers and programmers.

Aspect Ratio Thumbnails

The latest release of the Lightbox Gallery Module has two significant updates along with several bug fixes.  First, the algorithm used to generate your thumbnails for you has been updated to maintain the aspect ratio of the original image.  Long gone are the days where your thumbnails look stretched in one way or another.  Don’t rush off to upgrade just yet.  You will need to force the module to regenerate your thumbnail images.  I didn’t make this a feature.  This is something you’ll have to do manually. 

Go into the folder that have your images in it, and find all of the images that have –thumb appended to the filename.  For example, if you have a file named "My_Vacation_001.jpg”, the thumbnail would be “My_Vacation_001-thumb.jpg”.  Delete all of the thumbnails.  Be very careful to not accidentally delete any of your actual images.

WillStrohl Lightbox Module: Album View

Extra Span Wrapper

The original markup left little room for CSS designers to alter how the thumbnails were rendered.  One fix to this was to add another SPAN tag to the markup to give CSS designers more to chew on.

jQuery and CSS people alike will enjoy that I also included more ID’s and class names to assist with manipulation of the rendering.s

New Lightbox Provider

The lightbox jQuery plugin that I originally used was the Balupton Edition.  I chose this one for two reasons: (1) I was running out of time to complete my demo; (2) It was the first plugin that came up in my initial web search.  I have been able to check out several other plugins since.  I keep coming back to one in particular.  It doesn’t tout itself as a lightbox plugin, but rather a lightbox alternative.  I have opted to replace the original plugin with the Fancybox plugin.

Why?  Simple.  The first one included (removable) text about whose plugin it was.  I never like any software that does that.  It was also broken.  The arrow navigation didn’t work without some extra effort.  When I use any plugin for any type of system, I expect it just to work.  I don’t want to have to make it work.  Fancybox just works!  And it works INCREDIBLY well!

This plugin comes with many options, most of which I have exposed in the album settings.  I left it open to allow these settings to be per album, and not per module instance so that it maintains the most flexibility.  Among these options are the type of animation, the animation speed, position of title, and more.  Also, the right and left arrows on your keyboard now work, along with the escape key (unless you disable it in the settings).

WillStrohl Lightbox Module: Lightbox View

There is much to talk about, but I will leave the rest for you to check out and try it for yourself.  The only thing that I ask is that you review it.  Please submit a review and rating on CodePlex, and on DotNetNuke® Forge (on page 2 right now).  Also, you can see this module in action here on this site.  Just go to my Photos section.

The Mighty Blog
Friday, March 05, 2010 4:21:00 PM

ODUG Meeting I have blogged about some community things here and there, and I will begin blogging about them more starting right now.  My first meaningful post in this area talked about how to run a user group, and it was more generic in its discussion.  It could apply to any user group.  This time, I am talking about how to start a user group, and I am focusing this discussion on DotNetNuke® user groups specifically.

Honestly, I had forgotten that I wrote the blog post I just mentioned.  I was only recently reminded about it by Bill Walker.  That may sound like it came out of left field.  Why would Bill Walker, of the DotNetNuke® Corporation,  remind me about that specific blog post on my site?  It’s because I have been working with Bill Walker and Scott Willhite to help develop a program where the DNN Corp will be lending a helping hand to user groups that focus on DNN.  What began as an excellent idea has already had action.  Together, we formed a user group leaders committee with other user group leaders and just had our first meeting a couple of weeks ago.  But that’s all I can say about that for the time being.  You can be assured that I will let you know how this is going as soon as I can.

I get comments and e-mails all of the time from people who want to have a DNN user group in their area, and they all begin by asking the same thing.  “How can I start a DNN user group?”  This question is simple enough, but it appears to always generate fear within the person asking this question.  This is okay and it’s expected.  After all, fear comes from the inside of us when we do not know what to expect from a situation.  I hope to lower that level of fear for you with this blog post.

Plant the Seed

You have the idea.  You want the idea to become something more.  You want a user group in your area that you can attend and help yourself and other DNN community members.  But what’s the first step?

The first step is to look on the DNN user group wizard to see if your area already have a user group created.  If not, create one.

In many areas, you will find that a user group was created but nothing was done with it.  There are numerous user groups that were started in the wizard, but for any number of reasons nothing else was done.  In these instances, it is necessary for you to attempt to contact the person listed as the leader.  If you cannot get in touch with them, let me know until there’s a better system in place.  I can help you move this step along.

Setting up the user group in the wizard is not a requirement though.  Do not let this stop you from moving forward with your planning.

Begin announcing your intentions to start the user group in the DNN user group forum and on any social networks you’re on.  You never know where your fellow DNN’ers are going to come from.  Make sure you let people know that you want to start the user group and gather the names and e-mail addresses of anyone interested.  If you were able to start the user group in the wizard, have them sign up there.  If you are able to start a user group website even before your first meeting, have them register there too.  Basically, you are building the foundation to hold your first meeting.

Be diligent with this step.  In the first year or more of a user group’s existence, you will need to be the walking, talking billboard advertisement for the user group.  Do not be afraid to talk about it to everyone, and never assume that you’re talking about it too much.  It’s like most traditional media.  One commercial is never enough.  You have to repeat the commercial over and over again to get the desired effect.  If no one tells you that you’re talking about it too much, then you’re not doing your job.

Mark Off the Garden

ODUG's First Meeting Picture I find that the previous step is the easiest, and most people I talk to can handle that step just fine.  The excuses and other problems begin with the next step – holding your first meeting.  The most common excuse I hear with this is that people are not sure if they have enough people to hold the first meeting.  This is just silly.  There’s no rule to how many people that you need to hold a meeting.  Just set a date and advertise it everywhere you can, as often as you can.  You will reach different people at different times.

Another reason I head behind not holding the meeting is not having a place to meet.  While this is not an easy task, it is probably easier than you think.  There are a variety of ways to get a meeting place.  First, begin by asking those who are already in your mailing list if they have a venue that they can offer.  If you are unable to find one, just meet at a coffee place or sandwich shop for the first couple of meetings.  Once you are ready to have a speaker, you can often find places to meet through the local technical recruiters, library, and other businesses that have large conference rooms.

At the first 1-3 meetings, talk to those people that show up about what they want out of the user group.  Pay special attention to what areas of DotNetNuke® they specialize in and what their talents are.  They are the people that you need to plan meeting topics for, and are potential speakers.

Fertilize the Seed

After the meeting format is determined and you begin to schedule speakers, you will have other things to worry about.  New and important questions will start to arise.  Should I charge a fee for the meetings?  Do I need a sponsor?  How do I get one?  How do I recruit speakers?  How can I get door prizes? 

There is no one-size-fits-all formula to starting and maintaining a user group.  The success of the user group depends entirely on those people that attend the meetings.  You need to plug-in to those people, and those at other user groups.   You will need to become a talker.  You will need to let everyone you talk to know about what you’re doing.  Your passion will show, and they will begin sharing your conversation with others in the .Net and DNN community. 

It is my opinion that you should never charge a fee for the user group meetings.  This will stifle the growth of the user group severely.

You do not need a sponsor for the user group unless you want either of two things: (1) free food and drinks, (2) door prizes.  Sponsors are typically very easy to find and get involved.  Begin with local technical recruiters for the food and drinks.  They love to get their people and branding in front of technical audiences, no matter how small.

Recruiting speaker is not easy since most people have a fear of speaking in front of an audience.  This fear for those people just gets more powerful when that audience is full of your peers.  It is for this reason that many user groups begin with the leader speaking a lot, and have chalk talk meetings. 

Stan Schultes talking to the ODUG

The secret to getting speakers is once again talking to people.  Find out what your members are doing in their day jobs and for recreational programming.  They love to tell people about their newest projects.  This is a perfect ice breaker to ask them to show everyone in the user group what they just told you at the next meeting.  Presentations do not have to last through the duration of your meeting.  Sometimes having more than one speaker can be better than just one.

Watch the Seed Grow

Once you have an idea of how the meetings are going to be, begin also asking for volunteers.  You may want people to help with the prize raffles, sending of newsletters, getting sponsors, getting speakers, and so on.  Getting these people involved and giving them a sense of ownership over the user group will only help grow the group and encourage other members to help in various ways.  You shouldn’t be doing everything yourself.

If you follow this advice, you should be seeing your user group membership and activity grow more and more each month.  I hope I have inspired you to start your own user group.  Please let me know by leaving a comment below.

The Mighty Blog
Thursday, March 04, 2010 3:06:00 PM

jQuery I didn’t notice it when it happened, but jQuery has had a couple of stabilization releases since the popular 1.4 release.  The updates are pretty significant and I have seen performance increases that were noticeable to the eye with several implementations after upgrading.  I would highly recommend upgrading your current jQuery core scripts if you’re not running version 1.4.2.  Here are some tips for those of you running jQuery in your DotNetNuke® sites.

First of all, as I discussed in this blog before, upgrading the jQuery core script in your DNN site can be as easy as overwriting the existing jQuery file.  Since it was covered there, I won’t go into detail about that again, but I will talk about the current versions.

Aside from the many bug fixes and significant performance enhancements, here are some of the updates that have been made to jQuery since version 1.4:

Even if there weren’t any new features, the benchmarks show that with a 2x improvement in speed since version 1.3.2, your UI enhancements would benefit tremendously.

You can tell which version of jQuery you’re running by looking at your Host Settings page.  Find it near the bottom of the Advanced Settings section.

Host Settings > Advanced Settings > jQuery Settings

You can upgrade the DNN jQuery file by following the advice in my earlier blog post.  However, what if you’re using the Google hosted version?  It is not very clear how to upgrade that, although it could be figured out.  Unfortunately, DNN Corp is not updating that setting even when they upgrade the jQuery version included with DNN.  By default, the hosted URL is:

http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js

If you want to upgrade to the newest hosted version, just change it to the following, and check the “Use Hosted jQuery Version” checkbox.

http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js

Click the Update link at the bottom of the page, and you’re running the newest jQuery version.  Congrats!

Technorati Tags: ,,,
The Mighty Blog
Thursday, March 04, 2010 12:57:00 PM

Will Strohl at the 2010 South Florida Code Camp I will be presenting a webinar later this month titled, “DotNetNuke® Essentials: Simple Solutions for Building Your Website.”  I have been very excited for quite some time to be able to announce this.  The webinar will focus on DotNetNuke® from the beginner’s perspective.  This is not meant for the module developers, programmers, skinners, etc.  This webinar is more focused on your content management and website administrators.  However, they need not have had any DNN experience to participate or follow along.

This webinar is meant purely for the beginners, and those who are interested in using DNN.  Out of all of the presentations and training with DNN that I have ever done, this is the type of presentation I love the most.  It is so much fun and rewarding to see the reaction people have when they see what DNN can do!  You can almost see them leaning out of their seats to go and try it that very moment.

Unfortunately, you don’t get the same kind of instant feedback during webinars since I cannot see you, but it’s still a blast!

The DotNetNuke® Essentials webinar is broken up into 3 sections.

How To Get Started

We will begin where everyone does, with installation.  I love this area too.  It’s so cool to get feedback from people that had been told or thought that DNN was just too difficult to install.  It really isn’t.  The concept is just not easy for some people to grasp.

Once DNN is installed, we are going to walk through the common ways that you would need to use to update your DotNetNuke® website.  We are going to change the design of the DNN site, and then wrap this first section up with an upgrade.

Managing Content on a DNN Created Site

The next section goes a little deeper in detail in terms of managing DNN website content.  It takes much more than just adding some text to a page.  There are various situations where your content needs to do a little more than just display some words.  You might need to move it, export it, import it, and more. 

Once we go over the common ways to manage content, we will explore the Admin menu in detail.  There are several nooks and crannies in the  Admin area that many new DNN administrators may not get to for a while.

Best Practices for Website Administration in DotNetNuke®

We will be wrapping this presentation up by reviewing some of the best practices out there for administrating your DNN websites. 

The webinar will end with a question and answer period where I will answer any questions that you may have about DotNetNuke®.  Go ahead.  Throw me a curve ball!  :)

If that sounds good to you, then make sure you sign up.  But your benefits don’t end there.  You will also be receiving a downloadable handout that outlines everything we will be talking about, and can be used as a cheat sheet following the webinar.

Does that sound too good to be true?  It’s not.  The webinar is not free – but it’s cheap.  For $199.00, you get 90 minutes of exclusive and interactive DNN training in the comfort of your home or office.  You will have the opportunity to ask any DNN questions that you want.  You’re going to have a DNN cheat sheet that you download before the webinar and can use as much as you want after the event.

DotNetNuke® Essentials: Simple Solutions for Building Your Website

I hope to see you there!  In the meantime, let me know if you have any questions.

Tricky Coder
Thursday, March 04, 2010 4:46:00 AM
Introduction
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.

Let's Start:
Let's start by creating some set of controls and css just like you see in the image below.

Skinnable Module Image 1

  • Create a Module from the control in the root directory (View.ascx)
  • 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.
Further Improvements:
  • 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.


Source Code:

You can download source code from here.
iFinity.com.au - Bruce's Blog
Wednesday, March 03, 2010 10:44:36 PM

File this one under ‘you learn something new every day’.

I may be the last person to know this, but example.org, example.com and example.org are domains reserved for use in documentation.

I tend to use ‘mysite.com’, ‘domain.com’, ‘yoursite.com’ and anything else.  I usually try and remove automatically generated hyperlinks because I don’t like to feed link juice to the owners of these domains.  But it still happens.

Then today I accidentally clicked on an automatically generated example.com Url, and found out it’s reserved for documentation.  No more link-juice bleeding from documentation and discussions about Urls.  Try it! http://example.com

I’m off to do some find/replace.

Joe Brinkman
Monday, March 01, 2010 5:01:16 PM

BetaFish Over the past several months we have been making some significant changes in our release process.  We have made a commitment to monthly releases, opened up our code repository and in general have made a move to be more transparent.  During this same period we have also made some changes to our development processes to separate our feature development from our bug fixes.  The DotNetNuke 5.3.0 is our first quarterly feature release that is benefiting from this new development process. 

In addition to splitting out our feature development, we are also using a more formal Scrum methodology and have broken down our features into different code sprints.  This process allows us to deliver a set of features that can stand alone  and be tested independent from other features or enhancements which might be delivered in later sprints.  This flexibility also enables us to be a little more fluid with our quarterly releases which are often timed to coincide with major marketing events.  This Alpha release is a merge between the 5.2.3 codebase and DotNetNuke 5.3.0 Sprint 1 development branch and includes the following features:

  • Taxonomy – The base taxonomy feature includes a complete API and UI for creating and managing site taxonomies.  The core taxonomy supports both flat and hierarchical taxonomies and allows for the creation of multiple vocabularies.  Over time we anticipate that many modules will support the core taxonomy API rather than relying on their own categorization systems which are not portable across modules.
  • Sitemap Provider – The new sitemap provider allows for greater control over the sitemap and allows individual modules to create a custom provider for their content.  Unlike previous sitemap implementations, this feature delegates generation of the sitemap down to the individual module which has more knowledge over the URLs that are managed by the specific module or module instance.  Once implemented, modules like blog and forums will be able to fully participate in generation of the sitemap which will aid in search engine optimization.  The alpha release includes a new Sitemap module, but there is no specific page created in the admin menus.  To test this new functionality, you will need to create your own page and add the Sitemap module to the page.
    NOTE: Due to a packaging issue the SiteMap provider is only available in the Source Code package.  This will be corrected prior to the Beta release.
  • Messaging Provider – The new messaging provider incorporates a messaging store and core API for delivery of both synchronous and asynchronous messages.  The messaging provider is extensible and will allow for the creation of multiple delivery options.  The alpha release includes a new Messaging module, but there is no specific page created in the admin menus.  To test this new functionality, you will need to create your own page and add the Sitemap module to the page.
  • Telerik Control Wrappers – Beginning with DotNetNuke 5.2.0, we started shipping Telerik ASP.Net AJAX Web Controls with DotNetNuke Community Edition.  The license only allows developers to use the Telerik controls if they have a separate developer’s license (which is also included as part of Professional Edition) or if DotNetNuke included specific wrappers for the Telerik controls.  In 5.3.0 we are delivering wrappers for a number of Telerik Controls.  These wrappers are included as part of the new DotNetNuke.web assembly.  The wrappers include:
    • DnnComboBox (RadComboBox)
    • DnnGrid (RadGrid)
    • DnnListBox (RadListBox)
    • DnnMultiPage (RadMultiPage)
    • DnnTabPanel  (RadMultiPage, RadTabStrip)
    • DnnTabStrip (RadTabStrip)
    • DnnTextBox (RadTextBox)
    • DnnTreeView (RadTreeView)
    • DnnWindowManager (RadWindowManager)

I am happy to announce that DotNetNuke 5.3.0 Alpha is now available for download.  You can find out more information on the Beta Testing page on DotNetNuke.com.  As an Alpha release, included features may not be fully implemented (as noted some are missing pages or menu items) and some features still have UI elements that are being worked on as part of our upcoming Beta release.  

Please note: Do not apply pre-release software to production websites.  Always ensure you backup files and data before attempting any upgrade.  You will not be able to upgrade automatically from one pre-release build to another, or from pre-release builds to the final release. Alpha and Beta testing software is provided for testing purposes only.

The Mighty Blog
Monday, March 01, 2010 4:40:00 PM

Most Popular Blog Entries One of the new features in the updates in my website is the “Most Popular Entries” area at the bottom of each page on my site.  It gets attention for a few different reasons.  First, everyone wants to know how I did it.  Next, people want to know what determines the most popular blog entries.  Finally, people want to know if I would blog about it.  I had always planned to, but since you asked…

First of all, I need to give a quick disclaimer.  I had long forgotten the power behind the XML and Reports Modules.  I used to use them all of the time, but I have been in development mode for about a year now, leaving little room for playing with these two modules like I used to.  Luckily, Joe Brinkman brought it all back to me with his recent visit to the Orlando DotNetNuke® Users Group (ODUG). 

Let’s answer the easiest question first.  The most popular entries are determined by the number of comments left on a blog.  So, if you want to “hack” the results in this module, leave a ton of useful comments on one of m blog entries.  (I say “useful” because I won’t approve any comments that appear to be spam or link builder comments.)  Unfortunately, I didn’t notice any existing queries that will feed me back the information that I need, so I wrote a custom query to be used with the Reports Module.

   1: SELECT TOP 5 
   2:     b.[BlogID],b.[EntryID],b.[Title],b.[Entry],b.[AddedDate]
   3:     ,b.[Published],b.[Description],b.[Copyright],b.[PermaLink], 
   4:     (SELECT COUNT(c.[CommentID]) FROM [dbo].[Blog_Comments] c WHERE c.[EntryID] = b.[EntryID]) [Comments]
   5: FROM [dbo].[Blog_Entries] b 
   6: WHERE b.[Published] = 1 
   7: ORDER BY [Comments] DESC

Hopefully, you’re still paying attention.  I say that because this query has a limitation that you may or may not care about.  It pulls the entries from the entire site, and not just from a specific blog.  You’ll have to adjust the query if that’s what you’re looking for.

Reports Module: Show XML Source Next, I chose to “View XML Source” in the module to show me the output that I’ll be dealing with.  This is an incredibly powerful feature in the Reports Module. as it allows me to write XSL against a known datasource format.  You simply click the link for it, and then begin using your favorite XML/XSL editor.

Here is an example of my XSL using the same methods, and Visual Studio as my editor.

   1: xml version="1.0"?>
   2: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   3:     <xsl:template match="/DocumentElement">
   4:         <ul class="wns_news_list">
   5:             <xsl:for-each select="QueryResults[position() < '6']">
   6:                 <li class="Normal">
   7:                     <a href="{PermaLink}">
   8:                         <xsl:value-of select="Title" disable-output-escaping="yes"/>
   9:                     a>
  10:                 li>
  11:             xsl:for-each>
  12:         ul>
  13:     xsl:template>
  14: xsl:stylesheet>

The XSL is used in conjunction with the datasource to render out an unordered list (UL) to the web browser.  You can notice that I make sure to include class names to make the UL manageable through CSS.  Which leads me to the next snippet!

   1: ul.wns_news_list li { 
   2:     border-bottom:1px dashed #FFFFFF; 
   3:     list-style-type:none; 
   4:     padding:2px 0 5px; 
   5: }

The CSS used with this function is actually very simple.  All we do is remove the bullet points, add a separator, and a bit of padding for aesthetics.

Finally, it’s time to put this all together!  Save the CSS in your skin, or the Portal.css.  If you choose to save it in the Portal.css, you can use the Site Settings to update it.

Now, add an instance of the Reports Module to the page.  Paste the T-SQL query from above into the Query field in the module settings.  Further down, you are given the opportunity to select XSL Transformation Visualizer.  When you do, you can upload or choose XSL to run against the query.  I would suggest saving the XSL from above into a local file, and upload it here.

Click the Update link to save your changes.  With the CSS, T-SQL, and query in place, you should see a pretty nice looking list of your most popular blogs!

Joe Brinkman
Monday, March 01, 2010 11:02:01 AM

CallForSpeakersBlog

We are once again in the heart of the planning season for the DotNetNuke DevConnections and SDC conferences. It is that time of year when we ask all of you to submit your session abstracts for this years DotNetNuke North American conference.  Later this week we’ll be opening up the official Call for Speakers on DotNetNuke.com, but I wanted to take the opportunity to give speakers a heads up so they could start preparing their abstracts so that they are ready once we open the submission form.  Like the last three years, we are accepting  session submissions in 4 different topic areas:  Development, Design, Administration and Open Source.

Development – These are basically session dealing with code.  Whether it is topic on module development or building custom providers or dissecting the internals of DotNetNuke, anything that would appeal to the software coders is fair game.

Design – This topic area is targeted at the web designers.  This goes beyond just talking about skins.  It also includes topics like SEO, and accessibility and can even include Localization.  These sessions should focus more on the aesthetic and usability aspects of building a DotNetNuke website.

Administration – This topic area is where speakers present sessions that address the needs of the end user.  How do they install DotNetNuke, how do they configure it for a Web Farm or to run in the cloud(this is different that writing a module that uses cloud services), how can they improve site performance.  These sessions really focus on the day to day use and administration of running a DotNetNuke website.  This topic area is also a catchall for any business related topics.

Open Source – This final topic area is designed to show attendees how they can incorporate other Open Source tools into their development, design and administration tasks.  It might be a topic on using Watin for testing or using GIMP and Paint.Net for creating your skin elements.  The idea here is to expand the attendees view of the Open Source community and to bring in fresh and complimentary ideas from other Open Source projects.  These sessions should still be relevant to DotNetNuke in a very meaningful way.  A topic showing all the wonders of using Wordpress for blogging is not appropriate.

Frequently Asked Questions.

Q. What are good topics?

A. Every year I get asked by speakers as to which topics would be good choices.  There is no good answer because we have to balance topics so that we cater to a wide variety of attendees.  We need topics for beginners as well as advanced users.  We need sessions on staples like security, but we also want sessions that cover cutting edge topics like hosting DotNetNuke in the cloud.  At the end of the day, speakers need to ask themselves this question – Would anyone pay a couple thousand dollars to attend your session?  Every user who attends one of the DotNetNuke conferences will spend a couple thousand dollars on lodging, transportation, meals, time off from work and conference registration.  Will your session appeal to a large enough number of attendees and make them feel like they are getting their moneys worth?  Will your session appeal to employers who will ultimately make the decision whether to send their employees or not?

Q. How can I improve my chances to get selected?

A.  Every year we have speakers who submit really good topics.  Unfortunately, they only submit one or two sessions.  In order to keep our costs inline with conference revenue, we require speakers to present multiple sessions.  If you only submit one or two sessions you significantly reduce your chances of getting selected.  If you only submit sessions on one specific topic area, you likewise limit your chances.  The most successful speakers have a range of sessions that they can deliver.  For example, if you are a designer, consider submitting sessions from three or 4 topic areas like SEO, XHTML compliance, CSS frameworks, or skinning basics.  If for some reason the selection committee did not like your SEO topic, then you still have other options that give the committee some flexibility. 

Once you have identified key session topics, spend a little time developing good session abstracts.  The goal is to convince readers that your topic is both relevant and interesting.  You may have the greatest presentation ever created and be an awesome speaker, but the selection committee won’t know that unless you can convey in one or two paragraphs what you plan to talk about and why people will care.  Spend a little time reviewing the session abstracts from  previous conferences.  Speakers will often spend weeks and weeks developing material, so don’t shortcut the process and only spend 5 minutes on the session abstract.  This is the résumé for your presentation.  Make it count.

Q. Who Should Submit?

A.  Every conference relies on the quality of its speakers and as proven over the last three years, the DotNetNuke community has a lot of great speakers. While we anticipate that some core team members will want to speak, we are also interested in having speakers from the broader DotNetNuke community as well.  So please don't hesitate to offer your speaking services.  Even if you didn't get selected in past years, please submit sessions.  Every year we make a concerted effort to bring in fresh speakers who did not speak at the prior year’s conferences.

Q. How do I Submit my Sessions?

A. Instructions for submitting your sessions will be provided when we officially open the call for speakers for the two major conferences.

Q. What do I get if I am selected to speak?

A. In the past we have provided free conference registration and lodging for speakers.  We are still working on the final details for this year’s conferences and will announce the benefits when we officially open the call for speakers.

Q. When and where is the Conference?

A. This years DevConnections conference is being held in Las Vegas, Nevada at the Mandalay Bay Hotel and Casino from November 1st through the 4th.  There will also be pre-conference and post-conference workshops available.

Additional conference details will be posted on the DotNetNuke website as they become available.

Active Modules, Inc.
Monday, March 01, 2010 10:22:59 AM
We are now running Active Forums 4.2.  This release contains a major update to performance in relation to security along with a handful of bug fixes.  This release also has several improvements for Active Social integration; including the removal of the dependency on DotNetNuke security roles. 

We will be releasing Active Forums 4.2 and Active Social 1.5 at the same time later this week.

Thanks,
Will



DNN Creative Magazine
Monday, March 01, 2010 8:48:00 AM
March 2010

Welcome to Issue 54 of DNN Creative Magazine

Issue 54 - DotNetNuke Feedback, DataSprings Dynamic Registration, OWS Login and Twitter, RAD

In this issue we begin by demonstrating how to use and configure the DotNetNuke Feedback module. The feedback module allows the visitors of your website to send you feedback from a form in your DotNetNuke portal. We show you various options for configuring this module, including how to set it up so that a user can choose which department in a company to send feedback to and also how to allow users to submit testimonials and display those testimonials on your website.

Following this we cover the much anticipated part 2 of DataSprings Dynamic Registration module quick start guide. This tutorial demonstrates how to build more complex registration forms and interlink several registration forms together. This tutorial will enable you to create your own flexible custom registration forms to suit your own requirements.

Next, we continue the Open Web Studio tutorials, this month we enhance the OWS Login module that we have previously created by adding a "Remember Me" checkbox and a "Forgot Password" link. We also demonstrate how to create a Twitter module which pulls the search results from Twitter directly into an Open Web Studio module.

To finish, we have part four of the "How to Build a News Application with DotNetMushroom Rapid Application Developer (RAD)" article, where we demonstrate how to use Language Resource Files in the News application.



This issue comes complete with 15 videos.

Core Modules: 

Feedback Module
Feedback Module
(4 videos - 34mins)
Premium Modules:

DataSprings Dynamic Registration Module Part 2
 
DataSprings Dynamic Registration Module Part 2
(7 videos - 68mins)
Module Development Series:

Enhancing the OWS Login Module and Building a Twitter Module
Enhancing the OWS Login Module and Building a Twitter Module
(4 videos - 35mins)
Language Resource Files With DotNetMushroom RAD for full Localization
Language Resource Files With DotNetMushroom RAD for full Localization

View issue 54 to download all of the videos in one zip file




DNN Creative Magazine for DotNetNuke Web Designers
Covering DotNetNuke module video reviews, video tutorials, mp3 interviews, resources and web design tips for working with DotNetNuke.

In 54 issues we have created 549 videos!
Joe Brinkman
Monday, March 01, 2010 6:45:27 AM

dnntipsandtricksDotNetNuke recently moved to an Open Repository that is hosted on CodePlex.  As Phil Beadle recently noted, the synchronization process is now fully operational and is running nightly to ensure that the CodePlex repository mirrors our internal version control system.  Of course, having access to the source code and understanding how to use the source code to get to a working build is two different things.  The source code package that we deliver with each release is slightly modified from our own internal repository in order to minimize confusion for the community.  Over the years the core team has become accustomed to these steps, but for new people, getting DotNetNuke up and running from source code can be a bit daunting.  Hopefully I can help dispel the mystery and make it a little easier to understand why DotNetNuke source code is packaged in this manner.

NOTE:  For the remainder of this post I will assume that you are familiar with DotNetNuke and that your system is already configured.  The source code version of is not intended for people who are just getting started with DotNetNuke.  If you fall into this category then I would recommend starting with one of the install packages to better acquaint yourself with DotNetNuke.  If you use the install version with the Web Platform Installer, then it will ensure you have all the necessary pre-requisites installed.  For more information on installing DotNetNuke you should review the Installation Instructions or watch the Installation Webinar which are available on the downloads page.

The first step in configuring your system is to download the source code.  There are basically three methods for getting the source code:  1) Download the source code package from a packaged release (you can do this from the DotNetNuke Downloads page), 2) Download a specific changeset from CodePlex (each changeset includes the complete source code), 3) Download a version using SVN or TFS (see CodePlex for more information on how to configure your specific version control client).  Regardless of how you get the source code, once complete, you will have everything you need to get DotNetNuke up and running.  Once you have the source code, you will need to extract it to a directory on your system.

After you have downloaded and extracted the source code, you will need to configure the project website.  By default, the included solution file includes a reference to an IIS website at http://localhost/DotNetNuke_Community.  If you don’t want to alter the solution file then you will need to configure IIS with this application.  Open IIS Manger and add the DotNetNuke_Community application to the Default Web Site.  This application should point to the Website directory inside the directory where you extracted DotNetNuke as shown below.

Source-WebsiteDirectory

If you are going to use a different IIS website name then you will need to edit the Solution file to change the website reference.  You really only need to edit the full website URL but I like to keep everything consistent, so I edit all of the locations shown below (click to enlarge).

Source-WebsiteSolution

With the IIS application configured, you are now ready to open the solution file with Visual Studio.  Currently, we only support Visual Studio 2008.  We are working to ensure that DotNetNuke will work correctly with VS 2010 when it launches, but for now you will need to stick with 2008 unless you are comfortable with doing some exploration on your own.  The Source Package should work with Visual Web Developer 2008 without issues.

As Phil noted in his blog, the CodePlex source code version includes references to MSBuild community tasks and will show a warning dialog when first opening the solution file (technically, the error occurs when the individual project files are opened).  If you downloaded the source code from one of the official repositories, then you can safely ignore these warnings.  If however, you received the source-code from a third party, then you should proceed with extreme caution as running external tasks can pose a potential security risk.

Out of the box, the source code does not include a copy of web.config.  This often trips up new users.  Over the years we have changed the standard source code configuration to minimize the chance that someone would accidentally overwrite critical system information that is stored in web.config.  The source code package supports both new installations, as well as upgrading an existing source code installation.  As a result we exclude web.config from the package.  However, we do include both a development.config and a release.config.  The development configuration file is setup to run DotNetNuke in medium trust, with debugging enabled and with a “dnn_” object qualifier in the SqlDataProvider.  These settings will aid in development by ensuring that your code is portable across different DotNetNuke site configurations.  Any changes you make that run in this configuration are likely to work in any other supported DotNetNuke configuration.  To get up and running, you will need to copy either the development or release configuration files to web.config.

The last required step is to build the solution.  We do not include compiled assemblies for core projects in the versioned code. As a result, if you try to run the installation wizard before building the solution you will receive a compilation error.

Source-WebsiteError

If you have followed along and completed every step, you should now have a working version of DotNetNuke open in Visual Studio and ready to begin developing your own modules, providers, skin objects or other extensions. 

WARNING: While technically possible, you should avoid changes to the DotNetNuke core application source code.  Any changes you make may be overwritten by subsequent DotNetNuke versions and may result in the inability to upgrade to later DotNetNuke versions due to incompatibilities.

About these feeds

Here at DotNetNukeBlogs.com we are focused on providing you a single source for finding the best blog posts about DotNetNuke. We have a filtered collection of blog posts here that relate to DNN in some way. To get your own blog posts listed here please check out this page.

When you click on one of the posts aggregated in our site you will be taken to the page/website for that post, not here on DotNetNukeBlogs.com, but to the actual home of the original post.

Get added!

Why syndicate your content here? To reach the users who will benefit most from your blog! DotNetNukeBlogs.com prides ourselves in being the prime location for all DotNetNuke Bloggers and Blog Readers. You can add your blog to our site by visiting our Add Feed page, you must be logged into the site in order to access this page.

Copyright (c) 2010 DotNetNuke Blogs On DNN, For DNN

DotNetNuke and DNN are trademarks of DotNetNuke Corporation