Another Theme Progress report

Posted by: mstauber Category: Development

This is another progress report about the rethemed BlueOnyx.

Well, the last report on the progress of the rethemed BlueOnyx was in April, so I think it's time for another progress report on how the development comes along.

First a little teaser:

A bigger teaser is at the end of this article. :-)

The last three months I worked almost every day and many long hours on this. Almost exclusively. To the extend that "regular work" and family life started to suffer under this strain. Still: It isn't finished yet and many more days and long hours will be needed.

The technical difficulties that I had to overcome were legion and far too many to list.

However, I can report that there are no unsurmountable technical obstacles left. Many loose ends have been tied down and much of the fundamentals needed to complete the project are now either firmly in place, or soon will be.

In the last three weeks I finished porting the classes ScrollList and PagedBlock to the new GUI format. These are the biggest and most important classes and pretty much all GUI pages either use a ScrollList or a PagedBlock to display the information. ScrollList is a PHP class of 634 lines (it is also visible in the above screen) and PagedBlock is almost 1000 lines of very complex nested code. Getting both to use jQuery, Ajax and CSS instead of tables, images for spacing and JavaScript for active elements was a dire challenge. But the results are now well worth it. As these PHP classes now use jQuery, we can display the information neatly and can sort, search and change views without having to reload the parent PHP page. Which creates a very nice and dynamic viewing and usage experience.

With these fundamentals out of the way I continued to convert the remaining 200 individual GUI pages to the new GUI format. And quickly realized I had to take one or two steps back to streamline that procedure.

Re-doing 200 GUI pages with entirely different GUI elements such as checkboxes, input fields, buttons, icons and what not is already bad enough. But if all the old code for GUI elements can no longer be used, then it takes even more time. I thought: Well, you converted ScrollList and PagedBlock. How difficult can it be to make similar changes to the other +80 UIFC classes that display GUI elements?

It would probably take less time than re-doing all 200 GUI pages 100% from scratch. 

So I started with something simple: The old GUI code to render an input field of the class "ipAddr". I tracked down how this Class was called. Which other Classes it depended on. What the state of arrays, variables and objects was that was passed back and forth between these classes. I took a lot of notes on old fashioned paper and tracked the dependencies down. After lots of cleaning it boiled down to this:

The page on the righthand side has a tree of the dependencies of the ipAddress.php PHP class. I then hunted through all the dependency subclasses to make them compatible with the new GUI and more importantly with the main BxPage.php Class, which nowadays is responsible for rendering all the GUI output with the menus and all bells and whistles. At the moment that's 700 lines of code alone, even with most redundant functions externalized into libraries and other Classes.

After a long weekend of work I finally had ipAddress.php and all its dependencies transitioned. This made it possible to use "oldfashioned" BlueOnyx code for rendering IP Address input fields in the new GUI using the exact code as before:

 Next I did all the button related Classes, which render icons, submit buttons or transactional buttons. That was another dozend PHP Classes, but the result is again well worth it: The same code that rendered buttons and icons in the old GUI now works in the new GUI as well:

What's left to do is to tackle the other 60 classes that deal with form fields, checkboxes, pulldowns and what not. This will probably take another two weeks. Then maybe another two to four weeks for porting the 200 missing GUI pages.

The end of this long project isn't yet in sight, but it is within reach. Just needs some more grit and an a continuous effort to get there.

Now I mentioned a big teaser, didn't I? Well, here you go:

BlueOnyx Demo:

Username: admin
Passsword: demo123

But please note: You WILL see a lot of "Transitional Error" pages. Every page that is not yet ported to the new format will throw such an error.

Here is what works:

  • Server Management
    • BlueOnyx News
    • Programs
      • phpMyAdmin
  • Site Management
    • Virtual Site List
    • Site Add (just a teaser for the new PagedBlock class)
  • Software Updates
    • BlueOnyx Shop
  • Personal Profile
    • Everything (Except password change. For obvious reasons this is disabled in this demo.)
  • Remote Access
    • Not yet done

So please do not get too dissapointed that there isn't that much to see yet. But this demo should give you a look and feel for what is to come and how fluid and elegant the new GUI will be.

In about two months (or a little later) the first ISO image of the new BlueOnyx might get available for Beta-Testing. If all goes well. If you want to support the development of the new BlueOnyx, then perhaps you could consider a small donation. Anything helps. To all who have already donated, again my heartfelt thanks on behalf of the entire team.

  BlueOnyx is available free of charge. For all purposes, may they be personal, commercial, educational or whatever else you might want to use it for. However: Keeping BlueOnyx updated, adding new features to it and releasing updated ISO images is a lot of work. If you like BlueOnyx, then please consider donating something to the project. Thank you and enjoy using BlueOnyx!

Jun 4, 2013 Category: Development Posted by: mstauber
Next page: Features