By Joe Brinkman on 5/24/2010 12:11 PM

Social_Scapes_Logo Over the last 18 months I have been working on a series of DotNetNuke extensions aimed at providing Twitter support in DotNetNuke.  The effort started with Monitter4DNN which is a DotNetNuke Module for displaying an auto-updating list of tweets based on some search criteria.  The search terms are completely configurable by the module administrator.  This module was subsequently renamed to SocialScapes which is more indicative of the long-term vision for the project.

SocialScapes is envisioned as a social framework with a supporting suite of modules, widgets and mobile applications.  Ultimately the goal is to incorporate data and services from multiple social networks, with the core platform running on DotNetNuke.  The administrator should be able to configure the platform through a set of plugins to interact with one or more social platforms. 

By Joe Brinkman on 2/13/2010 7:42 PM

jQuery4Asp.NetThis past year I had the pleasure of being asked by Jim Minatel at Wrox to write a Wrox Blox covering the basics of jQuery for ASP.Net Developers.  Having co-authored 2 previous books, I realized that writing a book, regardless of the size, is a lot of work, but something that I also find gratifying once you have a finished product.  Over the last 2 years, I had gotten more and more into jQuery and really loved its simplicity and power, and thought that this would be a great opportunity to share some of the knowledge I had gathered.

For those that are not familiar with the term, a Wrox Blox is a short e-book (30+ pages) which covers a narrow topic.  They are not intended to be an exhaustive discussion of a topic, but rather to cover one particular aspect of what is often a much broader subject matter.  Because of their narrower focus and the fact that they are only available as e-books, Wrox is able to keep the cost of the Wrox Blox very low.  Wrox Blox generally include a lot of code examples rather than being a purely theoretical discussion of a topic.

After a couple of months, several missed deadlines and a page count that greatly exceeded what was originally requested, I finally finished the Wrox Blox which was subsequently published last September.  I am very pleased with the final product which comes in at 66 pages and is a great introduction to jQuery and ASP.Net.  jQuery for ASP.Net Developers  includes sections on the jQuery API and its usage, and on using jQuery with ASP.Net WebForms and ASP.Net MVC frameworks.  I had a great time writing the book and like all writing assignments of this size, it really forced me to dig into jQuery much deeper than I had previously.  It also gave me a greater appreciation for why Microsoft chose to ship jQuery with Visual Studio 2010.

By Joe Brinkman on 2/10/2010 12:00 PM

dnntipsandtricksI don’t know if any else is like me, but occasionally I will run across something on a website and think that if only I could make some little tweaks to the site, that I might be able to make it more suited to how I think.  Maybe it is just a bit of CSS that might clean things up a bit, or maybe if I could just re-arrange things on the page I would have an easier time finding that awesome feature that always seems to get tucked away in a hidden corner of the page, never to be seen again.

I was on the DotNetNuke forums this morning and noticed that Chris Paterra had added a new “Quick Reply” feature.  This is a simple textarea and submit button that was added to the bottom of the forums page.  The nice thing about the quick reply is that I don’t always need fancy html or the ability to pin the post or any of the other features that are on the regular reply page.  Using the new Quick Reply, I can easily post a response without any visible postbacks.  This is a much nicer Web 2.0 experience and something that I am sure many users will love.

By Joe Brinkman on 12/29/2009 1:39 PM

dnntipsandtricks In late 2007, Nik Kalyani created what I think is one of the coolest new DotNetNuke features to arrive in quit a while – DotNetNuke Widgets.  Nik recently started work on a multi-part blog series on Widgets.  As he explains, DotNetNuke Widgets are a powerful client-side counterpart to the server based extension model exemplified by DotNetNuke Modules.  Where a module generally consists of code that is executed on the server, a widget primarily consists of JavaScript to be executed in the browser.  This is not to say that a module can’t include rich client functionality or that widgets can’t include server-side code:  indeed both options are certainly possible.   With widgets the focus is on building functionality that is easily added through custom object tags.  You can emit these tags from a Module, in a Skin or directly in an HTML module.  Anywhere you can add HTML to the page output, is a place you can add a widget.

With any new technology there is always the question of why someone would use it.  Why would someone not just add custom JavaScript or use an existing widget framework (there certainly are a lot to choose from)?  I have used a number of widgets and scripts on my pages and in general I don’t find that they are particularly geared for use by many of the non-technical users who ultimately edit and maintain DotNetNuke websites.  Most widgets and scripts require a certain level of technical knowledge by the end user, and in many cases, they impose some dependency on a third party website.  DotNetNuke Widgets attempt to resolve these issues and many others.  Since widgets are first class citizens in the DotNetNuke extensibility model, they can be packaged, versioned and installed just like any other DotNetNuke extension.  This eliminates any dependency on a third party website since many widgets are fully self-contained.  Also, because the widget is created on the page with a simple Object tag, they are much easier for a non-programmer to understand and add to the page (there is still some room for improvement which I hope to address in 2010).

By Joe Brinkman on 8/13/2009 3:00 AM

Over the past 6 years I have watched as DotNetNuke matured into a well-rounded platform that is capable of meeting the needs of a wide variety of individuals and organizations.  One of the keys to the platform’s success is that it continues to leverage technology to make it easy to build sites the way you want. 

A user recently asked me how they could re-use the content from one page on another page in their site.  A couple of years ago I would have suggested that they make a “copy” of the module using the built-in capabilities.  This works well when you are trying to duplicate the entire content of the module, however, there are times when you just want a portion of the content.  In the past the answer would have been to split up the content on the original page – which might require changing your skin and may not be possible when using 3rd party modules.

The optimal solution would not require me to make any changes to the original page, but would instead allow me just to grab specific content and display it on a new page.  Thanks goodness we added jQuery support in 4.9 and 5.0.  This problem is really easy to solve with some simple html and a jQuery one-liner.

By Joe Brinkman on 5/26/2009 12:26 AM

During the last several months I have been doing more and more jQuery development and have found a few key tricks that have improved my code and made my development experience much more enjoyable.

1.  Inject the jQuery library reference in the head section.

jQuery does not know about the DNNMenu and the ClientAPI.  It will step all over them if given half a chance.  Of course, DNNMenu and the ClientAPI are aware of possible conflicts with popular JavaScript libraries and will take steps to avoid any conflicts IF the jQuery library is already loaded.  The ClientAPI is loaded at the top of the ASP.Net page form so loading jQuery in the header ensures it is loaded before the ClientAPI. 

If you are building a module that injects a jQuery library reference, add it in the page header and you will be safe.  If you just want to include a jQuery script on a page then you can edit the Page Settings/Advanced Settings to add the script reference to the Page Header Tags.

By Joe Brinkman on 1/30/2009 2:25 AM

tabsample_logo Stuart Hilbert was recently asking how you could create tabs inside a module in DotNetNuke 4.9.1.  In this post I’ll outline the technique we use on the Dashboard panel and for a module I am working on for DotNetNuke Professional Edition.

When building tabs I like to separate the development into two separate components: the visuals and the behavior.  This separation allows me to easily change each aspect without requiring a substantive change to the other component.  If I need a vertical navigation structure, I can easily accommodate that without changing my code.

By Joe Brinkman on 10/29/2008 1:51 AM
Monitter4DNN During the last couple of months as we were finalizing details for DotNetNuke OpenForce, I have been working on a Silverlight module that would allow visitors to the OpenForce website to see a real-time feed of Twitter posts related to the conference.  In the past this would have been done by using HashTags.org.  The problem with HashTags is that it requires users to remember to use the ‘#’ prefix to their terms.  It also requires twitter users to follow the @hashtags user.  Both of these requirements limit the usefulness of the service.  What I really wanted was a way to monitor anyone...
By Joe Brinkman on 10/19/2008 8:28 PM
As I posted a few weeks ago, we have added jQuery support to DotNetNuke 5.0.  This support makes it easy for developers to add jQuery to their modules and know that it will already be available on the server.  We have not yet decided on whether to also include jQuery UI support, but I suspect that it will also be made available once we figure out which specific UI features to support (the whole UI library is over 200K and definitely too much for most sites).

With jQuery we have tried to provide a mechanism that only loads the jQuery library when absolutely necessary.  If none of the modules or skin-objects on a page require jQuery, then it won’t be included in the page.  If your module wants to use jQuery then you must include a long, complicated...
By Joe Brinkman on 10/2/2008 5:42 AM
DNN500_Splash For the last 4 years DotNetNuke has been adding more and more client-side functionality using JavaScript.  First we started with the ClientAPI which has added some great features to the platform.  When Microsoft created ASP.Net AJAX, we were quick to implement that as well since it solved several problems and didn’t require us to re-invent the wheel.  One of the key features in DotNetNuke 5.0 is the new Widget framework which simplifies the creation and distribution...
dummy