By Jon Henning on
4/22/2009
I mentioned in my last blog that I planned on publishing a video that would give an overview of how the Silverlight...
Read More »
|
By Jon Henning on
4/10/2009
I finally was able to get the multi-project template functionality working to enable the easy creation of a DotNetNuke Silverlight module. The sample demonstrates how easy it is to have Silverlight interact with javascript, which in turn can talk directly to your server-side module code. Unlike the other module templates, this one requires the creation two projects, one for your DNN module and one to host your Silverlight code. Upon compilation, the Silverlight code gets zipped up into a file with a XAP extension. ...
Read More »
|
By Jon Henning on
2/26/2009
I am pleased to announce the availability of a new DotNetNuke...
Read More »
|
By Jon Henning on
2/3/2009
Last post in this series we learned some basics of MSBuild, including the use of 3rd party tasks. We saw that by simply importing some other targets file we can extend the functionality available to our scripting language. The last two pieces to this puzzle happen to be solved by use of 3rd party plugins available on CodePlex: Deployment and Automating our Build.
Deployment
...
Read More »
|
By Jon Henning on
Monday, February 02, 2009
I've been working on a project for a client recently and was bitten by a bug recently. It has to do with using the Microsoft AJAX Extensions, specifically, the JavascriptSerializer. Our use of JSON is simply as an easy way to serialize our objects, whether it be to disk or across the wire. What was happening is objects that contained dates would get their time shifted when they reached the other...
Read More »
|
By Jon Henning on
1/30/2009
Last post I went through the basics of what you do to set up your project on CodePlex along with how to hook into the source control. This blog will explain what I did for my build script. Specifically, how I handled versioning and packaging.
Most developers when confronted with a mundane task that is continually repeated will be compelled to automate it. We are programmers after all, we enjoy making the computer making our lives easier. One of these tasks is the creation of a software package to hand...
Read More »
|
By Jon Henning on
1/30/2009
I figured it may help some people to share my experience with getting my two projects (DotNetNuke ClientAPI and DotNetNuke WebControls) up on CodePlex and allowing them to be do automatic nightly builds. The one thing I want to make clear before I start is that this is just one of many ways to do it.
In order to successfully get nightly builds to work...
Read More »
|
By Jon Henning on
12/5/2008
Those of you who have been following my previous blog entries on Utilizing the Microsoft AJAX Framework and ClientAPI to Develop Rich Modules will be happy to learn that I have just posted the module templates on CodePlex. Unlike the previous version, this one utilizes the IWizard Template wizard framework...
Read More »
|
By Jon Henning on
11/12/2008
As mentioned in Part II of this series, this entry will focus on another advantage of writing rich client side objects representing our modules on the client side. One very common use case that comes up again and again is how can one module talk to another on the same page. For a long time DotNetNuke had this capability from the server side through something called...
Read More »
|
By Jon Henning on
11/11/2008
In part one of this series I mentioned that the Microsoft AJAX Framework along with the ClientAPI are different than a lot of other javascript frameworks since they allow for an end-to-end integration directly with .NET. This entry will discuss how the this integration makes life easier for a DotNetNuke module developer by allowing communication to and from the server to be simple.
The Microsoft AJAX Framework allows for server-side code to add a reference to the js file, initialize the client-side...
Read More »
|
By Jon Henning on
11/10/2008
With the release of DotNetNuke 5.0 drawing near, I figured it would be good to provide an introduction as to how nice client-side module development can be with the integration of the Microsoft AJAX Framework and the ClientAPI 4.0. This mini-series of blog entries will cover the basics of how to get started by creating a sample module that
Utilizes client-side javascript objects to encapsulate our logic, easily allowing multiple instances of a module on a page without having our variables clash Utilizes the Microsoft AJAX Framework to allow for variables to be initialized in our client-side objects Utilizes the new ClientAPI ControlMethods to allow for communication of complex objects both to and from the server Enables localized messages to be sent down to the client-side javascript Enables client-side Inter-Module Communication (IMC) If your new to javascript, you may be confused as to where to get started. As there are many frameworks out there, it can be overwhelming as to which one to choose. One of the advantages of using both the Microsoft AJAX Framework and the ClientAPI is they both have been written to allow for easy integration with the server-side logic, whereas other frameworks may have the ability to make AJAX calls, they do not have included ASP.NET server-side code to handle easy integration with your VB/C# code.
Another vital piece of information that you should understand is that javascript is more of an emulation (prototype) language than a real language. It has the ability to morph itself to do common programming constructs like objects, events, inheritance, enumerators, etc. However, it does not have these things out of the box. Thus, a framework like Microsoft’s, is nice since it will provide a formalized way in which objects get defined and inheritance happens. For more information how this has been formalized see this document.
Let’s assume you already have a sample module you are working on and it has a typical Edit Usercontrol associated called EditDNNAjaxModule1.ascx. A convention that I like to follow is to create my javascript file with the same name plus a .js extension (EditDNNAjaxModule1.ascx.js). This keeps the files near each other in the Solution Explorer. Another assumption we will make is that we plan on creating a namespace for our controls using a company name which is a common practice in writing server-side modules that we will apply to the client. To do this, we simply declare our namespace at the top of the js file.
Type.registerNamespace('YourCompanyHere');...
Read More »
|
By Jon Henning on
Thursday, June 19, 2008
With the launch of DotNetNuke 5 getting closer, I figured it was a good time to put together a quick video on some of the new functionality that will be found within the webcontrols. This video will introduce you to the new ways you can customize version 2 of the DotNetNuke Menu by simply tweaking your css. It starts out giving a brief overview of where we came from in earlier releases and how we are making strides to improve the ability for both a DotNetNuke skinner and end portal administrator. Enjoy!
Read More »
|
By Jon Henning on
5/12/2008
One of the new features coming in Cambrian is an update in the permissions grid. The current grid supports two states, Allow and Null (not assigned). The new grid will support three states (Allow, Deny, and Null). The obvious question here is how do you present this to the user? The current design allows for a nice compact way to set the permissions within a grid utilizing checkboxes. The new way will use a new DotNetNuke WebControl that supports multiple states and mimics a checkbox. The original name I came up with for the control was DNNTriStateCheckbox. However, while developing this control I soon realized there was no reason I needed to only support 3 states and saw the opportunity to support any number of states and not necessarily look like a checkbox. So the control is now called DNNMultiStateBox. It is probably the simplest of all the controls in the Read More »
|
By Jon Henning on
Monday, April 21, 2008
Having attending this year's MVP Summit, I have to say I am even more interested in writing some Silverlight applications. One of the questions I am trying to answer is just how to get Silverlight to talk to the server, especially when it comes to DotNetNuke integration. Some quick searching yielded this excellent blog on how Silverlight and javascript can interact. I thought it may be helpful to some people to see how to allow Silverlight to call into a PageMethod and pass and return a rich object. I admit this may not be the best option, as I still need to do some research, but at a bare minimum this approach should
Read More »
|
By Jon Henning on
Monday, April 14, 2008
One of the things I have been doing lately with my projects like the DotNetNuke CodeEndeavors AJAX templates along with the ClientAPI and WebControls is to use a custom MSBuild script to package the code up as part of the project's compilation. Since a csproj/vbproj file is already a MSBuild script this is rather simple. The problem I had was that the editing of these files within Visual Studio was cumbersome. Having to right-click on the project in Solution Explorer and choose Unload Project, then right-click again and choose Edit xxxxx.vbproj, then make my modifications, then right-click again to reload the project was getting annoying.
Read More »
|
By Jon Henning on
4/13/2008
While sitting at the airport waiting for my plane to depart to the MVP Summit, I decided to spend a little time optimizing the new ClientAPI (codenamed Caspian) for the Cambrian release. One of the new features for this release was to allow the output of the ClientAPI and Webcontrols to emit compliant markup (more detail mentioned in this blog). There was two areas that this affected my code.
Read More »
|
By Jon Henning on
3/24/2008
The whole idea of the $ function and who "owns" that "namespace" has become quite muddy. When I first learned of the use of $ and found that MS was adopting the same notation, I decided to do it as well. For at the time, I felt that all frameworks simply used it as a quick way to get the reference to a DOM element. Soon afterwards I learned that frameworks like prototyle use it for much more.
Read More »
|
By Jon Henning on
Wednesday, December 12, 2007
The ClientAPI and WebControls Beta codenamed Caspian and DawnTreader are now being released to the general public. Features of this release include:
Tweening
Control Methods
Conversion of entier ClientAPI and WebControls to utilize MS AJAX Framework
Embedded and Compressed scripts
XHTML Compliant output
and much more
An additional incentive to try out this new functionality is...
Read More »
|
By Jon Henning on
Friday, November 30, 2007
I believe the content of what I covered from the OpenForce conference is worth sharing with a broader audience. In fact, I believe the concepts discussed are fundamental to successfully writing DotNetNuke modules with a rich client-side experience. You can download the recording here. In a few days/weeks I will be releasing two DotNetNuke module templates that build on the concepts introduced in my session: DotNetNuke Compiled AJAX Module and DotNetNuke Compiled Silverlight Module. I also plan on releasing a video or two on how they are used, as they include: the MSBuild script for automatic packaging and deployment, the new ClientAPI ControlMethod calls, handle client-side localization, allow for VS.NET 2008 javascript Intellisense, and provide a means for modules to interact with each other on the client (a kind of client-side IMC).
Read More »
|
By Jon Henning on
Thursday, November 15, 2007
The OpenForce conference was a lot of fun. I particularly enjoyed meeting many of the community members who I have only known via the internet. The only disappointment I had was that my session was not chosen to be video taped, for I am excited in sharing the information with the community members who could not attend. All not lost, however, as I have posted my slides and code here. It may be of particular interest to some that the download of the...
Read More »
|
By Jon Henning on
11/14/2007
For a long time now many skinners for DotNetNuke have felt like customizing individual menu items was like looking for the Holy Grail. All the menus I have contributed to the community (Solpart and DNNMenu) have always had the ability to customize each menu item. The problem always was
how do we allow DotNetNuke the ability to customize the items? The only place...
Read More »
|
By Jon Henning on
10/18/2007
The conversion of the ClientAPI and WebControls to utilize the MS AJAX Framework along with emitting xhtml compliant markup is near completion. It is now time to start testing the backwards compatibility of the conversion. In order to adequately do this, I am asking for the communities help. If you are a skinner who uses any of the DotNetNuke webcontrols (DNNMenu, DNNTreeView, etc.) your assistance is needed. If you are a module developer who uses any portion of the ClientAPI or any of the WebControls,...
Read More »
|
By Jon Henning on
Monday, October 08, 2007
Lets pretend you just got done with a meeting with a potential new client. After getting a feel for what he was after you compiled the following list of requirements.
The module must be efficient. The overall user experience is very important.
The module needs to show a hierarchy of divisions
Upon selecting a division a grid of stats for the players in that division should display
The grid should allow for sortable columns
Selecting a row in the grid should update another pane...
Read More »
|
By Jon Henning on
10/5/2007
Ever since version 1.0 of the Solpart menu, it supported animations. Unfortunately, these animations were specific to IE due to it being the only browser that supported transitions natively. When I created the DNNMenu I had decided not to go this route, but rather seek out a technique that worked across all browsers. When I was first reviewing the Atlas bits, there was a portion called Glitz, which I had anticipated would support the animations I was looking for. Unfortunately, Glitz never became an official...
Read More »
|
By Jon Henning on
Sunday, August 26, 2007
One of the things I look for when choosing a conference to attend is how much am I going to learn. Past experience has shown me that I learn the most useful information when attending a conference dealing with new technology, which is probably why I choose to attend the PDC conferences. This year, I have the privilege of speaking at a conference about DotNetNuke, specifically about
utilizing controls to build advanced modules. I have spent quite a bit of time trying to determine how to best use my time in preparation...
Read More »
|
By Jon Henning on
8/20/2007
Sometimes I grow frustrated when trying to solve apparently simple things, that end up taking most of the day to come up with an answer. And if the answer is one that is bordering on a hack, I am even more distraught. This happened to me again while trying to optimize the latest version of the webcontrols, that will now use the Microsoft AJAX extensions framework. The optimization deals with allowing the control to persist its current structure. For example, when you have a tree that supports populate on demand,...
Read More »
|
By Jon Henning on
Friday, August 10, 2007
I am getting a little excited for what is in store for the community with the upcoming release of the DotNetNuke Webcontrols v2.0. Unfortunately, I have not had much time to blog on what I have been working on. This blog entry is meant as a means to allow the community to offer constructive feedback on the direction of one of the core controls found in DotNetNuke, the DNNMenu.
Brief History
Before I discuss where we are going, lets review where we started and how we got to this point. The first Menu control...
Read More »
|
By Jon Henning on
6/15/2007
One interesting enhancement that the AJAX Control Toolkit team came up with in the latest release is yet another way to register your scripts (ToolkitScriptCombiner). Earlier I blogged on the fact that Microsoft can’t seem to make up its mind on how these things should be registered. In the Control...
Read More »
|
By Jon Henning on
6/15/2007
I have finished the initial conversion of the DotNetNuke WebUtility (ClientAPI) project to utilize the Microsoft ASP.NET AJAX Extension framework. This has several advantages and one major disadvantage. The disadvantage is that upgrading to it will require Microsoft ASP.NET AJAX extensions (System.Web.Extensions.dll) to be installed. I do not have the time, nor do I think it worth the effort, to provide an optional install. Technically, since the current implementation does not require the extensions and...
Read More »
|
By Jon Henning on
4/13/2007
I will be releasing the next point release of DotNetNuke WebControls (v1.5.3) shortly. There are a couple reasons for this. First, it was detected by some users that the currently released version with DNN 4.5 was compiled in Debug mode, thus affecting performance a little. The second, and primary reason is due to our desire to try (emphasis on this word) and maintain compatibility with other AJAX frameworks. In this case we are talking about prototype.
...
Read More »
|