We're very pleased to announce the official public release of the next version of the mojoPortal Content Management System, mojoPortal 2.9. This version is full of feature enhancements, usability improvements, and general bug fixes.
We've examined dependencies, upgraded packages, removed bloat, reorganized, and tested, tested, tested! Many highlights are outlined here and the changelog is at the bottom of the post. This is a production-ready release but, as with any system, we highly recommend users perform a full backup of their files and database before upgrading.
Where to Get It?
Head over to our GitHub Releases Page.
Version Number & Release Timeframe
You'll notice the last release was version 2.7 and this release is version 2.9. We've intentionally skipped version 2.8 because while it has been quite a while since our last public release of mojoPortal, we have indeed been working on mojoPortal. Version 2.8 has been in use for some time by many of our own customers and we have distributed it to many of our partners. The primary reason we never released 2.8 publicly is it did not support sqlite or pgsql. In fact, we contemplated dropping support for both of those database platforms but we decided to keep them because 1) we love pgsql and 2) the sqlite version of mojoPortal is more popular than the pgsql version. Admittedly, neither of those reasons are very good so there may come a time when we drop support for one or both of them.
NOTE We had to make a new release of 2.9 on June 20, 2023 because some files were missing from the original release files. There is no functional difference between these versions.
Highlights
- Google Analytics 4 Support
- hCaptcha Support. hCaptcha has feature parity with reCAPTCHA. Using one or other is as simple as selecting either one in Site Settings.
- Keyword Blacklist. Administrators can maintain a list of keywords and phrases which they want to block from being submitted on forms.
- Full Razor (cshtml) support in SuperFlexi
- Skin-based styles and templates which can be used by wysiwyg editors (ckEditor and TinyMCE)
- AirDatepicker replacement for jQuery and other datepickers by default.
- Homepage Override option (Site Settings > Advanced). Forces selected page to be the homepage regardless of site menu structure.
- Custom Menu Feature allows menus to be created from Site Map data by choosing a starting page. Menu is built automatically. Menu Docs
- Custom SMTP Headers and SMTP testing tool. Email Docs
- Site-Wide head and foot content. Allows for adding any content to the head element or just above closing body element through Site Settings. Can be applied to all non-admin CMS pages or all admin pages. We don't like the name, suggest one in the forums.
- AjaxControlToolkit removed from base mojo, it is now only required for FormWizardPro.
- Security Advisor will now check for default admin account.
- SSL enforced for all pages when SSLIsAvailable = true
- Restart Application button in System Information
- Update Check in System Information
SuperFlexi
- Users can set the name of export files when exporting SuperFlexi data
- Items can be set with specific View and Edit roles
- Solutions using Razor can utilize built-in paging support
- Added PageSize module setting
- Can now set name of export file
- Can now use ViewRoles and EditRoles to control who can view and edit individual items.
- New Advanced File Picker for control types "imagePicker" and "linkPicker"
New SuperFlexi Solutions
- Quick Image
- Cookie Consent
Blog
- Metadata editing is more user friendly
- No longer indexing blog posts that aren't published
- Fixed a bug where featured post could be set on unpublished posts
- HTML is no longer allowed in post subtitle.
Event Calendar (basic)
- Show Time option allows showing the time of events in the month view, uses "Short" time pattern
- Enable Map and Show Map allow showing a google map on the event detail page
Contact Form
- Keyword Blacklist support
- WYSIWYG is properly focused on label click and tab
- Removed "Use Input Address as From Address" because it will result in message being seen as SPAM.
Forum
- Prevent script from being added to forum title
- Moved post anchor in PostList to wrapping post div
Design/Skins
- CacheTool now clears the theme.skin cache when the skin version is updated
- Additional AdminDisplaySettings to site settings See Class on GitHub
- New SkinConfig feature.
- Razor for the MemberList and Admin menu pages
- CoreDisplaySettings class
- using in login.aspx register.aspx pages
- CacheTool now clears 'theme.skin' cache
- SkinVersionGuid is now reset during setup
- System content templates are no longer included by default.
Multi-Tenancy
- Host mappings are now cached, reducing trips to the db
- Root Site Admins can edit Site Closed message for all site
Development
- New Input types in ModuleSettings: Number, Color, Range, Password, Email
- New ToDataTable(this List<T> items) extension
- Moved custom MSSQL integer_list_tbltype type from SuperFlexi setup scripts to core setup scripts. No functional change.
- Added ShowInMenu and CssClass to SitemapJson Class
- New XMLHelper to standardize XML handling and security (GitHub)
- New Controller to fetch/update UserProfile information (GitHub)
- mojoButton now allows setting button so we can use "button" element
- Removed old scripts from ClientScript
- UIHelper.SetOrAppendCss now checks for class before adding it
- Added UIHelper.RemoveCss extension to WebControl
- Renamed CSVSplitter to SqlDataRecordList in MSSQL layer
- Added "replacement" option to RemoveLineBreaks string extension
- Added RemoveMultipleSpaces string extension
- Unified mojoMembershipProvider to one set of public virtual methods for all encoding & decoding functions
- Allow placing saltKey before or after password in mojoMembershipProvider
- Added PaymentGatewayType to PaymentGateways
- Removed obsolete FileDialog.aspx
- Updated and expanded existing but unused tagging system.
- New mojoPortal.Core project/namespace. Moving non-web functionality from mojoPortal.Web and mojoPortal.WebFramework here.
- DialogBasePage now inherits from mojoBasePage
Security
- All pages now force SSL by default when SSLIsAvailable.
- ForceSSL checks to see if SSLIsAvailable and only forces SSL if it is, making other code simpler because one no longer needs to check SSLIsAvailable before calling ForceSSL
- Fixed Issue with Azure not recognizing the SSL correctly
- Added UseHSTSHeader web.config property to allow server to manage HSTS headers
- Added HSTSHeaders web.config property and replaced hard-coded values with its value. Default is "max-age: 63072000;"
- Scripts are now stripped from uploaded XML files
Role Manager
- Added Display Name, System Name and Descriptions to Roles. System Name cannot be changed but Display Name can.
- Updated code in Roles to use the Display Name when creating roles during setup and simplified the code for listing the roles in module settings
- Fixed issue with roles being escalated to full administrators
Core
- Default MachineKey now uses HMACSHA256/3DES. Reminder: People should really create their own MachineKey
- Changing terminology from "MultipleSites" to "Multi-Tenancy"
- Replaced jcrop with cropperjs
- Allow Google Translate on SSL pages
- Updated to sqlite3
- Removed MediaElementJS, we now only rely on html5 controls
- Keyword Blacklist support in Internal Comments system
- No longer loading contents of register page when it is redirecting elsewhere
- Added "data-loader" data attributes to script elements to aid in troubleshooting
- Automatically localized AirDatepicker
- Removed many obsolete 3rd party tools
- websnapr, flash, qtfile, impromptu, sizzle, SiteOffice, ImageFit, ClueTip, MarkItUp, YahooMediaPlayer, FlickrGallery, Yui, greybox, dotLess, SilverLight
- Removed PasswordStrengthMeter and mojoRating
- StaticFileExtensions are configurable through StaticFileExtensions web.config property
- Standardized id="Html" on html elemnt for adding lang and dir attributes
- Made supportedDatabases check case insensitive in setup
- hCaptcha/reCAPTCHA url and other settings are now configurable.
- Fix issue with NeatHTML preventing Search Results from displaying in Firefox
- Fixed "User Folder" (My Files) in File Manager
- Added .webmanifest mime type to web.config.
- Increased default folder and file upload limits
- Removed fieldset element from several forms
- Usability improvements to ManageUsers.aspx when managing deleted users
- IndexBrowser now included under Administration/Advanced Tools
- Added search function to redirect management page
- Implement CSHTML for Newsletter Admin and AdminMenu pages
WANT MORE? A more detailed list of changes is available with this release on GitHub and through a comparison of v.2.7 to v.2.9.