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.