Posts in Category: Tutorials

mojoPortal 2.6

mojoPortal 2.6

Today, we're pleased to announce the release of mojoPortal 2.6. We had planned on releasing this version much sooner but we kept adding features! In the future, we're planning on releasing about once per month. Larger features will take more time but our community shouldn't wait for smaller enhancements.

With this release, we're introducing SuperFlexi and the Blog Post List modules. We also have a lot of enhancements and new features for existing modules. Finally, we've made some improvements to Framework and we're releasing a new free skin called "Scout", which can be downloaded from the mojoSkins project.

Where to Get It?

Head over to our GitHub Releases Page.


The SuperFlexi module is intended to serve as an easy templating system that works as a go-between for front-end developers and users. Developers can easily create "Solutions" that determine, to a large extent, the module's uses; controlling both what kind of input users can store in the database and what markup is created on the page. Users can then simply select a "Solution" in the module settings, and create their content with straightforward easily-understood forms, which will then be rendered as determined by the developers defined markup.

SuperFlexi aims to give end users much easier control over their content, even when that content might normally be quite complicated (as in the case of sliders, tables, structured or gridded HTML, and many other things). Possible uses for SuperFlexi are virtually limitless and we're really excited to be adding it as a core module in mojoPortal 2.6.

With mojoPortal 2.6, we're including 8 solutions; Accordion, Banner Slider, Icon Blocks, Image Blocks, Personnel List, Quick Links, Social Media Links, and Tabs. Each of these is demonstrated on the mojoPortal Demo Site. Please note, SuperFlexi does not currently support SQLite and PGSQL. We should have support for those database platforms in a couple of weeks.

To learn more about SuperFlexi, check out the documentation. We've also created a new Forum, just for SuperFlexi.

Blog Post List Module

So, for a very long time, the official guidance for showing a list of blog posts on pages other than the page your blog is on was to use the Feed Manager to consume your blog's RSS Feed. This meant that the Feed Manager had to make an http(s) connection back to your site, consume the feed, cache the feed contents in the database, and then query the database for the cached contents. Granted, the connection and subsequent caching only happened on a set interval but it was very unnecessary. We decided to cut out the middle-man (Feed Manager) and create a module which connects directly to a chosen Blog module and displays the posts. We went a step further by creating a Razor View Engine for this new module. Yes, you read that right, Razor. You can create Razor views to control the display of this new module.

To learn more about the Blog Post List module, head over to the documentation.

Blog Updates

We spent some time on the Blog and besides the wonderful new Razor-enabled Blog Post List, we have added Post Featured Image, Blog Featured Post, and automatic Meta Content creation for Facebook, Twitter, and

Post Featured Image

You can now easily add a featured image to each of your blog posts. This image will be used in the meta elements added to the page for Facebook, Twitter, and other social media outlets. The image is also treated a bit special by the Blog in that it is shown at the top of posts. More on the Post Featured Image.

Featured Post

This feature allows you to set a single post in your blog as "Featured". That post will always be at the top of the post list, even when using the Blog Post List module. More on the Blog Featured Post.

Automatic Meta Content Creation

Sharing posts on social media is a lot easier now because the special meta content markup that is necessary for sites like Twitter and Facebook to show correct titles and post images is now automatically added when you create a post. You can even edit the meta content that is created by editing the post and clicking the "Page Meta Data" tab (we're gonna change that to "Post Meta Data" in the next release).

Other Blog Updates

  • Added Display Settings for the Blog module to allow for easier skinning via CSS classes
  • Updated to actually move the blog navigation in markup instead of changing places with CSS * floats for easier styling
  • Cleaned up a lot of the default markup
  • Panels with no child elements will no longer be rendered
  • Added option to include comment body in comment notifications
  • Added SkinID="Blog" to CommentsWidget
  • Removed "Feed Links". These were links to old MSN, Yahoo and other defunct feed managers.
  • Added option to allow Post Title to be used as Page Heading when the PageHeading (or PageTitle) control is used in the layout.master for the skin

ASP.NET 4.6.2

mojoPortal now requires ASP.NET 4.6.2, which was released in August of 2016. Most hosting providers already support 4.6.2 so you should be fine upgrading your site. If your host doesn't support it and you purchase a hosting plan with i7MEDIA, we'll move your site for free.

TLS 1.2

mojoPortal will now enforce using TLS 1.2 for outgoing connections. This is important for connections to payment processors like Authorize.Net, WorldPay and PayPal.

Site Settings

The Site Settings page has a lot of options for configuring your site. We're actually working on moving more stuff from the web.config to the UI so it'll be easier to configure your site. Knowing that we are going to be adding even more to Site Settings, we implemented a few changes and reorganized some things to make using the Site Settings page easier. In the future, we plan on breaking this single page up into several smaller and more task oriented pages. In this release, you'll notice the following:

  • "Site Title" field moved to the General tab
  • "New Site" link removed (to add another site, go to Administration > Site List)
  • Skin options grouped on the General tab
  • Content Editor options grouped on the General tab
  • Registration options grouped on the Security > Main tab
  • User Account options grouped on the Security > Main tab
  • "Avatar System" option moved to User Account group under Security > Main tab
  • Password options grouped on the Security > Main tab
  • Security > OpenID tab renamed to "3rd Party Auth"
  • OpenID options grouped on the 3rd Party Auth tab
  • Windows Live options grouped on the 3rd Party Auth tab
  • "Host Name Mapping" and "Folder Name Mapping" moved to a single tab called "Site Mappings".
  • "SMTP Settings" tab renamed to "Mail Settings"
  • "Mail Settings" tab is always visible with information on how to enable the fields there. New sites will, by default, use this area for SMTP settings. You can enable this on your site by following the instructions here.
  • "Default Email From Address" and "Default Email From Alias" moved to "Mail Settings" tab
  • Reordered Recaptcha Site/Secret keys to match order on Recaptcha site
  • Added several contextual notes throughout the Site Settings page

Change Log

This change log isn't exhaustive because a lot of changes are already listed above. If we didn't list it above, it should be listed below.


  • Updated mojoPortal to ASP.NET 4.6.2 and C# 7
  • Updated mojoPortal source code to use latest NuGet package management
  • Added RazorBridge method to allow use of MVC Razor Templating in Web Forms controls
  • Added MVC HTML Helper for internal Avatar and Gravatar use in Razor templates
  • Added Link control for inside/outside markup of the link
  • Added AutoEscapeStringForCsv method for exporting data in CSV format
  • Updated Gravatar in Forums to link to mojo user profile by default
  • Fixed File Manager/Page Picker for folder sites and sites running in a virtual directory
  • Moved First Name and Last Name fields to the General tab in the User Profile.
  • Added option to include comment body in notifications
  • Added ExportDynamicListToCSV method to ExportHelper
  • Added ImportHelper with GetDynamicListFromCSV method
  • Removed calls to jQueryFileTree and removed from ClientScripts
  • Removed calls to jQueryLayout
  • Removed call to greybox from Contact Form
  • Fixed possible XSS bug in help dialog, reported by Jarrod Farncomb of TSS (CVE-2017-1000457).
  • Removed WebStore from core (will be available as a separate download from the AddOn store)
  • Cleaned up user.config.sample file
  • Standardized on "Login" instead of "Sign In" (both were used before now)
  • Added Security Protocol information to "Security Advisor" (Administration > Security Advisor)
  • Added CombinePath method to DiskFileSystem file system provider.
  • Added FolderVirtualPath property to WebFile
  • Added NameProperty and ContentProperty to ContentMeta. This allows for creation of meta elements with custom names <meta property="foo" value="bar" /> instead of only allowing for <meta name="foo" content="bar" />


  • Added FormGroupPanel control for settingrows to control their classes
  • Updated Site Settings page to use new FormGroupPanel control
  • Updated the Layout.Master.cs to expose SiteSettings (siteSettings), PageSettings (currentPage), isCmsPage and isMobileDevice to the Layout.Master for richer skinning functionality (Check out the layout.master in the Nature theme)
  • Updated CSSHander to allow for "https://" and non-http-specified ("//") url calls
  • Updated Avatar.cs with new ExtraCssClass property
  • Cleaned up markup of CommentsWidget
  • Added themeable properties to CommentsWidget to help with skinning
  • Added themeable display settings for Contact Form
  • Cleaned up markup of the RelatedNewsletterSetting control
  • Cleaned up markup of HTMLCompare feature (used by version history)
  • Fixed Inline Editing in HTML Module for selecting files/images
  • Fixed CSSHandler for HTTPS URL calls
  • Fixed missing CKEditor Image2 Alignment Classes
  • Added InsideTopMarkup to replace LiteralExtraTopContent in BasePanel
  • Added InsideBottomMarkup to replace LiteralExtraBottomContent in BasePanel
  • Removed the .LESS CSS Utility from the Administration area. We recommend using a tool like Prepros for LESS management.

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 SQL CE and WebMatrix

This is just a quick post in follow up to my previous post SQL Server Compact 4.0 and mojoPortal, to provide some updated information. We recently released mojoPortal, and I've updated the package for SQL CE recently to contain migration scripts so that it is easy to migrate to SQL Server.

I've also created some new documentation.

Using WebMatrix with mojoPortal

WebMatrix includes IIS Express web server which is much easier to use on your local machine than IIS but has all the features of IIS. Once you install WebMatrix, you can right click a folder in Windows Explorer and choose "Open as a Web Site with Microsoft WebMatrix". So you can just unzip the mojoPortal package and right click the wwwroot folder to launch a mojoPortal site on your local machine. If using SQL CE you don't need to even need to configure a database, it just works, but for other mojoPortal packages you would have to set the connection string for the database. 

One could also use WebMatrix for light mojoPortal feature development, perhaps at some point I will make an article showing how to use the mojoPortal Hello World examples with WebMatrix. While WebMatrix is not designed to scratch the same itch as Visual Studio, it is a useful tool even for folks like me who really live in Visual Studio all day long. I encourage you to check it out, especially if you are interested in working with the SQL CE version of mojoPortal.


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.

5 New Developer Training Videos

Just a quick post to mention that 5 more videos have been completed in the developer series of videos. Here is the full list of videos so far and more are on the way soon. The newest videos are at the bottom of the list. The series is aimed at teaching how to build custom features that plug into mojoPortal by demonstrating step by step how to implement a guest book feature. Once the series is completed I will also make the source code available.

  1. Getting the code with TortoiseSVN
  2. Source Code Overview Part 1
  3. Source Code Overview Part 2
  4. Custom Solution
  5. Hello Web
  6. Hello Web Part 2
  7. Hello Guest Book
  8. Concepts Part 1
  9. Concepts Part 2
  10. Debugging in IIS
  11. Create a Table Using the Setup System
  12. Using The Setup System to Run Upgrade Scripts
  13. Generating a Data Access Class
  14. Generate the Business Layer
  15. First Guestbook Submission
  16. Form Layout
  17. Form Layout and Data Binding
  18. Upgrading from svn and Converting to VS 2010
  19. CSS Layout
  20. Using a WYSIWYG Editor and Captcha
  21. Default Button and Input Validation
  22. Protecting Against Untrusted Content
  23. Supporting Pages Part 1
  24. Supporting Pages Part 2
  25. Supporting Pages Part 3
  26. Enforcing Security Part 1
  27. Enforcing Security Part 2
  28. Implementing the update method

UPDATED 2010-05-11: added 3 more videos 26, 27, and 28

Also don't forget the mojoPortal online user group meeting is coming up on May 18, 2010 at 8PM EDT.

mojoportal online user group meeting


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.

Some New Training Videos

Just a quick post to let people know about new training videos available. I am making it my focus for this month to produce a lot more tutorials to answer common questions and especially to help developers get started with custom development. I still have a ways to go with the developer tutorials, but thought I would go ahead an post links to videos I've completed so far.

Installation and Configuration

Developer Series

I've begun a series of clips where I plan to implement a simple Guestbook feature as a way to cover important concepts. 

  1. Getting the code from svn trunk
  2. Introduction to the Source Code Part 1
  3. Introduction to the Source Code Part 2
  4. Creating a Custom Solution and Project
  5. Hello Web Part 1
  6. Hello Web Part 2
  7. Guestbook first steps
  8. Concepts Part 1
  9. Concepts Part 2
  10. Debugging in IIS
  11. Create a Table in the db using the setup system
  12. Create stored procedures with an upgrade script using the setup system
  13. Generating a data access class
  14. Generate the business layer
  15. First Guestbook submission achieved
  16. Form Layout 
  17. Form Layout Part 2 and data binding

Just getting started so far, lots more clips to produce to complete the Guestbook tutorial. I'm planning to cover development of business and data access classes and how to add supporting pages to your feature as well as how to make your feature searchable. I'm working only from an outline not a script, so the videos are mostly improvised and I stumble on a few things here and there, but rather than edit them out, I think it is helpful since you may also stumble a little bit, so learning to work through the stumbles is part of the process.

Each clip will be less than 10 minutes in order to fit them on YouTube, but they are in high definition so the video quality should be pretty decent.

UPDATE 2010-03-08 -added items 8 - 17 to the list above.


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.

New Training Videos Thanks to Expression Studio

Recently, Microsoft announced the release of Expression Studio 3. I was very excited about this because I noticed that my MSDN subscription included it whereas in the past all I had access to was Expression Blend and Expression Web. Kudos to Microsoft for making the whole of Expression Studio available to MSDN subscribers. I don't know if it applies to all subscription levels but whatever I have now includes it and its awesome!

The new parts for me are the Expression Screen Capture and Expression Encoder. I was heavily involved with streaming Windows Media Video years ago like 2003-2005 ish but the new Silverlight technology is so much nicer today. Anyway, the Expression Screen Capture tool is like Camtasia and Wink and other screen capture tools but its pretty darn easy to use and the Expression Encoder can encode the resulting screen capture into various formats, especially .wmv that is optimised for Silverlight, but also formats like mp4 suitable for upload to YouTube or Facebook etc.

I've found some issues with the audio getting out of sync with the video on YouTube but don't really know if its some fault of the mp4 file I upload or the conversion process to Flash that YouTube does. Some of the videos I uploaded to YouTube are better than others in this regard, but the Silverlight versions are consistently good.

There is even free hosting for some Silverlight files up to 1 GB total on and I'm serving my Silveright training videos from there. Expression Encoder can generate an html page to host the video and its easy enough to modify it to point to the video on the site.

So I spent the last 2 days doing some screen capture tutorials for mojoPortal using these new tools. For most of the files I uploaded alternatives on YouTube that don't require the Silverlight plugin, but as mentioned a few of them have audio video sync problems but not real bad. Best if you can watch them using Silverlight though and one of them, the Introduction to the mojoPortal Source Code is 20 minutes long so it was too long to upload to YouTube as they limit you to 10 minutes.

Here is a list of the video tutorials I made in the last 2 days:

I was long overdue to make some more video tutorials and having these nice new tools inspired me to spend a few days on it and it was kind of fun. Hope you find them useful and informative. Now back to regularly scheduled development ;-)

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