Upgrading to Mootools 1.2

With the release of IdeaJam 1.7 (in beta at the moment, but going “Gold” soon enough), we decided to upgrade the Javascript framework that we use, MooTools to the latest and greatest version. Normally this isn’t even worth commenting on, but this change was a big’un as a lot of the underlying API changed from version 1.1 to 1.2. Similar changes have happened with Dojo in the past in the shift from 0.4 to 0.9 and a very positive move it was too. The problem is that it’s a painful process of rekeying quite a lot of code.

So I thought I’d go through the resources I used and the main changes which we faced with the upgrade to help anyone else going through the same process, although to be fair we are quite late to the party with MooTools 1.2 as it was released in the middle of 2008.

There are a couple of really useful websites which document in quite a lot of detail how old style 1.1 syntax should be modified for 1.2. My favourite was this page on the Github Wiki: Conversion from 1.11 to 1.2.

Another page you might find useful is this.

The areas which we spent most time on were retooling all of our Ajax requests behind the scenes (which was the reason the Chrome bug I mentioned recently was introduced). So the main thing to be aware of is that the syntax for an Ajax request changed from something like this:

new Ajax(url, {
method: ‘get’,
onComplete: processResponse

towards something like this:

new Request({
url: url,
method: ‘get’,
onComplete: processResponse

The other thing which caused us a little trouble was with the tooltips we use on the Dashboard page in IdeaJam. When I say trouble, it took about an hour to fix, we’re not talking serious effort here! Anyway, the default CSS settings changed a little, so we just had to add a few extra lines to our CSS file, no biggie.

Finally for areas which you’ll want to be careful with, it’s third party add on functions and code. For example we use Phatfusion’s sortableTable class in the Top Innovator’s screen. This was written for MooTools 1.11, so I had to make some changes for it to work properly with the new version.

From an IdeaJam point of view, the reason for the upgrade was so that we can start to use some of the newer Clientcide plugins in areas that may not get much airtime on the public IdeaJam site. One of the main customer feature requests for this new version is what we call the “Implementation Plan”, it’s the first feature to use some new MooTools functionality, but you can expect more in the next few weeks as we add a new way of linking ideas together.

So why should you use MooTools? Well to be honest, these days most big web shops seem to be going with jQuery and there are a lot more resources out there for that framework. But I still have a soft spot for MooTools, it seems to fit the way I think which is an important consideration when you’ll be spending days, weeks or months using the API.

Really the main benefit of MooTools these days is the wonderful Clientcide add ons which handle the UI side of things and the superb documentation and also the core and more builders which allow you to configure the javascript files which make up MooTools to such a degree that it will do exactly what you want, a great boon for managing your deployments.

IdeaJam wins 2009 Beacon Award

We were just watching the “Business Partner Leadership Agenda” webcast with Sam Palmisano where he announced the 2009 Beacon Awards winners.

Like the Lotus Awards that we did so well in earlier in the year, these are given to leading IBM Business Partners and as Sam said the Beacon Awards are IBM’s “most prestigious award” so we’re completely blown away that IdeaJam and Elguji has won again.

This time we won the Innovative Collaboration Solution with Lotus Software award. There were 22 different awards given to solutions from over 340 nominations so we really couldn’t be happier.

Using the system to build the system

You’re not meant to apologise for radio silence on a blog, so I shan’t but things have been very busy. I’m working on several really cool projects at the moment so time for the blog has rather fallen to the bottom of the to do list.

What is really great news from both my own business and from IBM’s point of view, is that three quarters of my work at the moment is doing development for 8.5 servers, and not just that, but doing development on XPages. It looks as though the latest refresh of the server and Domino Designer has given the development market for Domino web apps the kick up the backside that it really needed.

As always one of the things going on is the next version of IdeaJam. A couple of weeks ago we posted asking for input on what people want to see on the new home page that we are designing. That’s still a work in progress, but we’ll definitely keep you updated. The other area that we want to concentrate on (at the behest of various customers) is the statistics page. Currently we use the JFreeCharts java library to build the charts, they’re cool and everything but require a lot of processing on the server and aren’t very “live”. So we’re planning to move back to some flash charts and are looking for views of what you want to see:

In other news, I’m off to Sweden next week with Tim Clark to do another repeat of the XPages course. Looking forward to getting back over to Stockholm as I haven’t been for a few years. Then it’s back to the UK for a day before heading off to Morzine for a long stag weekend. I don’t mind telling you, life is pretty tough at the moment. 😉

For those who don't think IdeaJam is being watched

Every so often we hear from people that they don’t think that the public IdeaJam site is having any effect with Lotus. There are definitely issues with feedback, but every so often we get a gem like this…

IdeaJam is watched

So keep on logging your ideas, comments and votes. The people making the decisions are definitely watching.

It's painless moving to XPages

Over the last month or so we’ve been spending a lot of time doing testing of the new version of IdeaJam so that the XPages plays well with “Classic” (as we’ve taken to calling it). Today we got to the point where we applied the latest beta template against a copy of the IdeaJam production database. Shock of shocks, everything worked exactly as designed. It’s getting to the point where even we can’t tell the difference between the classic and the new versions (which is what we were aiming for). So we get all of the benefits of XPages and very little of the pain from the user’s point of view of things changing because there’s a new technology under the hood.

IdeaJam “Classic” is a good Domino web application (if I do say so myself), but to work on the design of it requires any developers that help us to have a serious amount of experience with Domino web development (I’m talking like 5 years plus). But with our XPages version there really is none of that history required, all the new design elements can be worked on by a developer with the same experience as me, or indeed any other XPages developer, 3 months. It means that we can go from having to worry about all of the Domino “hacks” to make things work, to concentrating on the important stuff… developing a kick-ass application for our customers.

So this is the XPages version of IdeaJam:
and this is the classic version:

So now our copy of production is at the point where we can go to the database launch properties and flick between launch a navigator and an XPage when the user goes to the home URL, and that is all that needs to be done to switch between classic and the XPage version.

Obviously from our point of view there’s a lot of work behind the scenes going on, but for our customers, switching to XPages couldn’t be easier.

Continuing XPages Development

After all of the craziness of helping out with UKLUG last week it was back to a good week of development on the new XPages version of IdeaJam.
IdeaJam XPages

I’ve put a few more screenshots up on Flickr but we’re continuing to make good progress. This week we’ve managed to knock off quite a few tasks…

The biggest change is that I’ve added multi lingual support. I suspect that our strategy for IdeaJam won’t match all requirements, but we already have language documents in place for “classic” IdeaJam and I want to re-use as much as I can. So when XPages is loaded for the first time, a server side Javascript function runs which goes and parses the existing languages document and stores each label into a Hashtable in the sessionScope variable. Whenever a page is loaded after that, each label on the XPages and custom controls calls a function which goes and looks up the relevant label from the Hashtable. It seems to work pretty well. As with all of our work so far we haven’t done serious scalability testing on it, I want to get a baseline function set, see where we are and then tune from that point as I am coming from a position where I don’t know what is an “expensive” operation. We are basically creating best practices as we go here so hopefully the session that Bruce and I have submitted for Lotusphere will be able to pull our learnings together!

The other big change this week is the addition of the user profile. This is actually way better than the classic IdeaJam profile as I can effectively embed multiple views onto a single XPage and then just toggle between them with a tabbed panel control (which you can see above). Unfortunately when I was almost done with this earlier in the week, DDE somehow ate the design element and I had to start again, but as with all these things, doing it the second time was much quicker than the first.

Other cool little bits and pieces that we’ve done this week include moving the CSS from being a design element back out to being a document so that our customers can easily change the look and feel of their IdeaJam sites. Again this may not be needed for most sites, but for us it is very important as we want to make administering IdeaJam very, very easy (like it is today). I’ve re-inserted the context sensitivity for RSS feeds, so that the RSS icon knows where you are in the system and presents the right feed to you (I think we have something like 8 different styles of RSS feed in IdeaJam so you can watch what is interesting to you).

And I’m finally getting around to fixing some of the stylesheet issues caused by the move from classic to XPages. In classic we style elements based on their ID which is not really practical in XPages as it is all but impossible to know what the ID of an element will be by the time it makes it to the browser, so all styling has to switch to the class property of elements, not a massive issue, but IE being as crap as it is has caused a few problems. As with all browser issues I follow the rule of develop in Firefox and then break for IE, but in the end it only took a couple of hours to sort out most of the problems.

So where does that leave us? Well I have about 15 big ticket tasks left on the tada list and then we start the really serious task of testing. It’s going to take us quite a while as we want to release a good quality product. Hopefully somewhere in there will be a new drop of 8.5 beta code, but either way we will have to leave our final test cycle until 8.5 goes gold so that we know we have the fixed, non beta, code that customers will be using. Life is very very busy, but good fun.

What's your Elguji?

Just in case you’ve missed it, Mr Elgort is running a competition to come up with the best tag line for future Elguji advertising. You may have seen the “If you thought Elguji was…” adverts on various sites on the internet, well now you can add your own creative juices to the mix and maybe even win valuable prizes 🙂

Head on over to the Elguji blog and get your thinking caps on.

Lotusphere Best Practices Session on IdeaJam

Mac has announced that IdeaJam will be used to gather feedback on Best Practices sessions for Lotusphere in January. So if you’re wanting to get your session included, make sure to add it to IdeaJam so that people can say how great they think it is. I’m sure it will be a big help if you get a positive response on IdeaJam. You can go and have a look at any sesisons that people have posted here. If fact you may even be the first person to post if you get in quickly.

New IdeaJam features

Just to let you know that we are about to release v1.2 of IdeaJam. There’s a whole ton of new configuration options which are detailed here but we did also manage to sneak out a couple of extra features for the public site which people have been asking for. One of the most frequent requests we’ve been getting has been the ability to filter the Unvoted screen by IdeaSpace, well that’s been added. And we have also finally added the change password function as well.

If you’re an existing IdeaJam customer then you can go to the downloads site from tomorrow to get the latest templates and documentation, if you’re not yet a customer then you really need to talk to Gayle at the contact page.