mojoPortal Released

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

What's New?

A new Control for Nivo Slider

Thanks to Matt Wilkinson who contributed a control that makes it easy to use Nivo Slider, a jQuery widget that does fancy slide show transistions. This control can be used in layout.master or in custom features. You basically add the control and point it to a folder that has images for the slide show. The images in the folder must all be the same size, and you must specify the width of the images on the control, so example usage is like this:

<portal:NivoSlider ID="NivoSlider1" runat="server" ImageFolder='~/Data/Sites/1/nivoimages' ImageWidth='618px' />

Then you also need to add one of these included skins for Nivo Slider to the style.config file of your skin:

<file cssvpath="/Data/style/nivoslider/default/default.css" imagebasevpath="/Data/style/nivoslider/default/">none</file>
<file cssvpath="/Data/style/nivoslider/orman/orman.css" imagebasevpath="/Data/style/nivoslider/orman/">none</file>

or you can copy and rename one of those and modify it as you like.

A new QRCodeImage control

QR Code

QR Codes are often used in printed materials to encode an url for a web page. There are apps for most smart phones and tablets that can scan the QR Code and navigate to the web page. We've added this control in the "PrinterFriendly" skin so that if people print a page on your site using the printer friendly view a QR Code will be included at the bottom automatically.

Since we don't update the skins in the site specific folders during upgrades you may want to copy the new version of the printerfirendly skin from /Data/skins to /Data/Sites/[SiteID]/skins or you can add it directly to the layout.master of your copy like this:

<portal:QRCodeImage id="qr1" runat="server" AutoDetectPageUrl="true" />

You could also use this control in custom features, you can encode any text value, if you set AutoDetectUrl to false and add the attribute TextToEncode="Any text you want to encode as a QR Code" you could use it for other purposes. The control uses the google charts api to generate the QR code image so it can't work if you are offline or your site is on a private intranet with no access to the internet.

Lots of Little Improvements

There is a new section in Site Settings for Company Info as well as some convenience controls to make it easy to show company info in the footer of your site by embedding some new convenience controls in your layout.master file that will automatically pull in the compnay info from site settings. Examples:

<portal:OrganizationControl id="oc1" runat="server" /> will include the company info marked up with Organization markup. There are also a few literal controls that can be used separately:
<portal:CompanyPhoneLiteral id="litPhone" runat="server" />
<portal:CompanyFaxLiteral id="litFax" runat="server" />
<portal:PublicEmail id="litEmail" runat="server" />

There is a new Site Created Event Handler Provider system (usage is yet to be documented), contributed by Joe Davis that allows you to plugin custom code that can execute when additional sites are created.

Blog Category list and Archive list views now use the same settings as the main post list so that they show full posts or excerpts in a paged list instead of just titles.

There is a new setting in Image Gallery to automatically start the colorbox slide show when the page loads.

In the html content feature users with full edit permission can now publish a draft without submitting it through the approval process.

Improved usability for user role management on manage user page.

Made role permissions UI in page settings consistent with module settings where the links are under the security tab for improved usability

Added support for content on the login page.

Added count of members to role list in role manager page

When using LDAP Authentication with fallback to database authentication it is now possible to allow the users with database accounts to login with their email address in addition to the loginname.

Added config settings to make it possible to control the cache duration for 301 redirects or to disable caching.

Restored previously removed support to use cache dependency files based on a config setting to support small web clusters with a shared drive, where dependency files are the easiest way to clear the cache on all the nodes that share the drive without having to use a distrubuted cache.

Added rel="next" and rel="prev" meta links on paged Forums and Lists features to improve the SEO of those features.

Added support for checkboxlist questions in custom user profile with example in comments in mojoProfile.config.

Upgraded from CKeditor 3.6.2 to 3.6.3

Upgraded from TinyMCE 3.4.7 to 3.4.9

Updated to newest version of jcarousel

Update to newer version of google data libraries

Added custom body css class on closed page to make it easier to style the closed page.

Removed un-needed css class from artisteer files, was causing a problem in webstore layout where it did not use the full page width.

Bug Fixes

  • fixed login, password recovery and registration issues when user exists but is flagged as deleted
  • fixed bug in profileview.aspx where custom profile boolean properties were not showing the images for true or false
  • fixed bug in PermissionEdit.aspx where All Users was not checked even if it was saved correctly in the database
  • fixed incorrect parameter type for compiledmeta field in MySql data layer
  • fixed bug in MySql data layer for database logging, incorrect parameter type
  • fixed a bug in the blog where an auto-generated excerpt was being used in the post list even when explicitely created in the editor
  • fixed bug in blog where detail view did not use the blogauthor override setting
  • fixed bug in blog - option to show side pane content and top and bottom content should work in all blog supporting pages
  • fixed bug where new user notification did not work in child sites when using related sites mode
  • fixed a bug in the editors where the unsaved changes warning from spanish resources was causing CKeditor to not work at all and causing unsaved changes prompt to not work in TinyMCE
  • fixed bug in SiteStatisiticsModule where it was hard coded to use 1 for the site id
  • fixed bug in newsletter administration where paging did not work
  • fixed bug in Flickr Gallery - don't specify a default size in flickr gallery script so it will not reduce image quality
  • fixed bug - check for null on all paypal IPN paramaters in webstore
  • fixed bug in webstore where media player was shown on offer detail page even when no teaser file was present

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook

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

Site Membership Pro - Coming Soon!

In our last newsletter I mentioned that I was working on a new add on product for mojoPortal named Site Membership Pro.

I've received quite a few emails expressing interest in this product and I'm happy to report that the first release is ready to ship and will be available soon in the mojoPortal store.

Site Membership Pro

However, Site Membership Pro depends on a few small changes I've recently implemented in the core of mojoPortal, so I'll have to wait until after the next release of mojoPortal before I can make it available. My plan is to make a new release of mojoPortal soon, I'm going through our project tracker looking for small things I can complete to round out a new release to make it worthwhile upgrade.

In the mean time, I've created a demo site to show the public facing side of the feature at  You can also try out the back end administration of the feature on our main demo site where you can login as the administrator, but you'll need to add it to a page manually and then you will see the "Settings" and "Manage" links.

What Is Site Membership Pro?

Site Membership Pro provides additional functionality on top of mojoPortal to make it easy to monetize access to your premium site content.

mojoPortal already provides role based security so that you can use roles to protect your premium content. For example you could create a role named "Members Only" and you could set that role as the only allowed View Role on pages in your site that contain premium content. However, managing the roles assigned to a user is a manual process in mojoPortal that can be done by Administrators, Role Adminsitrators or Roles That Can Manage Users. So one would have to go to each user who should be given access to premium content and add the user to the "Members Only" role.

Site Membership Pro provides the missing pieces to make it easy to sell membership subscriptions and automatically grant the user the role or roles that provide access to the premium content on your site when they complete a subscription purchase.

You define Membsership Levels which have a name and one or more roles that are provided with this level of membership. You could keep it simple and just have one level for "Members Only", or you could have multiple tiers of access like Gold, Silver and Bronze each providing different roles that protect sections of your site content.

Then you define Membership Product(s) which grant the user one of the Membership Levels (and the associated roles) for a specified number of days for a specified price. Products can be enabled or disabled and they can have begin and end dates that determine when they are on sale. A grace period can also be specified on the product such that users are not removed from the granted role(s) until after a certain number days after the actual expiration date.

When a user pruchases a membership product they are immediately granted the roles provided by the membership level when the payment has cleared. The begin and end dates of the membership are set at the time of purchase and a background task handles removing roles from the user when the membership expires or the grace period is over (if the user has not renewed).

You can also configure notifications on the products so that users can recieve reminders when their membership is coming up for renewal. Reminders can be configured as a specific number of days before or after either the end date of a membership or the end of the grace period. You can create multiple reminders per product so that you have a series of them to encourage renewal.

You can also define reminder templates for plain text email messages. Templates support some token replacement and you must assign a template to a reminder in order to save it. So the reminder will send a plain text email replacing the tokens from the template at the scheduled time if the user has not renewed.

The same background task that manages removing users from roles if their membership expires also handles sending the reminder messages.

Note that the reminders are intended to provide a link back to your site so the user can renew his membership before it expires. To renew, users have to go through the checkout process. Site Membership Pro does not retain any credit card information and does not automatically charge cards to renew subscriptions. Possibly in the future we will look into available APIs from PayPal and others for recurring payments but we have no plans to retain credit card information in the future. The risks and liability potential involved with retaining credit card information without proper infrastructure and staff to secure the data far outweigh the fact that it would be nice to be able to do that.

Since users probably don't want to go through the checkout process every month it is recommended to structure your membership products with fairly long durations like 6 months or one year as opposed to a month at a time. Free products are also supported so you could have one product that provides a free trial of Premium Access for a limited number of days and a One Year Subscription for $120 for example. You can also mark a product as available only for new members, so that existing members can't get the free trial offer.

Supports Authorize.NET, PlugNPay, PayPal, Google Checkout - ie the same payment systems supported in all mojoPortal ecommerce products (WebStore, Event Calendar Pro, Web Invoice Pro). I'm also investigating adding support for WorldPay for all our ecommerce products in the near future.

The initial release will support MS SQL and MySql, other database platforms may be supported later depending ion demand.

What Site Membership Pro Does Not Do

Site Membership Pro is NOT a replacement for the site registration system. User's must register or sign in to purchase premium membership, so they need to go through the normal registration process first to get a free account, then once they complete the membership purchase they are immediately granted the roles provided by the membership.

Site Membership Pro is not involved in protecting your premiumm content, that is done by configuring roles that can view pages in your site and is built in functionality of mojoPortal.

Site Membership Pro does not retain any credit card information and cannot automatically charge cards when membership renewal is due.

Site Membership Pro does not prevent an Administrator, Role Administrator or Roles That Can Manage Users from adding or removing users from roles.

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook

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

Event Calendar Pro Released

I've just uploaded Event Calendar Pro This is a minor upgrade with just a few little improvements that some customers have been asking for.

What's New?

Improvements to the event editor to get rid of some jumpiness that could happen when additional settings were shown or hidden based on checkbox selection. Previously this was done using UpdatePanel which was the cuase of the jumpiness. All UpdatePanels have been removed from the event editor page and the showing and hiding of things is done with jQuery making it much smoother.

Added settings to allow not requiring or showing address and phone fields on the registration form when the event is free.

Added a setting to use the Event Summary instead of Event Detail in the outbound feed. Often people consume the feed in the mojoPortal Feed Manager on their home page to show upcoming events but they don't want to show the full details.

Added a setting to control how far into the future events are included in the feed. Previously it was hard coded to 180 days, this is now just a default setting that can be changed.

Added more css classes on the body element in edit/admin pages

Added config settings to allow hiding the start and end time on List View and event Detail view if the start and end time is configured to the same value.

Updated the article Event Calendar Pro Tips and Tricks to cover some of the new and previously undocumented config settings.

Event Calendar Pro

We've got lots of plans for future enhancements for Event Calendar Pro, but wanted to get this small update out for the folks who requested these minor improvements. As with the previous release of Event Calendar Pro, this release requires mojoPortal or higher.

This is a free upgrade for existing customers who have already purchased Event Calendar Pro. To download the new version just sign into as the user who made the purchase, then click the "My Account" link at the top of the page and go to Order History. You'll be able to download the latest version from your order details.

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook

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

Using the Blogsy iPad App With mojoPortal

It seems like developing applications for the iPad is all the rage these days as it has become a very popular device.  I’ve thought about developing an iPad app for mojoPortal, it would be fun to learn how to develop apps for iPad and iPhone, but honestly my plate is pretty full just working on mojoPortal itself and add on products for it. So I got to wondering if there were any apps already in existence for the iPad that could work with mojoPortal similar to Windows Live Writer which is the best Windows desktop application for blogging. In case you missed it, in version we improved our support for Windows Live Writer so that you can now edit CMS pages with Html content in addition to Blog posts. I thought it would be pretty cool if there is an iPad application that offers similar functionality as Windows Live Writer.

So I tried a few iPad applications including the WordPress app, BlogPress, and Blogsy. I found Blogsy to be the most feature rich user friendly one of the group. All of these apps support Wordpress and some of them support a few additional blogging platforms and since mojoPortal is much less known than the big blogging platforms I would not expect the developers of those apps to be interested in working on specific support for mojoPortal. So instead I decided to try to support more of the Wordpress API in mojoPortal so that these apps could be used with mojoPortal just as if they were using  Wordpress. I used all 3 of these apps in testing to make sure I was correctly implementing the Wordpress methods, but Blogsy is by far the best one that I could recommend to mojoPortal users who would like to blog from their iPad.


In Blogsy you configure mojoPortal the same as if it were a self hosted Wordpress site. So you enter the url to your Blog page (use https if you have SSL installed) and your login credentials.

Now Wordpress of course is a PHP application (not a .NET app) and the Url for the API is yoursiteroot/xmlrpc.php (you don't enter this url in Blogsy but that is the url it will use to talk to mojoPortal) so we have a handler mapping in our Web.config file that maps requests for xmlrpc.php to our metaweblogapi.ashx handler. This probably only works in IIS 7.x and it may not work if you have PHP installed and configured for your site, but it does work for me.  I don’t have PHP installed so not sure what would happen if it is, but in most hosting control panels you can disable PHP for your site even if it is installed on the server, so hopefully it will work for you.

<add name="WordpressXmlRpcHandler" verb="POST" path="*xmlrpc.php" type="mojoPortal.Web.BlogUI.metaweblogapi, mojoPortal.Features.UI" preCondition="integratedMode"/>

When I first began work on the additional API methods and testing with Blogsy I was getting a lot of crashes. Adding an image from the iPad photostream for example was causing a crash after it uploaded the image to the server. But I contacted the Blogsy guys and they both helped me with advice that the images needed to be named a certain way with a prefix, and they also fixed things in their app to make it more robust and reduce the crashing and now it is working pretty well. I have a first generation iPad and suspect these apps work even better with newer iPads that have more memory available, but it works well enough even on my older iPad.

You can create and edit posts, you can publish or post as draft. It supports inserting images from your Photostream, local storage, Fickr, Picasso, and even videos from YouTube. You can assign and edit categories. You can create and edit CMS pages with Html content in addition to Blog posts. The only missing feature is the ability to set the parent page of a CMS page so you can’t manage the site hierarchy the same as you can with Windows Live Writer, but who knows if enough people request it maybe they will add support for parent pages in a future update to Blogsy.

The additional support for the Wordpress API is included in mojoPortal but I’m just now getting around to documenting it so that people know they can try it. If you have an iPad I hope you’ll give it a try. If you have any troubles with it or any feedback positive or negative let us know. In theory it should work with any Wordpress client. While Windows Live Writer is still the best Windows app for blogging, in the Mac world apps like MarsEdit should theoretically work though I haven’t actually tested it yet.

A quick shout of thanks out to the Blogsy guys for their help and support. I highly recommend you give their app a try if you have an iPad. Its very inexpensive ($5 if I recall correctly), I actually think they could get away with raising the price a bit because it is the best blogging tool currently available on iPad and they are very passionate about it and constantly improving it and listening to the feedback from their customers.

See also:

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook

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

mojoPortal Sightings for February 2012

Our first site for this month's mojoPortal Sightings is Collins Language Pioneers in Dictionary Publishing Since 1819. Thanks to Vijay Karla for letting us know about this one.

Collins Language

 Our good friends at DM2 Creative Marketing Communications also submitted a nice site for Umbrella Collection.

Umbrella Collection

We also received a nice testimonial from the California Commission on Peace Officer Standards and Training. We featured their site in a blog post back in December 2010, when they first launched their site on mojoPortal. Recently they took their site mobile using our add on product Mobile Kit Pro.

California POST Mobile version

My name is Mike, I'm the web applications developer at the Commission on Peace Officer Standards and Training (POST for short). We've been using MojoPortal at POST for over a year now. We recently bought and implemented a mobile site using your Mobile Kit Pro. Prior to this I had hand coded a JqueryMobile/HTML version of our mobile site with a small subset of the pages available on the full site. With MobileKitPro we now allow our users to access all the pages available on the main site on mobile devices. Over the past year and a half we have created custom modules for MojoPortal, I was very impressed that most of these modules worked with the new mobile site without much tweaking.

Thanks so much for your hard work on MobileKitPro.

You're welcome to come check out our site on your Android/iPhone at


We've had similar feedback from quite a few customers using Mobile Kit Pro, it really does make it very easy to deliver a good experience for iPhone, Android Phone, and Windows 7 Phone. Although we don't offically support Blackberry mainly because we don't have a device to test with, Mike also told us it is working well for their Blackberry users.

We'd love to hear about the sites you are bringing online with mojoPortal. If you have a high profile site or a design that you're particularly proud of, or a site showing custom features you've built on mojoPortal, let us know, maybe we'll feature your site(s) in a blog post.

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook

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