Posts in Category: Community

mojoPortal Released

 I'm happy to announce the release of mojoPortal, available now on our download page.

What's New?

Content Versioning

The Html Content and Blog features now support keeping a history of every edit (like a wiki). You can compare any historical version of the content to the current version and you can restore any version to the editor so that you can restore it as it is by saving it or modify it further then save it. Versioning can be enabled at the feature instance level or it can be enforced site wide from Site Settings or it can be enforced from Web.config. Site administrators and content administrators can delete history but no other roles are allowed to delete the history. The ContentHistory is built into the core so that it does not have to be re-implemented for each feature. Each feature does implement its own UI to show or restore the previous versions, but they leverage common business classes to store and retrieve their history. In the future we will implement versioning for product and offer descriptions in the WebStore, developers may also leverage this in their own features to keep version history for their own feature data. This is one more thing to mark off our Road Map as complete. Next up is a general Content Tagging/Category system that can be re-used across features, and a Content Comment system that can be re-used across features.

Web Chat using Windows Live Messenger

See my previous post for more information about the new Chat feature. This was not even on the roadmap but when I saw how easy it was to implement I decided to work on it. It was fun and it only took a few days. One of the things I like best about my job is that I can just decide to work on something for a few days because its fun.

New PlugNPay Payment Gateway in WebStore thanks to Voir Hillaire

New Skin - dcarter-bluedesert, based on dcarter-ticktockpro but modified and contributed by Sami Isamil Hassan

Various minor enhancements based on feedback and fixes for bugs reported in the forums since the last release.

More progress moving away from ExtJs by implementing some .NET controls for YUI to replace the ones I previously built for ExtJs

Some of you may have checked out my Site Office UI prototype in the past. Its a separate plug in system than the main content system designed more for a consistent application user interface rather than for creative design like we use for the public facing web site via our skins. You can see the Site Office layout on this site or the demo site if you login and click the "Site Office" link at the top of the page, or you can look at the origianl layout demo for ExtJs here. I still have not implemented any real features for Site Office, but the plug in system itself works and I've even received emails from developers who have implemented their own plug features using it. I got kind of side tracked off of the Site Office idea partly because I had spent quite a bit of time implementing .NET wrapper cntrols around the ExtJs javascript to make it easy to use and then the ExtJs project changed their license to GPL which is not compatible with our CPL license, so I could no longer get upgrades of ExtJs and include them with mojoPortal. Since then we've been stuck on version 2.0.2 of ExtJs which was the last version they shipped under the LGPL (which was compatible). I had also used a little ExtJs in the Contact Form for the messaage list page. For a long time I've been thinking I really need to build new .NET wrapper controls with similar functionality but using the YUI javascript instead of ExtJs.
So again in the name of fun (because I like building .NET controls around javascript) I spent some time implementing some new controls with YUI to replace the ExtJs stuff I've been using. I have now removed the dependency on ExtJs from the Contact Form feature and I've got a good start on the layout framework to replace the current SiteOffice. I still have more work to do to finish, but the goal will be to eliminate all use of ExtJs in favor of YUI. The ExtJs javascript we include in mojoPortal is 6.36 MB, so it will reduce the size of our downloads once we no longer need to it. Anyway, you can see the work I've done so far on the YUI layout here, its very similar as you can see to the current Site Office layout with ExtJs. Once I get some more of the YUI things wrapped up so they are easy to use, I might even change the site administration area so that it uses this kind of layout instead of the site skin.

New Experimental CKEditor

Some of you may have noticed that the FCKeditor project has shifted gears from the next upgrade of FCKeditor to their next generation version named CKEditor. I think they are basically taking the good parts from the FCKeditor implementation but doing a new redesign of the implementation using things they have learned and new techniques that have emerged to improve the architecture. The CKEditor does not yet have image upload or server browsing so I have disabled it by default, but anyone who really wants to check it out can un-comment it in the mojoEditor.config file in the root of the web. It really looks just like the FCKeditor but does not have all the functionality yet, I just figured it was good to get started with it so we can be ready as they make imporvements.
So all of the above (other than the contributions from the community) is work I've done since the last release on March 24, less than 30 days ago, but in that time I've also made a substantial start on my next paid product Web Invoice Pro. It still has a ways to go before release though. Its one of those things where I started out with a very simple vision for it but it quickly changed to a more complex feature the more I thought about it after getting a few little pieces of it built. I needed to step away from it a little to think about it more and that is part of the reason I worked on some fun things as I got to a point where I was frustrated and needed to work on something that made me feel productive.
Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.

mojoPortal Released

Whats New

French translation of resource files by Thomas Nicolaïdès and Bernard Cortesi. This brings us up to 17 languages that mojoPortal has been translated into!

Updated Danish Translation by Kurt Greve

Upgraded FCKeditor from 2.6.4 beta to 2.6.4 final release.

Upgraded NeatUpload to version 1.3.8

Upgraded to the newest version of NeatHtml, NeatHtml is a tool for protecting against cross site scripting. This release fixed a bug where sometime un-trusted content would be visually clipped in WebKit based browsers like Chrome and Safari. We use it in the forums and in the blog comments.

Moved commerce reporting out of WebStore and into the core. This is a preliminary step so that we can aggregate commerce reporting across features at the site level. This will also eliminate the need for a lot of duplication of effort that would occur if we implemented reports in each commerce enabled feature.  My next 2 add on products will be e-commerce features, Fund Raiser Pro and Web Invoice Pro, so I'm thinking ahead and implementing commerce reporting as a core feature so I only need to implement reporting in one place and each feature will push its own data into the common reporting system. Event Calendar Pro for example is already a commerce enabled feature since it can sell tickets and soon it will have the ability to push its data into the reporting system. I still have a lot more reports to develop, but the point is I only want to develop one set of them.

Implemented a separate skin setting for MyPage. This was requested recently in the forums and it was a good idea since the layout needs of MyPage are not the same as for the main content system.

Implemented a Web.config setting to disable the search index. While mojoPortal works well in Medium Trust, there can be some problems with the search index if you host multiple sites on a single installation under Medium Trust so this provides an option if you can't get it working correctly you can disable it.

Added an anchor to the ModuleTitle control so that if you have a bunch of modules on a page you can easily create links that jump right to a module with #Modulex, where x is the module id. This was also a recent community request.

Fixed a recently introduced bug in the Shared Files module where the upload controls were displayed to users who did not have upload permission.

Added better error handling to the SiteMap to prevent errors if invalid urls are entered manually. Urls are generally auto-suggested but users can override the suggestion and put in something invalid. With great power comes great responsibility, but at least with the better error handling we can keep it from causing major problems with the menu when a user puts in something invalid. We also added a regular expression validator that checks for common mistakes and typos but it doesn't prevent all possible bad urls.

Fixed a bug in the url re-writer that caused a problem in folder based sub sites. In folder based sub sites, you can have an extensionless root url like /folder1/ if you actually create a folder named folder1 and put an empty text file there named Default.aspx, but there was a bug in the url re-writer that prevented this from working. There are components available for IIS to enable extensionless urls but this approach works without any IIS add ons.

A Shout Out To Our Consulting Partners

My own small company Source Tree Solutions, LLC has only limited availability for consulting engagements. I am trying to shift my business to product sales of add on features for mojoPortal so that I can have more freedom to work on the things I think will best advance the project. Consulting will always be a part of my business but I am very selective about projects I will take on myself and prefer to be a consultant to the consultants, so I am fostering a Consulting Partners Program to build a network of reliable consultants I can refer customers to and so that there are other qualified developers I have a relationship with and could pull in as additional resources to meet tight deadlines on larger projects. So far we have 5 companies in the program.

Summit IT Solutions

Summit IT Solutions uses mojoPortal extensively in their work, providing custom feature development, skinning and hosting.


Abertech provides custom solutions and feature development based on mojoPortal and also helps maintain the Italian translation files.

Turbo Front Office

Turbo Front Office is a Dutch company that can handle all technical aspects of your mojoPortal site you can focus on the content. They also manage the mojoPortal Dutch Community site.

Samar Software Samar Software provides services for mojoPortal and also maintains the Persian translation files and manages the mojoPortal Persian Language Community Site.


TALESIS is our newest partner in Paris France, and helps maintain the French translation files for mojoPortal.

Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.

Cool mojoPortal Linux Appliance by Jordi Massaguer Pla

Got a google alert this morning bringing my attention to this blog post by Jordi Massaguer Pla. Jordi is doing a lot of work making cool Linux appliances with Suse Studio and his latest one is a mojoPortal appliance. I've played around a little on Suse Studio myself but have been so busy I haven't finished any appliances yet, so I was glad to see the one Jordi has put together.

screen shot of mojoportal appliance running in VMWare player

Its running mojoPortal using SQLite. You can download it from Jordi's post, boot it up in VMWare player or server and login with user=tux and password = linux

Suse Studio is an amazing tool, it allows you to build a custom linux installation with just the features and applications you want to include and then target your build for a VMWare appliance, installation media or live CD. And you do it all from a web browser.

Thanks a lot to Jordi for putting together this appliance!

Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.

mojoPortal used in the We Are Microsoft Charities Challenge Weekend

Over the weekend, Jan 16-18 2009, Microsoft held a great event, "We are Microsoft Charity Chellenge Weekend" to help charities. The event paired teams of developers with charity organizations to produce web solutions to better meet the needs of the charity organizations. The challenge was that the time available to produce the solution was limited to the weekend, everything from gathering requirements to final delivery had to be completed in that time frame.

I was very honored when one of the teams chose to use mojoPortal.

paxUnited Team - Microsoft Charity Challenge Weekend

Todd Stone, Tim Mitchell, Nathan Woodward, Jay Smith, Andrew Dalgleish

You can read the full details and see before an after screenshots in this blog post by Microsoft MVP Jay Smith "We Are Microsoft: Developers Rally Around Charities"

"After checking out Telerick’s SiteFinity and Telligent’s Graffiti CMS, both very powerful and capable Content Management Systems, we elected to go with mojoPortal."

These guys really did an impressive job accomplishing so much in a very limited time frame. I congratulate them and thank them for their good work for a good cause and for giving mojoPortal the oportunity to participate in this exciting event.

Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.

A Few New Tutorials

Just a quick post to mention a few new tutorials for mojoPortal.

How To Filter Out Un-Wanted Content From Feed Manager

by Walter Ferrari of Abertech. Big thanks to Walter! He not only helped with major improvements to the Feed Manager recently but also is willing to help with documentation which is much appreciated.

CSS - Its All About Understanding Selectors

an article I wrote today to demystify CSS a little for those trying to learn how to skin mojoPortal. Once you master CSS Selectors it becomes much easier.


Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.