Posts From April, 2007

A few interesting things landed in svn

Some interesting changes have been committed to svn branches/2.x

One big change is that I have created dedicated physical pages for the admin features (SiteSettings, Role Manager, Content Manager, etc) which until now have just been modules that plug into the content sysem the same as the content modules. Now there is an Admin Menu page with links to all the admin features, and they no longer appear in the main menu. I did this for a number of reasons.

I'm planning to make it configurable which features are "installed" but the admin features should always be there. In the previous model because the admin features just exist on pages in the content system, it is possible to remove the admin features from the site using the content management features with no way to get them back easily without doing it directly in the db.  So separating the admin features into physical pages outside the content system seemed the way to go. This change also helps with multi site installations using one web and db because when new sites are created we don't need to create admin pages in the content system in the new site either.

There are now 2 new skins named treeview1 and treeview2 which are really coopies of the existing jwv1 and jwh1 skins but modified to use the TreeView control for the menu. One of the cool things about the TreeView is its ability to load nodes on demand from the SiteMap. In large sites with lots of pages and deep hierarchies this can be a performance benefit.

When using the normal Menu all the navigation links for the entire site are rendered as markup into the page, typically showing only the top level and using mouse over to reveal deeper nodes. If you view the source you see the Menu rendered as ul and li elements in the markup and every link is there for the whole navigation tree which can be a lot of markup in a large site. The more markup there is the bigger the page size and the slower the perfomance. Since the menu is on pretty much every page its part of the payload of most requests.

The TreeView control also renders as ul and li elements but with PopulateOnDemand it will not render the markup for invisible nodes. When you click a node it will expand and add just the nodes requested. You can see this when you view the source of the page. If you want to check it out, the treeview1 skin has the TreeView for the menu and the treeview2 skin has a regular horizontal menu for the main menu and a TreeView for sub pages beneath the top level. To see for yourself, create some deep hierarchies of pages and view the source of the page as you drill down from the top.

I also shortened the 3 column names on the mp_Users table and 2 column names on the mp_Sites table. Recently there has been some renewed activity by the Firebird data layer team. Firebird doesn't allow columns longer than 31 characters so this was a barrier in implementing the 2.x mojoPortal data layer. By renaming the columns this barrier is now removed so hopefully work will proceed for the Firebird data layer. Thanks to Gareth for all his hard work implementing Firebird for 1.x mojoPortal!

Some have noticed that the SQLite data layer for 2.x mojoPortal was broken a few versions ago and has not been shipped with the last few versions. Joseph Hill, who initially implemented the SQLite data layer has agreed to look into, so hopefully that data layer will come back to life sometime soon.

The National Recycling Coalition Goes Live With mojoPortal

The National Recycling Coalition (NRC) recently revamped their web site using mojoPortal.

The project was managed by DDB Seattle, which is part of DDB Worldwide Communications Group.

I helped with the project as a consultant, providing some help with skinning and custom feature development.

"The NRC represents every sector of the waste reduction field including local recycling coordinators, corporate environmental managers, state and federal regulators, environmental educators and advocates, and waste management professionals. NRC's objective is to eliminate waste and promote sustainable economies through advancing sound management practices for raw materials in North America."

Its very exciting to know that mojoPortal can play a small part in such an important cause as Recycling. It was also a pleasure working with the good folks at DDB Seattle, I hope to have an opportunity to collaborate with them on other projects in the future. They are true professionals.

mojoPortal 2.2.1.8 Released

I just released mojoPortal 2.2.1.8 and 1.0.6

No major new features but an important security fix for NeatUpload is included in both releases.

The 2.x release also has:

the new version of FCKeditor

a new feature to prevent friendly urls from masking real urls while still allowing virtual pages to link to physical pages if desired

a number of bug fixes for things reported in the forums since the last release

As always be sure and back up both your site and your db before upgrading, and post in the forums if you have any trouble and I will try to help.

e-commerce Testing/Demo Site

I just setup a site at http://storedemo.mojoportal.com/ that demonstrates what I have implemented so far for the e-commerce project.

I am still seeking sponsorship for continued development on this project so that I can make it a high priority. A few developers have expressed interest in learning more about it and at least one has offered to help with testing.

At the moment the demo is configured with 2 Offers, one is an mp3 album with 3 songs and one is an mp3 single.

Anyone can test the basic add to cart and proceed through checkout functionality.
If you are interested in seeing/testing the back end store administration please contact me and I can add you to a role with this permission on the demo site.

Any feedback from testers should be posted in the project forum here:
http://www.mojoportal.com/e-commerceforum.aspx

I am interested in hearing what it would need for you to use it for real e-commerce to meet your real business needs.

The project page includes a list of currently implemented functionality and a To Do list.

SVN Users should use branches/2.x

I know some users have been getting frequent svn updates directly from branches/joesandbox2

I've suggested using it in the past in some forum posts but I want to give a heads up to anyone working from svn code to use branches/2.x instead

Instructions for getting the source code from svn on Windows with TortoiseSVN can be found here:
http://www.mojoportal.com/tortoisesvn.aspx
and for those who want to experiment with mojoPortal on Linux, svn instructions are here:
http://www.mojoportal.com/gettingthecodewithsvn.aspx

You can rely on branches/2.x being relatively stable. I merge my changes from branches/joesandbox2 into branches/2.x when I believe them to be stable enough to share with other developers.
Use branches/joesandbox2 only at your own risk as I need to be able to commit changes there whether they are final/correct or not just to make sure I never lose work due to hard drive failure.

I mention this because I'm about to start working on some things that may make things bumpy in branches/joesandbox2 because I will be making changes in the core and will probably implement some things in MS SQL long before I get the other data layers implemented and therefore joesandbox2 will be broken for the other layers until I implement them.

I have a customer who is sponsoring a new feature, or really a variation on a current feature and this is what I'll be working on. The customer has been using mojoPortal for a few small projects and they want to use it on a larger planned project but to meet their needs they need the multiple sites feature to work differently than it currently does. Currently the site id is determined by the host name so mojoPortal can host multiple sites on a single web installation and db as long as each site has a different host name like this:
http://host1/
http://host2/

Note that on the internet the fully qualified host name is usually used so the pattern is:
http://hostname.domainname.topleveldomainname
like
http://www.somedomain.info
where www is the hostname, somedomain is the domain, and info is the top level domain

Of course you also often see the pattern:
http://domainname.topleveldomainname
like
http://somedomain.com
the reason this works without the host name is that the domain has a default host that is used when no specific host is specified

My customer needs the ability to create new sites in sub folders beneath the host name like:
http://hostname/site1
http://hostname/site2
or examples with fully qualified names would be:
http://www.somedomain.com/site1
http://www.somedomain.com/site2

So in these examples the hostname is the same and the site id will be determined by the first level folder.

I don't plan to eliminate the hostname driven feature but to add a config option to use the foldername instead.

The sites will be completely independent with their own users and content just as they currently are using hostnames.

Some of the challenges will be in making sure the friendly url re-writing adapts correctly and making sure sites aren't defined using folder names that clash with physical folders

This feature is being sponsored as open source development which means it will become part of mojoPortal and other users of mojoPortal who may desire this functionality will benefit.