 <?xml-stylesheet type="text/css" href="https://www.mojoportal.com/Data/style/rss/rss1.css" ?> <?xml-stylesheet type="text/xsl" href="https://www.mojoportal.com/Data/style/rss/rss1.xsl" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
  <channel>
    <title>mojoPortal Blog</title>
    <link>https://www.mojoportal.com/blog</link>
    <description />
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>mojoPortal Blog Module</generator>
    <language>en-US</language>
    <managingEditor>webmaster@mojoportal.com (mojoPortal)</managingEditor>
    <ttl>120</ttl>
    <atom:link href="https://www.mojoportal.com/Blog/RSS.aspx?p=2~19~5&amp;r=098a1c0d-2e1d-4b91-9b74-c231fbecaa1b" rel="self" type="application/rss+xml" />
    <itunes:author>webmaster@mojoportal.com (mojoPortal)</itunes:author>
    <itunes:owner>
      <itunes:email>webmaster@mojoportal.com</itunes:email>
      <itunes:name>mojoPortal</itunes:name>
    </itunes:owner>
    <itunes:explicit>no</itunes:explicit>
    <itunes:category text="Technology" />
    <item>
      <title>mojoPortal and Accessibility</title>
      <description><![CDATA[<p>Since 2004, mojoPortal has been committed to being accessible to all people. That's not always an easy task because there are many components of websites that just don't work well for some people with some disabilities. We also can't ensure that everyone who builds a site on mojoPortal makes the necessary effort to structure their content to make sure it is fully accessible. So, we've partnered with <a href="https://accessibe.com/a/adnhzp4">accessiBe</a>, the leader in AI Solutions for Web Accessibility &amp; ADA Compliance.&nbsp;With this partnership, mojoPortal will earn a little cash for each purchase made via our partner link, but that's not why we're partnering with accessiBe. We're partnering with accessiBe because it is simply the easiest and most complete accessibility platform on the market.</p>

<p>Hundreds of thousands of websites use accessiBe to help with ADA compliance and web accessibility, so with mojoPortal, you have a Bonafide system in place to help you make your mojoPortal site perfect for everyone!</p>

<h4>Benefits &amp; value for your site:</h4>

<ul>
	<li>Fully automated remediation within 48 hours</li>
	<li>Visible accessibility statement on site</li>
	<li>24-hour automated ongoing compliance scans</li>
	<li>Monthly accessibility audit sent to the inbox</li>
	<li>Extension of market reach</li>
	<li>Enhancement of brand reputation</li>
</ul>

<h4>Integrating mojoPortal with accessiBe</h4>

<p>It is super easy to integrate your mojoPortal site with accessiBe. All you need to do is copy the accessWidget that accessiBe gives you to the "Custom Content" section of Site Settings, click the Save button and you're done! Here's a screenshot of the area in Site Settings:</p>

<figure class="image-captioned"><img alt="Site Settings Custom Content Tab" src="https://www.mojoportal.com/Data/blogposts/site-settings-custom-content-tab.png" />
<figcaption>Site Settings Custom Content Tab</figcaption>
</figure>

<h4>Get Started with accessiBe Today!</h4>

<p>Integrating mojoPortal with accessiBe is a game-changer in web accessibility, simplifying and streamlining the process of becoming accessible and compliant using AI, machine learning, and computer vision.</p>

<p class="text-center"><a class="btn btn-lg btn-primary" href="https://accessibe.com/a/adnhzp4" target="_blank">Get started now!</a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-and-accessibility'>Joe Davis</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-and-accessibility'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+and+Accessibility+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-and-accessibility'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-and-accessibility&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-and-accessibility</link>
      <author>joe+mojoPortal@i7media.net (Joe Davis)</author>
      <comments>https://www.mojoportal.com/mojoportal-and-accessibility</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-and-accessibility</guid>
      <pubDate>Thu, 04 Sep 2025 15:27:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.9</title>
      <description><![CDATA[<p>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.</p>

<p>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.</p>

<h3>Where to Get It?</h3>

<p><a href="https://github.com/i7MEDIA/mojoportal/releases/">Head over to our GitHub Releases Page</a>.</p>

<h3>Version Number &amp; Release Timeframe</h3>

<p>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.</p>

<p class="alert alert-info"><strong>NOTE</strong>&nbsp;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.</p>

<h3>Highlights</h3>

<ul>
	<li>Google Analytics 4 Support</li>
	<li>hCaptcha Support. hCaptcha has feature parity with reCAPTCHA. Using one or other is as simple as selecting either one in Site Settings.</li>
	<li>Keyword Blacklist. Administrators can maintain a list of keywords and phrases which they want to block from being submitted on forms.</li>
	<li>Full Razor (cshtml) support in SuperFlexi</li>
	<li>Skin-based styles and templates which can be used by wysiwyg editors (ckEditor and TinyMCE)</li>
	<li>AirDatepicker replacement for jQuery and other datepickers by default.</li>
	<li>Homepage Override option (Site Settings &gt; Advanced).&nbsp; Forces selected page to be the homepage regardless of site menu structure.</li>
	<li>Custom Menu Feature allows menus to be created from Site Map data by choosing a starting page. Menu is built automatically. <a href="https://www.mojoportal.com/docs/menu-types">Menu Docs</a></li>
	<li>Custom SMTP Headers and SMTP testing tool. <a href="https://www.mojoportal.com/docs/email">Email Docs</a></li>
	<li>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. <i>We don't like the name, suggest one in the forums.</i></li>
	<li>AjaxControlToolkit removed from base mojo, it is now only required for FormWizardPro.</li>
	<li>Security Advisor will now check for default admin account.</li>
	<li>SSL enforced for all pages when SSLIsAvailable = true</li>
	<li>Restart Application button in System Information</li>
	<li>Update Check in System Information</li>
</ul>

<h3>SuperFlexi</h3>

<ul>
	<li>Users can&nbsp;set the name of export files when exporting SuperFlexi data</li>
	<li>Items can be set with specific View and Edit roles</li>
	<li>Solutions using Razor can utilize built-in paging support</li>
	<li>Added PageSize module setting</li>
	<li>Can now set name of export file</li>
	<li>Can now use ViewRoles and EditRoles to control who can view and edit individual items.</li>
	<li>New Advanced File Picker for control types "imagePicker" and "linkPicker"</li>
</ul>

<h4>New SuperFlexi Solutions</h4>

<ul>
	<li>Quick Image&nbsp;</li>
	<li>Cookie Consent</li>
</ul>

<h3>Blog</h3>

<ul>
	<li>Metadata editing is more user friendly</li>
	<li>No longer indexing blog posts that aren't published</li>
	<li>Fixed a bug where featured post could be set on unpublished posts</li>
	<li>HTML is no longer allowed in post subtitle.</li>
</ul>

<h3>Event Calendar (basic)</h3>

<ul>
	<li>Show Time option allows showing the time of events in the month view, uses "Short" time pattern</li>
	<li>Enable Map and Show Map allow showing a google map on the event detail page</li>
</ul>

<h3>Contact Form</h3>

<ul>
	<li>Keyword Blacklist support</li>
	<li>WYSIWYG is properly focused on label click and tab</li>
	<li>Removed "Use Input Address as From Address" because it will result in message being seen as SPAM.</li>
</ul>

<h3>Forum</h3>

<ul>
	<li>Prevent script from being added to forum title</li>
	<li>Moved post anchor in PostList to wrapping post div</li>
</ul>

<h3>Design/Skins</h3>

<ul>
	<li>CacheTool now clears the theme.skin cache when the skin version is updated</li>
	<li>Additional AdminDisplaySettings to site settings&nbsp;<a href="https://github.com/i7MEDIA/mojoportal/blob/master/Web/Admin/Controls/AdminDisplaySettings.cs">See Class on GitHub</a></li>
	<li>New <a href="https://www.mojoportal.com/docs/skin-config">SkinConfig</a> feature.</li>
	<li>Razor for the MemberList and Admin menu pages</li>
	<li><a href="https://github.com/i7MEDIA/mojoportal/blob/master/Web/App_MasterPages/CoreDisplaySettings.cs">CoreDisplaySettings class</a>
	<ul>
		<li>using in login.aspx register.aspx pages</li>
	</ul>
	</li>
	<li>CacheTool now clears 'theme.skin'&nbsp;cache</li>
	<li>&nbsp;SkinVersionGuid is now reset during setup</li>
	<li>System content templates are no longer included by default.</li>
</ul>

<h3>Multi-Tenancy</h3>

<ul>
	<li>Host mappings are now cached, reducing trips to the db</li>
	<li>Root Site Admins can edit Site Closed message for all site</li>
</ul>

<h3>Development</h3>

<ul>
	<li>New Input types in ModuleSettings: Number, Color, Range, Password, Email</li>
	<li>New ToDataTable(this List&lt;T&gt; items) extension</li>
	<li>Moved custom MSSQL integer_list_tbltype type from SuperFlexi setup scripts to core setup scripts. No functional change.</li>
	<li>Added ShowInMenu and CssClass to SitemapJson Class</li>
	<li>New XMLHelper to standardize XML handling and security (<a href="https://github.com/i7MEDIA/mojoportal/blob/master/mojoPortal.Core/Helpers/XmlHelper.cs">GitHub</a>)</li>
	<li>New Controller to fetch/update UserProfile information (<a href="https://github.com/i7MEDIA/mojoportal/blob/master/Web/Controllers/UserProfileController.cs">GitHub</a>)</li>
	<li>mojoButton now allows setting button so we can use "button" element</li>
	<li>Removed old scripts from ClientScript</li>
	<li>UIHelper.SetOrAppendCss now checks for class before adding it</li>
	<li>Added UIHelper.RemoveCss extension to WebControl</li>
	<li>Renamed CSVSplitter to SqlDataRecordList in MSSQL layer</li>
	<li>Added "replacement" option to RemoveLineBreaks string extension</li>
	<li>Added RemoveMultipleSpaces string extension</li>
	<li>Unified mojoMembershipProvider to one set of public virtual methods for all encoding &amp; decoding functions</li>
	<li>Allow placing saltKey before or after password in mojoMembershipProvider</li>
	<li>Added PaymentGatewayType to PaymentGateways</li>
	<li>Removed obsolete FileDialog.aspx</li>
	<li>Updated and expanded existing but unused tagging system.</li>
	<li>New mojoPortal.Core project/namespace. Moving non-web functionality from mojoPortal.Web and mojoPortal.WebFramework here.</li>
	<li>DialogBasePage now inherits from mojoBasePage</li>
</ul>

<h3>Security</h3>

<ul>
	<li>All pages now force SSL by default when SSLIsAvailable.</li>
	<li>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</li>
	<li>Fixed Issue with Azure not recognizing the SSL correctly</li>
	<li>Added UseHSTSHeader web.config property to allow server to manage HSTS headers</li>
	<li>Added&nbsp;HSTSHeaders web.config property and replaced hard-coded values with its value. Default is "max-age: 63072000;"</li>
	<li>Scripts are now stripped from uploaded XML files</li>
</ul>

<h3>Role Manager</h3>

<ul>
	<li>Added Display Name, System Name and Descriptions to Roles.&nbsp;<em>System Name cannot be changed but Display Name can.</em>

	<ul>
		<li>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</li>
	</ul>
	</li>
	<li>Fixed issue with roles being escalated to full administrators</li>
</ul>

<h3>Core</h3>

<ul>
	<li>Default MachineKey now uses HMACSHA256/3DES. <mark class="alert alert-warning p-a-0"><strong>Reminder</strong>: <em>People should really create their own MachineKey</em></mark></li>
	<li>Changing terminology from "MultipleSites" to "Multi-Tenancy"</li>
	<li>Replaced jcrop with cropperjs</li>
	<li>Allow Google Translate on SSL pages</li>
	<li>Updated to sqlite3</li>
	<li>Removed MediaElementJS, we now only rely on html5 controls</li>
	<li>Keyword Blacklist support in Internal Comments system</li>
	<li>No longer loading contents of register page when it is redirecting elsewhere</li>
	<li>Added "data-loader" data attributes to script elements to aid in troubleshooting</li>
	<li>Automatically localized AirDatepicker</li>
	<li>Removed many obsolete 3rd party tools
	<ul>
		<li>websnapr, flash, qtfile, impromptu, sizzle, SiteOffice, ImageFit, ClueTip, MarkItUp, YahooMediaPlayer, FlickrGallery, Yui, greybox, dotLess, SilverLight</li>
	</ul>
	</li>
	<li>Removed PasswordStrengthMeter and mojoRating</li>
	<li>StaticFileExtensions are configurable through StaticFileExtensions web.config property</li>
	<li>Standardized id="Html" on html elemnt for adding lang and dir attributes</li>
	<li>Made&nbsp;supportedDatabases check case insensitive in setup</li>
	<li>hCaptcha/reCAPTCHA url and other settings are now configurable.</li>
	<li>Fix issue with NeatHTML preventing Search Results from displaying in Firefox</li>
	<li>Fixed "User Folder" (My Files)&nbsp;in File Manager</li>
	<li>Added .webmanifest mime type to web.config.</li>
	<li>Increased default folder and file upload limits</li>
	<li>Removed fieldset element from several forms</li>
	<li>Usability improvements to ManageUsers.aspx when managing deleted users</li>
	<li>IndexBrowser now included under Administration/Advanced Tools</li>
	<li>Added search function to redirect management page</li>
	<li>Implement CSHTML for Newsletter Admin and AdminMenu pages</li>
</ul>

<p class="alert alert-success"><strong>WANT MORE?</strong> A more detailed list of changes is available with <a href="https://github.com/i7MEDIA/mojoportal/releases/tag/v.2.9.0.0">this release on GitHub</a> and through a comparison of <a href="https://github.com/i7MEDIA/mojoportal/compare/v2.7.0.0...v.2.9.0.0">v.2.7 to v.2.9</a>.</p>
<br /><a href='https://www.mojoportal.com/mojoportal-2-9'>Joe Davis</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2-9'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.9+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2-9'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2-9&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2-9</link>
      <author>joe+mojoPortal@i7media.net (Joe Davis)</author>
      <comments>https://www.mojoportal.com/mojoportal-2-9</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2-9</guid>
      <pubDate>Thu, 08 Jun 2023 20:42:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.7</title>
      <description><![CDATA[<p>We're pleased to announce the release of mojoPortal 2.7, which has a lot feature enhancements and fixes as you will see below. We're also releasing updated versions of Form Wizard, Event Calendar Pro, Site Membership Paywall, Web Invoice, and Fund Raiser.</p>

<h3>Where to Get It?</h3>

<p><a href="https://github.com/i7MEDIA/mojoportal/releases/tag/v2.7.0.0">Head over to our GitHub Releases Page</a>.</p>

<h3>Highlights</h3>

<ul>
	<li>Google Maps Fix</li>
	<li>New Image Gallery</li>
	<li>MySQL 8 support</li>
	<li>pgSQL and SQLite support for SuperFlexi</li>
	<li>Form Wizard form editing experience improvements</li>
</ul>

<h3>New Feature: Better Image Gallery</h3>

<ul>
	<li>Beginning of a new image gallery. Currently replaces the Image Gallery (Simple Folder Version), will replace the other Image Gallery soon.</li>
	<li>Uses Razor Views the same way the Blog Post List View module does.</li>
	<li>Default layout (view) uses <a href="https://github.com/blueimp/Gallery">BlueImpGallery</a></li>
	<li>Learn more here:&nbsp;<a href="https://www.mojoportal.com/docs/better-image-gallery">Getting Started With The Better Image Gallery</a>.</li>
</ul>

<h3>SuperFlexi</h3>

<ul>
	<li>pgSQL and SQLite support.</li>
	<li>Allow editing when user is in AllowedEditRoles.</li>
	<li>Added "SkinVersionGuid" static token.</li>
	<li>Added WebApi support for retrieving SuperFlexi data.</li>
	<li>Added [dbo] to all object references in mssql scripts.</li>
	<li>Added Pre/Post TokenStringWhen True/False for CheckBoxes.</li>
	<li>Fixed MaxItems needing high number to work properly.</li>
	<li>Fixed bug where not selecting solution would break site.</li>
	<li>Fixed bug where changing Solution would cause an error condition on first click of edit link.</li>
	<li>Fixed bug in MySQL data layer where Int32 dbtype was used when Guid should have been used.</li>
</ul>

<h3>Blog</h3>

<ul>
	<li>Added optional "Default Post URL Prefix" setting. Allows for automatically placing blog posts in a URL hierarchy, e.g., some.domain/my-blog/my-first-post.</li>
	<li>Added logic to Remove post from Search Index if "EndDate" is set to before current date.</li>
	<li>Added logic Remove post from Search Index if "IncludeInSearch" is set to false. Previously, this was only checked when creating a post, not when editing.</li>
	<li>Added logic to check for Heading control on page when UsePostTitleAsPageHeading is true. This setting would hide the blog title if the page heading was no longer on the page if the ShowPageHeading setting was set in the DB from a previous skin.</li>
	<li>Added logic to allow BlogPostListModule to work in ModuleWrapper.</li>
	<li>Changed post title and subtitle fields to not allow HTML. Someone actually thought this was a XSS issue but only people who could add HTML to the post body (thus able to add script) could set the title and subtitle fields. SMHâ€¦</li>
</ul>

<h3>Forums</h3>

<ul>
	<li>Removed old inline styling on table elements</li>
	<li>Standardized on "thread" vs "topic" and capitalization of other phrases/words</li>
</ul>

<h3>Survey</h3>

<ul>
	<li>Added submission limit for authenticated users.</li>
</ul>

<h3>Shared Files</h3>

<ul>
	<li>Added granular permissions for Roles on files and folders.</li>
</ul>

<h3>mojoPortal Core</h3>

<ul>
	<li>Added support for MySQL 8 and SSL connections to MySQL servers.</li>
	<li>Added SQLite database auto creation. If SqliteConnectionString value is "defaultdblocation", mojo will copy the seed database (/data/sqlitedb/mojo-seed.db.config) to &nbsp;(/data/sqlitedb/mojo.db.config). This will prevent accidentally overwriting the existing database.</li>
	<li>Added page deletion confirmation dialog.</li>
	<li>Added .webp to the allowed image file extensions.</li>
	<li>Added WebUser.IsSkinManager method.</li>
	<li>Added new control "EmbedSVGSprite" to allow easier embedding of SVGs in code.</li>
	<li>Added display settings to separate settings/delete from move buttons on PageLayout buttons.</li>
	<li>Added override for UIHelper.AddConfirmationDialog to allow for HtmlButton in place of WebControl. Allows for attaching Confirmation Dialogs to HTML5 button elements.</li>
	<li>Added AlertPanel to allow for easier and standardized skinning of alert messages.</li>
	<li>Added SelectFolder function to FileManager.</li>
	<li>Added ICustomField, Options, Attributes, and DropDown to ModuleSettings. Makes adding dropdown options easier, removes need for special controls for those types of fields. ICustomField is like ISettingControl but it has ability to add additional Attributes to the control. These attributes can be used by the custom control in any way the developer wants. They are also used by the TextBox, CheckBox and DropDown field types in the ModuleSettings.</li>
	<li>Added API Key functionality to Google Maps.</li>
	<li>Added iframe embed option for Google Maps, enabled by default. Doesnâ€™t require an API Key.</li>
	<li>Added SetupFooter options.</li>
	<li>Added CSV_Splitter to MSSQL datalayer. Will create a list of SqlDataRecord from a list of values. This new list is used to populate a TVP (Table-Valued Parameter) in a stored procedure.</li>
	<li>Added StringHelper.IsIn(). string extesion to easily check if string is in an array. Example:
	<pre class="language language-csharp">
<code>string color = "blue";
string[] colors = {"blue", "green", "red"};
if (color.IsIn(colors))
{
    // do something
}</code></pre>
	</li>
	<li>Added Set_Root_Cookie function to mojocombined.js.</li>
	<li>Added .woff2 to web.config.</li>
	<li>Added UIHelper.GetDictionaryFromString(). Converts a semicolon and pipe delimited string to a string,string dictionary.</li>
	<li>Added XMLHelper.GetKeyValuePairsAsStringBuilder and XMLHelper.GetKeyValuePairs.</li>
	<li>Added Browse Files permission to allow users to use the file manager but not make any changes or upload new files.</li>
	<li>Changed location of "Design Tools" to Admin Menu.</li>
	<li>Changed to Newer/prettier/better/fantastical markup for error page.</li>
	<li>Changed UIHelper.AddConfirmationDialog to allow for more than one onclick call.</li>
	<li>Changed the rendered order of CssClass and ExtraCssClasses on BasePanel. (extra is now second).</li>
	<li>Changed RolesThatCanDeleteFileInEditor to always include ContentAdmins.</li>
	<li>Changed FriendlyUrl Suggestions to use optional url prefix.</li>
	<li>Changed permissions to allow ContentAdmins to delete in File Manager.</li>
	<li>Changed permissions to allow ContentAdmins to see FileManager link.</li>
	<li>Cleaned up System Log page when logging to database.</li>
	<li>Cleaned up controls in built-in features, added SkinIDs to buttons, converted panels to FormGroupPanel.</li>
	<li>Fixed some capitalization issues in MySQL db scripts.</li>
	<li>Fixed "Skin Manager" CSS editing to allow editing CSS files in sub-directories of a skin.</li>
	<li>Fixed OpenID (janrain) issue preventing logins.</li>
	<li>Fixed bug where Site Search Module wasnâ€™t using the feature filter from the module settings.</li>
	<li>Fixed caching issue in FileManager by disabling caching. This was causing issues with the FileSystemServiceToken which would prevent users from using the File Manager.</li>
	<li>Fixed reference to non-existent 404notfound.aspx file in web.config</li>
	<li>Fixed FileManager for folder-based multi-tenancy.</li>
	<li>Fixed folder url recognition in folder-based multi-tenancy. No longer need to create folder and add empty default.aspx file.</li>
	<li>Fixed saving of FirstName and LastName on create in ManageUsers.aspx</li>
	<li>Fixed buggy regex for CustomCssClass settings in several modules. Consecutive spaces in submitted input were causing the regex validation to lockup.</li>
	<li>Removed DetectPageNotFoundForExtensionlessUrls to fix issues with Routing (new file manager).</li>
	<li>Removed GreyBoxIsLoadedFromSkin in code and user/web.config.</li>
	<li>Removed LessUtility from DesignTools.</li>
	<li>Removed unused images and css from data/style.</li>
	<li>Removed unused icons and images from data/SiteImages.</li>
	<li>Removed more corner rounding controls.</li>
	<li>Removed FeatureIcon/ModuleIcon and PageIcon settings.</li>
	<li>Removed Twitter and Flicker modules that no longer work due to drastic changes in service APIs.</li>
	<li>Replaced several hard coded instances of image file extensions.</li>
	<li>Replaced long string concatenation with string interpolation (not complete, work-in-progress).</li>
	<li>Replaced ugly icons used on PageLayout for moving content with FontAwesome 5 SVG sprite.</li>
	<li>Replaced a lot of the old ugly icons used throughout project with simplified icons. Planning full replacement of these icons with something else later.</li>
	<li>Standardized Authentication Checks and Access Denied redirects. Had about 10 different process flows before.</li>
	<li>Standardized use of NonCmsBasePage across admin page.</li>
</ul>

<h3>Web Store 7.5.0.1</h3>

<p>Web Store&nbsp;can be downloaded <a href="https://www.mojoportal.com/using-the-webstore">here</a>.</p>

<ul>
	<li><strong>REQUIRES mojoPortal 2.7</strong></li>
	<li>Added support for MySQL 8 and SSL connections to MySQL servers.</li>
	<li>Added proper SkinID to buttons so they will match styling of the rest of the site</li>
	<li>Removed the now defunct Google Checkout</li>
	<li>UI Improvements, including several new <a href="https://www.mojoportal.com/using-the-webstore">Display Settings</a></li>
</ul>

<h3>Form Wizard 2.7</h3>

<p>Form Wizard can be purchased in the store. If you already own a license, go to My Profile under your avatar on the mojoPortal site to download the latest version.</p>

<ul>
	<li><strong>REQUIRES mojoPortal 2.7</strong> <em>(version numbers being the same is just a coincidence)</em>.</li>
	<li>Added support for MySQL 8 and SSL connections to MySQL servers.</li>
	<li>Added a lot of Display Settings.</li>
	<li>Added SkinIDs to submit and previous buttons.</li>
	<li>Added Question Alias to divs wrapping each row in rendered form. Allows for selecting specific questions by targeting data-question-alias in script.</li>
	<li>Changed field/question editing to use pop-up modals. Framework based skins and skins with Bootstrap 3.7 work with this automatically. For others, <a href="https://www.mojoportal.com/docs/form-wizard#2-7compat">see this</a>.</li>
	<li>Changed Slider question to use HTML Slider Input by default.</li>
	<li>Changed Slider Range inputs to textboxes.</li>
	<li>Changed FormUtils.GetAttachments to public so it can be used in SubmissionHandler.</li>
	<li>Changed HTML Question to use mojoEditor (will use whatever editor is default in mojo).</li>
	<li>Changed ugly icons used for moving question options to FontAwesome.</li>
	<li>Fixed Question disappearing when editing.</li>
	<li>Fixed submit buttons being disabled when using pages.</li>
	<li>Removed SliderMaxRangeLimit option.</li>
</ul>

<h3>Event Calendar Pro 3.5</h3>

<p>Event Calendar Pro can be purchased in the store. If you already own a license, go to My Profile under your avatar on the mojoPortal site to download the latest version.</p>

<ul>
	<li><strong>REQUIRES mojoPortal 2.7</strong>.</li>
	<li>Added support for MySQL 8 and SSL connections to MySQL servers.</li>
	<li>Added "Use iframe Embed for Map" option for Google Maps.</li>
	<li>Added a lot of Display Settings to help with skinning.</li>
	<li>Fixed issue where customer company input was not showing on ticket purchase form when "Show Address on Free Event Registration" was disabled.</li>
	<li>Moved ticket options to separate tab in event editor.</li>
	<li>Removed Bing Map support.</li>
	<li>Renamed "Sales Management" to "Administration".</li>
</ul>

<h3>Web Invoice 1.8</h3>

<p>Web Invoice can be purchased in the store. If you already own a license, go to My Profile under your avatar on the mojoPortal site to download the latest version.</p>

<ul>
	<li><strong>REQUIRES mojoPortal 2.7</strong>.</li>
	<li>Added support for MySQL 8 and SSL connections to MySQL servers.</li>
	<li>Added optional Invoice Fee.</li>
	<li>Added Email CC option.</li>
	<li>Added Email BCC option.</li>
</ul>

<h3>Fund Raiser 1.3</h3>

<p>Fund Raiser can be purchased in the store. If you already own a license, go to My Profile under your avatar on the mojoPortal site to download the latest version.</p>

<ul>
	<li><strong>REQUIRES mojoPortal 2.7</strong>.</li>
	<li>Added support for MySQL 8 and SSL connections to MySQL servers.</li>
	<li>Added a lot of Display Settings to help with skinning.</li>
	<li>Removed CornerRounder Controls</li>
</ul>

<h3>Site Membership Paywall 1.1</h3>

<p>Site Membership Paywall can be purchased in the store. If you already own a license, go to My Profile under your avatar on the mojoPortal site to download the latest version.</p>

<ul>
	<li><strong>REQUIRES mojoPortal 2.7</strong>.</li>
	<li>Added support for MySQL 8 and SSL connections to MySQL servers.</li>
</ul>
<br /><a href='https://www.mojoportal.com/mojoportal-2-7'>Joe Davis</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2-7'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.7+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2-7'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2-7&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2-7</link>
      <author>webmaster@mojoportal.com</author>
      <comments>https://www.mojoportal.com/mojoportal-2-7</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2-7</guid>
      <pubDate>Sat, 20 Oct 2018 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>A New Beginning</title>
      <description><![CDATA[<p>It is an exciting day for the mojoPortal project! First, allow me to introduce myself. My name is Joe Davis. I am the Founder and President of i7MEDIA and a longtime supporter of mojoPortal. On Friday, February 3, 2017, I and Joe Audette, Founder of mojoPortal, completed an agreement for the sale of mojoPortal to i7MEDIA. This sale includes the open source project and the commercial modules available on the mojoPortal website from Joe Audette's company, Source Tree Solutions.</p>

<p>I have been using mojoPortal since 2008 and supporting it since 2009. I started my business in 2008 and set out to find a good content management system I could use to build websites for my customers. After a lot of trial and error, I came across mojoPortal and I was immediately drawn to its ease-of-use and friendly forum, fostered by Joe Audette. After 9 years of building sites with mojoPortal, contributing to the core, and providing support to my own clients and those around the world through the forums, I am thrilled that I, and my company, are able to ensure the further development of mojoPortal.</p>

<p>Rest assured mojoPortal will remain open source and there are no plans to change that. We (i7MEDIA) do, however, have plans for expanding mojoPortal to help it stay relevant and to provide the best .NET CMS platform on the market today.</p>

<p>You're sure to be wondering what Joe Audette has to say about all of this.&nbsp;Well, he is very enthusiastic about the new life of mojoPortal:</p>

<blockquote>
<p>It gives me great satisfaction to know that I have created something that so many people have found useful and that it will continue to be used and supported by a top community member and his organization. Joe Davis and i7MEDIA have always been the most qualified consultants for mojoPortal other than myself, and I've always had great confidence in referring customers and projects to them over the years. Joe Davis has been a good friend and has been my go to guy when I needed to refer a customer or project that I did not have the capacity for. Whether you need design help, hosting, or custom feature development, i7MEDIA is the team you want with years of experience. mojoPortal was my baby for over a decade, and my baby is in good hands! Long live mojoPortal!</p>

<footer>Joe Audette, <cite>mojoPortal Founder</cite></footer>
</blockquote>

<h3>What's Changing?</h3>

<h4>Basic Stuff</h4>

<p>At first, we're going to focus on changing small things that will save site owners and site builders time. Some of these items are:</p>

<ul>
	<li>Ensuring that settings are logically organized and&nbsp;labeled properly.</li>
	<li>Removing unnecessary markup (empty divs, excessive &lt;br&gt; elements, etcâ€¦).</li>
	<li>Consolidating DB scripts.</li>
</ul>

<h4>Developer Support</h4>

<p>Development of add-ons for mojoPortal isn't necessarily hard but there is a bit of a learning curve and quite a few steps one must take to prepare a working development environment. Our focus will be on cutting down on the number of steps and making the process easier overall. We will also explore possible MVC and WebApi implementations of some features, especially administration features like the File Manager.&nbsp;</p>

<p>Additionally, we want to engage with the developers already using mojoPortal to get them contributing code to the project. GitHub provides a very simple mechanism for generating pull requests so if you have code you would like to contribute, we would be very grateful.</p>

<h4>Beautiful Design</h4>

<p>It has always been possible to create beautiful sites with mojoPortal but the built-in skins were not good examples. We're fixing that and we're committed to making sure that mojoPortal is seen as a designer-friendly CMS. To make that happen, we're going to implement some new functionality which will allow UI developers to include options for site owners to control various aspects of their skin.</p>

<h4>Documentation Audit</h4>

<p>mojoPortal is a fairly well-documented system but there is a lot of stuff that is just not needed anymore, other things have changed, and there's a lot that isn't documented.&nbsp;</p>

<h4>Commercial Add-On Pricing and Licensing</h4>

<p>We're working on the licensing and pricing for the commercial add-ons. Some of them are going to be released as open source and others will see their prices change. The server licenses are back and are generally at a lower price than before. To see the new pricing, take a look at the <a href="https://www.mojoportal.com/add-ons">store</a> (we've renamed the page "Add-Ons" because in the near future we're going to have a marketplace so others can sell or list their own add-ons).</p>

<p>Licensing has changed for all commercial add-ons with regard to updates. Now, each purchase of an add-on will give the purchaser a year of updates to that add-on. If you purchase Form Wizard Pro on February 5, 2017, you can continue to download updates to the module through February 5, 2018.</p>

<h3>When's the Next Update?</h3>

<p>We expect to release a new version in the next couple of weeks with several small fixes, a few clean bootstrap-based skins, and a brand-new file manager to replace both of the current file managers and the link and image picker used in the WYSIWYG editors. That's right, one file manager that does it all.&nbsp;</p>

<h3>We Need Your Help</h3>

<p>We purchased mojoPortal and we're committed to it being a success, again. We will need your help to make this happen. If you would like to help with documentation, <a href="https://www.mojoportal.com/contact">let us know</a>. If you would like to contribute code, <a href="https://help.github.com/articles/creating-a-pull-request/">check out how easy it is to submit a pull request</a>. If you would like to help others looking for help, <a href="https://www.mojoportal.com/Forums/EditSubscriptions.aspx?mid=34&amp;pageid=5">subscribe to the forums</a>.</p>

<h3>Here's to the Future of mojo!</h3>

<p>I am very excited about the future of mojoPortal. We soft-launched the mojoPortal website over this past weekend and I have already received a few inquiries about what's going on and some messages of support. Thank you for taking the time to read this post. If you have any questions, please feel free to ask them in the <a href="https://www.mojoportal.com/forums">forums</a> or <a href="https://www.mojoportal.com/contact">send us an email</a>.</p>
<br /><a href='https://www.mojoportal.com/a-new-beginning'>Joe Davis</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/a-new-beginning'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=A+New+Beginning+https%3a%2f%2fwww.mojoportal.com%2fa-new-beginning'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fa-new-beginning&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/a-new-beginning</link>
      <author>joe+mojoPortal@i7media.net (Joe Davis)</author>
      <comments>https://www.mojoportal.com/a-new-beginning</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/a-new-beginning</guid>
      <pubDate>Mon, 06 Feb 2017 14:56:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.4.0.9 Released</title>
      <description><![CDATA[<p><a href="https://www.mojoportal.com/">mojoPortal</a> 2.4.0.9 is now available on our <a href="https://www.mojoportal.com/download">download page</a>.</p>

<h4>What's New?</h4>

<ul>
	<li>Upgraded to the new more stable version of Ajax Control Toolkit version 15.1 which is now maintained by DevExpress.</li>
	<li>CKEditor upgraded to version 4.4.7 from 4.4.6</li>
	<li>TinyMCE upgraded to 4.1.9 from 4.1.7</li>
	<li>added basic flat rate shipping price to products in WebStore - by Joe Davis of i7MEDIA</li>
	<li>added config settings to control whether non download webstore orders require authentication</li>
	<li>added option to FlexMenu to control rendering of href when page is not clickable</li>
	<li>fixed bug incorrect redirecturl if using ConfirmRegistration.aspx</li>
	<li>fixed bug in poll - incorrect handling of utc vs local time for isactive</li>
	<li>fixed bug where ssl redirects were not correctly detecting proxy server settings</li>
	<li>fixed a bug that prevented shared files uploads when using an ssl proxy server</li>
	<li>fixed bug in list/link folder sites with relative file urls</li>
	<li>fixed bug in FlexMenu when using the ChildNodesPerUl option and a page is hit which shouldn't be in the menu, it's still counted</li>
	<li>fixed bug custom profile dropdowns did not support required</li>
	<li>fixed bug in webstore where shipping panel was not shown on confirm order page when cart had shipped items</li>
	<li>fixed unlocalized string on register page</li>
</ul>

<p>Note that there are corresponding compatibility updates for each of our add on products. Existing customers can get the updated versions of our add on products by logging in to this site as the user with the purchase history, click the "My Account" link at the top of the page and then click "Order History".</p>

<p>As with all&nbsp;releases of mojoPortal, when upgrading you should make sure you use the new Web.config file and restore any customizations such as the machine key from your old one. This is especially important for this release because there are quite a few changes and additions in Web.config and some of them are subtle such as control declarations for ajaxcontroltoolkit which changed only by case of a few letters.</p>

<p><strong>UPDATE 2015-05-08</strong> This new version of AjaxControlToolkit seems to be broken in medium trust web hosting, I have <a href="https://ajaxcontroltoolkit.codeplex.com/workitem/27845">reported the problem here</a>. Anyone hosted in Medium Trust should not upgrade to this version of mojoPortal until this is resolved.</p>

<p><strong>UPDATE 2015-05-11</strong> We were able to implement a workaround to get past the medium trust error. We have now uploaded a new package on our codeplex page named mojoportal-2-4-0-9-mssql-net45-mediumtrust-deploymentfiles.zip which is pre-configured to work in medium trust hosting. There were some changes in code to support this configuration so mojoPortal.Web.dll was modified, Web.config was modified, and AjaxControlToolkit.StaticResources.dll had to be deleted from the bin folder to complete the workaround.</p>
<br /><a href='https://www.mojoportal.com/mojoportal-2409-released'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2409-released'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.4.0.9+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2409-released'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2409-released&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2409-released</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2409-released</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2409-released</guid>
      <pubDate>Wed, 29 Apr 2015 13:55:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.4.0.4 Released</title>
      <description><![CDATA[<p><a href="https://www.mojoportal.com/">mojoPortal </a>2.4.0.4 is now available on our <a href="https://www.mojoportal.com/download">download page</a>.</p>

<p>In one sense this is a minor upgrade with a few improvements but this is also a significant release in that it marks a change in our target framework from .NET 4 to .NET 4.5. Since mojoPortal is now compiled against the .NET 4.5 framework, any code that depends on it must also be compiled against the newer framework, so we have also released corresponding compatibility updates for all of our add on products.</p>

<p>In terms of web hosting, you can host either .NET 4 or .NET 4.5 compiled code under .NET 4.5 hosting and most hosts should probably be updated to .NET 4.5 by now. .NET 4.5 is really still the .NET 4 framework with some additions, it is considered an in place upgrade of the framework, so it may not be easy to know for sure whether your hosting has been updated to .NET 4.5 or if it still is running an older .NET 4 framework.</p>

<p>If you do get errors about the framework version after deploying the upgrade, we have a separate download&nbsp;with&nbsp;replacement Web.config and bin folder which has a version of the dlls compiled for&nbsp;.NET 4. Using these files should get things working again if you are still using .NET 4.</p>

<p>We have a similar package of replacement files that should in theory also support &nbsp;.NET 3.5 but at this point we are not officially supporting .NET 3.5 any longer and we hope very few people download that package.</p>

<p>Changing our target framework to .NET 4.5 allows us to start moving forward with the use of some of the great new things that the .NET team has been working on such as Web API. In fact this release has a new plugin system that allows features to plugin their own Web API Routes, and we implemented a small custom web api in our forum feature to handle moderation before sending posts to the forum subscribers as discussed below.</p>

<h3>Forum Improvements</h3>

<p>This release includes a new per forum setting for Roles That Can Post.&nbsp;We've had several&nbsp;requests for making read only forums and also for limiting posting by role so that only premium members could post. This is useful for example if you are selling site membership levels with <a href="https://www.mojoportal.com/site-membership-pro-product">Site Membership Pro</a>.</p>

<p>It is now possible also to configure the forums such that notification email is not sent until a moderator approves the post for sending to the list. We really needed that on this site because we have our forums configured to include the post message in the notification email and we had several occasions where someone would register late at night and post a few spamy forum posts that got emailed to our subscribers and this in turn hurts the reputation of our email system. Note that the settings for this are per forum and you must add the moderator emails in the settings so that the moderator gets notified of the new post. The moderator will see new link buttons on the post for either sending the post to the list or marking it as sent so that it does not get sent to the list. There is also a setting to allow users that are marked as "Trusted" in the user management page to have their posts sent to the list without moderation so that you can avoid delays for posts from your active trusted community members.</p>

<p>There are also new settings per forum that control whether new posts get included in the google site map for the forums by default or whether new posts get a NOINDEX meta tag added by default. On this site we've found that forums can be a mixed bag in terms of SEO value, some threads&nbsp;may have worthy content and others may not. You can always edit a thread after the fact to set whether it is included in the google site map or whether it gets a NOINDEX meta, these new forum level settings just control the default for new posts.</p>

<p>This release also includes upgrades&nbsp;to&nbsp;CKEditor 4.4.3 (from 4.3.4) and TinyMCE 4.1.2 (from 4.0.21). We've also included the new moono-dark skin for CKEditor which you can enable by adding this in user.config:</p>

<p>&lt;add key="CKEditor:Skin" value="moono-dark" /&gt;</p>

<p><img alt="ckeditor moono-dark skin" src="https://www.mojoportal.com/Data/Sites/1/media/blogposts/ckeditor-moono-dark.png" style="width: 650px; height: 236px;" /></p>

<p>If you have a dark site skin you might like that better than the default editor skin.</p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>

<p><strong>UPDATE 2014-09-10</strong></p>

<p>We have been receiving some reports of problems with mojoPortal 2.4.0.4 under .NET 4 hosting. At this time we do not have a solution for those problems (except to migrate the site to 4.5 hosting) so we do not recommend anyone to upgrade to mojoPortal 2.4.0.4 unless you have .NET 4.5 hosting. It can be difficult to determine whether your hosting is 4.0 or 4.5 because 4.5 is really like a service pak for 4.0 that has been out for 2 years now, and if you look under Administration &gt; System Information it will say version 4.0..... even if you are hosted under 4.5. So the best thing to do is ask your host if you have 4.5 or not, and if possible move your site to 4.5 hosting before upgrading.</p>

<p>The problem with our 4.0 build seems to be that even though we target 4.0 in Visual Studio when compiling it, it ends up being compiled for 4.5 because when 4.5 is installed it replaces 4.0. <a href="http://stackoverflow.com/questions/13748055/could-not-load-type-system-runtime-compilerservices-extensionattribute-from-as">Visual Studio is supposed to use a reference version of 4.0 when compiling projects that target 4.0 but in practice sometimes it does not work</a> and we think this may be the problem with our build. We do not have any machine with Visual Studio that don't also have 4.5 installed so we cannot be sure that our build is really targeting 4.0 as it should. If someone has a machine without 4.5 installed and they have Visual Studio 2013 Pro then they could compile their own build that targets 4.0, but going forward we are not confident that we can produce such builds.</p>
<br /><a href='https://www.mojoportal.com/mojoportal-2404-released'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2404-released'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.4.0.4+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2404-released'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2404-released&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2404-released</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2404-released</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2404-released</guid>
      <pubDate>Fri, 18 Jul 2014 19:03:00 GMT</pubDate>
    </item>
    <item>
      <title>Minor Update For Page Manager Pro</title>
      <description><![CDATA[<p>I've just posted a minor update to our <a href="https://www.mojoportal.com/page-manager-pro-product">Page Manager Pro</a> add on product. We've added a link to page permissions in the command menu along with an indicator of whether a page is public or protected by roles.</p>

<p><img alt="Page Manager Pro with new permissions link" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/page-manager-pro-2.png" style="width: 662px; height: 621px;" /></p>

<p>This is a free update for existing customers who have already purchased Page Manager Pro, the latest version can be downloaded from your purchase history under the "My Account" link at the top of the page after signing in as the user who purchased.</p>
<br /><a href='https://www.mojoportal.com/minor-update-for-page-manager-pro'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/minor-update-for-page-manager-pro'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Minor+Update+For+Page+Manager+Pro+https%3a%2f%2fwww.mojoportal.com%2fminor-update-for-page-manager-pro'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fminor-update-for-page-manager-pro&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/minor-update-for-page-manager-pro</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/minor-update-for-page-manager-pro</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/minor-update-for-page-manager-pro</guid>
      <pubDate>Tue, 13 May 2014 19:35:00 GMT</pubDate>
    </item>
    <item>
      <title>Mobile Kit Pro 2.0 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of version 2.0 of our add on product <a href="https://www.mojoportal.com/mobile-kit-pro-product">Mobile Kit Pro</a>. This update adds support for unclickable pages that just expand when clicked instead of navigating, and also includes a new skin i7MEDIA-mobile1 provided by our friends at <a href="http://i7media.net/">i7MEDIA</a>.&nbsp;</p>

<p><img alt="mobile skin by i7media" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/mobilekit-demo-site1.png" style="width: 366px; height: 550px;" /><img alt="mobile menu styled by i7MEDIA" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/mobilekit-demo-site2.png" style="width: 366px; height: 550px;" /></p>

<p>A lot of people don't realize that mobile skins using Mobile Kit Pro can be styled any way you like just like normal skins. Really the most important feature of Mobile Kit Pro is its MobileMenu control which by default is styled using jQueryUI styles but <a href="https://www.mojoportal.com/mobile-kit-pro-mobilemenu">can be styled using any CSS and CSS classes</a>. The new i7MEDIA skin now included in Mobile Kit Pro provides a good example of this flexibility. If you're not a web designer yourself but would like to have a custom mobile design you should contact <a href="http://i7media.net/">i7MEDIA</a>. They have done numerous custom mobile skins for their clients using Mobile Kit Pro and they are experts in all aspects of mojoPortal.</p>

<p>This is a free update for existing customers who already purchased Mobile Kit Pro. Just login to this site using the account that you used to purchase Mobile Kit Pro and you can always download the latest version from your purchase history under the "My Account" link at the top of the page. If you haven't already purchased Mobile Kit Pro now is a good time to make your site mobile phone friendly with <a href="https://www.mojoportal.com/mobile-kit-pro-product">Mobile Kit Pro</a>.</p>
<br /><a href='https://www.mojoportal.com/mobile-kit-pro-20-released'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mobile-kit-pro-20-released'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Mobile+Kit+Pro+2.0+Released+https%3a%2f%2fwww.mojoportal.com%2fmobile-kit-pro-20-released'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmobile-kit-pro-20-released&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mobile-kit-pro-20-released</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mobile-kit-pro-20-released</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mobile-kit-pro-20-released</guid>
      <pubDate>Thu, 08 May 2014 18:48:00 GMT</pubDate>
    </item>
    <item>
      <title>Page Manager Pro - for easier management of large site hierarchies</title>
      <description><![CDATA[<p>I'm happy to announce the availability of our new add on product, <a href="https://www.mojoportal.com/page-manager-pro-product">Page Manager Pro</a>, available now in the <a href="https://www.mojoportal.com/store">mojoPortal Store</a>&nbsp;starting at $49 for a Single Installation License. If you have a large site hierarchy with hundreds or thousands of pages you may find that the built in PageTree.aspx included in mojoPortal becomes unwieldy, Page Manager Pro is a drop in replacement for PageTree.aspx &nbsp;designed to address that problem with an easier drag and drop solution for moving pages around in the site hierarchy. We developed this add on based on requests from some of our customers who have very large sites and we have received &nbsp;a lot of positive feedback so far. You can try it out on our <a href="https://demo.mojoportal.com">demo site</a> to decide if you like it better than the built in PageTree.</p>

<p><img alt="Page Manager Pro Screen Shot" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/page-manager-pro-1.png" style="width: 672px; height: 650px;" /></p>
<br /><a href='https://www.mojoportal.com/page-manager-pro-for-easier-management-of-large-site-hierarchies'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/page-manager-pro-for-easier-management-of-large-site-hierarchies'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Page+Manager+Pro+-+for+easier+management+of+l...+https%3a%2f%2fwww.mojoportal.com%2fpage-manager-pro-for-easier-management-of-large-site-hierarchies'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fpage-manager-pro-for-easier-management-of-large-site-hierarchies&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/page-manager-pro-for-easier-management-of-large-site-hierarchies</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/page-manager-pro-for-easier-management-of-large-site-hierarchies</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/page-manager-pro-for-easier-management-of-large-site-hierarchies</guid>
      <pubDate>Tue, 15 Apr 2014 18:46:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.4.0.3 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="https://www.mojoportal.com/">mojoPortal</a> 2.4.0.3, available now on our <a href="https://www.mojoportal.com/download">download page</a>.</p>

<h3>What's New?</h3>

<ul>
	<li>Added support for <a href="https://www.mojoportal.com/google-news-site-map">Google News Site Map</a> generation in the blog feature making it easy to submit news articles for syndication by google news.</li>
	<li>Added a new Custom Javascript Module by Joe Davis of i7MEDIA that makes it easy to add custom javascript to a page.&nbsp;</li>
	<li>Upgraded from CKeditor 4.3.2 to 4.3.4</li>
	<li>Upgraded from TinyMCE 4.0.12 to 4.0.21</li>
	<li>Added config setting to support using html email for newsletter confirmation instead of the default plain text confirmation message</li>
	<li>Add string extension method JsonEscape() to StringHelpers class</li>
	<li>Fixed a bug in indexhelper where the item could be indexed 2x in some cases creating duplicate search results</li>
	<li>Fixed bug extra closing ul in forum alt lists</li>
	<li>Fixed bug where DateOfBirth profile property was not mapped to the corresponding field in mp_Users table</li>
	<li>Implemented new EmailValidator control that uses regex client side but server side just tests if the address is valid with System.Net.Mail.MailAddress to reduce performance load of server side regex</li>
	<li>Implemented correct json escaping for editor style and content templates, should prevent problems with quotes in the content that previously results in javascript errors</li>
	<li>Fixed bug where ExtendedValidElements from TinyMCE4.config was not being rendered by the TinyMCE editor</li>
	<li>Added support for display ad (doubleclick) tracking in google universal analytics</li>
	<li>Moved charset above title in layout.master of included skins</li>
	<li>Updated Italian Resources from Diego Mora</li>
	<li>Fixed bug in Nivo Slider themes in Image Gallery</li>
</ul>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-2403-released'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2403-released'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.4.0.3+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2403-released'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2403-released&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2403-released</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2403-released</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2403-released</guid>
      <pubDate>Mon, 14 Apr 2014 17:11:00 GMT</pubDate>
    </item>
    <item>
      <title>Ecommerce Features Updated to Support PayPal Express Checkout</title>
      <description><![CDATA[<p>Just a quick post to mention that all of our <a href="https://www.mojoportal.com/">mojoPortal</a> ecommerce add on features have been updated to support <a href="https://www.mojoportal.com/using-paypal-express-checkout">PayPal Express Checkout</a> in addition to <a href="https://www.mojoportal.com/using-paypal-standard.aspx">PayPal Standard</a> which they already supported in previous versions.</p>

<p>We've added a new documentation article <a href="https://www.mojoportal.com/using-paypal-express-checkout">Using PayPal Express Checkout</a> which explains the needed configuration to enable PayPal Express checkout.</p>

<p>The updated features include:</p>

<ul>
	<li><a href="https://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a> 3.4.1.6</li>
	<li><a href="https://www.mojoportal.com/site-membership-pro-product">Site Membership Pro</a> 1.0.1.1</li>
	<li><a href="https://www.mojoportal.com/web-invoice-pro-product.aspx">Web Invoice Pro</a> 1.7.1.1</li>
	<li><a href="https://www.mojoportal.com/fund-raiser-pro-product">Fund Raiser Pro</a> 1.0.2.2</li>
</ul>

<p>These are free updates for customers who already purchased these add on products.</p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/ecommerce-features-updated-to-support-paypal-express-checkout'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/ecommerce-features-updated-to-support-paypal-express-checkout'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Ecommerce+Features+Updated+to+Support+PayPal+Exp...+https%3a%2f%2fwww.mojoportal.com%2fecommerce-features-updated-to-support-paypal-express-checkout'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fecommerce-features-updated-to-support-paypal-express-checkout&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/ecommerce-features-updated-to-support-paypal-express-checkout</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/ecommerce-features-updated-to-support-paypal-express-checkout</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/ecommerce-features-updated-to-support-paypal-express-checkout</guid>
      <pubDate>Mon, 27 Jan 2014 17:23:00 GMT</pubDate>
    </item>
    <item>
      <title>Updated Skin Exporter Plugin for Artisteer 4.2</title>
      <description><![CDATA[<p>We've just released an updated version of our free&nbsp;<a href="https://www.mojoportal.com/mojoportal-skin-exporter-plugin-for-artisteer-product">Skin Exporter Plugin for Artisteer 4.2</a>. The package also still contains the previous version of the plugin for Artisteer 4.1.</p>

<p>The main difference for the new version is that Artisteer 4.2 now uses the latest version of jQuery so the jQuery Migrate plugin does not need to be enabled from the layout.master file exported by the plugin. There were also a few CSS tweaks to fix some issues with jPlayer&nbsp;layout that were caused by the Artisteer CSS.</p>

<p>For those who have already obtained our free plugin please just click the "My Account" link and download the latest version from your order history. You do not need to make a new transaction in our store to get the update, just download it again to get the latest version.</p>
<br /><a href='https://www.mojoportal.com/updated-skin-exporter-plugin-for-artisteer-42'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/updated-skin-exporter-plugin-for-artisteer-42'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Updated+Skin+Exporter+Plugin+for+Artisteer+4.2+https%3a%2f%2fwww.mojoportal.com%2fupdated-skin-exporter-plugin-for-artisteer-42'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fupdated-skin-exporter-plugin-for-artisteer-42&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/updated-skin-exporter-plugin-for-artisteer-42</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/updated-skin-exporter-plugin-for-artisteer-42</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/updated-skin-exporter-plugin-for-artisteer-42</guid>
      <pubDate>Tue, 26 Nov 2013 17:36:00 GMT</pubDate>
    </item>
    <item>
      <title>Fund Raiser Pro</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="https://www.mojoportal.com/fund-raiser-pro-product">Fund Raiser Pro</a>, available now in the <a href="https://www.mojoportal.com/store">mojoPortal Store</a>, or take a test drive on our <a href="https://demo.mojoportal.com/fundraiser-demo">demo site</a>!</p>

<p><a href="https://www.mojoportal.com/fund-raiser-pro-product">Fund Raiser Pro</a> is an add on feature for&nbsp;<a href="https://www.mojoportal.com/">mojoPortal&nbsp;content management system</a>. It provides the tools you need to do fund raising/crowd funding on your own web site. It has similar functionality to sites like <a href="http://Kickstarter.com">Kickstarter.com</a> and <a href="http://indiegogo.com">indiegogo.com</a> but you host it in your own site and control it yourself and collect payments via PayPal or any of the <a href="https://www.mojoportal.com/ecommerce-configuration.aspx">ecommerce gateways supported in mojoPortal</a>.</p>

<p>You can also define contribution levels and/or allow users to contribute any amount they want (within lower and upper limits that you can define). Your fund raising campaign can have a target date for reaching a fund&nbsp;raising goal&nbsp;or it can be open ended with no end date, or you can change the end date if you need more time to achieve the fund raising goal.</p>

<p>You can show or hide progress toward your fund raising goal, you can show or hide contributor profiles. Contributors can control their own privacy settings for what is shown on the contributor profile and the administrative settings allow you to make things even more private. That is, you can hide information that users marked as not hidden, but you cannot show information that the user chose not to show. For example the contributor can show or not show their name, city, state, country and contribution amount for example. As administrator of the site you could choose not to show the city and state and country even if the contributor said it was ok to share that information. In some cases you may want to show the contribution amount, in other cases you may not or the contributor may not want to show that information. You can optionally allow users to edit their own contribution profile or change privacy settings.&nbsp;</p>

<p>You can also allow people to post comments and you can post updates to keep people informed on the progress of the campaign or project. You could also use&nbsp;the mojoPortal Newsletter feature to keep in touch with your contributors and encourage additional contributions. If you have defined levels and are allowing users to contribute arbitrary amounts, then a subsequent contribution can move a contributor up to a higher level by aggregating with his or her previous contributions. There is also integrated social sharing using the add this widget to encourage sharing your campaign on social networks such as Facebook and twitter.</p>

<p><img alt="Fund Raiser Pro - A fund raising and crowd funding solution for mojoPortal web content management system" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/fund-raiser-pro-1.png" style="width: 550px; height: 245px;" /></p>

<p><img alt="Fund Raiser Pro - Admin Menu" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/fund-raiser-admin-menu.png" style="width: 267px; height: 320px;" /></p>

<p><img alt="Fund Raiser Pro - edit contribution levels" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/fund-raiser-edit-levels.png" style="width: 434px; height: 550px;" /></p>

<p>You can try it out on our <a href="https://demo.mojoportal.com/fundraiser-demo">demo site</a> to test both the front end for contributing and the back end for managing the fund raising campaign.</p>
<br /><a href='https://www.mojoportal.com/fund-raiser-pro'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/fund-raiser-pro'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Fund+Raiser+Pro+https%3a%2f%2fwww.mojoportal.com%2ffund-raiser-pro'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2ffund-raiser-pro&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/fund-raiser-pro</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/fund-raiser-pro</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/fund-raiser-pro</guid>
      <pubDate>Wed, 25 Sep 2013 18:29:00 GMT</pubDate>
    </item>
    <item>
      <title>Form Wizard Pro 2.6.1.2 Released</title>
      <description><![CDATA[<p>We've just released a small update to <a href="https://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a> that adds support for grouping items in a dropdown list question.</p>

<p><img alt="grouped items in a dropdown list" src="https://www.mojoportal.com/Data/Sites/1/media/blogposts/form-wiz-groupedlis.png" style="width: 244px; height: 268px;" /></p>

<p>The form editor also shows the grouping and allows assigning and editing groups on items.</p>

<p><img alt="grouped items in edit view using ListBox" src="https://www.mojoportal.com/Data/Sites/1/media/blogposts/form-wiz-groupedlist-edit.png" style="width: 527px; height: 550px;" /></p>

<p>Note that this release of Form Wizard Pro requires mojoPortal 2.3.9.9 (released yesterday) because the support for grouping items was implemented in the mojoDropDownList and mojoListBox controls which are part of mojoPortal. These controls extend the ASP.NET DropDownList and ListBox controls which don't provide any support for grouping.</p>

<p>As usual this is a free update for customers who already purchased Form Wizard Pro and can be downloaded from your purchase history by logging in as the user who made the purchase and clicking the "My Account" link at the top of the page, you'll find it under the "Order History" tab.</p>

<p>If you don't already have <a href="https://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro, check out the product page</a>, it is an essential add on product for easy custom forms and simple surveys in your web&nbsp;site powered by the free&nbsp;mojoPortal Content Management System.</p>
<br /><a href='https://www.mojoportal.com/form-wizard-pro-2612-released'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/form-wizard-pro-2612-released'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Form+Wizard+Pro+2.6.1.2+Released+https%3a%2f%2fwww.mojoportal.com%2fform-wizard-pro-2612-released'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fform-wizard-pro-2612-released&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/form-wizard-pro-2612-released</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/form-wizard-pro-2612-released</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/form-wizard-pro-2612-released</guid>
      <pubDate>Fri, 20 Sep 2013 16:12:00 GMT</pubDate>
    </item>
    <item>
      <title>Artisteer Skin Exporter Update for mojoPortal 2.3.9.7</title>
      <description><![CDATA[<p>There is a minor update to our free Skin Exporter plugin for Artisteer 4.1 now available. Customers who already downloaded it before can get the update from their purchase history by clicking the "My Account" link at the top of the page and then click Order History.</p>

<p>New customers can complete the free transaction by adding the <a href="https://www.mojoportal.com/mojoportal-skin-exporter-plugin-for-artisteer-product">Artisteer Skin Exporter product</a> to the cart and proceeding to checkout. For those who don't know&nbsp;<a href="http://click.linksynergy.com/fs-bin/click?id=r7gi5IMNhJ4&amp;offerid=173675.10000033&amp;type=4&amp;subid=0">Artisteer</a> is a design tool for web sites that doesn't require knowledge of HTML or CSS click the graphic above to learn more about Artisteer.</p>
<br /><a href='https://www.mojoportal.com/artisteer-skin-exporter-update-for-mojoportal-2397'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/artisteer-skin-exporter-update-for-mojoportal-2397'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Artisteer+Skin+Exporter+Update+for+mojoPortal+2.3.9.7+https%3a%2f%2fwww.mojoportal.com%2fartisteer-skin-exporter-update-for-mojoportal-2397'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fartisteer-skin-exporter-update-for-mojoportal-2397&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/artisteer-skin-exporter-update-for-mojoportal-2397</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/artisteer-skin-exporter-update-for-mojoportal-2397</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/artisteer-skin-exporter-update-for-mojoportal-2397</guid>
      <pubDate>Mon, 03 Jun 2013 17:25:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.9.7 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of mojoPortal 2.3.9.7 available now on our download page.</p>

<p>The main new item this release is an all new file uploader with support for drag and drop, multiple file selection and a progress bar in modern browsers.</p>

<p><img alt="new file uploader" src="https://www.mojoportal.com/Data/Sites/1/media/blogposts/new-file-uploader-650.jpg" style="width: 650px; height: 501px;" /></p>

<p>For many years we've used <a href="https://neatupload.codeplex.com/">NeatUpload</a> for file uploads which also provided a progress bar and multi file selection. Dean Brettle, the author of NeatUpload stopped supporting it in May of 2010 and now it has become a bit long in the tooth. It depended on Flash for multi file selection in some browsers and it did not work in medium trust hosting and was beginning to have some problems in newer versions of Firefox. Specifically it depended on a really old version of <a href="http://code.google.com/p/swfupload/">swfupload</a> (which itself is now also an abandoned project).&nbsp;NeatUpload has served us well over the years but many of the problems that is solved are no longer existing problems or are easier to solve in modern web browsers so we felt the time had come to replace it.</p>

<p>We previously needed to provide a separate web.config file which enabled NeatUpload in Full Trust hosting but we no longer need any separate configuration, all the included features of mojoPortal "just work" in Medium Trust with no special configuration needed. Some of the file uploader features such as drag and drop, multi file selection and upload progress bar do not work in older web browsers but it does degrade to normal one at a time file upload in those browsers while modern browsers get the best user experience. NeatUpload is no longer included with mojoPortal so as long as you don't have any custom features that depend on it you can safely remove the /NeatUpload folder from your eisting installation after upgrading and remove the file Brettle.Web.NeatUpload.dll from the /bin folder. Developers are encouraged&nbsp;to look at how we implemented the file upload in mojoPortal features and replace your own use of NeatUpload in custom features to be consistent.</p>

<h2>New Version of AjaxControlToolkit</h2>

<p>We upgraded to the Jan2013 version (from July2012 version) of AjaxControlToolkit. Since this is used also in our add on products <a href="https://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a>, <a href="https://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a>, and <a href="https://www.mojoportal.com/web-invoice-pro-product.aspx">Web Invoice Pro</a>, we have corresponding upgrades to those add on products for compatibility with this release of mojoPortal.</p>

<h2>Other Stuff</h2>

<ul>
	<li>upgrade to CKeditor 4.0.3</li>
	<li>upgrade to jQuery 1.9.1 and jQueryUI 1.10.2</li>
	<li>upgrade from jPlayer 2.1.0 to 2.3.0</li>
	<li>various minor bug fixes for things reported in the forums since the last release</li>
</ul>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" />â€‹</a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-2397-released'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2397-released'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.9.7+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2397-released'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2397-released&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2397-released</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2397-released</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2397-released</guid>
      <pubDate>Tue, 30 Apr 2013 16:38:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.9.6 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="https://www.mojoportal.com/">mojoPortal</a> 2.3.9.6, available now on our <a href="https://www.mojoportal.com/download">download page</a>.</p>

<p>This release includes a number of bug fixes and a few other improvements since the previous release. The most interesting new feature is support for inline editing in the Html Content feature when using CKEditor which has also been upgraded to version 4.0.2. With inline editing, users with edit permissions&nbsp;can just click into the content and the editor will appear as shown below in a screen shot from our <a href="http://demo.mojoportal.com">demo site</a>.</p>

<p><img alt="inline editing with CKeditor" src="https://www.mojoportal.com/Data/Sites/1/media/blogposts/ckeditor-inline-edit.png" style="width: 650px; height: 457px;" /></p>

<p>When you click out of the content if it has changed it is saved by an ajax&nbsp;post&nbsp;to a service url. There is a little lock icon that toggles enabling and disabling the inline editor. This was needed otherwise if a user had edit permission and wanted to click a link within the content, it would launch the editor instead of navigating to the link. The inline editor also works in iPhone and iPad. For now inline editing is only implemented in the Html Content feature but depending on feedback we may implement it in other features in the future. It can also be disabled in case you don't like it and the traditional edit link that goes to the edit page also still works. To disabled inline editing in an installation you would add this in user.config:</p>

<p>&lt;add key="EnableInlineEditing" value="false" /&gt;</p>

<p>In the last release we introduced a new Recent Content feature as well as an RSS url&nbsp;that could retrieve recent content based on query string parameters that could limit the results to a specific feature. Since the Recent Content feature that plugs into CMS pages could be configured to show content from multiple features we decided it would be more user friendly to expose an RSS link directly in the feature that will use the settings from the feature so that the feed will include the same content as the feature on the page.</p>

<p>In the previous release we upgraded to the latest jQuery but we missed a few plugins that were not compatible which caused a few bugs in various places such as the image cropper and the file manager. These have been fixed. The jPlayer plugin used in our Audio and Video players also is still not yet compatible with the latest jQuery&nbsp;so we automatically load the jQuery Migrate plugin when it is loaded to provide compatibility until they come out with an update to the jPlayer plugin.</p>

<p>We also upgraded to the newest version of the NivoSlider jQuery plugin which is integrated in the Image Gallery feature. It now supports captions and the web size image will link to the full size image.</p>

<p>There was also a bug introduced in the last release for the forums where forum threads could be lost from the search index when other threads were updated. This has now been fixed and anyone using the forums should rebuild the search index again after upgrading to restore any missing forum items from the search index.</p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-2396-released'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2396-released'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.9.6+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2396-released'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2396-released&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2396-released</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2396-released</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2396-released</guid>
      <pubDate>Fri, 08 Mar 2013 19:13:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.9.5 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="https://www.mojoportal.com/">mojoPortal</a> 2.3.9.5, available now on our <a href="https://www.mojoportal.com/download">download page</a>. This is a significant update with many improvements.</p>

<p>UPDATE 2013-02-14 We have found that our .NET 3.5 package for this release is broken under medium trust due to an error generated by Lucene.NET. We are looking into a solution to this but for now, those hosted under .NET 3.5 medium trust should not upgrade. The best solution is to move to .NET 4/4.5 hosting since we are approaching the end of support for .NET 3.5.</p>

<p>UPDATE 2013-02-14 We were able to use conditional compilation to make the .NET 3.5 builds use the older version of Lucene.NET and this fixed the medium trust error for the mojoportal-2-3-9-5-mssql-net35-deploymentfiles.zip package. So it is now safe to upgrade .NET 3.5 installations.</p>

<h3>What's New?</h3>

<h4>Recent Content Feature</h4>

<p>Lots of people have asked if there is a way to show recently created or updated content. The challenge with this has always been that features are self-contained and pages are just containers for feature instances so the don't have knowledge of the feature content so there was not an easy way to list new content except at the feature level. For example features like the blog and forums expose RSS feeds so one could pull recent content from those feeds into a feed manager instance, but there wasn't a good way to do it for the HTML Content feature which is the main content feature. However, we recently revamped our internal search index to keep track of created and modified dates so that searches could be filtered by date (also new in this release). Once that was completed we realized that one way to get recent content in a feature agnostic way is to retrieve it from the search index based on the created or modified date. This is exactly what the new Recent Content Feature does. You can set a maximum number of days old to include, which features to include and whether to use the created date or modified date. So this now works with all features that support search. The Recent Content feature can be placed on a page like any other feature and configured as you wish. There is also now a Recent Content RSS feed that can be enabled and then used with the Feed Manager feature to show recent content. I'll be documenting how to do that soon but the stand alone Recent Content feature is probably more user-friendly for most people.</p>

<h3>Search Engine Improvements</h3>

<p>As mentioned above the internal Lucene.NET search engine has been revamped. In addition to the created and modified dates it can also store the author name and this can be optionally shown in the search results for features that populate it. We also upgraded to the latest version of Lucene.NET (3.0.3). As a result of these changes, after upgrading it is recommended to <a href="https://www.mojoportal.com/rebuilding-the-search-index.aspx">rebuild the search index</a> so it gets populated with the new fields. There were some breaking changes so developers who have implemented their own custom features that support search and use our internal search engine should <a href="https://www.mojoportal.com/Forums/Thread.aspx?pageid=5&amp;t=11250~1">see the notes in this forum thread</a>.</p>

<p>There is also a corresponding update to our <a href="https://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a> product to be compatible with the search engine changes. This is a free update for customers who already purchased Event Calendar Pro.</p>

<h3>Blog Improvements</h3>

<p>Previously the map settings for the blog were at the feature instance level which meant that all maps in all posts had to use the same settings. These settings are now per post so you can get more creative with maps in your blog posts. There is also a new setting if you want to show a search input in the blog.</p>

<h3>Forum Improvements</h3>

<p>There is a new setting if you want to automatically close threads older than a certain number of days. Individual threads can now be left out of the google site map for the forums and/or marked with a NOINDEX meta tag if you don't feel that the thread has any content of value. There are also new settings to allow showing the CMS page side content on the forum detail pages which is useful for ad placement for example.</p>

<h3>Miscellaneous Improvements</h3>

<ul>
	<li>Content Style templates can now be imported and exported thanks to Joe Davis of <a href="http://i7media.net/mojoportal?utm_source=mojoportal&amp;utm_medium=cpc&amp;utm_campaign=mojoportal">i7MEDIA</a></li>
	<li>Upgraded to CKEditor 4.0.1</li>
	<li>There is a new menu control named <a href="https://www.mojoportal.com/flexmenu">FlexMenu</a> included in this release. Unlike the ASP.NET&nbsp;Menu and Treeview controls it does not add any javascript so you can add your own if needed and not get any <a href="https://www.mojoportal.com/the-trouble-with-aspnet-menu.aspx">conflicts that those menus are prone to</a>.</li>
	<li>Updated the CDN settings to use jQuery 1.9 and jQueryUI 1.10.0. Also updated included plugins to compatible versions. However, if you are using any custom plugins or javascript that is not compatible with the new version of jQuery we have a way to include a compatibility script. See the <a href="https://www.mojoportal.com/important-skin-changes">important skin changes</a> article for details.</li>
	<li>Bug fixes for things reported in the forums since the last release.</li>
</ul>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-2395-released'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2395-released'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.9.5+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2395-released'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2395-released&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2395-released</link>
      <author>webmaster@mojoportal.com</author>
      <comments>https://www.mojoportal.com/mojoportal-2395-released</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2395-released</guid>
      <pubDate>Thu, 07 Feb 2013 15:09:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.9.4 Released</title>
      <description><![CDATA[<p>Iâ€™m happy to announce the release of <a href="https://www.mojoportal.com/">mojoPortal</a> 2.3.9.4, available now on our <a href="https://www.mojoportal.com/download">download page</a>.</p>

<p>Although it has only been a little more than a month since our last release, weâ€™ve been very busy with more improvements some of which have been long standing requests.</p>

<h2>Whatâ€™s New?</h2>

<h3>Page Content Wizard</h3>

<p>Most of you who are familiar with mojoPortal know how to add features to a page, but I've noticed on our demo site some people manage to create pages but then for some reason can't figure out how to add content by clicking the "Edit This Page" link. To make it more friendly for new users and for people trying mojoPortal for the first time on our demo site, we've added a simple widget for adding a content feature to a page. This widget is shown if user visiting the page has edit permission on the page and the page has no other content on it and is not configured to show the child page site map.</p>

<p>Weâ€™ve also added a new default <a href="https://www.mojoportal.com/userprofileconfiguration.aspx">profile field</a> for <a href="https://www.mojoportal.com/author-biography-profile-property">AuthorBio</a>. By default it is only available to Administrators, Content Administrators, Content Authors, and Content Publisher roles.</p>

<h3>Forum Improvements</h3>

<p>Reduced the number of Url parameters and added a site map for forum threads that can be submitted to search engines for greatly improved SEO in the forums feature. See the updated <a href="https://www.mojoportal.com/submitting-your-site-maps-to-google-and-bing.aspx">Site Map documentation</a> for details.</p>

<h3>Blog Improvements</h3>

<p>Added support for showing an Author Bio at the bottom of blog posts.</p>

<p>Added support for a Sub Title per post, with theme.skin support to configure what element it renders as in the list an in the detail view.</p>

<p>Added support for multiple bloggers: A user in the edit roles for a blog can only edit their own posts unless the user is in the Administrators or Content Administrators roles. This can be disabled from user.config if you prefer the old behavior where any editor could edit any post.&nbsp; See the updated <a href="https://www.mojoportal.com/blogmodule.aspx">blog documentation</a> for details.</p>

<p>Added support for per category feeds. Now by default the feed icon on the category page has the category specific feed url.</p>

<p>Added support for post end dates. If an end date is specified, then the post will no longer be available to users not in an edit role. Other users who visit the post url will see a message saying the content has expired and the HTTP Status code 410 will be returned for search engines, and the post url will be removed from the google site map.</p>

<p>Fixed bug where the feed would return an error until a post was made from the UI.</p>

<p>Added options for showing the Author Photo/Avatar and/or an Author Bio at the bottom of Html Content instances.</p>

<h3>Newsletter Improvements</h3>

<p>Added support for some new token replacements that can be used to personalize the newsletter, with settings for fallback default values configurable on the newsletter definition. See the updated newsletter documentation for details. <a href="https://www.mojoportal.com/usingthenewsletter.aspx">https://www.mojoportal.com/usingthenewsletter.aspx</a></p>

<h3>Other Miscellaneous Improvements</h3>

<p>Added a SkinID to registration page validators so they can be configured form theme.skin. Changed to dynamic display so that by default the error messages are shown inline next to the form fields.</p>

<p>Updated Italian translation from Diego Mora Updated the config settings to use the latest versions of jQuery and jQueryUI from the google CDN.Updated to the latest version of log4net.</p>

<p>Fixed bug where only admins could edit an html instance from within content manager (without the context of a page), and content admins were not allowed by mistake.</p>

<p>Fixed bug where Audio and Video features allowed upload media file types not actually supported in the features.</p>

<p>Fixed bug in internal comment system where site root was duplicated in the comment link in the notification email.<br />
Fixed bug PayPal form element values should be attribute encoded not html encoded. Fixed bug in Image Gallery where Nivo slider did not work when the site was running in a sub folder rather than in the root directory.<br />
Fixed a bug where if a user registered on the site after previously only signing up for the newsletter, duplicate newsletter subscriptions were not removed. This bug was introduced in version 2.3.9.3 when we added the newsletter opt in to the registration page.</p>

<p>The mojoPortal Team would like to wish our friends in the US a Happy Thanksgiving! We will be taking a few days off to enjoy time with our families and we are thankful to our community and customers who make what we do possible with your support and feedback.</p>
<br /><a href='https://www.mojoportal.com/mojoportal-2394-released'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2394-released'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.9.4+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2394-released'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2394-released&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2394-released</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2394-released</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2394-released</guid>
      <pubDate>Mon, 19 Nov 2012 20:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Updated Add On Products for mojoPortal</title>
      <description><![CDATA[<p>We've just uploaded updates to several of the add-on products in the <a href="https://www.mojoportal.com/store">mojoPortal Store</a>.</p>

<h4>WorldPay Support</h4>

<p>All of the eCommerce products: <a href="https://www.mojoportal.com/site-membership-pro-product">Site Membership Pro</a>, <a href="https://www.mojoportal.com/web-invoice-pro-product.aspx">Web Invoice Pro</a>, and <a href="https://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a> now support WorldPay as a payment gateway in addition to the already existing support for Authorize.NET, PlugNPay, PayPal and Google Checkout. We've had quite a few requests for WorldPay support, so we're very excited to finally deliver this.</p>

<h4>Other Updates</h4>

<p><a href="https://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a> has also been updated to include custom email template editing for the notification emails.</p>

<p>These are free upgrades for existing customers who have already purchased these products, the latest version can be downloaded from your order history by signing into this site as the user with the purchase history and clicking the "My Account" link at the top of the page. However, these updates do require the latest version of mojoPortal.</p>

<p>UPDATE: I made another small change to the Artisteer skin exporter plugin and uploaded a new version 2012-10-15. It fixed a problem with the menu layout in some designs.</p>

<p>UPDATE 2012-10-18 I've made another fix in the skin exporter plugin to solve a problem where Chrome browser was using responsive layout as if it were a phone.</p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/updated-add-on-products-for-mojoportal-2012-10-12'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/updated-add-on-products-for-mojoportal-2012-10-12'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Updated+Add+On+Products+for+mojoPortal+https%3a%2f%2fwww.mojoportal.com%2fupdated-add-on-products-for-mojoportal-2012-10-12'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fupdated-add-on-products-for-mojoportal-2012-10-12&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/updated-add-on-products-for-mojoportal-2012-10-12</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/updated-add-on-products-for-mojoportal-2012-10-12</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/updated-add-on-products-for-mojoportal-2012-10-12</guid>
      <pubDate>Fri, 12 Oct 2012 15:28:00 GMT</pubDate>
    </item>
    <item>
      <title>Announcing the mojoPortal Skin Exporter for Artisteer 4</title>
      <description><![CDATA[<p>We have supported Artisteer for several years now but there have always been a number of steps involved with converting an HTML export from Artisteer to a mojoPortal skin. But with version 4 Beta of Artisteer there is a new SDK that allowed us to develop a custom plugin to directly export a mojoPortal skin from Artisteer with 1 click.</p>

<p><a href="https://www.mojoportal.com/mojoportal-skin-exporter-plugin-for-artisteer-product">mojoPortal Skin Exporter Plugin for Artisteer 4 Beta</a></p>

<p>We've decided for now to release this as a free plugin, but if you would like to support mojoPortal please consider buying me a few beers or coffee when completing your order for this free product. Artisteer has a very generous affiliate program so if you haven't yet purchased Artisteer or need to upgrade please click our ad first so that we get an affiliate commission on the purchase. As long as we continue to receive good commissions from Artisteer we will keep this plugin free.<img alt="" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=r7gi5IMNhJ4&amp;bids=173675.10000033&amp;type=4&amp;subid=0" width="1" /></p>

<p>See the <a href="https://www.mojoportal.com/mojoportal-skin-exporter-plugin-for-artisteer-product">mojoPortal Skin Exporter for Artisteer product page</a> for system requirements, details and instructions.</p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/announcing-the-mojoportal-skin-exporter-for-artisteer-4'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/announcing-the-mojoportal-skin-exporter-for-artisteer-4'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Announcing+the+mojoPortal+Skin+Exporter+for+Artisteer+4+https%3a%2f%2fwww.mojoportal.com%2fannouncing-the-mojoportal-skin-exporter-for-artisteer-4'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fannouncing-the-mojoportal-skin-exporter-for-artisteer-4&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/announcing-the-mojoportal-skin-exporter-for-artisteer-4</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/announcing-the-mojoportal-skin-exporter-for-artisteer-4</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/announcing-the-mojoportal-skin-exporter-for-artisteer-4</guid>
      <pubDate>Thu, 02 Aug 2012 18:47:00 GMT</pubDate>
    </item>
    <item>
      <title>Site Membership Pro 1.0.0.1 Released!</title>
      <description><![CDATA[<p>I'm happy to announce the initial release of <a href="https://www.mojoportal.com/site-membership-pro-product">Site Membership Pro</a>, available now in <a href="https://www.mojoportal.com/store">the mojoPortal Store</a>. Site Membership Pro is an add on product for <a href="https://www.mojoportal.com/">mojoPortal</a> that makes it easy to monetize access to your premium site content.</p>
<p><a href="https://www.mojoportal.com/site-membership-pro-product"><img src="https://www.mojoportal.com/Data/Sites/1/media/blogposts/site-membership-pro.png" alt="Site Membership Pro" width="650" height="382" /></a></p>
<p>See the <a href="https://www.mojoportal.com/site-membership-pro-product">product page</a> for full details. As with our other products, customers who purchase Site Membership Pro get free upgrades for the life of the product.</p>
<p><a style="color: #6297bc;" href="http://twitter.com/joeaudette">Follow us on twitter</a> orÂ <a style="color: #6297bc;" href="http://www.facebook.com/pages/mojoPortal/146363180114">become a fan on Facebook</a></p>
<p><a style="color: #6297bc;" href="http://twitter.com/joeaudette"><img style="border: 0px initial initial;" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" alt="follow us on twitter" width="60" height="60" /></a> <a style="color: #6297bc;" href="http://www.facebook.com/pages/mojoPortal/146363180114"><img style="border: 0px initial initial;" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" alt="become a fan on facebook" width="60" height="60" /></a></p><br /><a href='https://www.mojoportal.com/site-membership-pro-1001-released'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/site-membership-pro-1001-released'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Site+Membership+Pro+1.0.0.1+Released!+https%3a%2f%2fwww.mojoportal.com%2fsite-membership-pro-1001-released'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fsite-membership-pro-1001-released&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/site-membership-pro-1001-released</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/site-membership-pro-1001-released</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/site-membership-pro-1001-released</guid>
      <pubDate>Thu, 19 Apr 2012 14:49:00 GMT</pubDate>
    </item>
    <item>
      <title>Site Membership Pro - Coming Soon!</title>
      <description><![CDATA[<p>In our last newsletter I mentioned that I was working on a new add on product for <a href="http://www.mojoportal.com">mojoPortal</a> named Site Membership Pro.</p>
<p>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 <a href="https://www.mojoportal.com/store">mojoPortal store</a>.</p>
<p><img src="https://www.mojoportal.com/Data/Sites/1/media/blogposts/site-membership-pro.png" alt="Site Membership Pro" width="650" height="382" /></p>
<p>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.</p>
<p>In the mean time, I've created a demo site to show the public facing side of the feature at <a href="https://smpdemo.mojoportal.com/">smpdemo.mojoportal.com</a>. Â You can also try out the back end administration of the feature on our main <a href="http://demo.mojoportal.com">demo site</a> 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.</p>
<h3>What Is Site Membership Pro?</h3>
<p>Site Membership Pro provides additional functionality on top of mojoPortal to make it easy to monetize access to your premium site content.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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).</p>
<p>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.</p>
<p>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.</p>
<p>The same background task that manages removing users from roles if their membership expires also handles sending the reminder messages.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>The initial release will support MS SQL and MySql, other database platforms may be supported later depending ion demand.</p>
<h3>What Site Membership Pro Does Not Do</h3>
<p>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.</p>
<p>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.</p>
<p>Site Membership Pro does not retain any credit card information and cannot automatically charge cards when membership renewal is due.</p>
<p>Site Membership Pro does not prevent an Administrator, Role Administrator or Roles That Can Manage Users from adding or removing users from roles.</p>
<p><a style="color: #6297bc;" href="http://twitter.com/joeaudette">Follow us on twitter</a> orÂ <a style="color: #6297bc;" href="http://www.facebook.com/pages/mojoPortal/146363180114">become a fan on Facebook</a></p>
<p><a style="color: #6297bc;" href="http://twitter.com/joeaudette"><img style="border: 0px initial initial;" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" alt="follow us on twitter" width="60" height="60" /></a> <a style="color: #6297bc;" href="http://www.facebook.com/pages/mojoPortal/146363180114"><img style="border: 0px initial initial;" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" alt="become a fan on facebook" width="60" height="60" /></a></p><br /><a href='https://www.mojoportal.com/site-membership-pro-coming-soon'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/site-membership-pro-coming-soon'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Site+Membership+Pro+-+Coming+Soon!+https%3a%2f%2fwww.mojoportal.com%2fsite-membership-pro-coming-soon'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fsite-membership-pro-coming-soon&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/site-membership-pro-coming-soon</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/site-membership-pro-coming-soon</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/site-membership-pro-coming-soon</guid>
      <pubDate>Thu, 05 Apr 2012 15:04:00 GMT</pubDate>
    </item>
    <item>
      <title>Event Calendar Pro 3.4.0.5 Released</title>
      <description><![CDATA[<p>I've just uploaded <a href="https://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a> 3.4.0.5Â This is a minor upgrade with just a few little improvements that some customers have been asking for.</p>
<h3>What's New?</h3>
<p>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.</p>
<p>Added settings to allow not requiring or showing address and phone fields on the registration form when the event is free.</p>
<p>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.</p>
<p>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.</p>
<p>Added more css classes on the body element in edit/admin pages</p>
<p>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.</p>
<p>Updated the article <a href="https://www.mojoportal.com/event-calendar-pro-tips-and-tricks">Event Calendar Pro Tips and Tricks</a> to cover some of the new and previously undocumented config settings.</p>
<p><a href="https://www.mojoportal.com/event-calendar-pro-product.aspx"><img src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/eventcalpro-monthview-small2.png" alt="Event Calendar Pro" width="432" height="247" /></a></p>
<p>We've got lots of plans for future enhancements for <a href="https://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a>, 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 2.3.8.1 or higher.</p>
<p>This is a free upgrade for existing customers who have already purchased <a href="https://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a>. To download the new version just sign into <a href="https://www.mojoportal.com/">www.mojoportal.com</a> 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.</p>
<p><a style="color: #6297bc;" href="http://twitter.com/joeaudette">Follow us on twitter</a> orÂ <a style="color: #6297bc;" href="http://www.facebook.com/pages/mojoPortal/146363180114">become a fan on Facebook</a></p>
<p><a style="color: #6297bc;" href="http://twitter.com/joeaudette"><img style="border: 0px initial initial;" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" alt="follow us on twitter" width="60" height="60" /></a> <a style="color: #6297bc;" href="http://www.facebook.com/pages/mojoPortal/146363180114"><img style="border: 0px initial initial;" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" alt="become a fan on facebook" width="60" height="60" /></a></p><br /><a href='https://www.mojoportal.com/event-calendar-pro-3405-released'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/event-calendar-pro-3405-released'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Event+Calendar+Pro+3.4.0.5+Released+https%3a%2f%2fwww.mojoportal.com%2fevent-calendar-pro-3405-released'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fevent-calendar-pro-3405-released&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/event-calendar-pro-3405-released</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/event-calendar-pro-3405-released</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/event-calendar-pro-3405-released</guid>
      <pubDate>Fri, 23 Mar 2012 15:28:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.7.6 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportala.com">mojoPortal</a> 2.3.7.6, available now on our <a href="http://www.mojoportal.com/download">download page</a>.</p>

<p>The major highlight&nbsp;of this release are the new <a href="https://www.mojoportal.com/using-the-audio-and-video-players">Audio Player and Video Player features</a> contributed by our newest team member Kerry Doan.</p>

<h3>Audio and Video Players</h3>

<p>The <a href="https://www.mojoportal.com/using-the-audio-and-video-players">New Audio and Video features</a> based on <a href="http://jplayer.org/">jPlayer</a> are also an exciting addition to the built-in feature set.</p>

<p><img alt="Audio and Video Players" height="722" src="https://www.mojoportal.com/Data/Sites/1/media/blogposts/mediaplayer.png" width="492" /></p>

<p>Huge thanks to Kerry Doan for his hard work on these features.</p>

<p>There are also several smaller improvements and bug fixes for things reported in the forums since the last release, and there is a change in behavior when using SSL. We no longer redirect out of SSL on pages marked as not requiring it for reasons discussed in the new document <a href="https://www.mojoportal.com/use-ssl">Use SSL</a>.</p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-2376-released'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2376-released'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.7.6+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2376-released'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2376-released&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2376-released</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2376-released</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2376-released</guid>
      <pubDate>Wed, 28 Dec 2011 13:16:00 GMT</pubDate>
    </item>
    <item>
      <title>jPlayer Integration Coming Soon</title>
      <description><![CDATA[<p>
	Thanks to <a href="https://plus.google.com/115064111400180239758/about">Kerry Doan</a> for implementing and contributing support for <a href="http://www.jplayer.org/">jPlayer</a> in <a href="http://www.mojoportal.com">mojoPortal</a>, the next release will include an Audio Player and a Video Player feature.</p>
<p>
	<img alt="medai player screen shot" height="722" src="https://www.mojoportal.com/Data/Sites/1/media/blogposts/mediaplayer.png" width="492" /></p>
<p>
	You can see it in action now on our <a href="http://demo.mojoportal.com">demo site</a>. We should be shipping another new release of mojoPortal that includes these features by the end of the month.</p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/jplayer-integration-coming-soon'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/jplayer-integration-coming-soon'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=jPlayer+Integration+Coming+Soon+https%3a%2f%2fwww.mojoportal.com%2fjplayer-integration-coming-soon'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fjplayer-integration-coming-soon&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/jplayer-integration-coming-soon</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/jplayer-integration-coming-soon</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/jplayer-integration-coming-soon</guid>
      <pubDate>Wed, 07 Dec 2011 15:39:00 GMT</pubDate>
    </item>
    <item>
      <title>IOS 5 Finally Supports WYSIWYG Editors</title>
      <description><![CDATA[<p>More and more people are accessing the web using smart phones and tablets and while much progress has been made to provide a good web experience for those devices, until now one major shortcoming has been the lack of support for use of web based WYSIWYG editors like <a href="http://ckeditor.com/">CKeditor</a> and <a href="http://www.tinymce.com/">TinyMCE</a>. The problem has been that while the WYSIWYG editors would display ok, they did not trigger the keyboard input so they were not usable because clicking/touching them did not put the focus in the editor and did not bring up the keyboard. The best solution we could come up with was to force the use of a plain old textarea&nbsp;which would trigger the keyboard but required entering raw html making it more tedious to use and requiring knowledge of html from the user. We tried to make it a little better by using <a href="http://markitup.jaysalvat.com/home/">MarkitUp</a> to at least provide a toolbar with some helpful html elements as shown below in this screen shot from an old iPhone 3.</p>

<p><img alt="iPhone 3 editor" src="https://www.mojoportal.com/Data/Sites/1/media/blogposts/iphone3-editor.png" style="width: 320px; height: 480px; " /></p>

<p>HTML 5 actually defines a contentEditable attribute which is intended for use in making web pages editable but it wasn't supported in previous versions of IOS/Mobile Safari until now with the recent release of IOS 5. Fortunately for us the makers of the popular open source WYSIWYG editors have been working on this using the beta versions of IOS 5 so that now since the official release both of these editors can work in iPhones and iPads that have IOS 5. Shown below is a screen shot of TinyMCE used in iPhone 4S.</p>

<p><img alt="TinyMCE in iPhone" src="https://www.mojoportal.com/Data/Sites/1/media/blogposts/iphone-4s-wysiwyg.jpg" style="width: 320px; height: 480px; " /></p>

<p>We've modified mojoPortal to take advantage of this and not force the plain textarea if we detect an IOS 5 device. This change is already in our source code repository and will be in the next release of mojoPortal. You can also try it out on our <a href="http://demo.mojoportal.com">demo site</a> using your IOS 5 device. For other devices we still use the textarea approach but I suspect that over time we will be able to enable the WYSIWYG editors for even more devices.</p>

<p>I'm very excited that this major limitation has been overcome in IOS 5 and especially for iPad which is a great web browsing experience and now is even better since you can actually edit your content easily. Huge kudos to the developers of TinyMCE and CKeditor for their great work in supporting mobile devices.</p>

<p>&nbsp;</p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/ios-5-finally-supports-wysiwyg-editors'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/ios-5-finally-supports-wysiwyg-editors'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=IOS+5+Finally+Supports+WYSIWYG+Editors+https%3a%2f%2fwww.mojoportal.com%2fios-5-finally-supports-wysiwyg-editors'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fios-5-finally-supports-wysiwyg-editors&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/ios-5-finally-supports-wysiwyg-editors</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/ios-5-finally-supports-wysiwyg-editors</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/ios-5-finally-supports-wysiwyg-editors</guid>
      <pubDate>Mon, 07 Nov 2011 19:19:00 GMT</pubDate>
    </item>
    <item>
      <title>Form Wizard Pro 2.6.0.4 Released</title>
      <description><![CDATA[<p>
	I've just uploaded a new release of <a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a> version 2.6.0.4. Like the previous version this release requires mojoPortal 2.3.7.0 or higher.</p>
<p>
	As always it is a free upgrade for existing customers who have purchased Form Wizard Pro (sign into this site as the user who purchased, then click the "My Account" link at the top of the page then "Order History").</p>
<p>
	<a href="http://www.mojoportal.com/form-wizard-pro-product.aspx"><img alt="Form Wizard Pro" src="https://www.mojoportal.com/Data/Sites/1/formwizard-small.png" style="width: 236px; height: 216px; " /></a></p>
<p>
	For those who don't know, <a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a> makes it very easy for you to create custom forms and simple surveys on your site with drag and drop arrangement of the questions. It can be used for a variety of things such as custom contact forms, quote requests, job applications (it supports file uploads), simple surveys (multi page forms), etc. You can browse the submissions as a grid or page through them one at a time and you can export to Excel or Word. You can also import and export questions or even complete form definitions. Give it a try on our <a href="http://demo.mojoportal.com">demo site</a>.</p>
<h3>
	What's New in This Release?</h3>
<ul>
	<li>
		New setting to enable question aliases. Question aliases allow you to use a shorter question name in the grid views and data exports. This can be very helpful since long question text can be unwieldy as a column heading in a grid.</li>
	<li>
		New setting to enable option aliases for list type questions (checkboxes, radio buttons, drop down list question types). Similar to question aliases, you may want to display a longer value to the user but use a shorter value as the actual result. For example you may show a list of stores and display the street address which is more understandable for the user who is submitting the form, but internally you may want to use store numbers as the actual submitted result.</li>
	<li>
		A way to visually group questions. We added a new setting for "Flatten Pages as Groups", if chedcked then what would normally be a multi page form will have all the questions on a single page, but the questions will be grouped into divs with a CSS class="qgroup qgroup1" where the numeric part of the second class is based on the page number. This way you have a class that can be used to style groups consistently or style specific groups differently.</li>
	<li>
		It is now possible to override the text on the "Submit" button.</li>
	<li>
		Vertical layout instead of grid layout when exporting to Word.</li>
</ul>
<p>
	The sales of <a href="http://www.mojoportal.com/store">our add-on products</a> is what makes the continued development of mojoPortal possible. Why not make your site even better and support our work?</p>
<p>
	&nbsp;</p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/form-wizard-pro-2604-released'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/form-wizard-pro-2604-released'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Form+Wizard+Pro+2.6.0.4+Released+https%3a%2f%2fwww.mojoportal.com%2fform-wizard-pro-2604-released'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fform-wizard-pro-2604-released&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/form-wizard-pro-2604-released</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/form-wizard-pro-2604-released</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/form-wizard-pro-2604-released</guid>
      <pubDate>Tue, 25 Oct 2011 14:54:00 GMT</pubDate>
    </item>
    <item>
      <title>Going Mobile with mojoPortal</title>
      <description><![CDATA[<p>I'm very excited to announce that <a href="http://www.mojoportal.com/">mojoPortal</a> can now be optimized very well for major smart phones like iPhone, Android, and Windows Phone 7.</p>

<p>Actually I have 3 related things to announce.</p>

<ul>
	<li>mojoPortal 2.3.6.7 is now available on our <a href="http://www.mojoportal.com/download">download page</a>.</li>
	<li>We have a new product available now, named <a href="http://www.mojoportal.com/mobile-kit-pro-product">Mobile Kit Pro</a> (requires mojoPortal 2.3.6.7), that includes a custom menu we implemented just for smart phones and a skin optimized for smart phones.</li>
	<li>Updated versions of <a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a> and <a href="http://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a> with compatibility updates for mojoPortal 2.3.6.7 and Mobile Kit Pro.</li>
</ul>

<p><img alt="mojoPortal.com shown in Mobile Kit Pro" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/mojoportal-mobile.png" style="width: 320px; height: 480px; " />&nbsp;<img alt="mojoportal.com showing the menu in Mobile Kit Pro" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/mojoportal-mobile2.png" style="width: 320px; height: 480px; " /></p>

<p>See the <a href="http://www.mojoportal.com/mobile-kit-pro-product">Mobile Kit Pro product page</a> for full details. You can also check out <a href="http://www.mojoportal.com">this site</a> or our <a href="http://demo.mojoportal.com">demo site</a> using an iPhone, Android phone, or Windows Phone 7. My goal with Mobile Kit Pro is that you could just drop it in and set it as the mobile skin, and it would just work with most of your existing site content. In those few cases where you may have some content that doesn't work well even with Mobile Kit Pro applied, the new features in mojoPortal make it possible for you to make custom mobile specific versions of some content if you needed to or just leave some content out of the mobile experience. Of course this is the first release of Mobile Kit Pro and there will be free upgrades for future versions, so those who purchase it can provide feedback and impact the future of the product.</p>

<h3>What's New in mojoPortal 2.3.6.7?</h3>

<p>A lot of the work to make Mobile Kit Pro possible went into mojoPortal itself. We went through most of the features and in cases where the markup didn't lend itself well to the small screen size, we implemented alternate markup and made it possible to configure the use of the alternate markup from the theme.skin file. We also made a lot of different things about the rendering configurable from the theme.skin file, in some cases it is possible to override specific feature instance settings from the theme.skin. Even things like posting in the Forums from your smart phone should be a reasonably good experience.</p>

<p>Support for mobile specific skins, there is a new drop down list in Site Settings where you can specify the Mobile Skin for the site.</p>

<p>Simple but configurable mobile user agent detection is used to apply the mobile skin, see the Mobile Kit Pro product page for details.</p>

<p>Any page and any content instance in mojoPortal can be marked as for WebOnly, MobileOnly or the default All so that you have the ability to make mobile specific versions of your content if needed or leave out specific content from the mobile view if it doesn't work well on small screens. You will see a new dropdown list for this in Page Settings and on the General Tab in Feature Settings.</p>

<p>Some work has been done to combine javascripts as much as possible for better performance.</p>

<ul>
	<li>Added support for the Google Plus Button in the Blog</li>
	<li>Upgrade to CKeditor 3.6.1</li>
	<li>Upgrade to TinyMCE 3.4.3.2</li>
	<li>Updated the CDN versions of jQuery and jQueryUI to the latest versions.</li>
	<li>Updated translations, thanks to all of our translators!</li>
	<li>A few bug fixes for things reported in the forums since the last release.</li>
</ul>

<p>I think this is probably one of the most exciting announcements I've made since the beginning of the mojoPortal project, at least I'm very excited about it. It is very in keeping with our slogan "Advanced Web Sites Made Easy". Now mojoPortal can be a framework for developing custom mobile web applications as well.</p>

<h3>Updates for Form Wizard Pro and Event Calendar Pro</h3>

<p>As mentioned above we also did some work in Form Wizard Pro and event Calendar Pro so that they could also be optimized for mobile. These updates also require mojoPortal 2.3.6.7. They are free upgrades for existing customers, just sign in to the site as the user who purchased the product(s), and then click the "My Account" link at the top of the page, and then click "Order History".</p>

<p>&nbsp;</p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/going-mobile-with-mojoportal'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/going-mobile-with-mojoportal'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Going+Mobile+with+mojoPortal+https%3a%2f%2fwww.mojoportal.com%2fgoing-mobile-with-mojoportal'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fgoing-mobile-with-mojoportal&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/going-mobile-with-mojoportal</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/going-mobile-with-mojoportal</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/going-mobile-with-mojoportal</guid>
      <pubDate>Tue, 12 Jul 2011 12:16:00 GMT</pubDate>
    </item>
    <item>
      <title>Small Updates for our Add On Products</title>
      <description><![CDATA[<h3>
	<a href="http://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro 3.4</a></h3>
<p>
	Compatibility updates for mojoPortal 2.3.6.6.<br />
	Added support for using Bing Maps as an alternate to Google Maps.</p>
<p>
	<a href="http://www.mojoportal.com/event-calendar-pro-product.aspx"><img alt="Event Calendar Pro" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/eventcalpro-monthview-sm2.png" style="width: 230px; height: 132px; " /></a></p>
<h3>
	<a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro 2.6.0.1</a></h3>
<p>
	Compatibility updates for mojoPortal 2.3.6.6.<br />
	Fixed bug in email notification where if more than one email address was configured for notification it failed to send the email. This bug was introduced in version 2.6.</p>
<p>
	<a href="http://www.mojoportal.com/form-wizard-pro-product.aspx"><img alt="Form Wizard Pro" src="https://www.mojoportal.com/Data/Sites/1/formwizard-small.png" style="width: 236px; height: 216px; " /></a></p>
<h3>
	<a href="http://www.mojoportal.com/web-invoice-pro-product.aspx">Web Invoice Pro 1.7.0.1</a></h3>
<p>
	Compatibility updates for mojoPortal 2.3.6.6.<br />
	Added the ability to mark an invoice as paid in case payment came in through a different channel than online.<br />
	Fixed a bug where the payment due date was always 30 days after the invoice date even if you specified a different due date.</p>
<p>
	<a href="http://www.mojoportal.com/web-invoice-pro-product.aspx"><img alt="Web Invoice Pro" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/webinvoice-pay-230px.jpg" style="width: 230px; height: 187px; " /></a></p>
<p>
	These are free upgrades for existing customers. If you previously purchased any of these products you can sign into this site (using the account that you used to purchase) and click the "My Account" link at the top and then "Order History". From there you can always download the latest version of the products you purchased.</p>
<p>
	Note that all of these updates require mojoPortal 2.3.6.6, so make sure you upgrade mojoPortal&nbsp;before updating or installing these add on products.</p>
<p>
	&nbsp;</p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<p>
	&nbsp;</p>
<br /><a href='https://www.mojoportal.com/small-updates-for-our-add-on-products'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/small-updates-for-our-add-on-products'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Small+Updates+for+our+Add+On+Products+https%3a%2f%2fwww.mojoportal.com%2fsmall-updates-for-our-add-on-products'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fsmall-updates-for-our-add-on-products&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/small-updates-for-our-add-on-products</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/small-updates-for-our-add-on-products</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/small-updates-for-our-add-on-products</guid>
      <pubDate>Tue, 21 Jun 2011 12:43:00 GMT</pubDate>
    </item>
    <item>
      <title>Form Wizard Pro 2.6 Released</title>
      <description><![CDATA[<p>
	I'm happy to announce&nbsp;the release of <a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a> 2.6, available now in the <a href="http://www.mojoportal.com/store.aspx">mojoPortal Store</a>.</p>
<p>
	<a href="http://www.mojoportal.com/form-wizard-pro-product.aspx"><img alt="form wizard pro" src="https://www.mojoportal.com/Data/Sites/1/formwizard-small.png" style="float: left; width: 236px; height: 216px;margin-right: 10px; margin-bottom:10px; " /></a></p>
<p>
	This is a significant upgrade with major new features. For existing customers who have already purchased Form Wizard Pro, it is a free upgrade. You can always get the latest version of purchased products by signing in to the site using the account that you used to purchase, then click the "My Account" link at the top of the page and then click "Order History", from there you can download the latest version of any add on products you have purchased.</p>
<p>
	<a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a> is the most popular add on product for <a href="http://www.mojoportal.com/">mojoPortal CMS</a>&nbsp;(requires mojoPortal 2.3.6.4 or higher) and a great addition to any site. With Form Wizard Pro you can easily create custom forms and surveys on your site and this release adds a number of the most requested new features including:</p>
<ul>
	<li>
		Support for File Uploads, you can configure it to allow up to 4 files to be uploaded as part of the form submission. You can even have the files included as attachments in the notification email.</li>
	<li>
		A new plugin system that allows developers to <a href="http://www.mojoportal.com/implementing-a-custom-form-submission-handler.aspx">implement custom Form Submission Handlers</a>&nbsp;to do additional custom processing on the submitted data.</li>
	<li>
		Support for per question custom CSS classes to make it even easier to style your forms.</li>
	<li>
		A new setting that allows you to leave the details out of the notification email in case sensitive data is being submitted that you would rather not include in email.</li>
	<li>
		A new setting that allows leaving out unanswered questions when including the form details in the notification. This can be helpful in saving paper if you are printing the email notifications and have long forms with lots of optional questions.</li>
</ul>
<p>
	You can also try Form Wizard Pro on our <a href="http://demo.mojoportal.com">demo site</a> to see how easy it really is. If you are getting a lot of value out of the free mojoPortal features why not purchase <a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a> for your site, it will make your site even better and the sales revenue supports the ongoing development of mojoPortal.</p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<p>
	&nbsp;</p>
<br /><a href='https://www.mojoportal.com/form-wizard-pro-26-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/form-wizard-pro-26-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Form+Wizard+Pro+2.6+Released+https%3a%2f%2fwww.mojoportal.com%2fform-wizard-pro-26-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fform-wizard-pro-26-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/form-wizard-pro-26-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/form-wizard-pro-26-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/form-wizard-pro-26-released.aspx</guid>
      <pubDate>Thu, 12 May 2011 15:59:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.6.5 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com/">mojoPortal</a> 2.3.6.5, available now on our <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>

<p>This is not a major update but it does have some things to make it worth upgrading.</p>

<h3>Editor Updates</h3>

<p>Both CKeditor and TinyMCE put out new releases with bug fixes and updates, many of which are related to IE 9 and Firefox 4.<br />
Upgrade to CKEditor 3.5.3<br />
Upgrade to TinyMCE 3.4.2</p>

<p>There was an error happening under .NET 4 Medium Trust hosting related to our older FCKeditor. Nothing had changed in this editor for a long time so I'm surprised that we had never seen this error until recently. It makes me wonder if there was some behavior change that came with a recent Windows Update. In any case, the error is fixed in this release.</p>

<h3>jQuery Updates</h3>

<p>We had a bug report about our jQueryUI Date Picker where it was not formatting dates correctly for en-NZ. It turned out that support for en-NZ was only added to the jQueryUI Date Picker as of version 1.8.9, so the solution was to upgrade to a newer version. However, we had been holding off on upgrading jQueryUI because we knew there was an issue in the Time Picker extension that we were using where it did not work with newer versions of jQueryUI than 1.8.6. Fortunately, we found another Time Picker extension for the jQueryUI date picker and it seems to work with any version of jQueryUI.</p>

<p>So we updated to jQuery 1.5.2 and jQueryUI 1.8.11. Note that upgrading is really just changing 2 config settings since we load jQuery and jQueryUI from the google CDN. So if you are using any custom jQuery plugins and they don't work with the newer versions of jQuery or jQueryUI, you could override the version from user.config to keep using an older compatible version of jQuery or jQueryUI.</p>

<p><img alt="date time picker screen shot" src="https://www.mojoportal.com/Data/Sites/1/media/date-timepicker.png" style="width: 287px; height: 400px; " /></p>

<h3>Support for Newsletter Throttling</h3>

<p>It had been requested a while back to have a way to throttle the sending of the newsletter. Blasting out an email to a lot of users in a short time can make it look like spam to some receiving mail servers, especially if you are using a consumer email account or you don't have a well known reputable mail server. So it can be beneficial to limit the rate at which you send the email messages to your list. The mojoPortal newsletter subscriber list is getting pretty large and we had some trouble with our February newsletter due to sending the emails too fast. I got a few non-delivery notifications from @msn.com and others saying that we sent too many in a short period of time. So it was a priority to implement this before we sent the March newsletter. It really helped as we had no non-deliveries related to sending them too fast.&nbsp;</p>

<p>There is a new setting that you can override in user.config:</p>

<p><code>&lt;!-- you can throttle the sending of the newsletter 0 = unlimited/no throttling --&gt;</code></p>

<p><code>&lt;add key="NewsletterMaxToSendPerMinute" value="0" /&gt;</code></p>

<p>If you enter a number greater than zero it will sleep for one minute after each round of sending that many. So if you set it to 10, it will blast out 10 in a row and then sleep for a minute and the repeat until it sends to each subscriber in the list. I set it to 10 before sending the March mojoPortal newsletter. Of course the larger the list the longer it will take but you can calculate approximately how long it will take at any given rate and you can use a higher setting to send them faster if you need to.&nbsp;</p>

<h3>Miscellaneous</h3>

<p>Support for custom regex and error message for email validation on the&nbsp;registration page, you can override our defaults with these settings:</p>

<p><code>&nbsp;&lt;add key="CustomEmailRegex" value=""/&gt;</code></p>

<p><code>&nbsp;&lt;add key="CustomEmailRegexWarning" value=""/&gt;</code></p>

<p>Support for more page settings when creating initial content from config files</p>

<p>Support for configuring the Thread UICulture separately from the Culture. The UICulture is only used for choosing the resource files, whereas the Culture is used for formatting numbers, currency, and dates.</p>

<p>This example uses German for the numbers and date formats and uses English for the resource files.</p>

<p><code>&lt;add key="UseCultureOverride" value="true" /&gt;</code></p>

<p><code>&lt;add key="site1culture" value="de-CH" /&gt;</code></p>

<p><code>&lt;add key="site1uiculture" value="en-US" /&gt;</code></p>

<p>Fixed bug in the SQL CE data layer that prevented the Newsletter feature from working in our package for SQL CE.</p>

<p>Lots of updated translations thanks to our Translation Team</p>

<p>Other miscellaneous little tweaks and fixes for things reported in the forums since the last release.</p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-2365-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2365-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.6.5+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2365-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2365-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2365-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2365-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2365-released.aspx</guid>
      <pubDate>Fri, 15 Apr 2011 17:52:00 GMT</pubDate>
    </item>
    <item>
      <title>New Add On Product - Web Invoice Pro</title>
      <description><![CDATA[<p>
	I'm happy to announce the initial release of <a href="http://www.mojoportal.com/web-invoice-pro-product.aspx">Web Invoice Pro</a>, available now in the <a href="https://www.mojoportal.com/store">mojoPortal Store</a>.</p>
<p>
	Web Invoice Pro makes it easy to send invoices by email and let your customers pay the invoice online at your web site running on <a href="http://www.mojoportal.com/">mojoPortal</a>. It provides support for receiving payments via PayPal, Google Checkout, or Authorize.NET. A great way for freelance web designers and developers or any business to invoice their customers. You can test Web Invoice Pro on <a href="http://demo.mojoportal.com">demo.mojoportal.com</a>, so you can try it before you buy it, though of course you should only send test invoices to yourself from the demo site and the demo email messagess will have extra text in them to make it clear it came from a demo site.<img alt="scree shot of editing an invoice" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/webinvoice-emailtokens430.jpg" style="float: right; width: 430px; height: 442px; " /></p>
<h3>
	Features at a Glance</h3>
<ul>
	<li>
		Attach a PDF Invoice generated from your accounting system and/or just type in the invoice information as part of the email message.</li>
	<li>
		Customers can pay the invoice online at your web site using Authorize.NET, PayPal, or Google Checkout.</li>
	<li>
		Customers do not need to be registered on your site to pay the invoice, but if they are then they can see their payment history in the user profile.</li>
	<li>
		Optional email notification when invoices are paid.</li>
	<li>
		Integrated with the mojoPortal Commerce Reports system so you get reporting and charts of your invoice revenue.</li>
	<li>
		Free upgrades to new versions of Web Invoice Pro for the life of the product! That's right, buy it once and any updates are free, we will never make you pay an upgrade fee for new versions of Web Invoice Pro!</li>
</ul>
<p>
	<strong>Get Web Invoice Pro and get paid!</strong></p>
<p>
	<img alt="get paid, get web invoice pro" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/webinvoice-pay-230px.jpg" style="width: 230px; height: 187px; " /></p>
<p>
	The initial release supports MS SQL or MySql, but I'm considering adding support for other databases if I get feedback requesting it. I've been using this feature myself for invoicing my customers and it meets my needs pretty well right now but I think there will be lots of possibilities to evolve this feature further, and those who purchase it may help shape its future based on their feedback.</p>
<p>
	If you need a way to invoice your customers and let them pay online I hope you'll give it a try. The sales of these add on products is what sustains and funds the continuous improvements of the mojoPortal project, so it is a good way to get additional features and to support the project.</p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/new-add-on-product-web-invoice-pro.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/new-add-on-product-web-invoice-pro.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=New+Add+On+Product+-+Web+Invoice+Pro+https%3a%2f%2fwww.mojoportal.com%2fnew-add-on-product-web-invoice-pro.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fnew-add-on-product-web-invoice-pro.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/new-add-on-product-web-invoice-pro.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/new-add-on-product-web-invoice-pro.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/new-add-on-product-web-invoice-pro.aspx</guid>
      <pubDate>Thu, 24 Feb 2011 14:19:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.6.1 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.3.6.1, available now on our <a href="http://www.mojoportal.com/download.aspx">download</a> page. We will submit this release to the Web App Gallery next week after we've had a chance to get any feedback from our early adopters.</p>

<h3>New Security Options</h3>

<ul>
	<li>It is now possible to require approval of new users before they can sign in, a setting in Site Settings enables it and you can specify email addresses to receive notification of new users that need approval, and a new button will appear on the member list page to find users not approved yet if you enable this. This is not a recommended configuration if you are doing eCommerce since it creates more barriers to completing a purchase if the user must wait for approval before he can sign in.</li>
	<li>It is now possible to require any user to change their password from a setting in user management.</li>
	<li>From Site Settings, you can now configure it to require a user to change their password after password recovery or reset.</li>
	<li>There is now a custom error message you can configure in site settings if you are using a regular expression to validate password rules, you can provide an error message that explains the rules.</li>
</ul>

<p>We also made the MS SQL packages of mojoPortal pre-configured for Medium Trust by default since this is the most common installation issue that people encounter. If you are hosted in Full Trust you can use the Web.fulltrust.config&nbsp;file.</p>

<h3>Easier Content Re-Use</h3>

<p>There is a new way to mark re-usable content as global content, which makes it available for page editors to add existing content to their pages. Joe Davis of <a href="http://i7media.net/">i7MEDIA</a> has made a nice video tutorial showing how to use this new feature, see the <a href="http://www.mojoportal.com/publishing-the-same-content-on-multiple-pages.aspx">Global Content Section on this page</a>.</p>

<h3>Blog Improvements</h3>

<ul>
	<li>Someone asked for the ability to not create a 301 redirect when a post is renamed and the URL changes. By default, we believe this behavior is what should happen to automatically help with SEO when a&nbsp;URL changes, but if you don't want that behavior you can turn it off by adding this to your user.config file:&nbsp;<br />
	<code>&lt;add key="Blog:Create301OnPostRename" value="false" /&gt;</code></li>
	<li>It is now possible to use Bing Maps in the blog instead of Google Maps.</li>
	<li>There have been settings in the blog for a while to allow showing the right and left column content from the main blog page also on the blog post pages. Recently someone asked to be able to show upper and lower content when using skins that have 5 content panes, so we added these Web.config settings that you could add to user.config:<br />
	<code>&lt;add key="Blog:ShowTopContent" value="true" /&gt;<br />
	&lt;add key="Blog:ShowBottomContent" value="true" /&gt;</code></li>
	<li>Improved Feedburner integration. When using Feedburner, we now redirect to the FeedBurner feed instead of direct linking so that you can keep users subscribed to your original blog feed and not lose subscribers if you later decide to stop using Feedburner. See updated documentation <a href="http://www.mojoportal.com/using-feedburner-with-your-blog.aspx">Using Feedburner with your Blog</a>.</li>
</ul>

<h3>Miscellaneous Little Improvements</h3>

<ul>
	<li>There is a new setting in Page Settings that allows you to control if pages appear in the child pages site map separately from if they appear in the menu</li>
	<li>added&nbsp;config setting to allow using a custom registration page URL</li>
	<li>added config option to not re-suggest URLs when renaming existing pages</li>
	<li>made it possible to exclude HTML content instances from search index for landing pages that one doesn't want to come up in search, this is in the feature instance settings for Html Content</li>
	<li>when moving items in pagelayout.aspx keep the item selected</li>
	<li>make it possible to move pages to the top or bottom of their page tree node in PageTree.aspx</li>
	<li>revamp of PageLayout.aspx thanks to Joe Davis - it required additional CSS so skins were all updated as well, <a href="http://www.mojoportal.com/Forums/Thread.aspx?pageid=5&amp;mid=34&amp;ItemID=4&amp;thread=5160">see notes in this sticky thread</a> for new CSS you need in your skin</li>
	<li>CSS and markup improvements in WebStore - thanks to Joe Davis</li>
	<li>when using excerpts in the feed manager make it possible to open the link in a new window</li>
	<li>added an instance setting in Image Gallery to control the background color used when resizing images</li>
	<li>update to a strong name signed version of NeatUpload so it can be installed in the GAC to make it work in Medium Trust hosting</li>
	<li>upgrade to CKEditor 3.5</li>
	<li>refactor system content templates and add new 2 column over 1 template from Jamie Eubanks</li>
	<li>make it possible to specify a different site map data source id for SiteMenu control</li>
	<li>when not combining CSS make URLs relative</li>
	<li>updated Italian resources from Diego Mora</li>
	<li>updated Persian resources from Asad Samarian</li>
	<li>updated German resources from Jan Aengenvoort</li>
</ul>

<h3>Bug Fixes</h3>

<ul>
	<li>restore possibility to edit HTML content instances that are loaded by modulewrapper</li>
	<li>make IE specific CSS and favicon respect page specific skins</li>
	<li>fix a bug in blog RSS when using folder based child sites it was incorrectly resolving URLs</li>
	<li>fix bug where the smiley base path was not resolving correctly if running in a virtual directory instead of root</li>
	<li>fix a bug in pgsql data layer for survey</li>
	<li>fix a bug in pgsql data layer for content catalog paging</li>
	<li>fix bug in sqlce data layer when adding features to child sites</li>
	<li>fix a bug in timepicker - thanks, David Dean</li>
	<li>fix an issue where export to CSV or word was not working correctly in IE 8 when SSL is enabled</li>
	<li>fix a bug in webstore - add abstract to offer edit page</li>
	<li>fix a bug in the forum where external images were handled differently on edit page than thread page</li>
	<li>fix bug - don't show host name tab in site settings until after new site is created</li>
</ul>

<p>As always, it is a good idea to backup your site and database before <a href="http://www.mojoportal.com/upgrading.aspx">upgrading</a>.</p>

<h3>Corresponding Update For Form Wizard Pro</h3>

<p>Users who have purchased &nbsp;<a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a> should upgrade at the same time to the new version of Form Wizard Pro 0.0.2.3, released today for compatibility with mojoPortal 2.3.6.1. This was needed because we updated to a new version of NeatUpload and Form Wizard Pro must use the same version of NeatUpload&nbsp;as mojoPortal or it will result in errors.</p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-2361-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2361-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.6.1+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2361-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2361-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2361-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2361-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2361-released.aspx</guid>
      <pubDate>Thu, 27 Jan 2011 16:59:00 GMT</pubDate>
    </item>
    <item>
      <title>In Site Analytics Pro Is Now On Sale</title>
      <description><![CDATA[<p>I'm happy to announce that the first release of <a href="http://www.mojoportal.com/in-site-analytics-pro-product.aspx">In Site Analytics&nbsp;Pro</a> is now on sale in the <a href="http://www.mojoportal.com/store.aspx">mojoPortal Store</a>, starting at $99 for a single installation license.</p>

<p>In Site Analytics Pro provides reporting and charts from Google Analytics in your mojoPortal site and for supported databases also provides long term storage of analytics data. Google only promises to keep analytics data for up to 2 years, in practice it seems they keep it for about 3.5 years, so harvesting the data allows you to keep historic data that would otherwise be lost over time. While In Site Analytics Pro is ideal for tracking the traffic of your mojoPortal site because it integrates with mojoPortal and allows you to have traffic reports integrated in your site, it can be used to track any one of your Google Analytics Profiles, it does not have to track a mojoPortal site, but it does need to be installed in a mojoPortal&nbsp;site. you could for example setup a mojoPortal site with In Site Analytics Pro and use it to track the traffic of one of your other non-mojoPortal sites. While this would not provide reports integrated into your non-mojoPortal site, you would still get the benefit of long term data storage.</p>

<p>The charts and reports can work directly from the Google Analytics Data API or from the database. Only MS SQL 2005/2008/SqlAzure and MySql are supported for data capture, but installations of mojoPortal using other database platforms can still use the charts and reports directly from the API. It is also possible and preferable to use a separate database for the analytics data instead of keeping it in the same database as the site. It can be a large amount of data over time, much larger than the actual site data. You could also use any database platform for the site but still use MS SQL or MySql for In Site Analytics, it just requires you to manually run the database script(s) and change one configuration setting, see the System Requirements/Installation tab for more details.</p>

<p>The main charts and reporting plugs into the Administration menu and is protected by roles, but there are also 2 features that plug into the mojoPortal content system to allow you to publish a traffic chart and/or visitor map on public pages of your site as I have done on our <a href="http://www.mojoportal.com/community.aspx">Community page</a>.</p>

<p>Below are some screen shots of the main features, you can also try it out live on <a href="http://demo.mojoportal.com">demo.mojoportal.com</a>, just login as admin@admin.com with the password admin, then click the Administration Link, the click Site Traffic Reports from the Administration menu.</p>

<p><img alt="Screen shot of In Site Dashboard" src="https://www.mojoportal.com/Data/Sites/1/media/insite-dashboard650.gif" style="width: 650px; height: 406px; " /></p>

<p><img alt="scree shot of visitor map" src="https://www.mojoportal.com/Data/Sites/1/media/insite-visitor-map650b.gif" style="width: 650px; height: 406px; " /></p>

<p>Note that the map can be re-sized by dragging the bottom right corner.</p>

<p><img alt="screen shot of Todays traffic report" src="https://www.mojoportal.com/Data/Sites/1/media/insite-todays-traffic650.gif" style="width: 650px; height: 406px; " /></p>

<p>Note that while In Site Analytics Pro does not use the main site skins, it is skinnable, and we include 2 skins and you can also create your own by copying and modifying one of the existing ones. You can set the skin from configuration settings. From the skin you can control the JQueryUI theme as well as colors of the charts and other style elements.</p>

<p><img alt="screen shot showing In Site Dashboard with a different skin" src="https://www.mojoportal.com/Data/Sites/1/media/insite-dark-skin650.gif" style="width: 650px; height: 406px; " /></p>

<p>&nbsp;</p>

<p><a href="https://www.packtpub.com/open-source-awards-home/vote-open-source-cms"><img alt="Vote For mojoPortal in the 2010 CMS Awards" src="https://www.mojoportal.com/Data/mojocommon/cmsaward2010-vote.png" /></a></p>

<p>&nbsp;</p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/in-site-analytics-pro-is-now-on-sale.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/in-site-analytics-pro-is-now-on-sale.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=In+Site+Analytics+Pro+Is+Now+On+Sale+https%3a%2f%2fwww.mojoportal.com%2fin-site-analytics-pro-is-now-on-sale.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fin-site-analytics-pro-is-now-on-sale.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/in-site-analytics-pro-is-now-on-sale.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/in-site-analytics-pro-is-now-on-sale.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/in-site-analytics-pro-is-now-on-sale.aspx</guid>
      <pubDate>Mon, 01 Nov 2010 17:10:00 GMT</pubDate>
    </item>
    <item>
      <title>In Site Analytics is Now on demo.mojoportal.com</title>
      <description><![CDATA[<p>Hello mojoPortal friends,</p>

<p>I've been working hard for the last few months to complete a new add on product for <a href="http://www.mojoportal.com/">mojoPortal</a> named In Site Analytics Pro. It is basically feature complete for what I envisioned for the first release and you can check it out on our demo site <a href="http://demo.mojoportal.com">demo.mojoportal.com</a> where you can login with the credentials admin@admin.com&nbsp;and the password is admin</p>

<p>I'm still doing a little work on the data management page, but that is a page I would lock down so you can't see it on the demo site anyway for security reasons. Once I complete that I still have to produce documentation for installation, configuration and use before I put it on sale in the <a href="http://www.mojoportal.com/store.aspx">mojoPortal store</a>. For now I invite you to check it out on our demo site and let me know any feedback positive or negative.</p>

<p>The primary features are the ability to have traffic reports and charts from Google Analytics in your site and the ability to capture the data from Google Analytics into the database for long term storage. Google only promises keep the data for 2 years, in practice it seems they keep it about 3.5 years, so harvesting the data allows you to keep historic data that would otherwise be lost over time.&nbsp;</p>

<p>The charts and reports can work directly from the Google Analytics Data API or from the database. Only MS SQL and MySql will be supported for data capture, but installations of mojoPortal using other database platforms can still use the charts and reports directly from the API. It is also possible and preferable to use a separate database for the analytics data instead of keeping it in the same db as the site. It can be a large amount of data over time, much larger than the actual site data. You could also use any db platform for the site but still use MS SQL or MySql for In Site Analytics, I will be producing documentation about how to do that.</p>

<p>The main charts and reporting plugs into the Administration menu and is protected by roles, but there are also 2 features that plug into the content system to allow you to publish a traffic chart and visitor map on public pages of your site as I have done on our <a href="http://www.mojoportal.com/community.aspx">Community</a> page.</p>

<p>Below are some screen shots to give you an idea of the features, but it is best to check it out on our <a href="http://demo.mojoportal.com">demo site</a>.</p>

<p><img alt="screen shot of insite analytics dashboard" src="https://www.mojoportal.com/Data/Sites/1/media/insite-dashboard650.gif" style="width: 650px; height: 406px; " /></p>

<p><img alt="screen shot of insite analytics visitor map" src="https://www.mojoportal.com/Data/Sites/1/media/insite-visitor-map650b.gif" style="width: 650px; height: 406px; " /></p>

<p>note that the map can be re-sized by dragging the bottom right corner</p>

<p><img alt="screen shot of todays traffic report" src="https://www.mojoportal.com/Data/Sites/1/media/insite-todays-traffic650.gif" style="width: 650px; height: 406px; " /></p>

<p>Thanks in advance for any feedback!</p>

<p><a href="https://www.packtpub.com/open-source-awards-home/vote-open-source-cms"><img alt="Vote For mojoPortal in the 2010 CMS Awards" src="https://www.mojoportal.com/Data/mojocommon/cmsaward2010-vote.png" /></a></p>

<p>&nbsp;</p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/in-site-analytics-is-now-on-demomojoportalcom.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/in-site-analytics-is-now-on-demomojoportalcom.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=In+Site+Analytics+is+Now+on+demo.mojoportal.com+https%3a%2f%2fwww.mojoportal.com%2fin-site-analytics-is-now-on-demomojoportalcom.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fin-site-analytics-is-now-on-demomojoportalcom.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/in-site-analytics-is-now-on-demomojoportalcom.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/in-site-analytics-is-now-on-demomojoportalcom.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/in-site-analytics-is-now-on-demomojoportalcom.aspx</guid>
      <pubDate>Tue, 12 Oct 2010 13:36:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.5.1 Released</title>
      <description><![CDATA[<p>
	I'm happy to announce the release of <a href="http://www.mojoportal.com/">mojoPortal</a> 2.3.5.1, available now on our <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>
<h3>
	What's New?</h3>
<h4>
	jQuery UI Skin</h4>
<p>
	This release includes <a href="http://www.mojoportal.com/mojoportal-and-jqueryui-themeroller.aspx">a new skin based on jQuery UI</a>, as described in my previous post, there is also a theme picker for choosing the jQuery UI theme. There are a bunch of pre-defined themes and you can roll your own with the jQueryUI theme roller, so this skin is like many skins in one.</p>
<p>
	A number of people have been asking in the forums about how to make menu items not clickable. Typically people want this when they are using a flyout menu like the jQuery Superfish menu or the horizontal menus used in <a href="http://www.mojoportal.com/creating-skins-from-artisteer-html-templates.aspx">Artisteer skins</a>. Usually there is a parent page that is just a container for child pages that have the actual articles, and you may wish to make the parent menu item not clickable. If the user clicks it, it is the same as if they mouse over it, it just shows the child items and does not navigate to the page. This is now supported as described in the documentation article <a href="http://www.mojoportal.com/unclickable-menu-items.aspx">Un-clickable Menu Items</a>.</p>
<h4>
	Feature Setting Groups</h4>
<p>
	This is something I've been meaning to do for a long time, when a feature has a lot of settings (like the blog for example), the settings page could become very daunting just because there are so many settings. By adding groups, we can organize the settings into logical groups that make it much easier for the user to digest because they can view one group at a time.</p>
<p>
	<img alt="feature setting groups" src="https://www.mojoportal.com/Data/Sites/1/media/modulesettinggroups.gif" style="width: 650px; height: 643px; " /></p>
<h4>
	A Few Blog Improvements</h4>
<p>
	As the screen shot shows, there are some new settings for the blog. You can now add extra content into the blog side bar in 2 locations. This is suitable for adding a blog roll or an advertisement or other content you would like to add to the sidebar of the blog.</p>
<p>
	There is also a new Tweet This link available in the blog, located in the Social Settings.</p>
<h4>
	Limiting Available Features by Roles</h4>
<p>
	This is another popular request in the forums, many users have asked about being able to filter the list of available features by roles. This is now possible from Administration &gt; Advanced Tools &gt; Feature Configuration, you will see a new link for permissions next to each feature and you can set roles allowed to use the feature. Note that it only controls what is available in the list when creating new content, it does not change a user's permissions on existing instances of a feature.</p>
<h4>
	Other Stuff</h4>
<ul>
	<li>
		Upgraded from TinyMCE 3.3.7 to 3.3.8</li>
	<li>
		Upgraded from CKeditor 3.3.1 to 3.3.2</li>
	<li>
		Upgraded to the latest MySql Connector</li>
	<li>
		Updated Italian resources thanks to Diego Mora</li>
	<li>
		Updated German resources thanks to Jan Aengenvort</li>
	<li>
		the Extra Skins download file has a new skin contributed by Nitin Sharma</li>
</ul>
<h4>
	Bug Fixes</h4>
<ul>
	<li>
		fixed a redirect bug when using the MyPage feature in folder based child sites</li>
	<li>
		fixed an issue where the tabs did not work correctly on the user profile and manage users pages in folder based child sites</li>
	<li>
		fixed a bug where consuming the aggregate feed from on feed manager into another instance of Feed Manager caused the page to hang</li>
	<li>
		fixed a bug where the download link in shared files did not always work correctly in IE 8</li>
	<li>
		a few other bug fixes and enhancements based on feedback in the forums and by email</li>
</ul>
<h4>
	Upgrade Notes</h4>
<p>
	After the previous release, 2 people reported errors upgrading and were not able to upgrade. I believe this issue happens only with SQL 2005 if it does not have all the service paks installed. This is related to <a href="http://www.mojoportal.com/mojoportal-2348-released.aspx">changes we made to consolidate the MS SQL layer so it could support SqlAzure</a>. In making the needed changes we made a conscious decision to drop support for SQL 2000, so our MS SQL Data layer is designed to support SQL 2005/2008/SqlAzure, but it turns out that SQL 2005 only works if you have the service paks installed. I was already running SQL 2005 Express with all service paks, so I did not anticipate any issues with SQL 2005, but apparently there are problems if you are not up to date on service paks. As always, you should backup your site and database before upgrading, and if you are using SQL 2005 you should check whether you have the service paks installed before upgrading.</p>
<p>
	Â </p>
<p>
	<a href="http://www.packtpub.com/open-source-awards-home/nominate-best-open-source-cms" onclick="mojoPageTracker._trackPageview('/ad/mojo/cmsaward-nominate.aspx');window.open(this.href,'_self');return false;"><img alt="Nominate mojoPortal for the 2010 CMS Awards" src="https://www.mojoportal.com/Data/mojocommon/award2010-nominate-mojo.gif" /></a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-2351-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2351-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.5.1+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2351-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2351-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2351-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2351-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2351-released.aspx</guid>
      <pubDate>Thu, 12 Aug 2010 10:57:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal and jQueryUI ThemeRoller</title>
      <description><![CDATA[<p>I was recently reading the documentation for <a href="http://jqueryui.com/docs/Theming/API">The jQuery UI CSS Framework</a>, and it got me thinking about making it possible to style <a href="http://www.mojoportal.com/">mojoPortal</a> content instances using it. Then a user <a href="http://www.mojoportal.com/Forums/Thread.aspx?pageid=5&amp;mid=34&amp;ItemID=9&amp;thread=5896">asked in the forums about being able to skin mojoPortal using jQueryUI ThemeRoller</a>, and that got me thinking further, what if I could create a mojoPortal skin where the whole site is a jQuery UI widget and could be styled by jQuery UI themes? That would be kind of cool, wouldn't it?&nbsp;</p>

<p>It doesn't take much to make a feature instance style as a jQuery Widget, skeleton markup like this will do the trick since the jQuery UI CSS is already included in the page:<br />
<br />
<code>&lt;div class="ui-helper-reset ui-widget "&gt;<br />
&nbsp;&lt;h2 class="ui-widget-header ui-corner-top"&gt;Heading goes here&lt;/h2&gt;<br />
&nbsp;&lt;div class="ui-widget-content ui-corner-bottom"&gt;<br />
&nbsp;&nbsp;&lt;p&gt;<br />
&nbsp;&nbsp; This is styled with jQuery UI!<br />
&nbsp;&nbsp;&lt;/p&gt;<br />
&nbsp;&lt;/div&gt;<br />
&lt;/div&gt;</code></p>

<p>So I just needed a way to make mojoPortal features render that kind of skeleton and it wasn't difficult to achieve given that I had already implemented a solution for rendering the special markup needed for <a href="http://www.mojoportal.com/creating-skins-from-artisteer-html-templates.aspx">Artisteer designs</a>. I just added some more options to the rendering that can be configured from the theme.skin file in a mojoPortal skin. It took me maybe 10 minutes and I had it working for proof of concept. It was much easier than implementing support for Artisteer because we already had the needed markup structure, all we really needed was an option to render the CSS class names for jQueryUI. So I made a new skin and modified the layout.master to use the same widget skeleton for the site as a&nbsp;whole so that the jQuery UI theme pretty much controls the look of the site. There isn't yet any themeable menu for jQuery UI, so I used the jQuery Superfish menu that we were already using in a few other skins and used neutral colors and color inheritance to make it look reasonably well with all of the jQueryUI themes, though it looks better with some than others. It would be easy for users to copy this skin and change the menu colors to match better with a specific theme. The jQuery UI CSS framework doesn't have style for all purposes and features, though, so additional CSS is needed for some features, and again I tried to make it use neutral colors so it would not clash with any of the jQuery UI themes.</p>

<h3>I'm a ThemeRoller baby, bound to roll all over you...</h3>

<p><a href="http://jqueryui.com/docs/Theming/Themeroller">ThemeRoller</a> makes me think of James Taylor singing with a lisp! :-D</p>

<p>Once I had the new skin basically working it begged for a theme switcher so I could see the magic instantly of changing the jQuery UI theme. There are about 25 or so standard jQuery UI themes that can be loaded from the Google CDN (Content Delivery Network) which is where we load jQuery and jQuery UI javascript and CSS from by default. You can also make your own custom jQuery UI themes with <a href="http://jqueryui.com/docs/Theming/Themeroller">ThemeRoller</a>, but if you do that then you need to <a href="http://www.mojoportal.com/intranets-and-private-networks.aspx">host the jQuery and jQuery UI files locally as documented here</a>.</p>

<p><br />
You can control the list of available themes in the theme switcher from a config setting, that you can override in user.config, and you can set the default theme in the layout.master file of the skin like this:<br />
&lt;portal:StyleSheetCombiner id="StyleSheetCombiner" runat="server" JQueryUIThemeName="eggplant" UseIconsForAdminLinks="false" /&gt;</p>

<p>The theme switcher can be removed from the layout.master or disabled or limited by roles if you don't want a user to be able to change the theme. It is basically setting a cookie based on the dropdown choice, and then setting the jQuery&nbsp;UI theme based on the cookie.</p>

<p>Maybe it is too widgety looking for most sites, but it might be useful for some kinds of sites or web applications built on mojoPortal. You could easily add a div above and/or below the menu to make room for a banner ad or some other additional content.</p>

<p>Anyway, it was easy and fun to implement. It is in the source code repository now but requires a build of the latest source code to work. It will be included in the next release. You can try it now on <a href="http://demo.mojoportal.com">demo.mojoportal.com</a> by going to Administration &gt; Site Settings and choose the jqueryui-1 skin.&nbsp;</p>

<p>So basically the new skin jqueryui-1 is like many skins in one since there are many jQueryUI themes available and you can roll your own with ThemeRoller.</p>

<p>Here are a few screenshots showing a few of the jQueryUI themes.</p>

<p><img alt="mojoportal with jquery ui eggplant theme" src="https://www.mojoportal.com/Data/Sites/1/media/mojo-jquery-eggplant.png" style="width: 650px; height: 579px; " /></p>

<p><img alt="mojoportal with jquery ui excite bike theme" src="https://www.mojoportal.com/Data/Sites/1/media/mojo-jquery-excite-bike.png" style="width: 650px; height: 579px; " /></p>

<p><img alt="mojoportal with jquery ui dark hive theme" src="https://www.mojoportal.com/Data/Sites/1/media/mojo-jquery-dark-hive.png" style="width: 650px; height: 579px; " /></p>

<p><img alt="mojoportal with jquery ui humanity theme" src="https://www.mojoportal.com/Data/Sites/1/media/mojo-jquery-humanity.png" style="width: 650px; height: 579px; " /></p>

<p>So, look for this in the next release or if you are a developer you can <a href="http://www.mojoportal.com/getting-the-code-with-tortoisehg.aspx">get the latest code from the repository</a>. I think this gives us one more useful approach to skinning mojoPortal and hope you find it useful.</p>

<p>&nbsp;</p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-and-jqueryui-themeroller.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-and-jqueryui-themeroller.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+and+jQueryUI+ThemeRoller+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-and-jqueryui-themeroller.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-and-jqueryui-themeroller.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-and-jqueryui-themeroller.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-and-jqueryui-themeroller.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-and-jqueryui-themeroller.aspx</guid>
      <pubDate>Wed, 28 Jul 2010 13:58:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal SQL CE and WebMatrix</title>
      <description><![CDATA[<p>
	This is just a quick post in follow up to my previous post <a href="http://www.mojoportal.com/sql-server-compact-40-and-mojoportal.aspx">SQL Server Compact 4.0 and mojoPortal</a>, to provide some updated information. We recently released&nbsp;<a href="http://www.mojoportal.com/mojoportal-2348-released.aspx">mojoPortal 2.3.4.8</a>, and I've updated the package for SQL CE recently to contain migration scripts so that it is easy to migrate to SQL Server.</p>
<p>
	I've also created some new documentation.</p>
<ul>
	<li>
		<a href="http://www.mojoportal.com/using-sql-ce.aspx">Using SQL CE with mojoPortal</a></li>
	<li>
		<a href="http://www.mojoportal.com/using-webmatrix-to-run-the-sql-ce-version-of-mojoportal.aspx">Using WebMatrix to run the SQL CE Version of mojoPortal</a></li>
	<li>
		<a href="http://www.mojoportal.com/using-webmatrix-to-migrate-mojoportal-from-sql-ce-to-sql-server.aspx">Using WebMatrix to Migrate mojoPortal from SQL CE to SQL Server</a></li>
	<li>
		<a href="http://www.mojoportal.com/using-webmatrix-to-install-mojoportal-from-the-web-application-gallery.aspx">Using WebMatrix to Install mojoPortal from the Web App&nbsp;Gallery</a></li>
</ul>
<p>
	<img alt="Using WebMatrix with mojoPortal" src="https://www.mojoportal.com/Data/Sites/1/media/webmatrix-from-folder.png" style="width: 650px; height: 441px; " /></p>
<p>
	<a href="http://www.asp.net/webmatrix">WebMatrix</a> includes IIS&nbsp;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&nbsp;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.&nbsp;</p>
<p>
	One could also use WebMatrix for light mojoPortal feature development, perhaps at some point I will make an article showing how to use the <a href="http://www.mojoportal.com/hello-world-developer-quick-start.aspx">mojoPortal&nbsp;Hello World examples</a> 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.</p>
<p>
	Â </p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-sql-ce-and-webmatrix.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-sql-ce-and-webmatrix.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+SQL+CE+and+WebMatrix+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-sql-ce-and-webmatrix.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-sql-ce-and-webmatrix.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-sql-ce-and-webmatrix.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-sql-ce-and-webmatrix.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-sql-ce-and-webmatrix.aspx</guid>
      <pubDate>Mon, 26 Jul 2010 14:38:00 GMT</pubDate>
    </item>
    <item>
      <title>SQL CE Support for Form Wizard Pro and Event Calendar Pro</title>
      <description><![CDATA[<p>
	I'm happy to announce the availability of new packages of <a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a> and <a href="http://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a>, that include support for SQL CE. Existing customers can download the latest package from their order history under the My Account link after signing in to the site.</p>
<p>
	<a href="http://www.mojoportal.com/event-calendar-pro-product.aspx"><img alt="Event Calendar Pro" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/eventcalpro-monthview-small2.png" style="width: 432px; height: 247px; " /></a></p>
<p>
	<a href="http://www.mojoportal.com/form-wizard-pro-product.aspx"><img alt="Form Wizard Pro" src="https://www.mojoportal.com/Data/Sites/1/formwizard-small.png" style="width: 236px; height: 216px; " /></a></p>
<p>
	I've also updated the SQL CE package for mojoPortal on <a href="http://www.codeplex.com/mojoportal/Release/ProjectReleases.aspx">Codeplex</a> to fix a couple of bugs reported recently, and I've created documentation about <a href="http://www.mojoportal.com/using-sql-ce.aspx">using SQL CE with mojoPortal</a>. In the near future I will also create documentation to explain how to migrate a mojoPortal installation from SQL CE to SQL Server using <a href="http://www.asp.net/webmatrix">WebMatrix</a>.</p>
<p>
	Â </p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/sql-ce-support-for-form-wizard-pro-and-event-calendar-pro.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/sql-ce-support-for-form-wizard-pro-and-event-calendar-pro.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=SQL+CE+Support+for+Form+Wizard+Pro+and+Event+Ca...+https%3a%2f%2fwww.mojoportal.com%2fsql-ce-support-for-form-wizard-pro-and-event-calendar-pro.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fsql-ce-support-for-form-wizard-pro-and-event-calendar-pro.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/sql-ce-support-for-form-wizard-pro-and-event-calendar-pro.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/sql-ce-support-for-form-wizard-pro-and-event-calendar-pro.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/sql-ce-support-for-form-wizard-pro-and-event-calendar-pro.aspx</guid>
      <pubDate>Fri, 23 Jul 2010 13:55:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.4.8 Released</title>
      <description><![CDATA[<p>
	I'm happy to announce the release of <a href="http://www.mojoportal.com/">mojoPortal</a> 2.3.4.8.&nbsp;</p>
<h3>
	Data Layer Consolidation</h3>
<p>
	The primary focus of this release is consolidating our support for SqlAzure into our main MS SQL data layer so that we don't need to maintain a separate data layer for SqlAzure. For new installations that use SqlAzure, you should just use the package for MS SQL. If you have an existing installation using SqlAzure, you should follow these steps:</p>
<ol>
	<li>
		Upgrade using the mojoportal-2-3-4-8-sqlazure-net35-deploymentfiles.zip or mojoportal-2-3-4-8-sqlazure-net40-deploymentfiles.zip depending on whether you are using .NET 3.5 or 4.0</li>
	<li>
		Copy your connection string from the SqlAzureConnectionString to the&nbsp;MSSQLConnectionString</li>
	<li>
		Download mojoportal-2-3-4-8-mssql-net35-deploymentfiles.zip or mojoportal-2-3-4-8-mssql-net40-deploymentfiles.zip&nbsp;again depending on your .NET version.</li>
	<li>
		Extract the files and copy the mojoPortal.Data.dll, mojoPortal.Features.Data.dll, and WebStore.Data.dll from the MS SQL package and replace them in the /bin folder your installation</li>
	<li>
		Going forward we will no longer have separate packages for SqlAzure, so for future upgrades you will just use the MS SQL package</li>
</ol>
<p>
	<strong>Important </strong>- We no longer support MS SQL 2000. Our MS SQL Data layer is compatible with SQL 2005/2008/SqlAzure</p>
<p>
	As I mentioned in my previous post, <a href="http://www.mojoportal.com/sql-server-compact-40-and-mojoportal.aspx">we also now have a package for SQL CE</a>. I encourage you to give it a try. It would be really cool if someone out there could do some load testing of mojoPortal using SQL CE and then using MS SQL to get an idea of how well SQL CE can handle traffic. I would not expect it to do as well as MS SQL but I think it might hold up better than one might expect. My guess is it can handle more traffic than the Sqlite version of mojoPortal because Sqlite only supports 1 connection and SQL CE does have a connection pool and supports more connections.</p>
<p>
	In the near future I will be looking into using <a href="http://www.asp.net/webmatrix">WebMatrix</a> which is the tool that can be used to migrate from SQL CE to SQL Server. WebMatrix could also be used for light mojoPortal feature development for those who find Visual Studio to be a little scary. WebMatrix is also a pretty neat tool for trying applications from the Web App&nbsp;Gallery and it includes IIS&nbsp;Express.</p>
<h3>
	New Date Picker</h3>
<p>
	This release also includes a new jQuery&nbsp;DatePicker. You could still use the old one if you like it better by changing the default DataPickerProvider in mojoDatePicker.config&nbsp;in the root of the site.</p>
<p>
	<img alt="jquery date time picker" src="https://www.mojoportal.com/Data/Sites/1/media/jquery-datetimepicker.jpg" style="width: 640px; height: 248px; " /></p>
<p>
	I also added jQuery UI styling to the buttons in most of the included skins (except Artisteer skins since they already have button style). You can enable it in a custom skin from the theme.skin file by adding this:</p>
<p>
	&lt;portal:mojoButton runat="server" UsejQueryButton="true" /&gt;</p>
<h3>
	A Few Bug Fixes</h3>
<ul>
	<li>
		fixed a bug where using Live Writer an error would happen when trying to open existing posts</li>
	<li>
		fixed a bug in the blog where the rating was not shown even on the detail page if using excerpts</li>
	<li>
		fixed a bug in the blog where the default comment allowed days was being ignored</li>
	<li>
		fixed a bug in Feed Manager where the aggregate feed link did not work in child sites</li>
	<li>
		fixed a few bugs in the Sqlite data layer where the paging logic was not correct</li>
</ul>
<p>
	Updated Italian resources from Diego Mora</p>
<p>
	Updated Dutch translation from Bouke Bisschop</p>
<p>
	As always, it is a good idea to backup your site and database before upgrading.</p>
<p>
	Â </p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-2348-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2348-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.4.8+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2348-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2348-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2348-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2348-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2348-released.aspx</guid>
      <pubDate>Fri, 16 Jul 2010 12:38:00 GMT</pubDate>
    </item>
    <item>
      <title>SQL Server Compact 4.0 and mojoPortal</title>
      <description><![CDATA[<p>
	On June 30, 2010, Scott Guthrie blogged <a href="http://weblogs.asp.net/scottgu/archive/2010/06/30/new-embedded-database-support-with-asp-net.aspx">New Embedded Database Support with ASP.NET</a>,&nbsp;announcing that&nbsp;SQL CE 4 (SQL Server Compact Edition) would soon be available. It was officially released as a public CTP (Community Technology Preview) on July 7, 2010 with an announcement on the SQL Server Compact Team blog in a post by Ambrish Mishra entitled <a href="http://blogs.msdn.com/b/sqlservercompact/archive/2010/07/07/introducing-sql-server-compact-4-0-the-next-gen-embedded-database-from-microsoft.aspx">Introducing SQL Server Compact 4.0, the Next Gen Embedded Database from Microsoft</a>.</p>
<h3>
	This little database is big news for mojoPortal</h3>
<p>
	Today I am happy to announce a preview release of <a href="http://www.mojoportal.com/">mojoPortal</a> 2.3.4.7 for SQL CE 4 and ASP.NET 4.0. This package has a pre-configured database and can be deployed under Medium Trust with .NET 4 hosting.(*) This means it is easy to deploy and use even on budget shared hosting where Medium Trust security policy is almost always used. You can download the package mojoportal-2-3-4-7-preview-sqlce-net40-deploymentfiles.zip from the bottom of <a href="http://www.codeplex.com/mojoportal/Release/ProjectReleases.aspx">this page on Codeplex</a>. It is an MsDeploy package, so <a href="http://www.mojoportal.com/easy-installation-using-the-ms-web-deployment-tool.aspx">it can be installed by importing it in IIS</a>, or you can just unzip it and install manually.</p>
<p>
	When installing web applications like mojoPortal, often one of the more challenging installation issues is setting up the database, for non-techies this is the part that people really struggle with, and even people who consider themselves fairly tech savvy can find themselves struggling to get it working unless they have a background in working with databases and understand all the nuances of connection strings and permissions. Using SQL CE 4 eliminates this challenge completely because the database is just a file on disk. There is no database software to install on the server, so it does not depend on the host having it installed, it only requires .NET 4 hosting. Since we ship a database file already populated with initial data, it is basically zero configuration for the database, you don't have to do anything, it just works.</p>
<p>
	I'm sure some of you are aware that mojoPortal has supported <a href="http://www.sqlite.org/">Sqlite</a> for a long time, and it is also a zero configuration, file based database that many people like a lot. However, it has never worked under Medium Trust and if your site traffic starts to grow there is not an easy way to migrate the data to a more robust database.</p>
<table border="1" cellpadding="1" cellspacing="1" style="width: 400px; ">
	<tbody>
		<tr>
			<td>
				Â </td>
			<td>
				SQL CE</td>
			<td>
				Sqlite</td>
		</tr>
		<tr>
			<td>
				Zero config deployment</td>
			<td>
				yes</td>
			<td>
				yes</td>
		</tr>
		<tr>
			<td>
				Backing up the files backs up the database</td>
			<td>
				yes</td>
			<td>
				yes</td>
		</tr>
		<tr>
			<td>
				Works in Medium Trust</td>
			<td>
				yes</td>
			<td>
				no</td>
		</tr>
		<tr>
			<td>
				A supported migration path to a more robust database</td>
			<td>
				yes to SQL Express/Server/SqlAzure</td>
			<td>
				no convenient migration solutions that I know of</td>
		</tr>
	</tbody>
</table>
<p>
	Â </p>
<p>
	Now, I'm not yet sure yet how easy the migration of mojoPortal from SQL CE to SQL Server will be. Scott Gu mentioned that they will be shipping migration tools that will make it straight forward to migrate the tables and data from SQL CE to SQL Express, SQL Server or SQL Azure. However, since SQL CE does not support stored procedures and we do use them in the SQL Server data layer for mojoPortal, it means we will also need to make migration scripts available to install the latest stored procedures into the database after migration. So, in theory, the migration process will be to first use the tool that Microsoft will ship to migrate the tables and data, then run the scripts we will make available that contain the stored procedures for a given version of mojoPortal, then you would just deploy the mojoPortal version for SQL Server over your existing mojoPortal for SQL CE installation and set your connection string for the new database. Once the migration tools ship I will verify the process and create documentation with the migration steps.</p>
<p>
	In summary, I think that the SQL CE package for mojoPortal will make it easy for you to stand up impressive new web sites quickly and easily in budget hosting with the possibility to upscale to a more robust database platform later without too much difficulty. I would say that if you are putting up a site that you are expecting to grow traffic quickly, then you should probably just start out using SQL Express, SQL Server, or SQL Azure. But, how many sites that you put online for your customers really get a lot of traffic? If the answer is not many, then you may find SQL CE is the best choice for many of your projects, reducing costs and time to deployment.</p>
<p>
	<img alt="Screen shot of mojoportal system information showing SQL CE" src="https://www.mojoportal.com/Data/Sites/1/media/sqlce-mojo.png" style="width: 650px; height: 547px; " /></p>
<p>
	Â </p>
<h3>
	Top Secret Early Access! :-D</h3>
<div>
	Â </div>
<div>
	Now you may wonder how I managed to have a version of mojoPortal for SQL CE ready so soon after SQL CE 4 was released. The answer is that I had early access to SQL CE 4.0 and access to a bunch of good folks on the IIS and SQL Server teams to help me with guidance and questions and was also able to give them feedback while they were working on this release.</div>
<div>
	Â </div>
<div>
	Back in early March I was contacted by Jonathan Hawkins of Microsoft and was invited to an online meeting where they told me what they were planning for SQL CE and why it might be beneficial for mojoPortal to support it, I of course was very excited about it. &nbsp;At the time the alpha bits of SQL CE 4 were not quite ready but I was provided with good help and work arounds that would enable me to work on support for SQL CE using the 3.5 version so I could get started without waiting. So I went ahead at that time and implemented it for the core mojoPortal features (it took me about a week) and managed to get it working as proof of concept. Once that was done I moved on to work on other things not knowing how long it would be until the alpha bits of SQL CE 4.0 would be ready. Finally on June 2nd I got an email that the alpha bits were available, but I was knee deep in other projects right at the time, so it was around June 27-28 when I finally tried the new bits and verified it worked under Medium Trust. Then when Scott Gu blogged about it on June 30, I realized it was going to be public very soon so I scrambled to complete the SQL CE data layer for the rest of the mojoPortal features (except for WebStore and my Add On Products). It took about 1 week to finish that work and by Friday July 9 I was ready to produce a package but decided to wait until Monday to blog about it.</div>
<div>
	Â </div>
<div>
	So here we are, it is Monday, and I've uploaded the package on Codeplex, at the bottom of our current release. I've done sanity testing of all the features but not exhaustive testing of every configuration of every feature, so it is possible and perhaps likely there are still a few bugs here and there in the data layer, after all this is our newest data layer and therefore the least tested of all our data layers at this point. That is why I'm calling it a "Preview" release, and I hope you will give it a try and report any problems you may encounter. I will fix them quickly.</div>
<div>
	Â </div>
<div>
	I'd like to thank all the folks at Microsoft for giving me this opportunity to work closely with them and get early access to the technology, and I especially thank Jonathan Hawkins, Parasuraman Narasimhan, Radhakrishnan Srikanth, Mohammad Imran Siddique, Himadri Sarkar, and Ambrish Mishra for all their help. It has really been a great experience for me getting to work with these guys and do something with mojoPortal that fit well with cutting edge work these guys have done on SQL CE. I really think they have solved one of the long standing problems in ASP.NET web deployment. For low traffic sites or quick prototyping or proof of concept deployment, or just low budget web sites, this is really going to reduce friction and make it easy to put a site up in minutes.&nbsp;</div>
<div>
	Â </div>
<div>
	<h3>
		Technical Notes</h3>
	<div>
		Â </div>
	<div>
		It turned out well that I waited for SQL CE 4 before implementing all the mojoPortal features. When I implemented the core features I only had SQL CE 3.5 to work with so in places where I needed to select a page of data, I was having to use some awkward SQL syntax to make it work, it did work but it was difficult to read and write. One of the coolest new things in SQL CE 4.0 is the new syntax for selecting a page of data like this:<br />
		Â </div>
	<div>
		SELECT * FROM mp_GeoCountry ORDER BY Name OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;<br />
		Â </div>
	<div>
		It would be great if someday SQL Server supports an easier paging syntax, as <a href="http://stackoverflow.com/questions/187998/row-offset-in-ms-sql-server">it is still awkward to get a page of data efficiently in SQL Server</a>, though it is a little easier than SQL CE 3.5 since SQL Server at least gives us stored procedures which provides a few additional strategies for getting a page of data. Anyway, you can guess I like this new syntax, it is much more convenient. Probably since I've worked with so many open source database platforms in mojoPortal, and have learned the major syntax differences between them, and really most of them have had easier ways to get a page of data than SQL Server for a long time, I'm glad to see something that makes a bit more sense. In a nutshell, MySql, PostgreSql, and Sqlite all support the LIMIT x OFFSET y syntax, Firebird has an interesting twist with SELECT FIRST x SKIP y, and SQL Server has always had the SELECT TOP (x) syntax but no equivalent to OFFSET, and this makes us have to jump through syntax hoops to get any efficient way to grab a page of data. So at the moment, in my view, SQL CE 4 has at least one cool syntax thing better than its big brother SQL Server even if it is not as capable in handling large traffic.</div>
	<div>
		Â </div>
</div>
<p>
	<img alt="The mojoPortal Query Tool can talk to SQL CE" src="https://www.mojoportal.com/Data/Sites/1/media/sqlce-query-tool.png" style="width: 650px; height: 690px; " /></p>
<p>
	The above screen shot shows that the built in <a href="http://www.mojoportal.com/using-the-sql-query-tool.aspx">mojoPortal&nbsp;query tool</a> can be used with SQL CE.</p>
<h4>
	No need to install it in the GAC</h4>
<p>
	One of the interesting things to me is that it seems like SQL CE 4 must be all managed code, that is, I think it must be implemented purely in .NET. The reasons I think this is because it seems that the database engine must be completely contained in&nbsp;System.Data.SqlServerCe.dll, and this dll just needs to be in the /bin folder, it doesn't even need to be installed in the GAC (Global Assembly Cache). The main reason why Sqlite doesn't work under Medium Trust is because it does some P/Invoke against a native dll written in C. To be allowed to do that the managed dll for Sqlite&nbsp;would have to be installed in the GAC. Since SQL CE can work without being installed in the GAC, I can guess it does not do any P/Invoke and is all managed code. Someone asked about this in the comments of Scott Gu's post, and while he did not specifically answer it, he did mention in comments that they are looking at enabling use of SQL CE in Silverlight which I think lends more evidence to it being fully managed code. I could be wrong though, possibly there are changes in code access security in .NET 4 that makes it possible to use without installing in the GAC.</p>
<p>
	The idea of being able to use SQL CE as a client side database in Silverlight is pretty compelling to me, so I'll be keeping my eyes open for future announcements. I had once done a proof of concept where <a href="http://www.mojoportal.com/silverlight-google-gears-awesome-at-least-in-firefox.aspx">I managed&nbsp;to use Sqlite as a client side database in Silverlight via Google Gears</a>, but it had a few issues because database calls had to be marshalled back and forth from javascript to Silverlight via the <a href="http://msdn.microsoft.com/en-us/library/cc645076%28VS.95%29.aspx">Html Bridge</a>. It would be much nicer to be able to use SQL CE directly from Silverlight. That would enable some really interesting client side scenarios.</p>
<p>
	(*) Actually I think SQL CE 4 could probably be used under 3.5 .NET but not under Medium Trust, it requires .NET 4 to work under Medium Trust, and the mojoPortal package for SQL CE is only going to be available for .NET 4.</p>
<h3>
	Consolidation of Data Layers</h3>
<p>
	At the moment we have a separate data layer for SqlAzure, SQL Server, and SQL CE. Back in March when I first began work on SQL CE support in mojoPortal, I blogged&nbsp;<a href="http://www.mojoportal.com/anyone-still-using-sql-2000-with-mojoportal.aspx">Anyone Still Using SQL 2000</a>?, to guage how many people still use it. Going forward we are dropping support for SQL 2000 and then the MS SQL data layer will be modified to make it compatible with SqlAzure, and then we will eliminate the separate data layer for SqlAzure. I "think" the previous release of mojoPortal 2.3.4.5 was still compatible with SQL 2000, but the latest code in the repository is not compatible because we have changed from ntext to nvarchar(max) which is not supported in SQL 2000. So the next release of mojoPortal for sure will not be compatible with SQL 2000. Going forward we will support SQL 2005/2008/SqlAzure and SQL CE.</p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/sql-server-compact-40-and-mojoportal.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/sql-server-compact-40-and-mojoportal.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=SQL+Server+Compact+4.0+and+mojoPortal+https%3a%2f%2fwww.mojoportal.com%2fsql-server-compact-40-and-mojoportal.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fsql-server-compact-40-and-mojoportal.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/sql-server-compact-40-and-mojoportal.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/sql-server-compact-40-and-mojoportal.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/sql-server-compact-40-and-mojoportal.aspx</guid>
      <pubDate>Mon, 12 Jul 2010 11:15:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.4.5 Released</title>
      <description><![CDATA[<p>
	I'm happy to announce the release of <a href="http://www.mojoportal.com/">mojoPortal</a> 2.3.4.5, available now from our <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>
<h3>
	What's New</h3>
<ul>
	<li>
		New Bing Map Feature</li>
	<li>
		New alternate site search features allow you to use Bing or Google for site search in addition to or instead of the internal Lucene search engine</li>
	<li>
		Upgraded to the latest version of AjaxControlToolkit</li>
	<li>
		Upgraded from TinyMCE .3.6 to 3.3.7</li>
	<li>
		Upgraded from CKeditor&nbsp;3.3 to 3.3.1</li>
	<li>
		Added a required checkbox if a registration agreement is used</li>
	<li>
		Updated Italian resources from Diego Mora</li>
	<li>
		Fixed a bug introduced in version 2.3.4.4 where if you were using excerpts in the blog, the read more link was malformed</li>
	<li>
		Fixed a bug introduced in version&nbsp;2.3.4.4 where the FeedManager&nbsp;page size setting was ignored</li>
	<li>
		Fixed some more places where we had not implemented the new TimeZone system and the old hard coded offsets were still being used</li>
	<li>
		Fixed a bug where the google 404 enhancement gives a script error in IE, it is now disabled in IE</li>
	<li>
		Fixed a bug in the pgsql data layer for the blog that caused an error on viewing blog categories</li>
	<li>
		Other minor enhancements and fixes for things reported or requested in the forums since the last release</li>
</ul>
<p>
	<img alt="Bing Map Screen shot" src="https://www.mojoportal.com/Data/Sites/1/media/bingmap.jpg" style="width: 524px; height: 382px; " /></p>
<p>
	There were also a few additions to CSS in included skins that you will need to add to custom skins, <a href="http://www.mojoportal.com/Forums/Thread.aspx?pageid=5&amp;mid=34&amp;ItemID=4&amp;thread=5160">see this sticky thread for details</a>.</p>
<h3>
	Upgrades for Add On Products</h3>
<p>
	Because of the upgrade to the latest version of AjaxControlToolkit, there are also corresponding compatibility updates for <a href="http://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a> and <a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a> because they must use the same version of AjaxControlToolkit as mojoPortal. Existing customers can download the updates from their purchase history. We have officially changed our upgrade policy, originally the policy was free upgrades for 1 year after purchasing our add on products, but now our policy is free upgrades for the life of the product and this is retro active to all existing customers. If you've never purchased our add on products now is a good time to consider adding them to your site, <a href="http://www.mojoportal.com/store.aspx">visit the store</a> to learn more about our add on products for mojoPortal</p>
<h3>
	Online User Group Meeting</h3>
<p>
	Don't forget to sign up for our free <a href="http://www.yamisee.com/official-mojoportal-online-user-group.aspx">online user group meeting</a> coming up this Wednesday June 23, 2010 8 PM Eastern Daylight Time on <a href="http://www.yamisee.com/">Yamisee</a>.</p>
<p>
	<a href="http://www.yamisee.com/official-mojoportal-online-user-group.aspx"><img alt="mojoportal user group ad" src="https://www.mojoportal.com/Data/mojocommon/234_60_mojoUserGroup.jpg" style="width: 234px; height: 60px; " /></a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-2345-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2345-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.4.5+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2345-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2345-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2345-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2345-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2345-released.aspx</guid>
      <pubDate>Fri, 18 Jun 2010 15:46:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.4.4 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com/">mojoPortal</a> 2.3.4.4, available now on our <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>

<h3>What's New?</h3>

<ul>
	<li>This is the first release where we have separate release packages for .NET 3.5 and .NET 4.0.</li>
	<li>New Facebook like button available in the Blog and in the HTML feature. This makes it easy for people to "Like" pages on your site on Facebook.</li>
	<li>Upgrade from TinyMCE 3.2.7 to 3.3.6</li>
	<li>Upgrade from CKeditor 3.2.1 to 3.3</li>
	<li>Upgrade to the latest version of NeatUpload</li>
	<li>We removed 7 skins from the main release packages to reduce the file size of the main packages and made them available in a separate download extra-skins.zip. Don't worry there are still a lot of skins included in the main packages.</li>
	<li>Various bug fixes and enhancements for things reported or requested in <a href="http://www.mojoportal.com/forums.aspx">the forums</a>.</li>
</ul>

<p>There are also corresponding releases of <a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a> and <a href="http://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a>. Users who have purchased these add-on products should upgrade them at the same time or right after upgrading mojoPortal.</p>

<h3>Form Wizard Pro 0.0.1.7</h3>

<ul>
	<li>compatibility updates for mojoPortal 2.3.4.4</li>
	<li>includes a&nbsp;build&nbsp;for both .NET 3.5 and .NET 4.0</li>
	<li>fixed bug where an incorrect redirect would happen after importing a form definition if the site was running in a virtual directory instead of a root site</li>
	<li>added option to use regular expression validation of date questions</li>
	<li>added a setting for a custom CSS class so forms can be styled differently</li>
</ul>

<h3>Event Calendar Pro 0.0.2.8</h3>

<ul>
	<li>compatibility update for mojoPortal 2.3.4.4</li>
	<li>includes a&nbsp;build&nbsp;for .NET 3.5 and .NET 4.0</li>
</ul>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-2344-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2344-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.4.4+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2344-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2344-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2344-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2344-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2344-released.aspx</guid>
      <pubDate>Thu, 03 Jun 2010 18:49:00 GMT</pubDate>
    </item>
    <item>
      <title>Event Calendar Pro 0.0.2.7 Released</title>
      <description><![CDATA[<p>
	I'm happy to announce the release of <a href="http://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro 0.0.2.7</a>. This is a free upgrade for existing customers, though you should first upgrade to mojoPortal 2.3.4.3. It "probably" works with mojoPortal 2.3.3.9 or higher but has only been tested with mojoPortal 2.3.4.3. Customers who already purchased Event Calendar Pro can download the new version by signing into the site and then click the "My Account" link at the top of the page, and then click the Order History tab.</p>
<h3>
	Whats New?</h3>
<ul>
	<li>
		Better support for time zones with automatic adjustment for Daylight Savings when creating future events.</li>
	<li>
		It is now possible to accept will pay later ticket orders without configuring any ecommerce provider.</li>
	<li>
		There is a new setting to allow ticket purchases/registration without having to register or sign into the site.</li>
	<li>
		There is a new recurrence option for Bi-weekly (every 14 days) events.</li>
	<li>
		When making recurring events that require registration, it is now possible to use the same begin date for ticket sales/registration for all recurrences.</li>
	<li>
		Fixed a bug in the RSS feed where the urls for events were not correct if the site was hosted in a virtual directory sub folder.</li>
</ul>
<p>
	<strong>Important</strong>: Since we removed the previous time zone offset setting and added a new Time Zone setting, after upgrading you should immediately go to the settings for any existing instances of the Event Calendar and set the time zone.</p>
<p>
	<a href="http://www.mojoportal.com/event-calendar-pro-product.aspx"><img alt="Event Calendar Pro Screen shot" src="https://www.mojoportal.com/Data/Sites/1/productscreenshots/eventcalpro-monthview-small2.png" style="width: 432px; height: 247px; " /></a></p>
<p>
	Â </p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/event-calendar-pro-0027-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/event-calendar-pro-0027-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Event+Calendar+Pro+0.0.2.7+Released+https%3a%2f%2fwww.mojoportal.com%2fevent-calendar-pro-0027-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fevent-calendar-pro-0027-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/event-calendar-pro-0027-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/event-calendar-pro-0027-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/event-calendar-pro-0027-released.aspx</guid>
      <pubDate>Fri, 07 May 2010 17:41:38 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.3.9 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.3.3.9, available now on our <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>

<h3>Feature Improvements</h3>

<ul>
	<li>Image Gallery now uses friendlier file names and you can optionally move existing Galleries below the /Data/Sites/[SiteID]/media folder to make it easy to browse gallery images from the editor. Just add this setting to your user.config file:&nbsp;&lt;add key="ImageGalleryUseMediaFolder" value="true" /&gt;</li>
	<li>People often don't notice that the forums are integrated into site search, so we added a search box in the forums that redirects to site search and filters for forum content.</li>
	<li>Added a search feature in the Url Manager to make it easier to find a URL when you have lots of them.</li>
	<li>Upgraded FCKeditor from 2.6.5 to 2.6.6</li>
	<li>Updated config setting to use new jQuery 1.4.2</li>
	<li>Updated Russian resources files from Alexander aka SkySandy</li>
	<li>Updated Portuguese resources from Leonard Pedrini</li>
</ul>

<h3>Bug Fixes</h3>

<ul>
	<li>Fixed a bug where re-sorting root pages in a multi-site installation caused root level pages in all sites to be re-sorted and with lots of sites and pages, this could result in it becoming impossible to sort pages in some cases.</li>
	<li>Fixed a bug where if you tabbed out of the page name in page settings or out of the blog title when updating a blog post, a new URL was being suggested when the name or title did not change which could lead to unintended URL changes.</li>
	<li>Fixed sitemap so that it uses https URLs if the page requires SSL to avoid an extra redirect</li>
	<li>Fixed bug in Image Gallery where portrait images were not creating correctly sized thumbnails or web images.</li>
	<li>Fixed issue where the content rating control did not work well in some cases</li>
</ul>

<p>Thanks to all community members for providing bug reports and feedback, especially Alexander aka SkySandy for his work in diagnosing bugs and suggesting fixes.</p>

<h3>Related Product Updates</h3>

<p>Just as we had to make changes in mojoPortal to support Artisteer templates, we also made corresponding changes in our add-on products <a href="http://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a> and <a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a>. If you are an existing customer who already purchased these products, you should upgrade them at the same time as you upgrade mojoPortal. You can download the latest version by signing into this site as the same user who made the purchase, then visit the "My Account" link at the top of the page and look under the Order History tab where you will see links for your products<img alt="" border="0" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=r7gi5IMNhJ4&amp;bids=173675.10000033&amp;type=4&amp;subid=0" width="1" /></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>

<p><a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-2339-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2339-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.3.9+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2339-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2339-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2339-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2339-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2339-released.aspx</guid>
      <pubDate>Mon, 22 Feb 2010 17:49:00 GMT</pubDate>
    </item>
    <item>
      <title>Form Wizard Pro 0.0.1.5 Released</title>
      <description><![CDATA[<p>
	I&#39;m happy to announce the first major upgrade for my <a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro product</a>.&nbsp;</p>
<h3>
	New Features:</h3>
<ul>
	<li>
		Support for multi page forms aka surveys</li>
	<li>
		You can import and export complete form definitions</li>
	<li>
		You can import and export individual questions, so if you make a state list dropdown you don&#39;t have to type it again, just export it and then you can import it in a different form to re-use it.</li>
	<li>
		Support for additional instruction blocks arranged by drag and drop among the questions</li>
	<li>
		Support for regular expression validation</li>
	<li>
		and more</li>
</ul>
<p>
	This release is a free upgrade for existing customers who bought Form Wizard Pro previously and <a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">starts at $99</a> for new customers.&nbsp;</p>
<p>
	<strong>Note:</strong> This new release requires mojoPortal 2.3.3.6 which was just released a few days ago.</p>
<p>
	See how easy it is to create custom forms and surveys using mojoPortal and Form Wizard Pro</p>
<p>
	<object height="385" width="640"><param name="movie" value="http://www.youtube.com/v/9Hu36brAs58&amp;hl=en_US&amp;fs=1&amp;hd=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed allowfullscreen="true" allowscriptaccess="always" height="385" src="http://www.youtube.com/v/9Hu36brAs58&amp;hl=en_US&amp;fs=1&amp;hd=1" type="application/x-shockwave-flash" width="640"></embed></object></p>
<p>
	<object height="385" width="640"><param name="movie" value="http://www.youtube.com/v/Oh9w2HGBdSw&amp;hl=en_US&amp;fs=1&amp;hd=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed allowfullscreen="true" allowscriptaccess="always" height="385" src="http://www.youtube.com/v/Oh9w2HGBdSw&amp;hl=en_US&amp;fs=1&amp;hd=1" type="application/x-shockwave-flash" width="640"></embed></object></p>
<p>
	&nbsp;</p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p>
<br /><a href='https://www.mojoportal.com/form-wizard-pro-0015-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/form-wizard-pro-0015-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Form+Wizard+Pro+0.0.1.5+Released+https%3a%2f%2fwww.mojoportal.com%2fform-wizard-pro-0015-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fform-wizard-pro-0015-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/form-wizard-pro-0015-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/form-wizard-pro-0015-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/form-wizard-pro-0015-released.aspx</guid>
      <pubDate>Sat, 06 Feb 2010 17:51:13 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.3.2 Released</title>
      <description><![CDATA[<p>
	I&#39;m happy to announce the release of <a href="http://www.mojoportal.com/">mojoPortal</a> 2.3.3.2, available now on our <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>
<h3>
	New Features</h3>
<h4>
	Custom Meta Data</h4>
<p>
	We have a new custom meta data system allowing you to add custom meta data to your pages in addition to the standard keywords and description. Specifically the system was <a href="http://www.mojoportal.com/custom-meta-data.aspx">designed to support the use of Dublin Core Meta Data</a>, but it can be used for any html meta data.</p>
<p>
	<img alt="Dublin Core Meta Data" height="390" src="https://www.mojoportal.com/Data/Sites/1/media/metadatacompleted.gif" width="550" /></p>
<p>
	The new meta data system has been integrated into CMS pages, Blog Posts as well as Web Store Products and Offers.</p>
<h4>
	Page Comments</h4>
<p>
	While it still remains a to do item on our Road Map to implement an internal comment system that can be attached to pages and content features, in the mean time we have added support to allow you to attach <a href="http://intensedebate.com/">IntenseDebate</a> or <a href="http://disqus.com/overview/">Disqus</a> comments to the bottom of any CMS page. The Blog of course already has the option to use it&#39;s own internal comment system or one of these services. Actually I recommend IntenseDebate because of bugs I encountered with Disqus. I have reported the issues and even identified the line of code in their javascript where the problems occur so hopefully they will fix it. There are new settings in Site Settings &gt; API Keys to enable these services and a setting in Page Settings to enable it on a page.</p>
<h4>
	Google Translate Integration</h4>
<p>
	You can now <a href="http://www.mojoportal.com/using-google-translate-in-your-mojoportal-site.aspx">easily add Google Translate widget to a page or to every page in your site</a>. As you can see I&#39;ve added it to all pages in this site. Not sure if I will always keep it there but we shall see what the user feedback on it is and whether people find it helpful or not.</p>
<h4>
	A New IFrame Feature</h4>
<p>
	It is already easy to add iframes to the Html content feature using the source view of the editor, but for less html saavy users having a feature to make it easy may be helpful. Eric Stoffers, a community member sent me on he had put together for his users and I made one based on his example but according to my own coding preferences.</p>
<h4>
	Contact Form Improvement</h4>
<p>
	Added an enhancement to the contact form so it can be configured to give the user a choice of who receives the email notification, so you can have different departments or user receive the submission depending on the user choice. See <a href="http://www.mojoportal.com/using-the-contact-form.aspx">Using The Contact Form</a> for more details.</p>
<h4>
	Forum Improvement</h4>
<p>
	Made it a little easier for users to notice the email notification subscriptions in the forums to encourage users to subscribe and participate in the forums. Users in edit roles will also see a link allowing them to review who is subscribed and unsubscribe users if needed. There is also a new setting if you want all users to be able to see the number of subscribers to the forums (but not the link to review them obviously).</p>
<h4>
	Shared Files Improvement</h4>
<p>
	Added a description to shared files, it is not currently surfaced in the UI except for the editing UI where descriptions can be edited. The main benefit of the description field is that it is indexed into the search engine. Previously you could only find search results based on the title of the file as we do not have an easy way to index Word Documents or PDF files. Now you can paste plain text of the content from these documents into the description in order to index the content of the documents and improve search matching.</p>
<h4>
	Major CSS Re-organization</h4>
<p>
	Back in <a href="http://www.mojoportal.com/mojoportal-2317-released.aspx">version 2.3.1.7</a>, based on community feedback we combined CSS from separate files where we previously had things separated too granularly in files like stylelayout.css, styleimages.css, styleborders.css, styletext.css. These were all combined into style.css for included skins. The problem is we used a CSSTidy script to do the combining and it produced a correct result without breaking any styles but it did not organize the CSS selectors into any groupings that make sense to people, they were just scattered kind of randomly on the style.css file. The result was that it did not have the intended result of making it easier to find what you are looking for. For this release I went through the included skins 1 by 1 and manually moved the CSS selectors around into logical groupings for layout, headings, form styling so that it really is easy to find what you are looking for. This was a very tedious manual task, I spent nearly 40 hours on this working as fast but as carefully as I could. In the end I was very glad to be finished but I feel it was a very important task to make the included skins more approachable as a starting point for customization.</p>
<p>
	I also went through the features and made more consistent use of styles on grids and tables. In many places we were using the YUI table javascript just for styling tables but this did not lend itself well to styling them according the skin design, it just made a very neutral looking table. I found some <a href="http://weblogs.asp.net/kevinbrammer/archive/2008/05/31/asp-net-gridview-themes.aspx">nice free GridView themes</a> and put them in a common location under /Data/style and modified them a little according to my needs. I then chose the one that looked the best for each included skin and added it to the style.config file for combining. Those of you with custom skins or upgrading should add one of them to your style.config as well. Note we hve several to choose from and may add more later.</p>
<p>
	&lt;file cssvpath=&quot;/Data/style/gridview/WhiteChromeGridView.css&quot; imagebasevpath=&quot;/Data/style/gridview/&quot;&gt;none&lt;/file&gt;<br />
	<br />
	&lt;!--<br />
	&lt;file cssvpath=&quot;/Data/style/gridview/ChromeBlackGridView.css&quot; imagebasevpath=&quot;/Data/style/gridview/&quot;&gt;none&lt;/file&gt;<br />
	&lt;file cssvpath=&quot;/Data/style/gridview/ChromeGridView.css&quot; imagebasevpath=&quot;/Data/style/gridview/&quot;&gt;none&lt;/file&gt;<br />
	&lt;file cssvpath=&quot;/Data/style/gridview/GlassBlackGridView.css&quot; imagebasevpath=&quot;/Data/style/gridview/&quot;&gt;none&lt;/file&gt;<br />
	&lt;file cssvpath=&quot;/Data/style/gridview/SoftGreyGridView.css&quot; imagebasevpath=&quot;/Data/style/gridview/&quot;&gt;none&lt;/file&gt;<br />
	&lt;file cssvpath=&quot;/Data/style/gridview/WhiteChromeGridView.css&quot; imagebasevpath=&quot;/Data/style/gridview/&quot;&gt;none&lt;/file&gt;<br />
	&lt;file cssvpath=&quot;/Data/style/gridview/YahooGridView.css&quot; imagebasevpath=&quot;/Data/style/gridview/&quot;&gt;none&lt;/file&gt;<br />
	--&gt;</p>
<h4>
	Other Miscellaneous Improvements</h4>
<p>
	Because editing Html for email newsletters has such different requirements than normal site content, I added a new site setting so you can specify a different editor preference for the newsletter than for site content. I prefer TinyMCE for Newsletter editing because it has a little better preview feature, but I&#39;m growing more fond of CKeditor for editing site content.</p>
<p>
	Upgraded to CKeditor 3.0.2 and managed to get our <a href="http://www.mojoportal.com/creating-content-templates.aspx">Content Template System</a> and <a href="http://www.mojoportal.com/creating-content-style-templates.aspx">Content Style System</a> integrated and working. I am still noticing a few little issues here and there with CKeditor but I think it has a lot of promise and look forward to it improving over time.</p>
<p>
	&nbsp;</p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;">Follow us on twitter</a> or&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;">become a fan on Facebook</a></p>
<p>
	<a href="http://twitter.com/joeaudette" style="color: #6297bc;"><img alt="follow us on twitter" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" style="border: 0px initial initial;" width="60" /></a> <a href="http://www.facebook.com/pages/mojoPortal/146363180114" style="color: #6297bc;"><img alt="become a fan on facebook" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" style="border: 0px initial initial;" width="60" /></a></p><br /><a href='https://www.mojoportal.com/mojoportal-2332-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2332-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.3.2+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2332-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2332-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2332-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2332-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2332-released.aspx</guid>
      <pubDate>Mon, 21 Dec 2009 16:38:04 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.2.9 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.3.2.9, available now on our download page.</p>
<h3>Newsletter Improvements</h3>
<p>The primary focus of this release is improvements to our newsletter. &nbsp;We have had a lot of consistent feedback from the community asking for Newsletter improvements and we were long overdue to complete this. The improvements made are as follows:</p>
<ul>
<li>Users can subscribe to Newsletters without registering on the site</li>
<li>A Newsletter Sign Up feature has been implemented so that you can put it on any page(s) you like and configure it with various settings to control what is displayed. Since you can have as many newsletters as you like, the sign up can be configured to show a list where users can choose which newsletters they would like to receive, or you can not show the list and it just subscribes to the default newsletter, which is the first one in the list. If the user is not authenticated then a confirmation email is sent to confirm ownership of the email address.</li>
<li>Each newsletter can be configured whether to opt in by default when a user registers on the site.</li>
<li>Each newsletter can be configured whether to allow viewing previous editions as a web page. If your newsletter has compelling content, browsing previous newsletters may encourage more subscriptions.</li>
<li>A progress bar so you can monitor progress as the newsletter is sent to the list.</li>
</ul>
<p><img src="https://www.mojoportal.com/Data/Sites/1/media/newsletterprogress.gif" alt="newsletter progress bar" width="599" height="157" /></p>
<h3>Editor Updates</h3>
<p>Upgrade to TinyMCE 3.2.7<br />Upgrade to FCKeditor 2.6.5<br />Upgrade to CKeditor 3.0.1</p>
<p>Added more options to our TinyMCE configuration file, including setting for configuring the default language for the spelling checker. &nbsp;Added a new toolbar for the Newsletter editor since it has different needs than web page content. Fixed an issue where TinyMCE would remove iframes entered in html view.</p>
<h3>SEO Improvements</h3>
<p>Added an option in page settings for overriding the canonical url. This is mainly for use on your home page. Since it is the default page of the site it is visible using the url http://yoursiteroot/, http://yoursiteroot/Default.aspx, and http://yoursiteroot/home.aspx, by default it would make the canonical url use the generated friendly url for the page, in this example it would use http:/yoursiteroot/home.aspx, but you may prefer to have http://yoursiteroot/ a the canonical url so this override setting allows you to do that.</p>
<p>Added a separate setting in page settings for including a page in the search engine site map. Previously we used the same setting for the search engine site map as for the main user site map. For example you could create a page and then point it to http://www.gogle.com and it would be listed in the menu and site map the same as any other page, however, for the search engine site map, google webmaster tools would find this as an error in your site map. So we added a separate setting so you can easily exclude pages from the search engine site map if they are just pointers to external pages.</p>
<h3>Updated Translations</h3>
<p>Updated Italian resource files form Diego Mora</p>
<p>Updated Persian resource files from Asad Samarian</p>
<p>New, French-Canadian resources thanks to Benoit Houle</p>
<h3>Miscellaneous</h3>
<p>Added a new setting under Site Settings &gt; Permissions for "Users that can create root level pages".</p>
<p>Made it possible to disable the default database authentication if you want to use only Windows Live and/or OpenID</p>
<p>Added a config setting to exclude specific admin email addresses from site registration notifications and work flow notifications.</p>
<p>Other miscellaneous tweaks and bug fixes for things reported in the forums since the last release.</p>
<p><a href="http://twitter.com/joeaudette">Follow us on twitter</a> or <a href="http://www.facebook.com/pages/mojoPortal/146363180114">become a fan on Facebook</a></p>
<p><a href="http://twitter.com/joeaudette"><img src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/twitter.png" alt="follow us on twitter" width="60" height="60" /></a>&nbsp;<a href="http://www.facebook.com/pages/mojoPortal/146363180114"><img src="https://www.mojoportal.com/Data/Sites/1/media/newsletterfiles/facebook.png" alt="become a fan on facebook" width="60" height="60" /></a></p><br /><a href='https://www.mojoportal.com/mojoportal-2329-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2329-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.2.9+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2329-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2329-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2329-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2329-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2329-released.aspx</guid>
      <pubDate>Wed, 11 Nov 2009 13:03:29 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.1.9 Released</title>
      <description><![CDATA[<p>
	I'm happy to announce the release of <a href="http://www.mojoportal.com/">mojoPortal</a> 2.3.1.9, available now on our <a href="https://www.mojoportal.com/download">download page</a>.</p>
<h3>
	Whats' New</h3>
<h4>
	Easy content animation/slide shows</h4>
<p>
	Our Html Content feature now has content animation built in. You can enable it in the settings of an Html Content instance and it will create a slide show based on the content using cool transitions that you can also configure in the settings. The animation uses the <a href="http://malsup.com/jquery/cycle/">jQuery Cycle Plugin</a>. It can rotate images paragraphs or any html content. People often ask how to rotate images in their custom skins, so I've also added image rotation in the andreasvicklund-02-alt2 skin to give an example how to do this.</p>
<h4>
	Integrated Image Cropping</h4>
<p>
	We now have easy to use image cropping built into the image browser/uploader in our editors. We also have image cropping integrated into the user uploaded avatar system so users can upload a larger image then crop it to create their avatar. We used the jQuery&nbsp;<a href="http://deepliquid.com/content/Jcrop.html">jCrop plugin</a> to implement the user interface for cropping.</p>
<p>
	<img alt="screen shot of image cropper" height="743" src="https://www.mojoportal.com/Data/Sites/1/media/imagecropper.jpg" width="680" /></p>
<h4>
	Integrated Twitter Widgets</h4>
<p>
	We now have built in widgets that can be used to show your tweets or twitter search results.</p>
<p>
	<img alt="screen shot of twitter search widget" height="416" src="https://www.mojoportal.com/Data/Sites/1/media/twittersearch.gif" width="266" /></p>
<h4>
	New Configuration file for TinyMCE</h4>
<p>
	Due to community requests to have more control over which plugins and toolbar items are displayed, I've implemented an xml config file that gives you control over these items. The file mojoTinyMCE.config located in the root is used by default. To customize it you should copy and rename this file then change the setting in Web.config to point to your custom file.</p>
<h4>
	Bulk Image Upload in the Image Gallery</h4>
<p>
	We added bulk upload to the Folder Gallery in the last release and users have been asking for the same thing in the other Image Gallery so we have added it there as well.</p>
<h4>
	Usability Improvements</h4>
<p>
	Also due to community feedback and my own observation from support questions, the use of the gear icon for feature instance settings was changed to use a text link by default. Those who prefer the icons can add this to their user.config file to override the new default.<br />
	&lt;add key="UseTextLinksForFeatureSettings" value="false" /&gt;<br />
	I wanted to make the same default change to use text links also for the main administration links but I found that forcing it globally could affect the layout of existing custom skins, so I kept the default to use the icons but added an option that can be specified on the StyleSheetCombiner control in the layout.master file of a skin to specify whether to use icons or text links:<br />
	&lt;portal:StyleSheetCombiner id="StyleSheetCombiner" runat="server" UseIconsForAdminLinks="false" /&gt;<br />
	The default setting is to use icons, but for most of the included skins I changed it to use text links and updated the skin layout so that the text links could render without affecting the layout. Note that if you are upgrading and want to use the latest versions of the skins you will need to copy them from /Data/skins to /Data/Sites/1/skins after upgrading because we only update the skins in the library not in individual sites.</p>
<h4>
	Miscellaneous</h4>
<p>
	Updated Italian resources thanks to Diego Mora</p>
<p>
	Updated Spanish resources thanks to Matias Molleja</p>
<p>
	Various bug fixes for things reported in the forums since the last release.</p>
<p>
	<img alt="vote for mojoPortal in the 2009 CMS Awards" height="60" src="https://www.mojoportal.com/Data/Sites/1/banners/award2009-vote-mojo.gif" width="368" /></p>
<br /><a href='https://www.mojoportal.com/mojoportal-2319-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2319-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.1.9+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2319-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2319-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2319-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2319-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2319-released.aspx</guid>
      <pubDate>Sun, 27 Sep 2009 13:22:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.1.7 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.3.1.7, available now on our <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>

<h3>More Editor Improvements</h3>

<p>The File Browser/Uploader that we implemented previously in <a href="http://tinymce.moxiecode.com/">TinyMCE</a> is now also working in <a href="http://ckeditor.com/blog/FCKeditor_2.6.4_released">FCKeditor</a> and <a href="http://ckeditor.com/">CKeditor</a> so that users have a common browse and upload experience in each of these editors. So we now have equivalent functionality in TinyMCE and FCKeditor but in CKeditor we do not yet have integration with our content template system or content style system.</p>

<h3>New User Avatar System</h3>

<p>We've had a lot of requests for an avatar system that allowed users to upload their own avatar. There is a new setting for Avatar System in Site Settings where you can choose User Upload or Gravatar. If user upload is enabled then an upload button will appear on the user profile page allowing them to upload an image. The image will be resized according settings in the Web.config file for AvatarMaxHeight and AvatarMaxWidth.</p>

<h3>Image Gallery Improvements</h3>

<p>We now have support for the <a href="http://www.codeplex.com/SlideShow2">Vertigo Slideshow</a> which uses Silverlight to create a really nice slide show of images in the gallery. You can enable it from settings in the gallery. Since the Vertigo Slideshow can also consume images from your <a href="http://www.flickr.com/">Flickr</a> account, we also added a new Flickr Gallery &nbsp;Feature which also uses the Vertigo Slideshow.</p>

<p><img alt="silverlight slide show screen shot" height="513" src="https://www.mojoportal.com/Data/Sites/1/media/silverlightslideshow.jpg" width="653" /></p>

<h3>Blog Improvements</h3>

<p>We've added support for using <a href="http://intensedebate.com/">IntenseDebate</a> or <a href="http://disqus.com/comments/">Disqus</a> for the comment system in the blog. For the moment I recommend IntenseDebate because there are some issues I encountered with Disqus. Specifically, I could not get it to work correctly n IE 8 though it works reasonably well in Firefox and Chrome. But even when using Firefox or Chrome it does not work correctly if you try to post a comment as an anonymous guest. The integration steps are trivial so I don't think I've done it wrong but believe the problem can be fixed on their end. I've let them know about it and hope they can resolve it. Give it a try if you like but be aware about these issues since at the time of this writing they are not resolved. I'm now using IntenseDebate in this blog. I implemented it such that if you have existing posts with comments in the internal comment system those posts will continue to use the internal comments but new posts will use the current setting.</p>

<p>Its now also possible to post future posts from Windows Live Writer. Previously it was ignoring the publish date passed in from Live Writer.</p>

<p>Its also now possible to require users to sign in to view the full blog post when using excerpts in the main blog page.</p>

<h3>Re-Organized Css In Included Skins and a New Skin</h3>

<p>Based on community feedback I've re-organised the css for included skins to make it easier to find what you are looking for. Previously we had things separated a little too cleverly with colors in one css, borders in another and text related settings in another. This made the css a little less approachable and less intuitive. I've combined those files into one style.css file and renamed some other css files so they sort together in the file system and are easier to find. You can of course organize the css files in a custom skin any way you like by listing which file to include in the style.config file. Ultimately they are all combined and minified into one request by our CSSHandler. The style config file for included skins now are including the following files:</p>

<p><br />
&lt;file csswebconfigkey="YUITabCss" imagebasewebconfigkey="YUISkinImagePath"&gt;none&lt;/file&gt;<br />
&lt;file cssvpath="/ClientScript/oomph/oomph.css" imagebasevpath="/ClientScript/oomph/"&gt;none&lt;/file&gt;<br />
&lt;file cssvpath="/Data/style/cluetip/jquery.cluetip.css" imagebasevpath="/Data/style/cluetip/"&gt;none&lt;/file&gt;<br />
&lt;file&gt;style.css&lt;/file&gt;<br />
&lt;file&gt;stylemenu.css&lt;/file&gt;<br />
&lt;file&gt;styletreeview.css&lt;/file&gt;<br />
&lt;file&gt;styleblog.css&lt;/file&gt;<br />
&lt;file&gt;styleforum.css&lt;/file&gt;<br />
&lt;file&gt;stylefeedmanager.css&lt;/file&gt;<br />
&lt;file&gt;styleformwizard.css&lt;/file&gt;<br />
&lt;file&gt;stylewebstore.css&lt;/file&gt;<br />
&lt;file&gt;styleaspcalendar.css&lt;/file&gt;<br />
&lt;file&gt;styledatacalendar.css&lt;/file&gt;</p>

<p>so we still have some separation but the main style.css has most of the common css.</p>

<p>We also have a nice new skin with a cool menu style thanks to Joe Davis of <a href="http://i7media.net">i7MEDIA</a></p>

<h3>What Else?</h3>

<p>Updated Polish Translation - thanks to Przemyslaw Luniewski.</p>

<p>Updated Italian Translation - thanks to Diego Mora.</p>

<p>A number of bug fixes for things reported in the forums since the last release.</p>

<p><a href="http://www.packtpub.com/award"><img alt="nominate mojoportal for the 2009 cms awards" height="60" src="https://www.mojoportal.com/Data/Sites/1/media/cms-award09-nominate-mojo.gif" width="368" /></a></p>
<br /><a href='https://www.mojoportal.com/mojoportal-2317-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2317-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.1.7+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2317-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2317-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2317-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2317-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2317-released.aspx</guid>
      <pubDate>Thu, 10 Sep 2009 15:59:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.1.6 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.3.1.6 available now on our <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>
<h3>More Improvements in our TinyMCE editor integration</h3>
<p>This release comes fast on the heals of our 2.3.1.5 release and it is primarily focused on polishing up our <a href="http://tinymce.moxiecode.com/">Tiny MCE</a> editor integration. Thanks to all who provided great feedback in the forums, especially Eric Stoffers who helped make our file browse layout a little prettier and more informative. Here is a screen shot of our file browser/uploader:</p>
<p><img src="https://www.mojoportal.com/Data/Sites/1/media/tinymcefilebrowser.jpg" alt="screen shot of our TinyMCE file browser" width="650" height="573" /></p>
<p>The most significant improvement is that we now have automatic image size adjustment for the web. Its optional, users may uncheck the box and no resizing will occur for cases where you are uploading images that you have already optimized for the web. The default resizing options come from the Web.config but users are able to override them by setting the Max Width or Max Height according to their own preferences. We've all seen our users upload huge images right from their 10 mega pixel cameras then just set a width and height on the img tag to make it display the right size. But the result of that is a page that loads very slow because it has the mega large images and disk space is consumed rapidly as well. So, our new solution is designed to make it easy to do it right but not take away control from more savvy users.</p>
<p>Also requested was an option to configure the skin used by TinyMCE. We now have a setting in Web.config that you can override in user.config to set the skin for TinyMCE.&nbsp;</p>
<p>&lt;!--- valid options for the TinyMCE skin are: default, o2k7default, o2k7silver, o2k7black --&gt;</p>
<p>&lt;add key="TinyMCE:Skin" value="default" /&gt;</p>
<p>To my eyes the default skin looks the best and cleanest of them.</p>
<p>I purposely remove some toolbar items from the editors because they are not suitable for a skinnable content management system. Items for selecting fnt size, font face, font color and background color, are all things that put hard coded styles into your content and then the content is not subject to skinning. In order to be able to completely change the look of your site by changing skins you need to avoid hard coding any kind of style into the content itself and always use CSS. Our style template system allows you to create items in the style drop down of the editor that corresponds to css classes in your skin. So you can make some pre-defined styles to help your users rather than let them hard code styles. Now I'm not trying to force this on anyone, I'm just trying to make it easy to do the right thing and a little more difficult to do the wrong thing. If you really want those hard coded style toolbar items in your editor you can enable it in Web.config/user.config with by changing this setting to true:</p>
<p>&lt;add key="TinyMCE:IncludeHardCodedStyleTools" value="false" /&gt;</p>
<p>but, my opinion is that one day you will regret it when you decide to re-design your site with a new skin and none of this hard coded content looks right in the new design.</p>
<p>After switching to TinyMCE here on mojoportal.com I had noticed that the forums were starting to get juinked up due to things users paste into the editor. In FCKeditor I was already forcing paste as plain text in the forums but now I have implemented the same thing in TinyMCE. This helps avoid page validation problems when users copy and paste from word or html pages. You can get invalid markup and missing closing tags that can mess up the page. This was very common when pasting errors or code fragments.</p>
<p>Also there were two bugs reported about our TinyMCE integration and these have been fixed. The first was that although our file browser was always using urls relative to the root of the site, TinyMCE was changing them to relative to the current page and this could make links incorrect if you viewed the content on a different page like in the content manager. It also could prevent us from correctly restoring the absolute url on outbound feeds for images or links that were posted in the blog. This was merely a configuration issue, it is the default behavior of TinyMCE, but it was easily disabled once I realized it was doing that. The second bug was that when running mojoPortal as an application in a sub directory instead of as a root site, the file browser was incorrectly resolving the root for uploads at the root of the main site rather than the root of the mojoportal application. This has also been fixed.</p>
<p>This release also includes a minor enhancement in our content manager. It now shows the use count of content instances making it easy to spot content that is not published anywhere.</p>
<p>There was also a bug fixed in the search index where page titles and content instance titles were not causing a match in search results unless the content itself also had the search term.</p>
<h3>A Note About Our Versioning Scheme</h3>
<p>In <a href="http://cmsreport.com/">a post on CMSREport.com</a>, Bryan Ruby commented that</p>
<blockquote>
<p>Although you wouldn't expect an application with the version number of 2.3.1.5 to contain anything but bug fixes, in the world of mojoPortal almost every release contains new features for the CMS.</p>
</blockquote>
<p>I thank Bryan both for the coverage and the comment. I suppose my use of versions is a bit different than many other projects so its worth mentioning what my versioning strategy is based on and clear up any confusion about what if anything is implied in the version number.</p>
<p>For most projects I think versions come down to major.minor.build.revision and often features are targeted for a new major version number. We use the same kind of format like 2.3.1.6 but our versioning is simply incremental and is based on our upgrade system. Any time we need to run a new script for any of the db platforms we increment the version. We only use a single digit between each . so we never have versions like 2.3.90.20, its just simple incrementing. So as soon as I need to run a new script I will create the next script file named 2.3.1.7.config (different script with the same name for each db platform). I may not need to run a script against every db platform but I keep the versions the same and create an empty script file if needed since we have different sets of upgrade scripts for each db platform. I then change a version variable in the code also to version 2.3.1.7 and this is how mojoPortal determines that it needs to run upgrade scripts, because each script increments the schema version stored in the db itself, so if the code is a higher version than what the current schema shows it knows it needs to run upgrade scripts to get the schema to the same version as the code. This scheme makes it easier to sort the script files correctly to run them in the right order. Sometimes the version will increment several times between releases but it does just increment linearly and really has no special significance for implying some magnitude of release or major milestone. This corresponds to our incremental short release cycle. We target a few things for the next release, make a development sprint, and as soon as we feel its stable we make a new release.</p>
<p>Probably the biggest problem we have with our short release cycles is release fatigue. People do get tired of upgrading but its really up to them how frequently they upgrade. If the new release has new features or fixes that you're dying to have then you have the choice to upgrade. I think that is better than making you wait a long time for features that are ready or bugs that are already fixed. I don't sleep well at night if I know people are still downloading a version with a bug that I have already fixed. I mean some bugs are trivial but if its something that I think is causing a nuisance to people on a daily basis I like to get the fix out as quickly as possible.</p>
<p>Some of you may find it better to wait a bit after a new release and keep your eyes on the forums for bug reports, but then if everyone does that it just delays the feedback cycle so its helpful to me if many of you do try each new release. I'm always <a href="http://en.wikipedia.org/wiki/Eating_one%27s_own_dog_food">dogfooding</a> the latest release and new builds in between releases on this site to try and find any bugs before making a new release. I don't have a team of Quality Assurance testers other than the testing that comes from the community. Those of you working with the latest releases and especially those of you working with the code from svn trunk and making your own builds and providing feedback in between releases are a huge help and I thank you for that.</p><br /><a href='https://www.mojoportal.com/mojoportal-2316-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2316-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.1.6+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2316-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2316-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2316-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2316-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2316-released.aspx</guid>
      <pubDate>Sat, 29 Aug 2009 15:37:45 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.1.5 Released</title>
      <description><![CDATA[<p>
	I'm happy to announce the release of <a href="..//">mojoPortal</a> 2.3.1.5, available now on our <a href="../download">download page</a>.</p>
<h3>
	Whats New?</h3>
<h4>
	Tiny MCE Editor Rises To The Top</h4>
<p>
	For a long time now the <a href="http://www.fckeditor.net/">FCKeditor</a> has been the best editor available out of the box in mojoPortal. It was the only one with the ability to browse and upload images and files, it was the only one with integration for our <a href="../creating-content-templates.aspx">Content Template System</a> and <a href="../creating-content-style-templates.aspx">Content Style System</a>, and it was the only one with a spelling checker. Not anymore! I had not upgraded the <a href="http://tinymce.moxiecode.com/">Tiny MCE editor</a> in a long time, I had tried to once and it broke and I was busy so I reverted to the working version. But recently we've been having some issues with FCKeditor so I decided to give the Tiny MCE upgrade another try. At did not work as before but I pursued it and debugged it and found how to make it work. Then I began looking closer at the documentation and found it was really good, it even described the basic steps to build your own image browser/uploader and integrate it. I also learned how to integrate our content templates and styles. Implementing the file browse and upload was both challenging and fun. I used the <a href="http://abeautifulsite.net/notebook/58">jQuery File Tree</a>, which I then extended to be able to monitor folder selection in addition to file selection, and to pre&nbsp;expand to the current folder after a full postback/redirect which we do when uploading files or creating folders. Then I found that <a href="http://www.kelvinluck.com/2009/01/using-spell-checker-for-tinymce-with-net-on-iis/">they actually provide .NET code in their library</a> to implement spell checking against the google spelling checker services. The code was very easy to integrate and it works so much nicer than the spelling checker in FCKeditor. You basically click the spell checker button and it puts squiggly lines under suspect words, you right click it and it suggests a correction. So nice! I'm notorious for typos in my blog posts, this is going to help!</p>
<h4>
	CKeditor 3.0</h4>
<p>
	So where does this leave us with <a href="http://www.fckeditor.net/">FCKeditor</a> you might ask. Well, the makers of FCKeditor are moving forward with a revamped version named <a href="http://ckeditor.com/">CKeditor</a> and they just made the first release of CKeditor 3.0. It's also already integrated with mojoPortal and I've enabled it in the new release for you to check it out. It does not have image browse or upload and it is no integrated with our content templates or styles, but it does work. The biggest problem is there is not yet enough good documentation to figure out how to do those things, but it looks very promising and I'm sure the documentation will get there at some point.</p>
<h4>
	New Permissions Tab In Site Settings</h4>
<p>
	In polishing up the image browse and upload experience I decided to move some settings that were previously in Web.config into Site Settings to make it easier to manage. Specifically we now have a Roles That Can Browse and Upload setting. Users in the selected roles can browse and upload starting at the /Data/Sites/[SiteID]/media folder. This is appropriate for content authors. Admins and Content Admins can browse from the /Data/Sites/[SiteID]/ folder as before. There is also a separate Roles That Can Upload and Browse to a User Specific Location. This is appropriate for users who you don't want to be able to browse your media but can upload and broswe images and other files. For example you can allow forum users to upload files if they are in these roles. The allowed file extensions are controlled from Web.config. You will find these settings in a new tab named "Permissions" under the Site Settings &gt; Security Tab.</p>
<h4>
	NeatUpload 1.3.18 Upgrade</h4>
<p>
	I also upgraded to the latest version of NeatUpload. But even better, I read the documentation again and noticed something I should have noticed a long time ago. Dean Brettle, the author of NeatUpload has built in an easy to use Multi-File upload, so I have integrated it into the File Manager, Shared Files, Image Gallery, and Folder Gallery features to allow you to batch upload files. If you have Flash 8 or higher you can even ctrl-select files all at once. Pretty sweet! NeatUpload is really the best upload component for ASP.NET and its free.</p>
<h4>
	Changed The DOCTYPE to Html 5 for included skins</h4>
<p>
	I was tempted to do this last release but after more experiments with Html 5 I decided to do it this release. If you don't agree its easy enough to change it back to Html 1.0 Transitional in the layout.master file of your skin. This only applies to the skins I ship, if you are upgrading and have an existing skin using Xhtml it will continue to be the same. Be aware that I'm aware that there are a few places where pages do not validate as Html 5 including the login and registration pages. If you have a problem with that then please just keep using Xhtml doctype. Html 5 is still just a draft so I'm not going to get too worried about a few places where it doesn't validate, the spec may change before it becomes a standard. It validates on most pages. The things that don't validate are iframes with frameborder and scrolling attributes. Making them validate would make the page ugly and it has zero impact on any user if the page doesn't validate there, it works in all known browsers.</p>
<h4>
	Minor Blog Enhancement</h4>
<p>
	Added a new setting for the default allowed comment days in a blog. Previously if comments were enabled it just defaulted to 90 days and if you wanted something different you had to edit the setting on each post. Now you can set your own default.</p>
<h4>
	Removed Site Office</h4>
<p>
	Site Office was a prototype UI and plug-in system that was disabled by default and included no real working features that plugged in just a few stubs to demonstrate the plug-in system. It was designed for more of an application style UI rather than public web site UI. I originally built it using ExtJs but they changed licenses and I could no longer get upgrades. I've done some preliminary work to re-implement it using YUI but its not finished. I decided to remove it because the ExtJs javascript was about 9MB on disk so this reduced the size of our download packages. Developers who still want to use it can still get it from svn and deploy it themselves.</p>
<h4>
	New and Updated Translations</h4>
<p>
	New Hebrew translation thanks to Daniel Szasz</p>
<p>
	New Polish translation thanks to Przemyslaw Luiewski</p>
<p>
	Updated German translation thanks to Jan Aengenvoort</p>
<h4>
	Bug Fixes</h4>
<p>
	There were a number of bug fixes, primarily issues with some features when used in folder based child sites. A few issues that only affected pgsql. Thanks to all who reported these issues!</p>
<br /><a href='https://www.mojoportal.com/mojoportal-2315-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2315-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.1.5+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2315-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2315-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2315-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2315-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2315-released.aspx</guid>
      <pubDate>Mon, 24 Aug 2009 19:14:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.1.3 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.3.1.3, available now on our <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>
<h3>What's New</h3>
<h4>Content Workflow!</h4>
<p>Huge thanks go out to Kevin Needham! He did a great job implementing <a href="http://www.mojoportal.com/using-the-content-workflow-system.aspx">Content Workflow for mojoPortal</a>. Currently its only supported in the Html Content feature but it is extensible so we can use it in other features going forward. Kevin did a great job figuring out where things needed to go, it showed he really understands the mojoPortal code. People have been asking for a better way to have a content approval process for a long time and it certainly wasn't trivial coming up with a plan and implementing it so it fit in well with the existing architecture. He proposed a strategy that made sense up front before he began and then was able to implement it without much involvement from me. He setup a private demo site so I could review the functionality for usability before he submitted the code. The code he submitted was very high quality, I implemented the alternate database support and did a little re-factoring here and there but he pretty much nailed it. I hope he will continue to be involved with the project as it was a pleasure working with him to get his work integrated into the core of mojoPortal.</p>
<h4>Web Store Improvements</h4>
<p>As<a href="http://www.mojoportal.com/next-release-of-mojoportal-webstore-will-empower-musicians.aspx"> mentioned in my previous blog post</a>, the Web Store now supports teaser files for download products. The main use case I focused on was the ability to sell mp3 files with a teaser file and media player so musicians can use mojoPortal to sell their own mp3 files on their own web site using PayPal or any of the other supported payment options. It should be useful for other use cases as well, like selling pdf e-books and maybe having 1 free chapter or table of contents as a teaser file. It could also support a trial version for selling software downloads.</p>
<p>Additionally I implemented a back end order entry system so an admin can create orders. This is useful for situations where the customer does not want to purchase directly on the web site. Recently a school system inquired about buying my products with a PO number and having me invoice them, so I whipped this feature up so that I could create the order after receiving payment by check.</p>
<h4>Miscellaneous</h4>
<p>We've also added a setting to the blog for the default comments allowed days. Previously it always defaulted to 90 days and you would have to change it on each new post if that was not the desired setting, but now you can set a default preference.</p>
<p>Updated Italian Resources thanks to Diego Mora<br />
Updated French Resources thanks to Thomas NicolaÃ¯dÃ¨s<br />
Updated Japanese Resources thanks to Suzuki Teko</p>
<p>Its now possible to use Html 5 doctype easily if you choose to as<a href="http://www.mojoportal.com/issues-and-strategies-for-moving-to-html-5.aspx"> mentioned in this previous post</a>.</p>
<p>Various minor bug fixes as reported in the forums since the last release.</p>
<p>Note: You should add this to the style.config file in your skins:</p>
<p>&lt;file cssvpath="/Data/style/cluetip/jquery.cluetip.css" imagebasevpath="/Data/style/cluetip/"&gt;none&lt;/file&gt;</p>
<p>to support a new jQuery tooltip we use in the content workflow.</p>
<p>&#160;</p><br /><a href='https://www.mojoportal.com/mojoportal-2313-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2313-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.1.3+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2313-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2313-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2313-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2313-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2313-released.aspx</guid>
      <pubDate>Mon, 03 Aug 2009 18:39:06 GMT</pubDate>
    </item>
    <item>
      <title>Issues and Strategies for Moving to Html 5</title>
      <description><![CDATA[<h3>Primer on Html 5</h3>
<p>There has been a lot of buzz in the blogosphere about HTML 5 lately, from <a href="http://news.cnet.com/8301-17939_109-10250196-2.html">google endorsing it as the future</a> to the <a href="http://news.cnet.com/8301-17939_109-10281477-2.html">W3c dropping efforts on XHTML 2 to focus on HTML 5</a>. The consensus seems to be that HTML 5 is the future and we should <a href="http://www.smashingmagazine.com/2009/07/16/html5-and-the-future-of-the-web/">start planning on using it</a> in the future and <a href="http://www.sitepoint.com/article/html-5-snapshot-2009/">can even use it now</a>. It should be noted however that <a href="http://dev.w3.org/html5/spec/Overview.html">HTML 5</a> is not a standard yet, but only a draft and is subject to change before it becomes a standard and <a href="http://molly.com/html5/html5-0709.html">current browser support is a mixed bag</a>.</p>
<p>Some useful links:</p>
<p><a href="http://carsonified.com/blog/dev/html-5-dev/23-essential-html-5-resources/">23 Essential Resources for Html 5</a></p>
<p><a href="http://www.smashingmagazine.com/2009/07/29/misunderstanding-markup-xhtml-2-comic-strip/">Misunderstanding Markup</a> - comic that explains HTML 5 vs XHTML.</p>
<h3>Real World Issues for a Content Management Systems To Switch to Html 5</h3>
<p>So from reading the above linked articles and others it seems like we can easily change to the HTML 5 DocType and things will be pretty much compatible at least as long as we don't use any of the new HTML 5 elements that might not be supported in all browsers yet. In mojoPortal the doctype is declared in the layout.master file of a skin so it can be a personal choice wheether to change to the Html 5 doctype now or not. Currently the doctype in our skins is XHTML 1.0 Transitional, so to switch to HTML 5 we would just change this:</p>
<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml" &gt;</p>
<p>to this:</p>
<p>&lt;!DOCTYPE html&gt;<br />
&lt;html&gt;</p>
<p>In fact I've done that here on <a href="http://www.mojoportal.com">mojoPortal.com</a>, though I'm running a newer build than the current release (<a href="http://en.wikipedia.org/wiki/Eating_one%27s_own_dog_food">dogfooding</a> for the coming release), so you should probably wait for the next release to do this if you want to. One of the things I've added is an option on our validator link to configure it for HTML 5 instead of XHTML like this in layout.master:</p>
<p>&lt;portal:XhtmlValidatorLink id="lnkw3cValidator" runat="server" UseImage="false" Html5="true" /&gt;</p>
<p>This Html5=true merely changes the label and/or image on the validator link to HTML 5. I've also added a property&#160;IncludeHtml5Script to our IEStyleIncludes control</p>
<p>&lt;portal:IEStyleIncludes id="IEStyleIncludes1"  runat="server" IncludeHtml5Script="true" /&gt;</p>
<p>if set to true <a href="http://www.sitepoint.com/article/html-5-snapshot-2009/">we inject the javscript as mentioned in this article</a>&#160;inside IE browser comments to make it possible to use some of the new HTML 5 elements in IE 8 (though I'm not actually using them yet to avoid compatibility issues you could use them in custom features). So it renders in the page like this:</p>
<p>&lt;!--[if IE]&gt;<br />
&lt;script type="text/javascript"&gt;<br />
document.createElement("header");<br />
document.createElement("footer");<br />
document.createElement("nav");<br />
document.createElement("article");<br />
document.createElement("section");<br />
&lt;/script&gt;<br />
&lt;![endif]--&gt;</p>
<p>&#160;</p>
<h3>Ok But Aren't There Any Gotchas?</h3>
<p>I got kind of excited about changing the doctype to Html 5 just in preparation for the future even though <strike>we can't use the new Html 5 elements yet without breaking some browser compatibility, especially for IE 6</strike>. I'm sick of caring about IE 6 myself and admittedly some of our skins are a little funky in IE 6 today and I don't care enough to fix them though some of them work pretty well too. Its <a href="http://www.google.com/search?hl=en&amp;q=say+no+to+ie6&amp;aq=0&amp;oq=say+no+to+ie&amp;aqi=g1">long overdue for users of IE 6 to upgrade</a>. But its still in wide enough use that many web site owners do care and you can make skins that work well in IE 6 using mojoPortal its just more work tweaking the IESpecific.css file and testing in IE 6. Anyway after changing to HTML 5 doctype on mojoportal.com and testing in IE 6 and not seeing any major problems I thought I would change the included skins to HTML 5 for the next release. I did this yesterday but reverted it today. I had been testing using the <a href="http://validator.w3.org/">wc3 validator</a> using the direct input method, viewing the source of the page and pasting it into the validator and was happy because it was reporting it as valid HTML 5. However after testing some pages on mojoportal.com using the validator link or using the url input method I got different results. It seems there is a bug in the w3c validator where if you use direct input it passes things that should not pass but when you use the url it finds problems on the same page it validated as direct input.</p>
<p>Specifically what I ran into was border is not a valid attribute on img and frameborder and scrolling are not valid attributes on iframe, however the presence of these attributes does not seem to be detected correctly with the direct input validation but it is detected using url validation. I reported this bug to the w3c public mailing list tis morning. Fixing the border on img was fairly easy so I did that, you can easily set the border on img using css so its really not needed to use border="0" to remove a border for example. However the iframe issue is a lot more of a problem. If you remove frameborder="0" from an iframe there is no way to remove the 3d border that is rendered in current browsers using CSS. I don't think there is a working CSS alternative to scrolling="no" either. So for the moment I choose to just live with it that a few pages on mojoportal.com won't validate but for the skins included in mojoPortal I decided it was pre-mature for me to change the doctype to HTML 5 and changed it back and leave it up to users if they want to do that.&#160;</p>
<p>As previously mentioned, HTML 5 is currently just a draft so I don't want to get too concerned with validation against it while its still draft. Who knows since current browsers don't <strike>work well</strike>&#160;look right with iframes that don't use frameborder=0 and scrolling=no, maybe they will change their minds about dropping these attributes or give us an HTML 5 Transitional to validate against that will allow these for backward compatibility.</p>
<h3>So where does that leave us?</h3>
<p>Well I think we have to proceed cautiously and very slowly toward HTML 5 but we are very limited in what we can do in mojoPortal without breaking compatibility especially for public facing features. If I were to start using new elements and attributes of HTML 5 it will break validation for those who choose to continue using the XHTML 1.0 Transitional doctype in their skins and it would probably break functionaility and visual layout in some browsers. Potentially we could move forward in the admin pages and other non public facing pages but the benefits would be minimal. The real value of HTML 5 will be when we can use it for public facing pages, the improved semantics available using the new elements like header, footer, section, nav, article, aside etc will be of most value in public facing pages, but we really can't move there yet because of the mixed browser support. Once HTML 5 graduates to a Standard instead of a draft and browser support for the new elements is more widespread it will be tempting but we will still be faced with that fact that many people use old browsers, perhaps even we will be waiting for the end of life of the current crop of browsers anxiously like we are waiting for IE 6 to go away today. The benefits of changing to HTML 5 doctype today are minimal and there is the minor downside of losing validation on some pages where we are using iframes and maybe other issues that I have not bumped into yet. HTML 5 does indeed look like the future but the future is not here yet unless you are willing to <strike>give up support for IE 6 and possibly even IE 7 as I'm not sure if the javascript trick for lighting up the new elements in IE works in IE 7 as it does in IE 8</strike>. (update it does work) I for one don't see the merit in building browser specific applications, the huge benefit of the web has been the ability to write apps that work in all browsers though of course there have been bumps along the way like supporting Netscape 4 was back in the day and like supporting IE 6 is today, it takes some extra work. I don't want to try and move forward too fast and find myself battling to get things working in all browsers. I'm tempted to change my doctype on this site back to Xhtml 1.0 Transitional since I'm not really getting any benefit from changing to HTML 5 doctype though I have not had any major problems other than some validation issues everything seems to work the same and nothing is visually different in any of the browsers I tested.</p>
<p>
<p><b>UPDATE 2009-08-03</b></p>
<p>I actually tried this javascript create element technique with IE 6 and it seems to work! So even though the article says IE 8, it seems it should also work for IE 6 and 7. So maybe it is possible to switch to Html 5 and use the new elements. So the remaining issues would be that there will be some things that don't validate like framborder=0 and scrolling=no that we would still need to use. And the problem still remains that if I were to start using the new html5 elements that would mean that all users of mojoPortal would need to change to the Html 5 doctype because the new html 5 elements are not valid for Xhtml.</p>
</p>
<p>&#160;</p><br /><a href='https://www.mojoportal.com/issues-and-strategies-for-moving-to-html-5.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/issues-and-strategies-for-moving-to-html-5.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Issues+and+Strategies+for+Moving+to+Html+5+https%3a%2f%2fwww.mojoportal.com%2fissues-and-strategies-for-moving-to-html-5.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fissues-and-strategies-for-moving-to-html-5.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/issues-and-strategies-for-moving-to-html-5.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/issues-and-strategies-for-moving-to-html-5.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/issues-and-strategies-for-moving-to-html-5.aspx</guid>
      <pubDate>Sun, 02 Aug 2009 12:56:11 GMT</pubDate>
    </item>
    <item>
      <title>Next Release of mojoPortal WebStore Will Empower Musicians</title>
      <description><![CDATA[<p>Just a quick note to share some cool improvements I've been working on in the WebStore feature for the last couple of days. As a musician I've often thought I should make an mp3 store to make it easy for musicians to sell mp3 files on their own sites. For a while I figured I would implement this as a separate feature and possibly even make it a for sale add on feature so I could make a little money on it. But recently I thought why not just enhance the main web store to support this scenario since we already suport download products all that was really needed was the ability to have a teaser file and a media player to allow previewing a clip of an mp3 like in the iTunes store and other media stores. So I implemented the additional logic to have a teaser file and I also integrated the super simple <a href="http://mediaplayer.yahoo.com/">Yahoo Media player</a>. You can see it in action now on <a href="http://storedemo.mojoportal.com/store.aspx">storedemo.mojoportal.com</a>.</p>
<p><img alt="screensot of mp3 store with play buttons" width="315" height="478" src="https://www.mojoportal.com/Data/Sites/1/mojo-mp3store.gif" /></p>
<p>So now you will be able to upload teaser clips for mp3 products and automatically have play buttons for them. You can easily make the clips using the free <a href="http://mp3splt.sourceforge.net/mp3splt_page/home.php">mp3splt</a>, thats how I made them for the demo.</p>
<p>The teaser file implementation may also be useful for other scenarios like selling PDF files, you could have a free chapter or fragment of the full content to help encourage purchase of the full file.</p>
<p>Look for this in the next release of mojoPortal.</p><br /><a href='https://www.mojoportal.com/next-release-of-mojoportal-webstore-will-empower-musicians.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/next-release-of-mojoportal-webstore-will-empower-musicians.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Next+Release+of+mojoPortal+WebStore+Will+Empow...+https%3a%2f%2fwww.mojoportal.com%2fnext-release-of-mojoportal-webstore-will-empower-musicians.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fnext-release-of-mojoportal-webstore-will-empower-musicians.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/next-release-of-mojoportal-webstore-will-empower-musicians.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/next-release-of-mojoportal-webstore-will-empower-musicians.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/next-release-of-mojoportal-webstore-will-empower-musicians.aspx</guid>
      <pubDate>Sun, 05 Jul 2009 13:10:56 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.0.8 Released</title>
      <description><![CDATA[<p>I'm very happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.3.0.8, available now on our <a href="http://www.mojoportal.com/download.aspx">download</a> page.</p>
<h3>What's New?</h3>
<h4>Search Engine Improvements</h4>
<p>The mojoPortal <a href="http://www.mojoportal.com/site-search-overview.aspx">search engine</a> now supports filtering results by feature and results highlighting, as well as support for <a href="http://www.opensearch.org/Home">Open Search</a> with automatic discovery. A number of changes were made to what we store in the search index, so to take advantage of the new features requires changing some config settings and <a href="http://www.mojoportal.com/rebuilding-the-search-index.aspx">rebuilding the search index</a> which may or may not be trivial depending on the size and activity level of your site. For backward compatibility we have kept the default settings such that the exisiting search index should continue to work as it has, but to take advantage of the new features you should put this in your user.config for a new installation before doing a search or for an existing site you can add these settings to user.config and then rebuild the search index.</p>
<p>&lt;add key="DisableSearchFeatureFilters" value="false" /&gt;<br />
&lt;add key="SearchUseBackwardCompatibilityMode" value="false" /&gt;<br />
&lt;add key="EnableSearchResultsHighlighting" value="true" /&gt;</p>
<h4>SEO (Search Engine Optimization) Improvements</h4>
<p>I did a lot of analysis using the new free <a href="http://www.iis.net/extensions/SEOToolkit">IIS SEO Toolki</a>t and made a number of small changes based on the results. Its now possible for you to <a href="http://www.mojoportal.com/seo-page-title-format.aspx">control the default title format for pages</a> and to <a href="http://www.mojoportal.com/extensionless-urls.aspx">use extensionless urls in IIS 7</a>.</p>
<h4>Content Template Editor</h4>
<p>Now you can <a href="http://www.mojoportal.com/creating-content-templates.aspx">create and save custom content templates</a> and they will show up in the FCKeditor.</p>
<h4>Content Style Editor</h4>
<p>Its now possible for you to <a href="http://www.mojoportal.com/creating-content-style-templates.aspx">create and save content style templates</a> that appear in the Style dropdown list in FCKeditor.</p>
<h4>Skin Improvements</h4>
<p>We include about 30 good looking skins in mojoPortal, but a number of the skins were designed for 800x600 screen resolutions so even though they were good looking it seemed to me that some of them were not being used very much because they are too narrow. So I made most of the narrow skins wider. Also we needed good examples of suckerfish style menus. The mitchinson-earthy skin had something close but it did not work very well so I re-implemented it using the <a href="http://users.tpg.com.au/j_birch/plugins/superfish/">jQuery Superfish</a> menu and I made the mitchinson-earthy-alt1 which uses a vertical superfish menu. So now I think we have a lot of skins that be can useful as a starting point for customization. There is also a new Preview/Browse link in the Administration Menu &gt; Site Settings page to allow you to easily preview the available skins.</p>
<h4>Other Updates</h4>
<p>Upgraded to the newest version of NeatUpload and the newest version of the AjaxControlToolkit.</p>
<h4>Upgrade Notes</h4>
<p>Customers who have purchased Event Calendar Pro and/or Form Wizard Pro, will need to upgrade to new releases of those products which have corresponding changes partly due to the newer version of AjaxToolkit. You can download the latest version from your order history under the "My Account" link.</p>
<p>Be sure to read an understand the <a href="http://www.mojoportal.com/site-search-overview.aspx">changes to the search index</a> and consider rebuilding your search index. If you have a custom skin you will need to add a new css class that is used to highlight the search results, the included skins all have this new css class:</p>
<p>.searchterm { color:black; background-color:yellow; }</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p><br /><a href='https://www.mojoportal.com/mojoportal-2308-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2308-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.0.8+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2308-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2308-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2308-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2308-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2308-released.aspx</guid>
      <pubDate>Wed, 17 Jun 2009 14:42:23 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.0.4 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com/">mojoPortal</a> 2.3.0.4, available now on our <a href="http://www.mojoportal.com/download.aspx">download</a> page.</p>
<h3>Whats New?</h3>
<h4>RPX Instant Open ID Single Sign In Integration</h4>
<p>Now you can allow users to easily register and sign in to your site with no new passwords using their existing account from Google, Yahoo, AOL, Microsoft, &#160;Facebook, MySpace, Twitter and more. For complete details, see the <a href="http://www.mojoportal.com/using-rpx-instant-open-id-single-sign-on-service.aspx">RPX documentation here</a>.</p>
<p><img height="341" width="425" alt="screen shot of rpx sign in widget" src="https://www.mojoportal.com/Data/Sites/1/rpx-page1providers.png" /></p>
<p>We've had support built in to mojoPortal for Open ID for a long time but this is much more user friendly, the user doesn't have to know anything about Open ID to use it. We still have suppport for standard Open ID authentication for those who would rather use it as is. In fact we also upgraded to the newer <a href="http://code.google.com/p/dotnetopenid/">DotNetOpenAuth</a> from the older DotNetOpenId (same project but they changed the name of the dll), and now it can work in Medium Trust environments, where previously, you have to remove the DotNetOpenId dll for Medium Trust to work. Of course the new RPX service also works fine in Medium Trust.</p>
<h4>New Content Templates in the FCKeditor</h4>
<p>You can now <a href="http://www.mojoportal.com/using-ui-widgets-in-your-content.aspx">easily use a few UI widgets like the jQuery Accordion, jQuery Tabs, and YUI tabs right in the editor</a>. There is a new toolbar item in the editor for choosing content templates, and we have pre-defined a few templates for these widgets.</p>
<p><img height="234" width="292" alt="screen shot of jquery accordion" src="https://www.mojoportal.com/Data/Sites/1/jquery-accordion-clip.png" /></p>
<p><img height="127" width="255" alt="screen shot of jquery tabs" src="https://www.mojoportal.com/Data/Sites/1/jquery-tabs-clip.png" /></p>
<p>In the near future we will also add the ability for you to create and edit your own templates.</p>
<h4>TextArea Editor</h4>
<p>For anyone who would rather use a plain text area for editing content rather thanone of our WYSIWYG editors, we now have a TextArea editor, thanks to a sponsorship from&#160;Felix Schudel. Since the WYSIWYG is much more friendly for most people, the TextArea editor is disabled by default, but it can be easily enabled by un-commenting it in the mojoEditor.config file.</p>
<h4>WebStore Improvements</h4>
<p>It is now possible to checkout without registration or sign in, if the order has no download products. So now people can <a href="http://www.mojoportal.com/buy-joe-a-beer-product.aspx">buy me a beer</a> without registering on this site ;-). There are also improvements to the offer administration, we added a new product picker dialog, and there is a new product site map for submitting to google and other search engines located at /yoursiteroot/WebStore/ProductSiteMap.ashx.</p>
<h4>Blog Improvements</h4>
<p>There is now an option in the blog to format the category list as a tag cloud. To use it you just enable the setting in the feature instance settings and then clear your browser cache to get the new css for the tag cloud. Soon we will be implementing categories/tags as a core system feature so it can be re-used by any feature and then we will replace the existing blog categories with the new system. This new category/tag system will then be used to easily add categories to the WebStore, EventCalendar Pro, and possibly other features. Note that if you have a custom skin, you will need to add this css for the tag cloud:</p>
<p>.tag-cloud { list-style-type:none; margin: 15px 0px 3px -30px;}<br />
.tag-cloud li { display: inline; list-style-type:none;  }<br />
.tagcount { font-size: x-small;}<br />
.tag-cloud .weight1 { font-size: 90%; }<br />
.tag-cloud .weight2 { font-size: 110%; }<br />
.tag-cloud .weight3 { font-size: 120%; }<br />
.tag-cloud .weight4 { font-size: 130%; }<br />
.tag-cloud .weight5 { font-size: 140%; }<br />
.tag-cloud .weight6 { font-size: 150%; }<br />
.tag-cloud .weight7 { font-size: 160%; }<br />
.tag-cloud .weight8 { font-size: 180%; }<br />
.tag-cloud .weight9 { font-size: 200%; }<br />
.tag-cloud .weight10 { font-size: 210%; }</p>
<p>&#160;</p>
<p>There have also been a number of minor enhancements and of course bug fixes for things reported in the forums since the last release.</p>
<h3>Updated Releases For Event Calendar Pro and Form Wizard Pro</h3>
<p>New minor release updates are available for customers who have purchased these features.&#160; There were small changes made in these feature to correspond with changes in the core of mojoPortal. The Form Wizard also now uses the full editor toolbar for editing the form instructions and thank you message. Customers can download the updated versions from their purchase history and install them after upgrading to mojoPortal 2.3.0.4.</p>
<h3>&#160;Update 2009-05-22</h3>
<p>Just updated to version 2.3.0.4.b to fix an issue where the breadcrumbs wrapper div was rendering on pages even if breadcrumbs were not enabled and this extra div could affect layout in some skin designs.</p><br /><a href='https://www.mojoportal.com/mojoportal-2304-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2304-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.0.4+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2304-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2304-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2304-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2304-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2304-released.aspx</guid>
      <pubDate>Mon, 18 May 2009 18:48:05 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.3.0.1 Released</title>
      <description><![CDATA[<p>
	&nbsp;I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.3.0.1, available now on our <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>
<h3>
	What's New?</h3>
<h4>
	Content Versioning</h4>
<div>
	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 <a href="http://www.mojoportal.com/roadmap.aspx">Road Map</a> 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.</div>
<h4>
	Web Chat using Windows Live Messenger</h4>
<div>
	See <a href="http://www.mojoportal.com/web-chat-using-live-messenger.aspx">my previous post</a> 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.</div>
<h4>
	New PlugNPay Payment Gateway in WebStore thanks to Voir Hillaire</h4>
<h4>
	New Skin - dcarter-bluedesert, based on dcarter-ticktockpro but modified and contributed by Sami Isamil Hassan</h4>
<h4>
	Various minor enhancements based on feedback and fixes for bugs reported in the forums since the last release.</h4>
<h4>
	More progress moving away from ExtJs by implementing some .NET controls for YUI to replace the ones I previously built for ExtJs</h4>
<div>
	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.</div>
<div>
	&nbsp;</div>
<div>
	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.</div>
<h4>
	New Experimental CKEditor</h4>
<div>
	Some of you may have noticed that the <a href="http://www.fckeditor.net/">FCKeditor</a> project has shifted gears from the next upgrade of FCKeditor to their next generation version named <a href="http://ckeditor.com/">CKEditor</a>. 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.</div>
<div>
	&nbsp;</div>
<div>
	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.</div>
<br /><a href='https://www.mojoportal.com/mojoportal-2301-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2301-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.3.0.1+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2301-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2301-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2301-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2301-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2301-released.aspx</guid>
      <pubDate>Mon, 20 Apr 2009 19:36:00 GMT</pubDate>
    </item>
    <item>
      <title>Web Chat Using Live Messenger</title>
      <description><![CDATA[<p>Several people have asked about a chat feature for <a href="http://www.mojoportal.com">mojoPortal</a> in the past and I've had my eye on a few ways to implement chat but have mainly been too busy working on other things to try and tackle it because I viewed it as a complex feature to implement. But recently I found out about the <a href="http://messenger.mslivelabs.com/">Live Messenger Web Toolkit</a> and that seemed to lower the bar so that it was pretty mch low hanging fruit to implement chat. There are actually quite a few things developing in Microsoft Live Services that are very interesting. Much of it was announced at <a href="http://dev.live.com/blogs/devlive/archive/2009/03/23/482.aspx">Mix 09</a>, I still haven't watched all the videos but I plan to watch them soon and learn about tha various scenarios that can be implemented. But, so far I have implemented chat and it will be in the coming release of mojoPortal as a built in feature that can be enabled/disabled.</p>
<p>There will be a new "Live Messenger Chat" feature that you can put on a page, as a supplement to the contact form for example and your web visitors will be able to chat with you no matter whether they have a Live Messenger account or not. You will chat using your desktop Live Messenger and the web control will display your availability and if you are online it will allow web visitors to initiate a chat with you.</p>
<p>In addition to the new "Live Messenger Chat" feature that plugs into the content system, you can also enable your site users to have web chat controls on their profile page so that site users can initiate chat with one another. To receive chats a user will need the Live Messenger desktop software but chats can be initiated by web site visitors directly in the web page with no need for a Live account.</p>
<p>I invite you to try the chat here on mojoPortal.com to help iron out any kinks before the release (which I hope to make on Monday). To enable chat on your mojoPortal user profile, visit the "My Account" page using the link at the top (after you sign in), click the profile tab, then click the link that says "Acquire/Refresh a Live Messenger Permission Token" (ok its mispelled in the screen shot but I will fix that before the release)</p>
<p><img alt="aquire live messenger permission link screen shot" width="522" height="177" src="http://www.mojoportal.com/Data/Sites/1/wlm-acquirepermission.png" /></p>
<p>You'll note that te checkbox is disabled until you have the token. Once you have the token the checkbox becomes enabled and if you check it ans save, the chat will appear on your public profile page like this:</p>
<p><a href="http://www.mojoportal.com/ProfileView.aspx?userid=1"><img alt="live messenger web control screenshot" width="602" height="479" src="http://www.mojoportal.com/Data/Sites/1/wlm-screenshot.png" /></a></p>
<p>You can see it on my profile <a href="http://www.mojoportal.com/ProfileView.aspx?userid=1">here</a>, there are links to member profiles also on the <a href="http://www.mojoportal.com/MemberList.aspx">member list page</a> and in the forums.</p>
<p>Now I'm not really big on using chat myself because I'm very busy and generally don't like things popping up and interupting me, so don't expect me to be generally available for chat. I built this feature mainly for others (who have requested it) to use. I'm not going to be using it for support, the forums are much better for that because they are searchable. But it would be great if people could test this out and give some feedback in the forums if you find any problems or have suggestions for improvements. I know lots of you out there use chat all the time whereas I hardly ever use it, so your feedback is important. For me its just a really cool feature that I'll hardly ever use ;-) so I'm not the best judge of it.</p>
<p>&#160;</p><br /><a href='https://www.mojoportal.com/web-chat-using-live-messenger.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/web-chat-using-live-messenger.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Web+Chat+Using+Live+Messenger+https%3a%2f%2fwww.mojoportal.com%2fweb-chat-using-live-messenger.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fweb-chat-using-live-messenger.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/web-chat-using-live-messenger.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/web-chat-using-live-messenger.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/web-chat-using-live-messenger.aspx</guid>
      <pubDate>Fri, 17 Apr 2009 11:20:09 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.2.9.2 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.2.9.2 available now on our <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>
<h3>Whats New?</h3>
<h4>Easy Woopra Integration</h4>
<p>I mentioned <a href="http://www.woopra.com">Woopra</a> in this <a href="http://www.mojoportal.com/woopra-fantastic-real-time-web-site-tracking-and-analytics.aspx">previous post</a>, its an awesome web analytics and real time traffic monitoring tool. Now its easy to use Woopra with your mojoPortal site. Just sign up for woopra and install their software on your home or office computer. Once they approve your site, you enable the script in mojoPortal from the Site Settings page as shown in this screen shot:</p>
<p><img height="283" width="455" src="http://www.mojoportal.com/Data/Sites/1/mojo-woopra-setting.png" alt="screen shot of woopra setitng in mojoportal" /></p>
<p>If you are using a custom skin, then you also need to add the woopra control to the layout.master file in your skin, just before the closing &lt;/form&gt; tag like this:</p>
<p>&lt;portal:Woopra ID="woopra11" runat="server" /&gt;<br />
&lt;/form&gt;</p>
<p>All the included skins in mojoPortal already have this. There was a long waiting period when I first signed up for woopra but lately people have been telling me they are getting approved within a few days of signing up for woopra. Its agreat service, I highly recommend it.</p>
<h4>WebStore Improvements</h4>
<p>We've added the ability to set the quantity when adding items to the cart from the product detail page and we've made it possible to update quantities directly on the cart. So previously if you wanted to <a href="http://www.mojoportal.com/buy-joe-a-beer-product.aspx">buy me more than one beer</a>, you had to add the beers to the cart one at a time, but now its very easy to be generous :-).</p>
<p>Last release we moved reporting out of WebStore and created a common set of reporting tables in the core so that the same reporting system can be used across ecommerce features. Since then we've begun fleshing out more reports, there are a number of new reports this release and even more to come later.</p>
<h4>Miscellaneous</h4>
<p>Japanese resource files thanks to Suzuki Teku, this brings us p to 18 languages!</p>
<p>A new setting in Page Settings for "Inlcude In Site Map", this was requested recently by a community member, we already had a setting for "Include In Menu" but that setting also excluded the page from the site map, so this new setting allows creating pages that don't appear in the menu but do appear in the site map.</p>
<p><a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html">Canonical Urls</a> in the meta data, this is a new thing agreed upon by the big search engines so that if a page is available from more than one url the preferred url can be specified by a meta link with rel=canonical. This helps make sure the urls that is shown in search results is the correct one. In mojoPortal we haven't really had problems with this for content system pages because they generally only have one url, but in the past I would see some dupplicate warnings in google webmaster tools about my forum pages because the same page could be seen with query string paramters in different sequence and google would think they were duplicated pages when it was really the same page with just a variation in the sequence of parameters in the url. So the forums now specify the preferred url with the preferred sequence of parameters. We also add cononical urls to the main content pages but its really probably not much impact there since there hasn't been problems with duplicated pages with different urls.</p>
<p>One customer recently asked about being able to use separate read/write connection strings with MySql so they could use MySql replicatin as a scaling strategy. I don't know much about using this approach, it seems it could be problematic unless the replication is instantaneous. Nevertheless, I did the grunt work of going through all the MySql data classes and making it possible to use different connection strings for read and write operations. Bascially I made all the read methods get the read connection string and all the write methos use the write connection string. If you don't specify a write connection string in Web.config/user.config then it just uses the read connection string, so the logic is like this:</p>
<p>private static String GetReadConnectionString()<br />
{<br />
return ConfigurationManager.AppSettings["MySqlConnectionString"];</p>
<p>}</p>
<p>private static String GetWriteConnectionString()<br />
{<br />
if (ConfigurationManager.AppSettings["MySqlWriteConnectionString"] != null)<br />
{<br />
return ConfigurationManager.AppSettings["MySqlWriteConnectionString"];<br />
}</p>
<p>return ConfigurationManager.AppSettings["MySqlConnectionString"];<br />
}</p>
<p>So, if you want to use a different connection string for write operations just add a connection strng setting with the key&#160;MySqlWriteConnectionString. I'd be interested to hear back from anyone who does use this approach with MySql. I don't know if the same scaling strategy is commonly used for MS SQL, Postgre SQL or Firebird, but I could make the same changes for those data layers if people tell me it would be helpful.</p>
<h4>Event Calendar Pro 0.0.1.3 Released</h4>
<p>Coinciding with this new release of mojoPortal is a new release of <a href="http://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a>. It now uses the new commerce reporting system so ticket sales are reflected in commerce reports and user purchase history is consolidated in the My Account/User Profile page. Note also that previously there was a module setting for currency but this now uses the currency setting from Site Settings. Also fixed a bug on the event detail page where the correct currency was not always displayed. Existing customers can download the new version from their Order History under My Account. Because Event Calendar Pro depends on the new reporting system you must upgrade to mojoPortal 2.2.9.2 before upgrading to the new version of Event Calendar Pro.</p>
<h4>Form Wizard Pro 0.0.0.4 Released</h4>
<p>This is just a minor bug fix release of <a href="http://www.mojoportal.com/form-wizard-pro-product.aspx">Form Wizard Pro</a>. There was a bug in the data export where the submission date for the forms was not correct, all the rows were suing the submit date of the first row. This is now fixed.&#160;Existing customers can download the new version from their Order History under My Account.</p>
<h4>Upgrade Notes for mojoPortal</h4>
<p>If you are upgrading from mojoPortal 2.2.8.6, then you can skip uploading the /ClientScript folder as nothing in that folder has changed. Its a large folder so leaving it out can save a lot of upload time.</p>
<p>&#160;</p><br /><a href='https://www.mojoportal.com/mojoportal-2292-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2292-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.2.9.2+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2292-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2292-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2292-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2292-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2292-released.aspx</guid>
      <pubDate>Thu, 26 Feb 2009 12:58:31 GMT</pubDate>
    </item>
    <item>
      <title>Woopra - Fantastic Real Time Web Site Tracking and Analytics</title>
      <description><![CDATA[<p>A few days ago <a href="http://www.mojoportal.com">mojoportal.com</a> finally got accepted into the <a href="http://www.woopra.com/">woopra</a> beta program. If you haven't heard of woopra, you really should check it out. I've only been using it for a few days but I'm already addicted and I think anyone who has a web site that is important to them and particularly anyone with an e-commerce web site will find this tool to be awesome.</p>

<p>I'm using it in addition to google analytics. The big advantage it has over google analytics is the way they make it possible to see clearly how individual visitors are using your site in real time (or close enough to it). You can see a lot of information about each visitor, what country they are in, if they arrived at your site as the result of a search, you can see what they were searching on that led them to your site, you can see the sequence of pages the visitor has looked at. In short its just brilliant!</p>

<p>You add a little javascript to your site just like you do for google analytics, but you also install a desktop application (its a Java application) that gives you a rich user interface with a lot of different views. Its the live data that has me hooked.</p>

<p><a href="http://www.mojoportal.com/Data/Sites/1/WindowsLiveWriter/WoopraFantasticRealTimeWebSiteTrackingan_880C/woopra-users_2.gif"><img alt="woopra screen shot" border="0" height="528" src="http://www.mojoportal.com/Data/Sites/1/WindowsLiveWriter/WoopraFantasticRealTimeWebSiteTrackingan_880C/woopra-users_thumb.gif" style="border: 0px none ;" width="664" /></a></p>

<p>I've always been addicted to keeping tabs on how many visitors are on my site at any given moment. I used to frequently check my <a href="http://www.mojoportal.com/community.aspx">community page</a>, which gives a little chart showing how many people are online and who is logged into the site.</p>

<p><a href="http://www.mojoportal.com/Data/Sites/1/WindowsLiveWriter/WoopraFantasticRealTimeWebSiteTrackingan_880C/mojousersonline_2.png"><img alt="mojo users online screen shot" border="0" height="278" src="http://www.mojoportal.com/Data/Sites/1/WindowsLiveWriter/WoopraFantasticRealTimeWebSiteTrackingan_880C/mojousersonline_thumb.png" style="border: 0px none ;" width="317" /></a></p>

<p>Woopra takes it to a whole new level for me, now I not only know how many people are on the site but also what they are looking for, have looked at, how they arrived. I have a secondary machine with a separate monitor and I pretty much keep the woopra running all day on that screen while I work. It gives me the feeling as if I were running a brick and mortar store. I can see the people walk in and look around and get a good idea of what they are looking for or interested in. In fact if I wanted to, woopra has a built in web chat feature (see the "start a conversation" links next to each user in the screen shot), so if someone is looking at a product page I could prompt them and ask if they have any questions, very much like a real store where people offer help. All of this is giving me better insights about how users interact with my site.</p>

<p>If you have an important web site you really ought to sign up for woopra, it may take a while before they accept your site as they are scaling up gradually but the sooner you get on the list the better.</p>
<br /><a href='https://www.mojoportal.com/woopra-fantastic-real-time-web-site-tracking-and-analytics.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/woopra-fantastic-real-time-web-site-tracking-and-analytics.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Woopra+-+Fantastic+Real+Time+Web+Site+Tracking...+https%3a%2f%2fwww.mojoportal.com%2fwoopra-fantastic-real-time-web-site-tracking-and-analytics.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fwoopra-fantastic-real-time-web-site-tracking-and-analytics.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/woopra-fantastic-real-time-web-site-tracking-and-analytics.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/woopra-fantastic-real-time-web-site-tracking-and-analytics.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/woopra-fantastic-real-time-web-site-tracking-and-analytics.aspx</guid>
      <pubDate>Wed, 04 Feb 2009 13:40:00 GMT</pubDate>
    </item>
    <item>
      <title>Event Calendar Pro 0.0.1.0 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a> 0.0.1.0 a premium event publishing system for <a href="http://www.mojoportal.com/">mojoPortal</a>. This is a significant upgrade and is free to existing customers who have already purchased Event Calendar Pro. Just sign into the site and visit our <a href="http://www.mojoportal.com/store.aspx">Store</a>, click the "Order History" link to get to your order history and you will be able to download the new version using the same page where you originally downloaded. For new customers pricing starts at $99 for a single installation license. You can also try it on our demo site at <a href="http://demo.mojoportal.com">demo.mojoportal.com</a>. This release requires mojoPortal 2.2.8.3, so you should upgrade to the latest mojoPortal before installing or upgrading to the new version of Event Calendar Pro.</p>
<h4>Whats New?</h4>
<ul>
    <li>Ability to take registrations or sell tickets to a course or class. If you create a recurring event, for example a weekly course that runs every Tuesday for 6 weeks, you can specify that the ticket/registration includes the recurrences.</li>
    <li>If you have customers that pay by check or other means in person, you can enable a "Will Pay Later" button so users can register for the event but pay upon arrival. You can optionally limit the roles allowed to use this feature so for example you could create a role named "Trusted Customers" and add your trusted customers to that role and then limit use of the "Will Pay Later" button to members of that role.</li>
    <li>You can color code events differently on the Month View using our new color picker.</li>
    <li>You can customize the text on the ticket purchase/register link per event, so instead of the default "Register for this event", you could put "Register for this class" or whatever you like.</li>
    <li>There is a new setting to specify the default Country and State for ticket orders/registration to make it more convenient if most of your customers are local.</li>
    <li>Ability to specify the end date for recurrences.</li>
    <li>Location Alias in case you want the location label to be different than the location you use to get the google map to work.</li>
    <li>Meta keywords and description per event.</li>
    <li>Google Map settings are now per event rather than global.</li>
    <li>Addition of a Summary field so you can have a more brief description of the event on the List View and Ticket Purchase/Registration page.</li>
    <li>This version now supports all 5 databases that mojoPortal supports, including MS SQL, MySql, PostgreSql, Firebird Sql, and SQLite</li>
</ul>
<p><a href="http://www.mojoportal.com/Data/Sites/1/WindowsLiveWriter/EventCalendarPro0.0.1.0Released_B151/eventcalpro-monthview-med_2.png"><img height="371" width="644" border="0" src="http://www.mojoportal.com/Data/Sites/1/WindowsLiveWriter/EventCalendarPro0.0.1.0Released_B151/eventcalpro-monthview-med_thumb.png" alt="monthview screen shot" style="border: 0px none ;" /></a></p>
<p><a href="http://www.mojoportal.com/Data/Sites/1/WindowsLiveWriter/EventCalendarPro0.0.1.0Released_B151/eventcalpro-eventeditor-med_2.png"><img height="433" width="644" border="0" src="http://www.mojoportal.com/Data/Sites/1/WindowsLiveWriter/EventCalendarPro0.0.1.0Released_B151/eventcalpro-eventeditor-med_thumb.png" alt="event editor screen shot" style="border: 0px none ;" /></a></p>
<p><a href="http://www.mojoportal.com/Data/Sites/1/WindowsLiveWriter/EventCalendarPro0.0.1.0Released_B151/eventcalpro-edit-colors-med_2.png"><img height="291" width="644" border="0" src="http://www.mojoportal.com/Data/Sites/1/WindowsLiveWriter/EventCalendarPro0.0.1.0Released_B151/eventcalpro-edit-colors-med_thumb.png" alt="color picker screen shot" style="border: 0px none ;" /></a></p><br /><a href='https://www.mojoportal.com/event-calendar-pro-0010-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/event-calendar-pro-0010-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Event+Calendar+Pro+0.0.1.0+Released+https%3a%2f%2fwww.mojoportal.com%2fevent-calendar-pro-0010-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fevent-calendar-pro-0010-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/event-calendar-pro-0010-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/event-calendar-pro-0010-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/event-calendar-pro-0010-released.aspx</guid>
      <pubDate>Wed, 28 Jan 2009 16:36:56 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.2.8.3 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com/">mojoPortal</a> 2.2.8.3, available now on the <a href="http://www.mojoportal.com/download.aspx">download</a> page.</p>
<p>In addition to bug fixes for things reported in the <a href="http://www.mojoportal.com/forums.aspx">Forums</a> since the last release, highlights of this release are as follows:</p>
<ul>
    <li>Upgrade to FCKeditor 2.6.4 which includes a new spelling checker that works out of the box, a long wished for feature.</li>
    <li>A new set of translation files for Danish language thanks to Kurt Greve</li>
    <li>Blog improvements, an option whether to hide the URL input for comments and an option to require users to authenticate in order to post comments.</li>
    <li>New sorting levels for products and offers in WebStore to allow better control over sorting on the product list.</li>
    <li>A new CountryStateSetting control. I needed this for an improvement to <a href="http://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a> in order to specify a default country and state for ticket orders, but I built it into the core so it can be re-used in other features.</li>
</ul>
<p><a href="http://www.mojoportal.com/Data/Sites/1/WindowsLiveWriter/mojoPortal2.2.8.3Released_99F6/spellcheckerscreenshot_2.png"><img height="537" width="643" border="0" src="http://www.mojoportal.com/Data/Sites/1/WindowsLiveWriter/mojoPortal2.2.8.3Released_99F6/spellcheckerscreenshot_thumb.png" alt="spell checker screenshot" style="border: 0px none ;" /></a></p>
<p>Note that the spell checker uses a free ad supported web service. Its very useful but you probably would not want to use this if your web page contains top secret content. It can be disabled from a configuration file for that kind of scenario but I think most users will be glad to have this. It is also possible to purchase a paid account with no ads or a version that can run on your own server, though I'm not sure what the integration steps are for those scenarios.</p><br /><a href='https://www.mojoportal.com/mojoportal-2283-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2283-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.2.8.3+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2283-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2283-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2283-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2283-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2283-released.aspx</guid>
      <pubDate>Wed, 28 Jan 2009 14:57:09 GMT</pubDate>
    </item>
    <item>
      <title>New Color Picker Landed in svn</title>
      <description><![CDATA[<p>I've recently been working on some soon to be released enhancements to my <a href="http://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a> product. One of the requested features was the ability to set the colors for each event so they can be colored differently on the Month View. In order to implement this I needed a color picker, but rather than build the color picker into the Event Calendar Pro product, I decided to implement it in the core of <a href="http://www.mojoportal.com">mojoPortal</a> so it can be used in other features and so other developers can use it in their own features. I implemented it as a UserControl that implements ISettingControl, a simple interface that makes it possible to use the control in Module Settings or in custom user profiles. So for example if you wanted to have a Favorite Color Property on the user profile page you could add this to your profile.config file:</p>
<p>&lt;add	name="FavoriteColor"<br />
type=""<br />
iSettingControlSrc="~/Controls/ColorSetting.ascx"<br />
labelResourceKey="Favorite Color"<br />
defaultValue="#34983E"<br />
/&gt;</p>
<p>and the result looks like this:</p>
<p><img width="406" height="300" src="http://www.mojoportal.com/Data/Sites/1/colorpicker.png" alt="Color Picker Screen shot" /></p>
<p>The color picker javascript is using the <a href="http://developer.yahoo.com/yui/colorpicker/">YUI Color Picker</a> via a <a href="http://www.dynamicdrive.com/dynamicindex11/yuicolorpicker/">custom implementation from Dynamic Drive</a> that I enhanced further to add localization and pre-selection of the color in the picker.</p>
<p>I hope to release the new version of Event Calendar Pro in the next few days. In order to do that I will also be releasing a new version of mojoPortal with the color picker because the Event Calendar Pro upgrade depends on this feature.</p>
<h4>UPDATE 8:45am EST</h4>
<p>I've deployed the latest version of Event Calendar Pro to the demo site.</p>
<p>Here is a list of the improvements:</p>
<ol>
    <li>Ability to specify the end date for recurring events.</li>
    <li>Will Pay option for ticket sales. There is a setting on each event where you can check a checkbox to allow users to register for the event by clicking a button that says "I Will Pay Later". You can further control this from the module settings (gear icon) where there is a new setting so you can specify roles that are allowed to use the Will Pay button. That way you can put your trusted customers into a role and only allow them to register with this button, other users will not see the "I Will Pay Later" button, they will have to use the normal payment methods. button.</li>
    <li>Color coding of events in Month View. You can now sepcify foreground, background and border colors for events to make them have different colors in Month View.</li>
    <li>Ability to specify the text for event registration link.</li>
    <li>Location alias - for use when you want the name of the location to be different than what you need to enter for the google map to work.</li>
    <li>Meta Keywords and description per event</li>
    <li>Map settings per event instead of global</li>
</ol>
<p>Any testing or feedback much appreciated, I'd like to release it soon. It will be a free upgrade for existing customers who have purchased it already.</p><br /><a href='https://www.mojoportal.com/new-color-picker-landed-in-svn.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/new-color-picker-landed-in-svn.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=New+Color+Picker+Landed+in+svn+https%3a%2f%2fwww.mojoportal.com%2fnew-color-picker-landed-in-svn.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fnew-color-picker-landed-in-svn.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/new-color-picker-landed-in-svn.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/new-color-picker-landed-in-svn.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/new-color-picker-landed-in-svn.aspx</guid>
      <pubDate>Thu, 15 Jan 2009 11:50:23 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.2.8.1 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.2.8.1, available now on the <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>
<h3>Bug Fix</h3>
<p>The main reason for this release is to fix a bug in the MS SQL version of the blog that was introduced in version 2.2.8.0. I'm surprised it took 5 days for anyone to report this bug, it was causing an error when adding new blog posts and this prevented the friendly url from being created to link to the post. Once it was reported I felt it needed an immediate fix and release. We are on a short release cycle anyway, typically we release every 2-8 weeks but any time a significant bug is confirmed we like to get a fixed release out as soon as possible.</p>
<p>If you are upgrading from 2.2.7.9 or higher, you don't have to upload the ClientScript or Data folders as nothing has changed there. Those are big folders so it should help not having to upload them.</p>
<h3>New Stuff</h3>
<h4>YUI</h4>
<p>Even though its only been a week since the last release there are some new things in this release worth mentioning. I've been gradually trying to eliminate the places where we were using ExtJs since they changed the license and we can no longer get upgrades, I'm focusing on YUI and jQuery and MS Ajax for UI enhancements. I previously removed all the use of ExtJs Tabs and implemented <a href="http://developer.yahoo.com/yui/tabview/">YUI tabs</a>. In this release I implemented a YuiGridView, which is an ASP.NET GridView decorated with the <a href="http://developer.yahoo.com/yui/datatable/">YUI DataTable</a> javascript. I had previously implemented a similar ExtJsGridView and was using it in quite a few places in mojoPortal, but now I have replaced all of those with the new YUI version.</p>
<h4>Using the Google CDN</h4>
<p>We've been shipping all the YUI and jQuery javascript with mojoPortal for a while. YUI is fairly large, its a lot of files and added a lot to the size of our package. Yahoo has had their own <a href="http://developer.yahoo.com/yui/articles/hosting/">CDN</a> (Content Delivery Network) that allowed you to just load the YUI files from the Yahoo servers, but they don't have support for SSL, so in the past it seemed better to include the files within the site, otherwise on secure pages IE users would get the pesky warning about the page having both secure and insecure content. Recently I saw <a href="http://yuiblog.com/blog/2008/11/19/yui-google/">this blog post</a> in the YUI blog mentioning that google is now also hosting YUI on their CDN which does support SSL. So now we can leave out all of that YUI javascript from our package and load it from the google CDN. This is now enabled by default in mojoPortal, though there is a web.config setting that allows you to disable it if you have some reason why you want to host the files yourself, you still can do that, but its up to you to download the latest YUI and configure it in Web.config. We are also loading jQuery from the Google CDN. The only reason I can think of not to use the google CDN is if your site is on a private network and your users don't have internet access. To me that would be a very unusual use case, but in this case you would want to host all the javascript on the server.</p>
<h4>WebStore Gets Its First Report</h4>
<p>I implemented a Sales Overview report for the WebStore. I debated with myself whether to show you this screen shot, but I generally lean toward transparency so decided to show my own sales on this report. You can see that I'm clearly not making a living selling products yet.</p>
<p><img height="501" width="717" src="http://www.mojoportal.com/Data/Sites/1/webstore-sales-report.png" alt="webstore sales report screen shot" /></p>
<p>For reference, the store opened on July 23, 2008 with only the Buy Me a Beer product. Event Calendar Pro went on sale August 20th, 2008, and Form Wizard Pro went on sale Sept 29, 2008. Sales are currently only a trickle and I have a long way to go to get to my goal of selling 50 units per month, which is the point where I would start to make a decent living. For now I am still living primarily on savings, but I am optimistic about reaching my goals before I run out of savings. I think I need to add iCal import and export to the Event Calendar Pro and I need to add support for multi page forms or surveys in Form Wizard Pro to make them more popular, and having a few more products would be good. However, I still think the main thing is to improve the popularity of mojoPortal since my products only target users of mojoPortal, and to that end I've outlined some things on my <a href="http://www.mojoportal.com/roadmap.aspx">road map</a> that I think will help get there. Anyway, the main idea of the screen shot is to show the new report. The tables are using the YUIGridView I mentioned, and the Chart is <a href="http://zedgraph.org/wiki/index.php?title=Main_Page">ZedGraph</a>.</p>
<p>&#160;</p><br /><a href='https://www.mojoportal.com/mojoportal-2281-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2281-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.2.8.1+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2281-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2281-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2281-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2281-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2281-released.aspx</guid>
      <pubDate>Sat, 20 Dec 2008 16:02:08 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.2.8.0 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.2.8.0, available now on the <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>
<h3>Blog Improvements</h3>
<p>Refactored the core meta data system to make it easier for features to control the meta data for their own content. Now you have per post control of the meta data in the blog. Its now possible to use html in the excerpts. If you enable excerpts and don't enter an excerpt, we still generate a plain text one for you of the configured length, but you now have the flexibility to specify the content of the excerpt so you can use images and html, but in that case we don't truncate anything so as not to lose any closing tags, so its up to you to determine how much to include in the excerpt.</p>
<h3>WebStore Improvements</h3>
<p>Also added meta data support for products so you can optimise SEO for product pages. Also products are now indexed into the site search index and can be found using site search. </p>
<h3>Site Search Improvements</h3>
<p>I added paging to the results. Previously we just brought back up to 200 results and it was up to you to refine your search if you didn't find what you were looking for. Now you can page through all of the results no matter how many there are.</p>
<h3>404 Page Not Found Handler</h3>
<p>When a user clicks a broken link to your site or types an url incorrectly, they typically get what is known as a 404 page not found error. 404 s the status code that indicates to the browser (or crawler) that the page was not found. Web servers like IIS and apache have a page about the error that is shown to the user by default in that case but its not the most friendly thing. It is possible to customize the 404 page in IIS or apache, but typically we would rather control it from within our application. The prevailing technique for doing this in ASP.NET has been to declare a custom 404 page in Web.config like this:</p>
<p>&lt;customErrors mode="RemoteOnly" defaultRedirect="yourcustomerrorpage.aspx"&gt;<br />
&lt;error statusCode="404" redirect="~/PageNotFound.aspx" /&gt;<br />
&lt;/customErrors&gt;</p>
<p>allowing you to customize the 404 page and make it a little more user friendly. The problem with this technique is that when it does the redirect it never delivers the 404 status code, it provides a friendly experience to the user by redirecting to a page that does exist so no 404 really occurs as far as the browser knows. This is bad for search engine crawlers because they don't see the broken links either and you don't find out about them as you should from <a href="https://www.google.com/webmasters/tools/">google webmaster tools</a>. Its better if you can get reports about the broken links in your site and fix them. So what you really want is a custom 404 page that provides friendly content but still delivers the 404 status code, but redirecting to this page is what will prevent the status. You could set a status code from within your custom 404 page but since you redirected it won't report the correct url because you are now at the error page url not the missing url. Redirecting is not the correct solution, its just easy.</p>
<p>So I implemented an HttpModule to trap exceptions that indicate 404 errors and instead of redirecting I keep the current url and set the response status code to 404 then I make a server side web request to the custom 404 page to get its content and then just write the content into the reponse. So in effect I deliver the content of the custom 404 page but stay on the incorrect url so the status code will indicate that this url was not found. You can see the status code in the screen shot below where I have firebug showing the status of the request.&#160; I've also added the google 404 enhancement javscript to the cutom 404 page, so for example if a user typos the url for the download page (as shown below in the screen shot) as dwnload.aspx instead of download.aspx, google is smart enough to suggest the correct page.</p>
<p><img width="581" height="580" src="http://www.mojoportal.com/Data/Sites/1/404handler-screenshot.png" alt="404 page not found handler screen shot" /></p>
<p>This seems like an ideal solution as the user gets a friendly page with good suggestions and the crawlers get the correct story about broken urls.</p>
<h3>Bug Fixes</h3>
<p>There were a number of bugs reported in the forums since the last release which have been fixed. There were some problems with the setup scripts for MySql that affected some installations. There were a number of small bugs resulting from the re-organisation of the code. I think most of these are now shaken out and though the last release was a little bumpy the benefits of the new code structure were worth the trouble.</p>
<h3>Upgrade Notes</h3>
<p>People often complain about having to upload all the files again, but generally this is always the best thing to do to make sure you don't miss any of the new files. We are on short release cycles so it tends to amplify the problem for those who like to upgrade every release. For this release, if you are upgrading from 2.2.7.9, you can skip uploading the ClientScript folder and Data folder as nothing changed there since the last release. Those are 2 big folders, so it will save you some upload time. Be sure and upload all the rest of the files though, and if upgrading from older versions upload all the files. </p>
<p>Lots of other fun stuff going on. I've been prototyping some things in Silverlight that I will blog more on later.</p>
<p>&#160;</p>
<p>&#160;</p><br /><a href='https://www.mojoportal.com/mojoportal-2280-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2280-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.2.8.0+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2280-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2280-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2280-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2280-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2280-released.aspx</guid>
      <pubDate>Sun, 14 Dec 2008 22:38:38 GMT</pubDate>
    </item>
    <item>
      <title>Silverlight + Google Gears = Awesome! at least in Firefox</title>
      <description><![CDATA[<p>
	I spent most of the week prototyping some things in Silverlight. I figured during the holiday week most people out there goofed off on their jobs a lot this week, so rather than work on my <a href="http://www.mojoportal.com/roadmap.aspx">roadmap priorities</a>, I decided to have some fun and play with Silverlight.</p>
<p>
	Some of you who have followed my blog for a while may remember some posts I made in the past about my plans for Site Office as a second plug in model for <a href="http://www.mojoportal.com">mojoPortal</a> more geared to line of business apps that need a consistent look and feel rather than the web site kind of look, they need to look like applications. I originally protyped the UI using Dojo and then later re-did it with <a href="http://extjs.com/">ExtJs</a>. You can see the ExtJs version if you login to this site (or <a href="http://demo.mojoportal.com">http://demo.mojoportal.com</a> using admin@admin.com and password admin), then click the Site Office link at the top. You'll see the drag resizable panes that give the idea of where I wanted to go with Site Office as a UI for LOB applications. This prototype has just been sitting there without much attention because of other priorities and also partly because my enthusiasm for ExtJs disappeared when they changed the license from LGPL to GPL. Anyway, even back then I implemented a google gears query tool. Its really the only functioning app in the old Site Office prototype, you can find it by clicking the My Stuff in the left accordian menu in Site Office and then click SQL. For those who don't know, google gears is a client side SQL database built on SQLite and having this database available opens a lot of possibilities in web development for very rich and responsive applications.</p>
<p>
	Well, now my plan is to scrap the old ExtJs based Site Office prototype and build a better one with Silverlight. I've already got the Google Gears Query Tool re-implemented in Silverlight as shown below:</p>
<p>
	<img alt="silverlight google gears query tool ascreenshot" height="565" src="http://www.mojoportal.com/Data/Sites/1/silverlight-gears-screenshot.png" width="657" /></p>
<p>
	I wrote a nice managed code wrapper around the javscript calls for gears. The only problem is, it doesn't work well in IE 7 for some reason, it works great in Firefox. I've sent an email off to Scott Guthrie at Microsoft in hopes of some help looking into the problem, but for now you can try it out online at http://demo.mojoportal.com/Index.aspx, you can see that I've got the basic layout of Site Office again implemented in Silverlight with the drag re-sizable panes. I plan to build a plug in model that allows you to plugin your own Silverlight applets and let the framework provide stuff thats common across applications. If I can get google gears working well across browsers with Silverlight its really going to be sweet. The code for this is in my svn sandbox and will probably land in trunk sometime next week.</p>
<p>
	Now using the managed gears wrapper can be seen in this client side business/data class, it looks very much like a server side class but its a client side object populated from a client side database in a very similar fashion to what it would look like in server side code. Notice the parametrized queries to prevent sql injection attacks. This class represents a saved query but it could represent anything.</p>
<p>
	using System;<br />
	<br />
	<br />
	namespace mojoPortal.Silverlight.Helpers.Gears<br />
	{<br />
	&nbsp;&nbsp;&nbsp;<br />
	&nbsp;&nbsp;&nbsp; public class SavedQuery<br />
	&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public SavedQuery()<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {}<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private int id = -1;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private string name = string.Empty;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private string query = string.Empty;<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int Id<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return id; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Name<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return name; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { name = value; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Query<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return query; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { query = value; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Save(GearsDb gearsDb)<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (id == -1) { Create(gearsDb); return; }<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Update(gearsDb);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void Create(GearsDb gearsDb)<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (gearsDb == null) { return; }<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string sqlCommand = "insert into savedqueries (name, query) values (?, ?)";<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object[] parameters = new object[2];<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parameters.SetValue(name, 0);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parameters.SetValue(query, 1);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gearsDb.Execute(sqlCommand, parameters);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id = gearsDb.LastInsertRowId();<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private bool Update(GearsDb gearsDb)<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (gearsDb == null) { return false; }<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string sqlCommand = "update savedqueries set name = ?, query = ? where id = ?";<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object[] parameters = new object[3];<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parameters.SetValue(name, 0);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parameters.SetValue(query, 1);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parameters.SetValue(id, 2);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gearsDb.Execute(sqlCommand, parameters);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int rowsAffected = gearsDb.RowsAffected();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (rowsAffected &gt; 0);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static SavedQuery GetQuery(GearsDb gearsDb, int id)<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (gearsDb == null) { return null; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string sqlCommand = "select * from savedqueries where id = ?";<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object[] parameters = new object[1];<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parameters.SetValue(id, 0);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GearsResultSet rs = new GearsResultSet(gearsDb.Execute(sqlCommand, parameters));<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SavedQuery query = null;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (rs.IsValidRow())<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query = new SavedQuery();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.id = Convert.ToInt32(rs.GetFieldValue("id"));<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.name = rs.GetFieldValue("name").ToString();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.query = rs.GetFieldValue("query").ToString();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.Close();<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return query;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static SavedQuery GetQuery(GearsDb gearsDb, string name)<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (gearsDb == null) { return null; }<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string sqlCommand = "select * from savedqueries where name = ?";<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object[] parameters = new object[1];<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parameters.SetValue(name, 0);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GearsResultSet rs = new GearsResultSet(gearsDb.Execute(sqlCommand, parameters));<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SavedQuery query = null;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (rs.IsValidRow())<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query = new SavedQuery();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.id = Convert.ToInt32(rs.GetFieldValue("id"));<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.name = rs.GetFieldValue("name").ToString();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query.query = rs.GetFieldValue("query").ToString();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.Close();<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return query;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static bool Delete(GearsDb gearsDb, int id)<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (gearsDb == null) { return false; }<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string sqlCommand = "delete from savedqueries where id = ?";<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object[] parameters = new object[1];<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parameters.SetValue(id, 0);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gearsDb.Execute(sqlCommand, parameters);<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int rowsAffected = gearsDb.RowsAffected();<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (rowsAffected &gt; 0);<br />
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
	<br />
	&nbsp;&nbsp;&nbsp; }<br />
	}</p>
<h4>
	Update 2008-12-23</h4>
<p>
	I have narrowed down the problem with IE and use of Google Gears in Silverlight. All the Gears functionality works except for 2 methods. The 2 methods broken in IE are GearsResultSet.GetFieldName(int fieldIndex) and GearsResultSet.GetFieldValue(int fieldIndex). I can get the field value if I know the field name ahead of time using GearsResultSet.GetFieldValue(string fieldName), so for most applications I should still be able to use Gears even in IE because my field names will be known ahead of time. Unfortunately for the query tool we have no way of knowing what fields will be in the result of ad hoc queries. So the query tool will only be useful in Firefox, but for other features I should be able to use gears without any trouble and this is very good news. I also have got a few web services talking to Silverlight, so I'm able to authenticate and get user roles. These services are actually built into the framework so I didn't have to implement them. I am working on some RESTful web services using the WCF REST Starter Kit.<br />
	&nbsp;</p>
<br /><a href='https://www.mojoportal.com/silverlight-google-gears-awesome-at-least-in-firefox.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/silverlight-google-gears-awesome-at-least-in-firefox.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Silverlight+%2b+Google+Gears+%3d+Awesome!+at+least+in+Fi...+https%3a%2f%2fwww.mojoportal.com%2fsilverlight-google-gears-awesome-at-least-in-firefox.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fsilverlight-google-gears-awesome-at-least-in-firefox.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/silverlight-google-gears-awesome-at-least-in-firefox.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/silverlight-google-gears-awesome-at-least-in-firefox.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/silverlight-google-gears-awesome-at-least-in-firefox.aspx</guid>
      <pubDate>Fri, 28 Nov 2008 20:10:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.2.7.9 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.2.7.9, available now on our <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>
<h3>New Related Sites Mode</h3>
<p>mojoPortal has for a long time had the multiple sites feature which enables you to host multiple sites on a single installation using a single database. The feature was carefully designed to keep the sites and users completely independent so that each site is isolated from the others from a security perspective. But for some scenarios its desirable to host multiple sites but use the same users and roles in all of them. For example, maybe you want to have different versions of your site for different languages bu you want the same users in all of the sites. Or maybe a university wants to create separate sites for different departments but they want the students to have the same sign in credentials in all of them. This is now possible with simple configuration settings as indicated in <a href="http://www.mojoportal.com/muliplesites.aspx">the documentation</a>. Multiple sites can be configured either based on host names or by folders beneath the root site. With the folder based sites, since they share a common cookie, once the user is signed into any of the sites he is signed into all of them.</p>
<h3>New 301 Redirect Manager</h3>
<p>When you create pages in mojoPortal, the page gets a friendly url based on its title, like /fun-stuff.aspx would be the url for a page named Fun Stuff. Now if you change the name of the page later it will get a different url, so for example if I change the name to Really Fun Stuff, its going to get a new url /really-fun-stuff.aspx.</p>
<p>Now from an SEO (Search Engine Optimisation) point of view, its not a good idea to be changing your urls willy nilly. If someone bookmarked your old url you don't want it to be broken, or if its already popular in search results, you don't want it to be a broken link. So ideally, you need to have the old page do a 301 redirect to the new page. The 301 status code tells the browser that the page moved permanently. Now mojoPortal will create the 301 redirect for you automatically when you re-name a page or blog post. However, its still not a great idea to be renaming your pages frequently, you should avoid it generally but if you need to its ok to do it. You can also see the 301 redirect mappings and manually manage them from Administration Menu &gt; Advanced Tools &gt; 301 Redirect Manager. You need to be very careful with this feature, you do not want to create circular redirects where 2 urls redirect to each other.</p>
<h3>This is the last Release Targeting ASP.NET 2.0</h3>
<p>This release as previous ones targets the 2.0 ASP.NET runtime. I requested feedback in my previous post about changing to target the 3.5 ASP.NET runtime and everyone who responded was in favor. I've already changed it in my svn sandbox and will change it in trunk soon. I find that on a machine with VS 2005 I am still able to build and run the solution as long as .NET 3.5 is installed. Using the Mono 2.0 release I could still get it working if I swaped out the Web.config so it used 2.0 version of System.Web.Extensions. Using the latest Mono built from svn I see that the Mono version of System.Web.Extensions has changed to 3.5, but I'm getting an error running it and will have to investigate further.</p>
<p>So the next release will target .NET 3.5. If someone needs a 2.0 build it will be possible for them to change the build target back to 2.0 (in Visual Studio 2008) and rebuild, because I'm not really planning to use 3.5 specific features in the core projects for a while yet. I just need to use the 3.5 version of ScriptManager to support features like Silverlight that I will use in external projects. Just like our other features, the external projects will copy the needed files up to the main Web project so it can work at runtime. This allows us to move forward and take advantage of new things in 3.5 while keeping general compatibility with Mono and 2.0 .NET. Changing the target to 3.5 NET on the core projects only changes the Web.config file and the .csproj file</p>
<p>I'm very excited to start working with Silverlight 2 and RESTful web services using the REST toolkit. I'm just beginning to do exploratory prototyping now but I'm seeing some very cool possibilities.</p><br /><a href='https://www.mojoportal.com/mojoportal-2279-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2279-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.2.7.9+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2279-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2279-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2279-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2279-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2279-released.aspx</guid>
      <pubDate>Mon, 24 Nov 2008 10:18:31 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.2.7.8 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.2.7.8, available now on the <a href="http://www.mojoportal.com/download.aspx">download</a> page.</p>
<h3>Important Upgrade Notes</h3>
<p>We added a feature to combine and minify the CSS files in the skins. Those using custom skins should modify their skins <a href="http://www.mojoportal.com/important-skin-changes.aspx">as described here</a> after upgrading.</p>
<p>This release also contains Oomph, as described in my <a href="http://www.mojoportal.com/mojoportal-gets-a-little-microformat-oomph.aspx">previous post</a>.</p>
<p>We have a new Croatian language translation thanks to Slaven Brumec.</p>
<p>Other than the above and a few bug fixes and feature tweaks as discussed in the forums since the last release, the main focus of this release is changes to make developers happy as discussed below.</p>
<h3>Source Code Project Re-Organization</h3>
<p>All of the content features like Blog, forum, Gallery, Maps, etc, have been moved out of the core mojoPortal projects into the mojoPortal.Features.* projects. This makes it possible to build and package a leaner version of mojoPortal without any features except Html Content. I will still continue to make the official mojoPortal releases with all the features, I have no plans to package separate mojoPortal lite packages myself, but the idea is that developers can package their own application with mojoPortal without having to include all the features we have. If you work with the mojoportal-core.sln Visual Studio Solution, it will build without any of the extra features and you can <a href="http://www.mojoportal.com/deploymentfromwindows.aspx">package it with UnLeashIt</a>. If you build the mojoportal-complete.sln solution, post build events will copy the extra features up to the core Web project, so you don't want to do that if you plan to package without those features. Once they are copied up to the Web project UnLeashIt will include them, so you need to keep it clean by not building that solution if you want to package without those features.</p>
<p>As a result of this, features are now basically self contained within folders, like the Blog is in the siteroot/Blog folder and forums are in the siteroot/Forums folder and so on. For backward compatibility I created pages with the old names that will do a 301 redirect to the new pages. I also was careful to make sure friendly urls for existing blog posts would continue to work correctly.</p>
<p>The only thing site owners need to change is if they previously submitted a blog site map to google using siteroot/BlogSiteMap.ashx, you need to change that to siteroot/Blog/BlogSiteMap.ashx</p>
<h3>When Should We Target .NET 3.5?</h3>
<p>I'd like to gather input and opinions about when we should change the target platform to .NET 3.5. I'm eager to start playing with Silverlight in mojoPortal and it seems to need the 3.5 versions of ScriptManager to host the &lt;asp:Silverlight control</p>
<p>The issues I see are:</p>
<ul>
    <li>We need to be careful to keep compatibility with Mono. I think we can move forward with using .NET 3.5 on Windows and continue to build for .NET 2.0 for the MonoDevelop solution. We really won't add non-supported features in the core projects but we need to be able to specify 3.5 settings in Web.config of the core Web project. We already maintain a different Web.config file for Mono packages so this should not be a problem. We can put 3.5 functionality like Silverlight into separate projects and use post build events to deploy them into the main web for runtime as we do with most features. So these projects can be left out of the MonoDevelop Solution until they are supported. In summary I think we can workaround all issues relating to Mono and should be able to move forward while still maintaining Mono compatibility.</li>
    <li>Hosting - This is the issue I'm not entirely sure of and would appreciate any input. If the next release of mojoPortal for Windows targets the 3.5 runtime is that available at your hosting or will it pose a barrier to upgrade? It seems like most of the big name hosts have .NET 3.5, they don't like to be left behind by the competition.</li>
    <li>Visual Studio 2005 Issues? - As far as I know VS 2005 can target 3.5 without problems except maybe for Windows Workflow development and it doesn't have some of the built in project templates for 3.5 .NET projects. We already maintain separate VS 2005 solution files so we could leave out any projects if they don't work.</li>
</ul>
<h4>UPDATE:</h4>
<p>Forgot to mention that I updated the <a href="http://www.mojoportal.com/roadmap.aspx">project road map</a> yesterday.</p><br /><a href='https://www.mojoportal.com/mojoportal-2278-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2278-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.2.7.8+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2278-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2278-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2278-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2278-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2278-released.aspx</guid>
      <pubDate>Mon, 17 Nov 2008 12:04:47 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal Gets A Little Microformat Oomph</title>
      <description><![CDATA[<p>
	Just integrated <a href="http://www.codeplex.com/Oomph">Oomph</a>, a javascript Microformat Overlay into <a href="http://www.mojoportal.com">mojoPortal</a>. You can watch the PDC presentation about Oomph from this page <a href="https://sessions.microsoftpdc.com/public/timeline.aspx">https://sessions.microsoftpdc.com/public/timeline.aspx</a>, click Day 3 then click Oomph and you can see the video links at the bottom.</p>
<p>
	<a href="http://microformats.org/">Microformats</a> are a way of marking up information in html using some agreed upon conventions that add semantic meaning to the markup. For example <a href="http://microformats.org/wiki/hcard">hcard</a>, is a format for marking up contact information. What Oomph does is recognize the hcards and hcalendar items in your page and creates a javascript widget in the top left of the page that gives you some neat options for adding contact to your Yahoo Contacts, adding events to your googe calendar, showing event and contact locations on a map using Virtual Earth, etc. Pretty neat stuff. You can see it in action on our <a href="http://www.mojoportal.com/consulting.aspx">consulting list</a>, where I've marked up the content using hcard format. The list view feature of our <a href="http://www.mojoportal.com/event-calendar-pro-product.aspx">Event Calendar Pro</a> add on product also renders in hcalendar format so events can show up in the oomph widget. I've shrunk my browser window down a bit to make a screen shot of the widget below but for best impressions <a href="http://www.mojoportal.com/consulting.aspx">try it yourself</a>.</p>
<p>
	<img alt="oomph screen shot" height="327" src="http://www.mojoportal.com/Data/Sites/1/oomphscreenshot.png" width="549" /></p>
<h3>
	Other Developments</h3>
<p>
	I always like to <a href="http://en.wikipedia.org/wiki/Dogfooding">dogfood</a> new features here on mojoPortal.com to work out any issues, so this site is runnning the very latest code from my sandbox.</p>
<p>
	At the moment I'm also testing some performance optimizations that I just integrated into mojoPortal. As we start to do more ajaxy javascript things in mojoPortal we find ourselves adding a lot of links to javascript files which adds additional http requests to our page. So I've integrated <a href="http://www.codeproject.com/KB/aspnet/fastload.aspx">some work</a> by Omar Al Zabir, that he has made available in the very cool <a href="http://www.codeplex.com/dropthings">Dropthings project</a>. This combines most of our javascript files into one request and moves the javascript to the bottom of the page to improve performance.</p>
<p>
	A similar issue exists for css files in the skin. We like to organize css into separate files based on logical things from a development perspective, but from a performance perspective we'd like to have only one link to an external css file. I implemented a solution for css files based on some of the techniques I learned from Omar's work. It combines all the css files and minifies them as well using <a href="http://regexadvice.com/blogs/mash/archive/2008/04/18/Follow-up-to-Additional-CSS-minifying-regex-patterns.aspx">Michael Ash's C# implementation of the YUI Compressor</a>. So far it seems to be working great and I haven't noticed any side effects or problems.</p>
<p>
	These new feature is only in my sandbox at the moment but will be in svn trunk within a few days.</p>
<h4>
	UPDATE 2008-11-03</h4>
<p>
	Just discovered that moving the javascript to the bottom broke usage of NeatHtml in the forums. Luckily I have Web.config setting to disable the javascript combiner so I have fixed it on this site while I investigate a solution. There is an option that Omar implemented to add a "pin" attribute to any script that you don't want to combine or move to the bottom. The problem is I don't believe that is a valid attribute and it will break xhtml validation to use it, so I will have to find another solution.</p>
<h4>
	UPDATE 2008-11-04</h4>
<p>
	I managed to get a solution to pin some scripts without breaking xhtml validation, so now on this site I'm testing combined scripts again and so far so good.</p>
<br /><a href='https://www.mojoportal.com/mojoportal-gets-a-little-microformat-oomph.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-gets-a-little-microformat-oomph.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+Gets+A+Little+Microformat+Oomph+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-gets-a-little-microformat-oomph.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-gets-a-little-microformat-oomph.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-gets-a-little-microformat-oomph.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-gets-a-little-microformat-oomph.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-gets-a-little-microformat-oomph.aspx</guid>
      <pubDate>Mon, 03 Nov 2008 14:40:00 GMT</pubDate>
    </item>
    <item>
      <title>Lowering Entry Point Barriers for Developers</title>
      <description><![CDATA[<p>I'm always interested to hear developer opinions about <a href="http://www.mojoportal.com">mojoPortal</a>. I don't always agree with them, but I try to keep an open mind and see their perspective. So I monitor the blogosphere with <a href="http://www.google.com/alerts">google alerts</a>, so that if anyone mentions mojoPortal in their blog I get an email alert with a link. It doesn't catch everything and more often than not I just get alerts about my own blog posts, but now and then something of interest appears.</p>
<p>So I got an alert about <a href="http://dotfresh.blogspot.com/2008/10/in-search-of-developer-friendly-cms.html">this blog post</a> by Artem Smirnov where he complained about having to inherit from a base class to make a mojoPortal plug in. He wishes he could just use a plain old UserControl and he does not want to have to create any configuration file to install it.</p>
<p>mojoPortal provides a base class, SiteModuleControl which "is a" UserControl that contains some additional functionality that allows you to make multi instance features. Like a blog for example, in mojoPortal you can put an instance of the blog feature on one page and another instance on another page and these are totally separate instances with different content. This is the way most of the features in mojoPortal work and SiteModuleControl provides the instance specific properties and settings that enable easy development of features that support multiple intances.</p>
<p>But maybe sometimes you don't need your feature to support multiple instances and would rather just use a plain old UserControl. This is the valid point I took from Artem's post. And since SiteModuleControl "is a" UserControl and plugs in the same way you plug in a UserControl, I thought, why not make it possible to use a plain old UserControl if you want to. Its a very simple code change to support it, the only thing we do differently if the UserControl is a SiteModuleControl is set a few properties on it, if its just a plain UserControl we skip that step.</p>
<p>Control c = Page.LoadControl(module.ControlSource);<br />
if (c == null) { continue; }</p>
<p>if (c is SiteModuleControl)<br />
{<br />
SiteModuleControl siteModule = c as SiteModuleControl;</p>
<p>siteModule.SiteId = siteSettings.SiteId;<br />
siteModule.ModuleConfiguration = module;<br />
parent.Controls.Add(siteModule);<br />
}<br />
else if(c is UserControl)<br />
{<br />
parent.Controls.Add(c);<br />
}</p>
<p>This change is in svn trunk now. I would also like to mention that you can easily install a SiteModuleControl or a UserControl right from the Web UI, you don't have to create configuration files to install it though there is a system for it and it is recommended if you will be packaging your feature for installation on other machines. The place where you can install it from the UI is under Administration Menu &gt; Advanced Tools &gt; Feature Installation</p>
<p>So, it is now possible to use a plain old UserControl if you want to. If you need to support multiple instances of your feature like we do for most of the mojoPortal features then you should inherit your UserControl from SiteModuleControl and follow <a href="http://www.mojoportal.com/addingfeatures.aspx">the guidelines for feature development</a>.</p><br /><a href='https://www.mojoportal.com/lowering-entry-point-barriers-for-developers.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/lowering-entry-point-barriers-for-developers.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Lowering+Entry+Point+Barriers+for+Developers+https%3a%2f%2fwww.mojoportal.com%2flowering-entry-point-barriers-for-developers.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2flowering-entry-point-barriers-for-developers.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/lowering-entry-point-barriers-for-developers.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/lowering-entry-point-barriers-for-developers.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/lowering-entry-point-barriers-for-developers.aspx</guid>
      <pubDate>Thu, 16 Oct 2008 12:25:14 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.2.7.6 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.2.7.6, available now on the download page.</p>
<p>In addition to bug fixes for things reported in the forums since the last release, this release includes the new Content Rating System and Feed Manager improvements mentioned in <a href="http://www.mojoportal.com/content-rating-system-and-feed-manager-improvements.aspx">this previous post</a>, as well as the new option in Site Statistics to show a graph of new site member registrations that I mentioned in <a href="http://www.mojoportal.com/zedgraph-easy-web-charts.aspx">this post</a>.</p><br /><a href='https://www.mojoportal.com/mojoportal-2276-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2276-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.2.7.6+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2276-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2276-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2276-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2276-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2276-released.aspx</guid>
      <pubDate>Tue, 14 Oct 2008 19:57:52 GMT</pubDate>
    </item>
    <item>
      <title>A Custom AdRotator - Borrowing Code from The Mono Project</title>
      <description><![CDATA[<p>Sometimes in ASP.NET development you need just a little different functionality than what the built in controls have. Often you can inherit the control and extend functionality on top of the original version, but sometimes you wish you could just make a small change to the inner workings of the control. One option is to borrow the <a href="http://www.mono-project.com/Main_Page">Mono</a> implementation and modify it to meet your needs.</p>
<p>So today I wanted to implement an Ad Rotator so I could alternate the banner ad on mojoPortal.com to switch between my add for <a href="http://www.mojoportal.com/event-calendar-pro-offer.aspx">Event Calendar Pro</a> and <a href="http://www.mojoportal.com/form-wizard-pro-single-installation-license-offer.aspx">Form Wizard Pro</a>. There is a built in AdRotator control in ASP.NET, so I read a few articles about it, <a href="http://msdn.microsoft.com/en-us/library/azwad69k.aspx">here</a> and <a href="http://www.c-sharpcorner.com/UploadFile/raj1979/AdRotator08252008054241AM/AdRotator.aspx">here</a>. In those articles they suggest click tracking by using a redirect page, but I wanted to track it in google Analytics <a href="http://www.mojoportal.com/mojoportal-gets-advanced-google-analytics-integration.aspx">since we already have it integrated in mojoPortal</a>. To do this I need to add an onclick to the rendered link to call the tracking code and then navigate to the href. So an example onclick for tracking is like this:</p>
<p>onclick="mojoPageTracker._trackPageview('/EventCalendarProBanner.aspx');window.open(this.href,'_self');return false;"</p>
<p>This just tracks a made up url (/EventCalendarProBanner.aspx) before navigating to the linked product page.</p>
<p>The ASP.NET AdRotator control can consume an xml file in this format:</p>
<p>&lt;?xml version="1.0" encoding="utf-8" ?&gt;<br />
&lt;Advertisements&gt;<br />
&lt;Ad&gt;<br />
&lt;ImageUrl&gt;~/images/Contoso_ad.gif&lt;/ImageUrl&gt;<br />
&lt;NavigateUrl&gt;http://www.contoso.com&lt;/NavigateUrl&gt;<br />
&lt;AlternateText&gt;Ad for Contoso.com&lt;/AlternateText&gt;<br />
&lt;/Ad&gt;<br />
&lt;Ad&gt;<br />
&lt;ImageUrl&gt;~/images/ASPNET_ad.gif&lt;/ImageUrl&gt;<br />
&lt;NavigateUrl&gt;http://www.asp.net&lt;/NavigateUrl&gt;<br />
&lt;AlternateText&gt;Ad for ASP.NET Web site&lt;/AlternateText&gt;<br />
&lt;/Ad&gt;<br />
&lt;/Advertisements&gt;<br />
&#160;</p>
<p>But I wanted to add another property to store my OnClick code, so my new format is like this:</p>
<p>&lt;?xml version="1.0" encoding="utf-8" ?&gt;<br />
&lt;Advertisements&gt;<br />
&lt;Ad&gt;<br />
&lt;ImageUrl&gt;~/Data/Sites/1/skins/mojosite-brightside/eventcalpro-banner.gif&lt;/ImageUrl&gt;<br />
&lt;NavigateUrl&gt;~/event-calendar-pro-offer.aspx&lt;/NavigateUrl&gt;<br />
&lt;AlternateText&gt;A better event calendar for mojoportal&lt;/AlternateText&gt;<br />
&lt;OnClientClick&gt;mojoPageTracker._trackPageview('/EventCalendarProBanner.aspx');window.open(this.href,'_self');return false;&lt;/OnClientClick&gt;<br />
&lt;/Ad&gt;<br />
&lt;Ad&gt;<br />
&lt;ImageUrl&gt;~/Data/Sites/1/skins/mojosite-brightside/formwizardpro-leaderboard.gif&lt;/ImageUrl&gt;<br />
&lt;NavigateUrl&gt;~/form-wizard-pro-single-installation-license-offer.aspx&lt;/NavigateUrl&gt;<br />
&lt;AlternateText&gt;Form Wizard Pro - Easy Forms for mojoPortal&lt;/AlternateText&gt;<br />
&lt;OnClientClick&gt;mojoPageTracker._trackPageview('/FormWizardProBanner.aspx');window.open(this.href,'_self');return false;&lt;/OnClientClick&gt;<br />
&lt;/Ad&gt;<br />
&lt;/Advertisements&gt;</p>
<p>Since I don't really have access to the internal workings of the ASP.NET AdRotator, I decided to have <a href="http://anonsvn.mono-project.com/viewvc/trunk/mcs/class/System.Web/System.Web.UI.WebControls/">a look at the source code for the Mono project implementation of this control</a>. I downloaded the 3 files AdRotator.cs, AdCreatedEventArgs.cs, and AdCreatedEventHandler.cs, added them into my mojoPortal.Web.Controls project and changed the namespace so it wouldn't clash with the built in ASP.NET version. I had to modify a few small things where it was using some internal Mono stuff but not much. I added the OnClientClick property to AdCreatedEventArgs.cs and added on line of code to the render method of AdRotator.cs:</p>
<p>if (e.OnClientClick != null &amp;&amp; e.OnClientClick.Length &gt; 0)<br />
w.AddAttribute(HtmlTextWriterAttribute.Onclick, e.OnClientClick);</p>
<p>I add it to my layout.master (Master Page) and configure it to read the xml file with my ads:</p>
<p>&lt;mp:AdRotator id="ads1" runat="server" AdvertisementFile="~/App_Data/mojoads.ads" /&gt;</p>
<p>And voila, it works and only took about 20 minutes to implement.</p>
<p>&#160;</p><br /><a href='https://www.mojoportal.com/a-custom-adrotator-borrowing-code-from-the-mono-project.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/a-custom-adrotator-borrowing-code-from-the-mono-project.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=A+Custom+AdRotator+-+Borrowing+Code+from+The+Mono...+https%3a%2f%2fwww.mojoportal.com%2fa-custom-adrotator-borrowing-code-from-the-mono-project.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fa-custom-adrotator-borrowing-code-from-the-mono-project.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/a-custom-adrotator-borrowing-code-from-the-mono-project.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/a-custom-adrotator-borrowing-code-from-the-mono-project.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/a-custom-adrotator-borrowing-code-from-the-mono-project.aspx</guid>
      <pubDate>Mon, 13 Oct 2008 18:47:51 GMT</pubDate>
    </item>
    <item>
      <title>ZedGraph - Easy Web Charts</title>
      <description><![CDATA[<p>Everybody likes charts, a picture tells a thousand words they say, and I'm no different, I like them too. I've had my eye on the <a href="http://zedgraph.org/wiki/index.php?title=Main_Page">ZedGraph</a> project for several years and have been including their dlls with <a href="http://www.mojoportal.com">mojoPortal</a> for a long time with the intention of using ZedGraph in mojoPortal. I don't know why it took me so long to actually use it, but I finally implemented a chart in the Site Statistics feature of mojoPortal to show the trend of site registrations. I suppose it might have taken me so long to get around to this partly because charts are not that useful unless you have a significant amount of data. This year I have definitely noticed an increasing rate of people registering on mojoPortal.com, so I thought I would like to see this on a chart. ZedGraph is so easy! It took me maybe 30 minutes total to figure out how to create my first chart. Now I'm all excited to use it in a lot of places like sales reports for the web store feature and other interesting metrics. Maybe could produce pie charts of survey results, not for text questions but for ones that have choices we could show pie charts of how many people picked the various choices. Anyway, lots of ideas where to use it!</p>
<p>You can see the live version of this chart on our <a href="http://www.mojoportal.com/community.aspx">community page</a>:</p>
<p><img height="300" width="600" alt="community growth chart" src="http://www.mojoportal.com/Data/Sites/1/community-growth.png" /></p>
<p>Now for me this chart is very meaningful because I can see that site registration started rising after the <a href="http://www.mojoportal.com/achieving-the-single-sign-on-dream-with-open-id-and-windows-live-id.aspx">august 2007 release of mojoPortal</a> that included support for <a href="http://openid.net/">OpenID</a> and <a href="http://get.live.com/getlive/overview">Windows Live ID</a>, having those options makes it easy for a lot of people to register becuase they don't have to have any new passwords. That rise also was probably due to the <a href="http://www.packtpub.com/article/mojoportal-wins-best-other-open-source-content-management-system">2007 CMS Awards</a>. Then the big increase in the trend started when I went on a mojoPortal Beautification Campaign and made about 20 new good looking skins from <a href="http://www.mojoportal.com/BlogArchiveView.aspx?month=4&amp;year=2008&amp;mid=19&amp;pageid=2">April 2008</a> to <a href="http://www.mojoportal.com/BlogArchiveView.aspx?month=5&amp;year=2008&amp;mid=19&amp;pageid=2">May 2008</a>. mojoPortal.com got a makeover with a new skin in May 2008 as well. In any case, its a positive trend showing an order of magnitude in growth. I sure hope it keeps going up! We have at least another order of magnitude to go to catch up with DotNetNuke. Where we are currently getting about 250 new members per month, they get more than that per day. So I look to them to see how high it could go.&#160; They have a lot more visibility due to all the support they have from Microsoft, and they take a more agressive approach to aquiring members by requiring site registration in order to download. I don't plan to change our approach, registration is not required to download mojoPortal, but registration is required to get support in the forums. I am looking at ways to increase our visibility in the Microsoft ecosystem. Hopefully we will be able to move to <a href="http://www.codeplex.com/">CodePlex</a> soon for our source code and file hosting. The Codeplex Team is <a href="http://www.mojoportal.com/should-we-move-to-codeplex.aspx">working on some fixes to their svn bridge</a> that should make it possible for us to move there. I think that move will give us a lot more visibility in the .NET community.</p>
<h3>Don't Forget Voting for the 2008 CMS Awards ends October 20</h3>
<p>So if you haven't already please <a href="http://www.packtpub.com/article/best-other-open-source-cms-award-final-mojoportal">vote for mojoPortal</a>!</p>
<p><a href="http://www.packtpub.com/article/best-other-open-source-cms-award-final-mojoportal"><img height="60" width="728" src="http://www.mojoportal.com/Data/Sites/1/mojocmsawards2008.gif" alt="vote for mojoportal in the 2008 cms awards" /></a></p>
<p>&#160;</p><br /><a href='https://www.mojoportal.com/zedgraph-easy-web-charts.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/zedgraph-easy-web-charts.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=ZedGraph+-+Easy+Web+Charts+https%3a%2f%2fwww.mojoportal.com%2fzedgraph-easy-web-charts.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fzedgraph-easy-web-charts.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/zedgraph-easy-web-charts.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/zedgraph-easy-web-charts.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/zedgraph-easy-web-charts.aspx</guid>
      <pubDate>Mon, 13 Oct 2008 12:48:02 GMT</pubDate>
    </item>
    <item>
      <title>Content Rating System and Feed Manager Improvements</title>
      <description><![CDATA[<p>Just a quick post to mention some new goodness that has landed in the <a href="http://www.mojoportal.com/tortoisesvn.aspx">mojoPortal code repository</a>. </p>
<h3>Content Rating System</h3>
<p>I just completed the first version of the Content Rating System. Its built into the core in such a way that it can be used across features. So far I've integrated it into the Html Content Mdodule and the Blog, but there are lots of other places where I plan to use it too such as for product ratings in the WebStore feature.</p>
<p><img height="28" width="254" src="http://www.mojoportal.com/Data/Sites/1/contentrating.png" alt="content rating screen shot" /></p>
<p>It has an option to also allow feedback comments:</p>
<p><img height="287" width="332" src="http://www.mojoportal.com/Data/Sites/1/contentrating.gif" alt="content rating with comments screen shot" /></p>
<p>but I haven't yet implemented a UI for reviewing or showing the comments.</p>
<p>On this site I've configured it just for rating without comments in the blog (since it already has comments) but in the documentation pages <a href="http://www.mojoportal.com/installation-quick-start.aspx">like here</a>, I've enabled the comments. I've got mixed feelings about it in terms of the comments because I also plan to implement a threaded comment feature that can be integrated into any of the features so that threaded dicussions can be attached to any content. When that is ready it may make this comment feature for the ratings less useful.</p>
<h3>Feed Manager Improvements</h3>
<p>Huge thanks to Walter Ferrari for his improvements to the Feed Manager! We now have support for Atom feeds and the really cool new feature is an option for selective publishing. With selective publishing you can subscribe the Feed Manager instance to a bunch of feeds and then selectively publish just the posts you like from those feeds. </p>
<p>You can try these features now on <a href="http://demo.mojoportal.com">demo.mojoportal.com</a> </p>
<p>I expect to make a new release of mojoPortal to include these features within days.</p>
<p>&#160;</p>
<p>&#160;</p><br /><a href='https://www.mojoportal.com/content-rating-system-and-feed-manager-improvements.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/content-rating-system-and-feed-manager-improvements.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Content+Rating+System+and+Feed+Manager+Improvements+https%3a%2f%2fwww.mojoportal.com%2fcontent-rating-system-and-feed-manager-improvements.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fcontent-rating-system-and-feed-manager-improvements.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/content-rating-system-and-feed-manager-improvements.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/content-rating-system-and-feed-manager-improvements.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/content-rating-system-and-feed-manager-improvements.aspx</guid>
      <pubDate>Fri, 10 Oct 2008 19:20:31 GMT</pubDate>
    </item>
    <item>
      <title>Tip/Trick Creating tabs in the mojoPortal Html Content Module</title>
      <description><![CDATA[<p>In the <a href="http://www.mojoportal.com/mojoportal-2273-released.aspx">mojoPortal 2.2.7.3 release announcement</a>, I mentioned that we changed from <a href="http://extjs.com/deploy/ext-2.0-alpha1/examples/tabs/tabs-adv.html">ExtJs tabs</a> to <a href="http://developer.yahoo.com/yui/tabview/">YUI tabs</a> in <a href="http://www.mojoportal.com">mojoPortal</a>. One side benefit of this is that its now possible to create tabs in your content using the editor. </p>
<p>In the past this wasn't possible. I had written a .NET wrapper control around the ExtJs tabs, but only developers could use that, there was no simple way to create tabs right in your content. The integration with YUI tabs is a little looser, I have not implemented a .NET control for it yet though I may do so in the future. But the main scripts for YUI tabs are included by default, so you can paste a simple chunk of markup into the source view of the editor to get the start of your tabs, and then you can edit it from there to add more tabs or change the labels and contents of the tab.</p>
<p>Now you won't see the tabs in the editor, but when you save it you will see the tabs.</p>
<p>To try it out, add an Html Content instance to a page in your mojoPortal site or on our <a href="http://demo.mojoportal.com">demo site</a>. Click the edit link to edit the content, then click the source button to see the raw markup view. Now paste in this:</p>
<p>&lt;script type="text/javascript"&gt;<br />
var myTabs = new YAHOO.widget.TabView("demo");<br />
&lt;/script&gt; <br />
&lt;div class="yui-skin-sam"&gt;<br />
&lt;div id="demo" class="yui-navset"&gt;<br />
&lt;ul class="yui-nav"&gt;<br />
&lt;li class="selected"&gt;&lt;a href="#tab1"&gt;&lt;em&gt;Tab One Label&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#tab2"&gt;&lt;em&gt;Tab Two Label&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href="#tab3"&gt;&lt;em&gt;Tab Three Label&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ul&gt;            <br />
&lt;div class="yui-content"&gt;<br />
&lt;div&gt;&lt;p&gt;Tab One Content&lt;/p&gt;&lt;/div&gt;<br />
&lt;div&gt;&lt;p&gt;Tab Two Content&lt;/p&gt;&lt;/div&gt;<br />
&lt;div&gt;&lt;p&gt;Tab Three Content&lt;/p&gt;&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;</p>
<p>Save, and you will see something like this:</p>
<p><img height="96" width="450" src="http://www.mojoportal.com/Data/Sites/1/yuitab-content.png" alt="screen shot of YUI tabs" /></p>
<p>At some point when I implement content templates I will make it easy to do this by selecting a content template, but thought I would mention it for the more html savvy users.</p><br /><a href='https://www.mojoportal.com/creating-tabs-in-the-mojoportal-html-content-module.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/creating-tabs-in-the-mojoportal-html-content-module.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Tip%2fTrick+Creating+tabs+in+the+mojoPortal+Html+Conten...+https%3a%2f%2fwww.mojoportal.com%2fcreating-tabs-in-the-mojoportal-html-content-module.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fcreating-tabs-in-the-mojoportal-html-content-module.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/creating-tabs-in-the-mojoportal-html-content-module.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/creating-tabs-in-the-mojoportal-html-content-module.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/creating-tabs-in-the-mojoportal-html-content-module.aspx</guid>
      <pubDate>Mon, 29 Sep 2008 15:27:11 GMT</pubDate>
    </item>
    <item>
      <title>Form Wizard Pro Is Now On Sale!</title>
      <description><![CDATA[<p>I'm happy to announce the first public release of <a href="http://www.mojoportal.com/form-wizard-pro-single-installation-license-offer.aspx">Form Wizard Pro</a> version 0.0.0.2</p>
<p>With Form Wizard Pro installed in your <a href="http://www.mojoportal.com">mojoPortal</a> site, you can easily create custom forms for capturing data from your visitors.</p>
<h3>Features at a Glance</h3>
<ul>
    <li>Easily design forms with Text, Paragraph, Multiple Choice (radio buttons), Checkboxes, dropdown lists, Date, or sliding scale question types.</li>
    <li>Re-arrange questions using drag and drop</li>
    <li>Option to receive email notifications when a form is submitted.</li>
    <li>Export form submission data to .csv (Comma Separated Values) for analysis in Excel or other spreadsheet programs.</li>
    <li>Optional Captcha to prevent spam submissions by automated bots</li>
</ul>
<p><img height="428" width="432" src="http://www.mojoportal.com/Data/Sites/1/form-wizard-pro-edscreen-s.gif" alt="Form Wizard pro edit screen" /></p>
<h3>Pricing/Licensing</h3>
<ul>
    <li><a href="http://www.mojoportal.com/form-wizard-pro-single-installation-license-offer.aspx">Single Installation License</a> $99</li>
    <li><a href="http://www.mojoportal.com/form-wizard-pro-server-license-offer.aspx">Server License</a> $299</li>
    <li><a href="http://www.mojoportal.com/form-wizard-pro-enterprise-license-offer.aspx">Enterprise License</a> $899</li>
</ul>
<p>As I'm sure you can imagine, its very difficult to make a living if you give away your products. In order for me to be able to continue working on mojoPortal full time I need some revenue stream. In an ideal world I suppose I would get enough donations to make a living, but in the real world this does not happen. Only a very small percent of people who use mojoPortal ever make a donation or <a href="../../../buy-joe-a-beer-offer.aspx">buy me a beer</a>. So the strategy for funding my continued efforts on improving mojoPortal includes selling some premium features that are not included in the free version of mojoPortal. If you are getting a lot of value out of the free version of mojoPortal, consider purchasing our premium features. Every purchase helps provide for the long term vitality of the project by providing funding for continued improvements.</p><br /><a href='https://www.mojoportal.com/form-wizard-pro-is-now-on-sale.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/form-wizard-pro-is-now-on-sale.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Form+Wizard+Pro+Is+Now+On+Sale!+https%3a%2f%2fwww.mojoportal.com%2fform-wizard-pro-is-now-on-sale.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fform-wizard-pro-is-now-on-sale.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/form-wizard-pro-is-now-on-sale.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/form-wizard-pro-is-now-on-sale.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/form-wizard-pro-is-now-on-sale.aspx</guid>
      <pubDate>Mon, 29 Sep 2008 14:54:09 GMT</pubDate>
    </item>
    <item>
      <title>FormWizard Pro is almost ready</title>
      <description><![CDATA[<p>I've almost finished my second premium feature for <a href="http://www.mojoportal.com">mojoPortal</a>. The feature will be called FormWizard Pro and you can try it now on the <a href="http://demo.mojoportal.com">demo</a> site.</p>
<p>Any feedback on the product is much appreciated. The Form Wizard Pro feature makes it easy to create arbitrary ad hoc forms for capturing input from your site visitors. You can create as many instances of forms as you like on as many pages as you like. It supports Text, Paragraph, Radio Button lists, Checkbox lists, Dropdown lists, Date, and Sliding Scale questions. You can re-arrange the questions using drag and drop, and you can export the submitted data as CSV (Comma Separated Values) which can be opened in Excel or other spreadsheet programs for analysis.</p>
<p>Here is a little snippet of the edit screen, but to see how it really works just try it out on the <a href="http://demo.mojoportal.com">demo site</a>.</p>
<p><img height="363" width="288" alt="form wizard pro screen shot" src="http://www.mojoportal.com/Data/Sites/1/formwizard-editsnip.png" /></p>
<p>I hope to have it on sale very soon.</p><br /><a href='https://www.mojoportal.com/formwizard-pro-is-almost-ready.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/formwizard-pro-is-almost-ready.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=FormWizard+Pro+is+almost+ready+https%3a%2f%2fwww.mojoportal.com%2fformwizard-pro-is-almost-ready.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fformwizard-pro-is-almost-ready.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/formwizard-pro-is-almost-ready.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/formwizard-pro-is-almost-ready.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/formwizard-pro-is-almost-ready.aspx</guid>
      <pubDate>Wed, 24 Sep 2008 18:13:58 GMT</pubDate>
    </item>
    <item>
      <title>Event Calendar Pro 0.0.0.2 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com/event-calendar-pro-offer.aspx">Event Calendar Pro</a> version 0.0.0.2</p>
<p>This release adds support for rendering events that span across days, weeks, or months, on the Month View.</p>
<p><img height="346" width="432" alt="Event Calendar Pro screen shot showing events that span across days" src="http://www.mojoportal.com/Data/Sites/1/productscreenshots/eventcalpro-monthview-small.png" /></p>
<p>From the beginning I felt rendering events that span across days was an important feature and I had hoped to have it working for the initial release, but since it took longer than expected to release this product I didn't want to delay any longer while I worked on this new calendar rendering. It was kind of tricky to achieve it. I struggled with it for about 4 days before finally arriving at a decent solution for rendering the events across days.&nbsp; I hope you like it.</p>
<p>Event Calendar Pro includes 1 year of free upgrades, so anyone who already purchased it can just download it again from their order history to get the new version.</p>
<p>You can also try it out at <a href="http://demo.mojoportal.com">demo.mojoportal.com</a></p><br /><a href='https://www.mojoportal.com/event-calendar-pro-0002-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/event-calendar-pro-0002-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Event+Calendar+Pro+0.0.0.2+Released+https%3a%2f%2fwww.mojoportal.com%2fevent-calendar-pro-0002-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fevent-calendar-pro-0002-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/event-calendar-pro-0002-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/event-calendar-pro-0002-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/event-calendar-pro-0002-released.aspx</guid>
      <pubDate>Wed, 27 Aug 2008 14:39:24 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal Store - Grand Opening!</title>
      <description><![CDATA[<p>I'm happy to announce the Grand Opening of the <a href="http://www.mojoportal.com/store.aspx">mojoPortal Store</a>!</p>

<p>We actually had a <a href="http://www.mojoportal.com/mojoportal-2265-released-and-the-semi-grand-opening-of-the-mojoportal-store.aspx">semi-grand opening</a> a few weeks ago, but all you could do in <a href="http://www.mojoportal.com/store.aspx">the store</a> until now is <a href="http://www.mojoportal.com/buy-joe-a-beer-offer.aspx">buy me a beer</a>. Many Thanks to the kind folks who have bought me a beer since then! I really appreciated the beers and it really helped to be able to test the ecommerce before launching my first real product.</p>

<h3>Event Calendar Pro is now on sale!</h3>

<p>Yo can get a <a href="http://www.mojoportal.com/event-calendar-pro-offer.aspx">Single Installation License for $99</a> or a <a href="http://www.mojoportal.com/event-calendar-pro-server-license-offer.aspx">Server License for $299</a>, or an <a href="http://www.mojoportal.com/event-calendar-pro-enterprise-license-offer.aspx">Enterprise License with Full Source Code for $899</a></p>

<p>Checkout the <a href="http://www.mojoportal.com/event-calendar-pro-offer.aspx">product detail page</a> for more info and screen shots, or <a href="http://www.mojoportal.com/flashtutorials/eventcalendarprodemo">watch this video</a> for a guided tour of features.</p>
<br /><a href='https://www.mojoportal.com/mojoportal-store-grand-opening.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-store-grand-opening.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+Store+-+Grand+Opening!+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-store-grand-opening.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-store-grand-opening.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-store-grand-opening.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-store-grand-opening.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-store-grand-opening.aspx</guid>
      <pubDate>Wed, 20 Aug 2008 18:38:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.2.6.8 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.2.6.8, available now on the <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p>

<p>Actually I released the files yesterday but didn't manage to get to making a release announcement until today because I was still working on some related documentation that I wanted to link to.</p>

<h3>Whats New?</h3>

<h4>Google Analytics Integration</h4>

<p>As I mentioned in my previous post, we now have <a href="http://www.mojoportal.com/google-analytics-integration.aspx">Advanced Integration with Google Analytics</a> built in. There was a lot to talk about so I made that its own post yesterday instead of including it all in the release announcement.</p>

<h4>Gravatars</h4>

<p>For a long time I've been wanting to implement a better avatar system, because the one we had with just a list of little cartoons you could choose from seemed pretty lame and out of date. The other day, while reading <a href="http://www.hanselman.com/blog/">Scott Hanselman's blog</a>, I noticed that he was using <a href="http://gravatar.com/">Gravatars</a> in his blog comments. I looked into the implementation and it was trivial so I implemented support for Gravatars in the mojoPortal forums and profile system. I haven't got it in blog comments yet but will try to get to that in a future version. The idea of Gravatars is that you can have an avatar that follows you whenever you visit any sites that support Gravatar. If you look in the mojoPortal Forums, you'll see my Gravatar.</p>

<p><img alt="a screen shot of my Gravatar" border="0" height="192" src="http://www.mojoportal.com/Data/Sites/1/mygravater.png" style="margin-right:15px; float:left" width="106" />If you don't have a Gravatar it just displays a generic one:<img alt="a screen shot of a generic gravatar" height="154" src="http://www.mojoportal.com/Data/Sites/1/genericgravatar.png" width="103" /></p>

<p>&nbsp;</p>

<p>So, if you are a frequent visitor, go and get yourself a Gravatar. Gravatars are rated like movies G, PG, R, X, by default, mojoPortal is only configured to display Gravatars rated as G, but you can set this in Web.config or user.config:<br />
&lt;add key="GravatarMaxAllowedRating" value="G" /&gt;</p>

<p>Its just a minor feature but its a social feature that I think can make a community site more appealing.</p>

<h4>Enhanced OpenID Support</h4>

<p>We've had support for <a href="http://openid.net/">OpenID</a> authentication for quite a while now, but recently I came across <a href="https://www.idselector.com/">ID Selector</a>, an enhancement for the OpenID login box.</p>

<p><img alt="screen shot of open id selector" height="241" src="http://www.mojoportal.com/Data/Sites/1/openid-selector.png" width="481" /></p>

<p>It makes it easy for users to sign in or register using their existing open id enabled account.&nbsp; I've created documentation about enabling OpenID selector in mojoPortal here: <a href="http://www.mojoportal.com/using-openid.aspx">http://www.mojoportal.com/using-openid.aspx</a></p>

<p>Using <a href="http://www.mojoportal.com/using-openid.aspx">OpenID</a> or <a href="http://www.mojoportal.com/using-windows-live-authentication.aspx">Windows Live ID</a> can increase the number of users who register on your site because they don't have to create any new passwords. Everyone hates new passwords and thats probably one of the biggest reasons people resist registering on new sites, so eliminating that issue can increase registration and participation in your site.</p>

<h4>New Developer Extension Points</h4>

<p>Actually, I implemented these a few versions ago but just now got around to documenting them.</p>

<ul>
	<li><a href="http://www.mojoportal.com/user-registered-event-handlers.aspx">User Registered Event Handlers</a></li>
	<li><a href="http://www.mojoportal.com/page-created-event-handlers.aspx">Page Created Event Handlers</a></li>
</ul>

<p>These are basically plugin systems that let you build and plugin your own handlers so you can execute your own custom logic whenever a new user is created or a new page is created. I'm always trying to dicourage people from modifying the core of mojoportal and put their custom code in external projects. If you make changes in the core code and those changes don't go back into the project you are basically creating a fork and it will be difficult to upgrade to future versions without losing your custom code, so unless you are working on something that is going to be integrated back into the project you should never change code in the core. If you run into something where you think you are going to need to modify the core, let us know in the developer forum and maybe we can suggest a way to accomplish your goal using external projects, or maybe we will consider integrating your change if its appropriate, or maybe your questions will lead us to add new extension points to make it possible to do what you want without modifying the core.</p>

<h4>Event Calendar Pro Will Be On Sale Next Week</h4>

<p>My first for sale feature will be in the <a href="http://www.mojoportal.com/store.aspx">Store</a> sometime next week. The first version is feature complete, and you can try it out on <a href="http://demo.mojoportal.com">demo.mojoportal.com</a>. I still need to make help files, documentation, training/demo video, marketing text, licensing text, etc etc, so it will take me a few days to get that stuff done. I'll make a detailed post about this feature after its available.</p>

<p>&nbsp;</p>
<br /><a href='https://www.mojoportal.com/mojoportal-2268-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2268-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.2.6.8+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2268-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2268-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2268-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2268-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2268-released.aspx</guid>
      <pubDate>Sun, 17 Aug 2008 14:19:00 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal Gets Advanced Google Analytics Integration</title>
      <description><![CDATA[<p>As of version 2.2.6.8, <a href="http://www.mojoportal.com">mojoPortal</a> now includes <a href="http://www.mojoportal.com/google-analytics-integration.aspx">advanced integration</a> with <a href="http://www.google.com/analytics/">Google Analytics</a>. Google provides you with a basic script that you can use to track page views in your site, it looks like this:</p>
<p>&lt;script type=&quot;text/javascript&quot;&gt;<br />
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);<br />
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&quot;));<br />
&lt;/script&gt;<br />
&lt;script type=&quot;text/javascript&quot;&gt;<br />
var pageTracker = _gat._getTracker(&quot;UA-xxxxxxx-x&quot;);<br />
pageTracker._trackPageview();<br />
&lt;/script&gt;</p>
<p>Historically, in mojoPortal and in other ASP.NET sites, you could always put this script into the bottom of your masterpage, in mojoPortal, that would be the layout.master file in your skin. This would get you basic tracking and it was very easy to do. Now in the current version of mojoPortal, you just enter this part &quot;UA-xxxxxxx-x&quot; from the script provided by google into your Site Settings&nbsp; under (key icon) Administration Menu &gt; Site Settings &gt; API Keys like this:</p>
<p><img height="194" width="544" src="http://www.mojoportal.com/Data/Sites/1/ganalytics-sitesettings.png" alt="Google Analytics Setting in mojoPortal" /></p>
<p>of course your code will be different than &quot;UA-xxxxxxx-x&quot;, that just represents the format of your tracking code.</p>
<p>If you are using a custom skin, the only other requirement is to put this in the bottom of your layout.master file just before the closing form tag:</p>
<p>&lt;portal:mojoGoogleAnalyticsScript ID=&quot;mojoGoogleAnalyticsScript1&quot; runat=&quot;server&quot; /&gt;<br />
&lt;/form&gt;</p>
<p>All the skins included in mojoPortal already have this so if you are using one of those you don't have to do anything other than the site setting above.</p>
<p>mojoPortal will automatically setup the script and it will do a lot more than the basic script.</p>
<p>One of the first advantages, is that it doesn't matter if you change skins or use different skins on different pages, the script will just work as long as the skin has the needed control. So for example in the past, unless you also put your google analytics script into the printerfriendly skin, it wasn't tracking page views when users clicked the printer friendly link, but now it does. THis also helped me with tracking traffic on demo.mojoportal.com, in the past I never bothered tracking that site because users could always change the skin and it was tedious to have to put my tracking code in all the skins. Now I just set it in user.config, you can set it there like this and it will trump the one in site settings : &lt;add key=&quot;GoogleAnalyticsProfileId&quot; value=&quot;UA-xxxxxxx-x&quot; /&gt;.&nbsp; The only reason I use it on the demo site is so that no-one can change it in site settings and affect my tracking. I mean people get to login to the demo site as admin after all.&nbsp; Of course for multi site installations you want to always use the sitesettings.</p>
<p>In addition to the convenience of not having to maintain tracking codes in all your skins, mojoPortal will automatically label your visitors as Members if they are registered on your site, and if they make a purchase in WebStore or the Event Calendar Pro features they will be labelled as Customers. You will see this under the &quot;User Defined&quot; section of reports beneath Visitor reports. mojoPortal will also track ecommerce transactions in Google analytics from WebStore and from Event Calendar Pro features.</p>
<p>Site Search is also tracked, but to take advantage of it you need to configre your settings in google analytics like this:</p>
<p><img height="239" width="512" src="http://www.mojoportal.com/Data/Sites/1/mojo-ganalytics-search-config.png" alt="google analytics search configuration, add a q as the query parameter for search" /></p>
<p>Note that you just enable it and set &quot;q&quot; as the Query Parameter. Now you will start to capture data in the Site Search Reports beneath the Content Reports.</p>
<p>You can also enable tracking of page load time by setting this in your Web.config or user.config: &lt;add key=&quot;TrackPageLoadTimeInGoogleAnalytics&quot; value=&quot;true&quot; /&gt; Unfortunately, as of the time of this writing, you won't see this yet in your google analytics reports unless you are in their beta program. But, by starting to capture data now, you will see it later when event reports come out of the beta process.</p>
<p>Another thing you can do is capture the google analytics data into your own IIS or apache web logs by setting this in Web.config or user.config: &lt;add key=&quot;LogGoogleAnalyticsDataToLocalWebLog&quot; value=&quot;true&quot; /&gt;<br />
To get any value out of this data you would need to get google <a href="http://www.google.com/urchin/index.html">Urchin</a> and use it to analyze your web logs. Another reason to capture this data in your logs is because google analytics only keeps your data for 25 months.</p>
<p>If you have more than one host name that your site responds to like mojoportal.com and www.mojoportal.coom, recommend that you <a href="http://www.mojoportal.com/forcing-a-preferred-host-name.aspx">force a preferred host name</a>, to keep your reportng consistent.</p>
<p>Since anyone can view the rendered source of a page and see your tracking code, its possible for someone else to put your code in their site and create bogus data in your reports. To avoid this, after <a href="http://www.mojoportal.com/forcing-a-preferred-host-name.aspx">forcing a preferred host name</a>, I recommend that you set a filter on your google analytics profile. Click the Add Filter link:</p>
<p><img height="94" width="555" src="http://www.mojoportal.com/Data/Sites/1/ganalytics-filters.png" alt="screen shot showing the Add Filter link in google analytics" /></p>
<p>then configure it like this:</p>
<p><img height="327" width="605" src="http://www.mojoportal.com/Data/Sites/1/ganalytics-hostname-filter.png" alt="google analytics host name filter configuration screen shot" /></p>
<p>I'm really just learning about all the possibilities for taking full advantage of Google Analytics, I've learned what I have so far from the top book in this picture and hope to learn more ways to make it easy to get good tracking integrated into mojoPortal.</p>
<p><img height="297" width="396" alt="screen shot of a stack of books about google analytics and search engine optimization" src="http://www.mojoportal.com/Data/Sites/1/analytics-books.jpg" /></p>
<p><br />
&nbsp;</p><br /><a href='https://www.mojoportal.com/mojoportal-gets-advanced-google-analytics-integration.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-gets-advanced-google-analytics-integration.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+Gets+Advanced+Google+Analytics+Integration+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-gets-advanced-google-analytics-integration.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-gets-advanced-google-analytics-integration.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-gets-advanced-google-analytics-integration.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-gets-advanced-google-analytics-integration.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-gets-advanced-google-analytics-integration.aspx</guid>
      <pubDate>Sat, 16 Aug 2008 16:16:59 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.2.6.5 Released and the Semi-Grand Opening of the mojoPortal Store</title>
      <description><![CDATA[<p>
	I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.2.6.5! Its been 2 months since our last release and a lot of good progress has been made.</p>
<h3>
	What's New?</h3>
<p>
	Upgrade to the newest version of MySql Connector<br />
	Upgrade to <a href="http://www.fckeditor.net/">FCKeditor</a> 2.6.2<br />
	Upgrade to the latest version of NeatHtml<br />
	Usability Improvements for google map enabled features and improvements to the search architecture as mentioned in <a href="http://www.mojoportal.com/coming-soon-the-mojoportal-store.aspx">this previous blog post</a>.<br />
	A number of bug fixes as reported in the forums since the last release.<br />
	WebStore Improvements - the web store now supports selling download products using Authorize.NET, PaPal, and Google Checkout<br />
	A new plugin system for handling PageCreated events so developers can write their own handlers that execute after a page is created - not yet documented<br />
	A new plugin system for handling UserCreated events so developers can write their own handlers that execute after a nw user is created - not yet documented.</p>
<p>
	As always, be sure and backup your database and site before upgrading, and if you run into any problems post in the forums and we will try to help.</p>
<h3>
	The Semi Grand Opening of the mojoPortal Store</h3>
<p>
	I call it semi grand because no real products are available yet, all you can do in <a href="http://www.mojoportal.com/store.aspx">the store</a> is buy me a beer at the moment. I expect to have my first product, Event Calendar Pro available by the end of July. You can see what I have so far for the Event Calendar Pro feature on the demo site <a href="http://demo.mojoportal.com/events">http://demo.mojoportal.com/events</a>. I decided to go ahead and open the store now because I thought it might interest others who want to use the mojoPortal WebStore to sell download products. The WebStore feature is very rudimentary now but it will be getting more love as I improve it to meet my own ecommerce needs. I will try to update some documentation on the WebStore soon. The one tip I will mention is you configure "Products" then you configure "Offers". Products are not sold directly, but by Offers. An Offer can have 1 or more products and price is set at the Offer level, not at the product level. The Product Catalog is very bare bones, we don't have categories yet so its really only good for a short list of products.</p>
<p>
	I've also opened up a store on CafePress to sell mojoPortal merchandise: <a href="http://www.cafepress.com/mojoportal">http://www.cafepress.com/mojoportal</a>.</p>
<p>
	<a href="http://www.cafepress.com/mojoportal"><img alt="t-shirt" height="150" src="http://www.mojoportal.com/Data/Sites/1/mojo-cafepressshirt.jpg" width="150" /></a><a href="http://www.cafepress.com/mojoportal"><img alt="ladies t-shirt" height="150" src="http://www.mojoportal.com/Data/Sites/1/mojo-cafepress-ladiestshirt.jpg" width="150" /></a><a href="http://www.cafepress.com/mojoportal"><img alt="coffee mug" height="150" src="http://www.mojoportal.com/Data/Sites/1/mojo-cafepress-mug.jpg" width="150" /></a></p>
<p>
	A great way to support mojoPortal, each item purchased contributes $5 to the project.</p>
<p>
	I'll announce the real Grand Opening of the mojoPortal Store as soon as our first product is available.</p>
<br /><a href='https://www.mojoportal.com/mojoportal-2265-released-and-the-semi-grand-opening-of-the-mojoportal-store.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2265-released-and-the-semi-grand-opening-of-the-mojoportal-store.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.2.6.5+Released+a...+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2265-released-and-the-semi-grand-opening-of-the-mojoportal-store.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2265-released-and-the-semi-grand-opening-of-the-mojoportal-store.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2265-released-and-the-semi-grand-opening-of-the-mojoportal-store.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2265-released-and-the-semi-grand-opening-of-the-mojoportal-store.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2265-released-and-the-semi-grand-opening-of-the-mojoportal-store.aspx</guid>
      <pubDate>Wed, 23 Jul 2008 15:09:00 GMT</pubDate>
    </item>
    <item>
      <title>Coming Soon - The mojoPortal Store</title>
      <description><![CDATA[<p>Back in October of 2006 when I first launched my company, Source Tree Solutions to work full time on mojoPortal, I had kind of a fuzzy business plan with the main idea being that I would make revenue by offering consulting around the free mojoPortal product. I guess in my wide eyed optimism I thought that doing this kind of consutling would improve mojoPortal and in fact it did to some extent. A few customers actually sponsored development for things that improved mojoPortal for everyone. But most of the consutling was really for things that were not of any general benefit beyond the customer's needs, so in some cases I felt like taking on this work was actually slowing me down from progress on improving mojoPortal. Forming a business around consulting means you always have to be taking on more projects to keep the business going because you don't make any money unless you are doing billable work. Now I am in the process of shifting my strategy to sell some premium features on top of the free mojoPortal core product. I think that selling some products in order to generate revenue will be better because it will pay for the free time I need to keep improving the mojoPortal. Consulting will remain a part of my business model but my plan is to keep it very limited goig forward.</p>
<p>So with this changing strategy in mind I've been working feverishly to get my first product completed so that I can open up a Store here on <a href="http://www.mojoportal.com">mojoPortal.com</a> in early July and begin selling it. The first feature for sale will be a more advanced Event Calendar that allows selling tickets to events. Following that I plan to build a Form Wizard that allows users to easily create forms to capture arbitrary data. I also plan a Fund Raiser feature and an add on package for Web Farm support. I have a lot of ideas for premium features, but my main goal is to just get enough revenue rolling in to allow me to keep improving the core. There are a lot of planned improvements for the core that I'm eager to complete, like built in support for tagging, comments, and content versioning so that they can easily be enabled for any feature with little effort. Eventually I'd like to open the store up so that other developers can also sell products there too, so that it can be a market place something like snowcovered.com which sells add ons for DNN.</p>
<p>One of the reasons I chose to implement a commerce enabled feature as my first product was so that I could figure out which pieces of the commerce architecture need to b re-usable. We already have a WebStore project that I will be using to sell my premium products and this WebStore is one of the free open source features of mojoPortal. So far the WebStore is very rudimentary, it can only sell download products and its really a bare bones implementation for the product catalog at the moment. The project was originally started under a sponsorship by BrainBeacon but was never completed fully because they went out of business before ever opening a store. Its hard to really polish up a complex feature like ecommerce unless you are actually using it for business or supporting a customer who is using it. So using it to sell my own products will lead to a lot of improvement in the WebStore feature. I've been doing a lot of re-factoring in the WebStore to get the re-usable pieces built into mojoPortal core so they can be used across features. For example, Country List, State List, Currency List, Language List and their administrative features were originally in the WebStore projects but I've moved them into the core of mojoPortal because they will be needed by other features. Support for Payment gateways like Google Checkout and PayPal are also being moved into the core so they can be re-used by any feature that wants to implement ecommerce. Since my first product will be an Event Calendar that allows selling tickets it will need to leverage a lot of the same ecommerce code that the WebStore does. Rather than re-implement it in every feature it has forced me to think about the best way to make most of it easily re-usable.</p>
<p>Implementing this more advanced Event Calendar has also led me to other improvements in the core of mojoPortal. For example one of the features in my new Event Calendar is support for recurring events. When you create a recurring event it actually creates event instances going out x number of years. Since&nbsp; events are also searchable using the site search, you have to update the search index for each created event as well. What I found was that creating events in rapid succession due to recurrence could lead to some problems due to the way I was handling the indexing of items. The indexing was triggered by the saving of the event then code to update the index was spawned on a new thread so that it doesn't block the UI. Under some circumstances the writing to the index was not in the proper sequence and errors could occur. So I implemented a queue in the database so that items to be indexed could be queued and then processed in batch on a background thread while keeping the sequence correct because everything is processed in queue sequence.</p>
<p>Another thing that got improved in the core as I implemented this new Event Calendar is module settings, which is just a place to store feature specific settings for instances of a feature. In a number of the mojoPortal features we have support for google maps, but some of the settings needed for google maps were not well supported by module settings. For example the google maps api defines some constants for the Map Type like G_NORMAL_MAP, G_SATELLITE_MAP, G_HYBRID_MAP, etc. When I first enabled support for specifying the map type, it was done in module settngs by entering the constant in a textbox like this:</p>
<p><img height="445" width="509" src="http://www.mojoportal.com/Data/Sites/1/gmapbefore.png" alt="" /></p>
<p>pretty yucky and not user friendly since its easy to put something incorrect there and nothing to tell the user what is acceptable. So as much as this bothered me I could not conceive of shipping a paid product with this kind of setting so I implemented ISettingControl as a way to introduce a possibility to use a custom UserControl for this setting and now for all features that use the google map the setting looks like this:</p>
<p><img height="445" width="509" src="http://www.mojoportal.com/Data/Sites/1/gmapafter.png" alt="" /></p>
<p>much better implemented as a dropdown list! Actually not shown in the screen shot is I also implemented a dropdown for the zoom level so that it is limited to the range of acceptable values.</p>
<p>So, in short, developing features to sell has made me think more deeply about what is needed in the core of mojoPortal to support 3rd party feature development more easily, because its made me think more like a third party.</p>
<p>I haven't blogged much this month because I've been so busy working to get this feature completed and to get the store opened, but thught I should go ahead and post this to let people know what I'm doing. Several people have asked recently what happened to the store demo site as it is currently off line. I will have that site back up soon. I just have a little more re-factoring of the WebStore code to do and I will setup the demo store again.</p>
<p>I'm very excited about the new store opening soon and will announce it here in the blog as soon as its open. There will also be anew release of mojoPortal soon with the improvements I've mentioned above as well as a few bug fixes and skin tweaks to better support Firefox 3.</p><br /><a href='https://www.mojoportal.com/coming-soon-the-mojoportal-store.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/coming-soon-the-mojoportal-store.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Coming+Soon+-+The+mojoPortal+Store+https%3a%2f%2fwww.mojoportal.com%2fcoming-soon-the-mojoportal-store.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fcoming-soon-the-mojoportal-store.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/coming-soon-the-mojoportal-store.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/coming-soon-the-mojoportal-store.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/coming-soon-the-mojoportal-store.aspx</guid>
      <pubDate>Fri, 27 Jun 2008 10:58:05 GMT</pubDate>
    </item>
    <item>
      <title>Blog Improvements Landed in svn trunk</title>
      <description><![CDATA[<p>I put a little more love into the <a href="http://www.mojoportal.com">mojoPortal</a> blog feature in the last few days. </p>
<p>We now have friendly urls for blog posts. Instead of the previous ~/BlogView.aspx?pageid=2&amp;mid=19&amp;ItemID=258, we now have ~/the-title-of-your-post.aspx</p>
<p>I also added a Next Previous, navigation to make it easier to page through the posts.</p>
<p>There is also a new Site Map for blog posts to make it easier for google and other search indexes to crawl your blog posts and improve your SEO. You can ad your blog site map to <a href="https://www.google.com/webmasters/tools/">google webmaster tools</a> as yoursiteroot/BlogSiteMap.ashx</p>
<p>This is available in svn trunk now for developers and will be in the next release for everyone else.</p>
<p>&nbsp;</p><br /><a href='https://www.mojoportal.com/blog-improvements-landed-in-svn-trunk.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/blog-improvements-landed-in-svn-trunk.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Blog+Improvements+Landed+in+svn+trunk+https%3a%2f%2fwww.mojoportal.com%2fblog-improvements-landed-in-svn-trunk.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fblog-improvements-landed-in-svn-trunk.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/blog-improvements-landed-in-svn-trunk.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/blog-improvements-landed-in-svn-trunk.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/blog-improvements-landed-in-svn-trunk.aspx</guid>
      <pubDate>Thu, 15 May 2008 23:39:38 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.2.5.2 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.2.5.2.</p>
<h3>New this release:</h3>
<p>AddThis.com button added to blog and to skins to make it easy for others to bookmark and share your site pages using popular bookmarking services. See my <a href="http://www.mojoportal.com/BlogView.aspx?pageid=2&amp;ItemID=434&amp;mid=19">previous post</a> for more info.</p>
<h4>Contact Form Improvements</h4>
<p>The contact form now persists messages to the database so messages are not lost if smtp is not configured. A cool new UI for reviewing messages has been added. It uses ExtJs Window for which I implemented a new .NET WebControl.</p>
<p><img width="604" height="562" alt="screen shot of message list" src="http://www.mojoportal.com/Data/Sites/1/contactformmessagelist.png" /></p>
<p>The window and the panes are re-sizable by dragging. I also added a Web.config option that should help users who have been reporting problems with contact form messages not being encoded correctly for Russian and other languages.</p>
<p>&lt;!-- leave this blank for ascii encoding --&gt;<br />
&lt;add key=&quot;SmtpPreferredEncoding&quot; value=&quot;&quot; /&gt;<br />
&lt;!-- example for Russian encoding <br />
&lt;add key=&quot;SmtpPreferredEncoding&quot; value=&quot;koi8-r&quot; /&gt;<br />
--&gt;</p>
<h4>New Skin - extjsViewport1</h4>
<p>I also implemented a new skin based on the ExtJs complex layout example, its named extjsViewport1.</p>
<p><img width="400" height="310" alt="screen shot of extjsViewport1 skin" src="http://www.mojoportal.com/Data/Sites/1/extjsViewport1skin.gif" /></p>
<p>I'm really just scratching the surface so far, I think it will be possible to have feature instances collapse accordian style and the possiblity to drag and drop feature instances to re-arrange content on the page. So far just some foundation work is done, but it is usable.</p>
<p>As always, be sure and backup your site and database before upgrading and if you have any troubles post in the forums and I will try to help.</p>
<p>&nbsp;</p><br /><a href='https://www.mojoportal.com/mojoportal-2252-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2252-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.2.5.2+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2252-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2252-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2252-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2252-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2252-released.aspx</guid>
      <pubDate>Thu, 03 Apr 2008 12:05:07 GMT</pubDate>
    </item>
    <item>
      <title>One Bookmarking Service to Rule Them All and in The Widget Bind Them</title>
      <description><![CDATA[<p>I'm sure those of you out there reading this blog also read a lot of other blogs and have noticed over time the chickletization of blog pages with little icons for all the different bookmarking services like <a href="http://del.icio.us/">Del.icio.us</a> and <a href="http://digg.com/">Digg</a>, and on and on with the ever growing plethora of other services. I was starting to feel that the <a href="http://www.mojoportal.com">mojoPortal</a> blog was a little behind the times in this respect. Then I noticed on <a href="http://www.techcrunch.com/">TechCrunch</a>, the use of the <a href="http://www.addthis.com/">AddThis.com</a> widget. After looking into the integration I could see that it was relatively low hanging fruit to implement a .NET control that makes it easy to add the AddThis button.</p>
<p><img width="556" height="343" alt="" src="http://www.mojoportal.com/Data/Sites/1/addthiswidget.png" /></p>
<p>Use of the .NET control in markup is like this:</p>
<p>&lt;mp:AddThisButton ID=&quot;at1&quot; runat=&quot;server&quot; <br />
AccountId=&quot;&quot; <br />
ButtonImageUrl=&quot;~/Data/SiteImages/addthisbookmarkbutton.gif&quot;<br />
Text=&quot;Share This Using Popular Bookmarking Services&quot;<br />
CustomBrand=&quot;mojoPortal&quot;<br />
CustomLogoUrl=&quot;http://www.mojoportal.com/Data/mojoportal_box_dropshadow.png&quot;<br />
CustomLogoBackgroundColor=&quot;e8e8e8&quot;<br />
CustomOptions=&quot;&quot;<br />
UrlToShare=&quot;&quot;<br />
TitleOfUrlToShare=&quot;&quot;<br />
/&gt;</p>
<p>If you leave the UrlToShare and TitleofUrlToShare blank it automatically uses the current page which makes it easy to add it to the layout.master file of your mojoPortal skin so it appears on every page.</p>
<p>In the blog we databind those properties to the title and url of the blog post.</p>
<p>If the account id is not set the control doesn't render.</p>
<p>Now we can just let AddThis.com keep track of the emerging services and add them for us instead of having to add a new chicklet every time some cool new service appears.</p>
<p>At the time of this post, this feature is only available from the mojoPortal <a href="http://www.mojoportal.com/tortoisesvn.aspx">source code repository</a>, but it will be in the next release coming soon.</p>
<p><b>Update 5:39 PM:</b> I just discovered that AddThis.com also has a button for RSS subscriptions so that one button can offer all the popular services. So I will be implementing use of that soon too and doing away with the multiple graphics (chicklets) for RSS subscriptions that we currently have. This is what the new button will look like (there are several options but this is my pick), I'll implement it so that users can choose their own button graphic.</p>
<p>&nbsp;<a href="http://www.addthis.com/feed.php?pub=joeaudette&amp;h1=http%3A%2F%2Ffeeds.feedburner.com%2Fmojoportal&amp;t1="><img width="160" height="24" src="http://www.mojoportal.com/Data/Sites/1/addthisrssfeed.png" alt="Subscribe to my feed" /></a></p>
<p>click it to see the rss feed subscription choices. I don't want to have to keep up with all those chicklets either, so AddThis has a great idea here.</p>
<p>&nbsp;</p><br /><a href='https://www.mojoportal.com/one-bookmarking-service-to-rule-them-all-and-in-the-widget-bind-them.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/one-bookmarking-service-to-rule-them-all-and-in-the-widget-bind-them.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=One+Bookmarking+Service+to+Rule+Them...+https%3a%2f%2fwww.mojoportal.com%2fone-bookmarking-service-to-rule-them-all-and-in-the-widget-bind-them.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fone-bookmarking-service-to-rule-them-all-and-in-the-widget-bind-them.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/one-bookmarking-service-to-rule-them-all-and-in-the-widget-bind-them.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/one-bookmarking-service-to-rule-them-all-and-in-the-widget-bind-them.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/one-bookmarking-service-to-rule-them-all-and-in-the-widget-bind-them.aspx</guid>
      <pubDate>Fri, 28 Mar 2008 13:48:50 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.2.5.0 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.2.5.0.</p>
<p>This release contains some significant database schema changes, almost every table has some new columns. As with every upgrade, its important that you backup your site and your database before upgrading so that you can get back to a known working condition should anything go wrong. I fully expect the upgrade to go smoothly and my advice about backing up is no different than any other release. I just figure that since the upgrade scripts are touching so many tables it merits emphasizing this precaution.</p>
<p>So why were so many tables modified this time? Well its laying the foundation for some things to come.</p>
<h3>Architectural Changes - Guids are Good</h3>
<p>Although we are using integer ids on most tables in mojoPortal (which is optimal for performance), we have added Guids (Globally Unique Identifiers) to most tables that can be thought of as supplemental primary keys and foreign keys. Guids are guaranteed to be unique across machines. It seems almost impossible but supposedly you can generate Guids all day and never make the same one twice or conflict with ones generated on other machines. So what are the benefits of having these Guids on your tables?</p>
<p>One benefit is that it makes it more feasible if you need to combine data from 2 mojoPortal sites into one site. It still would require some custom query work, but the basic idea is that the imported data would not get the same integer ids as it had in the previous system, but the relationships between rows could be re-established using the Guids.</p>
<p>The other benefit and perhaps the more important one is that it allows flexible relationships between tables that make it easier to re-use some functionality across features. For example, I plan soon to implement some things like Content Rating and Content Versioning. So for example I will need a ContentHistory table for the versioning so I can store a copy of every change to a content instance. Instead of implementing this versioning just for the Html Content feature, I'm implementing it in a way that multiple features can use it. So instead of having joins between the ContentHistory table and the HtmlContent table, I will store the history using the Guid that identifies the Html Content instance. It will be able to retrieve its history by passing in its Guid. I could then re-use it in the Blog feature if I want because blog items have their own Guids and can retrieve their history by passing in a Guid. Same thing for the event calendar feature. So basically the ContentHistory table doesn't care which features store their history in it and doesn't have any hard foreign key relationships, but instead loose relationships by virtue of Guids. So the ContentHistory table will have a column named ContentGuid which can relate to the Guid columns of any feature specific tables.</p>
<p>Consider the ContentRating table, again it will have a column named ContentGuid, but I could pass in any feature instance specific Guid, or I could even pass in a page Guid and have ratings at the page level or content instance level. I'll be able to re-use it in Blogs, Html Content, Events, Forums, or anywhere else I need to use it. It will of course be up to the feature or page or whatever to know how to retrieve its ratings or history using its own Guids.</p>
<p>I have not yet implemented&nbsp; Content Ratings or Content Versioning, but with the Guids in place I can now implement it once and use it in flexible ways across various features. You won't notice anything in the user experience yet from this addition of Guid columns, but the value of this will be more apparent in future releases. These are just examples too, there are actually a lot more things like tagging, meta data and other sub systems that I want to be able to re-use across features and the use of Guids will make that much easier to implement.</p>
<p>Also, this release introduces <a href="http://www.subsonicproject.com/">SubSonic</a> into our architecture which will make it much easier going forward to support all the different databases. See <a href="http://www.mojoportal.com/BlogView.aspx?pageid=2&amp;ItemID=429&amp;mid=19">my previous post</a> for more information about the use of SubSonic in mojoPortal.</p>
<h3>Blog Enhancements</h3>
<p>Its now possible to have a google map in your blog posts by entering a location. Not sure how often you will find that useful, but its there if you need it. A more exciting enhancement to the blog is support for <a href="http://www.odiogo.com/">Odiogo</a>, a free service that can generate audio podcasts from you posts automatically. To use it all you have to do is enter your Odiogo feed id and podcast url into the blog settings. Both of these enhancements were pretty low hanging fruit, that is, easy to implement.</p>
<h3>Event Calendar Enhancements</h3>
<p>Its now possible to enter a location for an Event and have a google map appear in the event details page. The google maps api key now can be stored in Site Settings for all google map enabled features.</p>
<h3>Forum Enhancement</h3>
<p>A small but useful enhancement is the ability to view threads by user. For any user that has made forum posts now a link to &quot;View Posts&quot; appears below their forum signature as well as on the member list and profile pages.</p>
<h3>A New Image Gallery</h3>
<p>I blogged about this new feature <a href="http://www.mojoportal.com/BlogView.aspx?pageid=2&amp;ItemID=428&amp;mid=19">here</a>.</p>
<h3>More work on WebStore</h3>
<p>I've been working a lot recently on getting the WebStore feature working on MySql for two reasons. One is so that I can demo it at the <a href="http://en.oreilly.com/mysql2008/public/content/exhibitors">MySql Conference</a>. The other is so that I can open up a store on this site to sell premium features. Its very challenging making a living as an open source developer when you give away your products. I do ok when I get consulting work but that is sporadic and not all the work I get has any benefit to the mojoPortal project so sometimes its actually slowing down progress of the project when I take consulting work. Most of the actual progress is still happening when I'm working for free on my own time. So I'm hoping that I can come up with some premium features that you would be willing to pay for. The core of mojoPortal will always remain open source but I need to get some revenue stream going so that I can afford to keep working on improving the core features. I'm also going to roll out a corporate benefactor program soon to make it easier for companies who are building their infrastructure on mojoPortal to get involved in supporting the project financially and influencing the direction of progress.</p>
<p>The WebStore feature should still be considered very experimental, but as I get it running on this site and begin to use it in actual commerce, it will get polished up more quickly and soon be in a condition for others to use.</p>
<p>This release also includes fixes for various bugs posted in the forums since the last release.</p>
<p>As always, be sure and backup your site and database before upgrading, and if you run into any problems post in the forums and I will try to help.</p>
<h3>New Tutorial Videos</h3>
<ul class="simplelist">
    <li><a href="../../../flashtutorials/managesitehierarchy/">How To Manage The Site Hierarchy</a> - creating pages, moving them arround, managing parent child relationships between pages.</li>
    <li><a href="../../../flashtutorials/publishcontentonmultiplepages/">How To Publish Content on Multiple Pages</a>.</li>
</ul><br /><a href='https://www.mojoportal.com/mojoportal-2250-released.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2250-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.2.5.0+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2250-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2250-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2250-released.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/mojoportal-2250-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2250-released.aspx</guid>
      <pubDate>Thu, 20 Mar 2008 14:32:48 GMT</pubDate>
    </item>
    <item>
      <title>Automatic Podcasting From Your Blog with Odiogo</title>
      <description><![CDATA[<p>Recently I came across <a href="http://www.odiogo.com/">Odiogo</a>, a service that generates audio podcasts from your blog posts automatically. Considering its text to speech technology, I was surprised how good it sounds. I mean you can tell its Mr Roboto but the voice and speech are impressively more natural sounding than any other text to speech things I've heard so far.</p>
<p>Their business model is to place audio ads inside the generated mp3s which makes sense as a way to offer the service free. Pretty cool idea they have going if you ask me.</p>
<p>So I signed up last week and within some hours I had an account and a link to the <a href="http://podcasts.odiogo.com/mojoportal-change-blog/podcasts-html.php">podcast page</a> they generated for my blog.</p>
<p>Today I got around to integrating it into the mojoPortal blog to make it easy, so all you have to do is enter your odogio feed id and your podcast page url. They have some javascript that sets up a &quot;Listen Now&quot; button right in your post which is very nice. Those of you reading this from a feed reader will have to visit this site to see the listen now button or visit the podcast page linked above to go directly to the podcasts.</p>
<p>So now its possible to subscribe to this blog in iTunes if you like.</p>
<p>I also implemented the ping to their service page when a new post is added so it can know right away that there is new content to convert from text to speech. It will be interesting to see how long it takes from the time of making a new post to when the podcast is ready.</p>
<p>This feature will be in svn trunk by later tonight for anyone interested in trying it themselves.</p>
<h3>UPDATE 2008-03-24:</h3>
<p>Since I've been using the Odiogo service on this site, several times I've seen extremely long page loads on the blog, where apparently the Odiogo service goes down and the delay in rendering the page is caused because the javascript coming off the Odiogo server is not available. Finally the request times out and the page loads without the &quot;Listen Now&quot; button. So I've been turning the Odiogo feature off when this happens by removing my Odiogo feed id. This is something I hope the Odiogo folks can figure out and resolve effectively, possibly due to growing pains but I'm not one to keep using services when stuff like that starts happening repeatedly. They either need to improve the availability of their service or let us host the javascript on our own sites so that when the service is down it doesn't kill performance of our sites. So far this has happened twice that I know of and who knows if it happens when I'm not looking so its making me leave the Odiogo feature turned off because I don't have confidence in it.</p><br /><a href='https://www.mojoportal.com/automatic-podcasting-from-your-blog-with-odiogo.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/automatic-podcasting-from-your-blog-with-odiogo.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Automatic+Podcasting+From+Your+Blog+with+Odiogo+https%3a%2f%2fwww.mojoportal.com%2fautomatic-podcasting-from-your-blog-with-odiogo.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fautomatic-podcasting-from-your-blog-with-odiogo.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/automatic-podcasting-from-your-blog-with-odiogo.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/automatic-podcasting-from-your-blog-with-odiogo.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/automatic-podcasting-from-your-blog-with-odiogo.aspx</guid>
      <pubDate>Sun, 16 Mar 2008 18:53:42 GMT</pubDate>
    </item>
    <item>
      <title>New Image Gallery Landed in svn</title>
      <description><![CDATA[<p>Before I went on vacation I implemented a new image gallery based on this <a href="http://www.codeplex.com/PhotoHandler">PhotoHandler project on Codeplex</a> that was pointed out to me by Todd Lewis. We already had a <a href="http://www.mojoportal.com/gallery.aspx">photo gallery</a> feature but its a fairly low frills thing, you have to upload images one at a time. My thinking has been that eventually I'll implement one that integrates with Flickr and some day I may yet do that.</p>
<p>The new one was pretty easy to intgrate into mojoPortal, it allows you to just point it at a folder containing images and it does the rest, creating thumbnails, web size images etc. So the idea with the new one is you organize the photos into folders on your local machine then upload the whole parent folder using an ftp client like FileZilla or whatever you use. The folder(s) need to be uploaded to Data/Sites/[SiteID]/foldergalleries folder, but from there you can nest them any way you want.</p>
<p>I did implement a feature for uploading files but the ftp approach is the sweet spot.</p>
<p>You can see my vacation photos using the new gallery here: <a href="http://www.joeaudette.com/photography.aspx">http://www.joeaudette.com/photography.aspx</a></p>
<p>Notice how it makes a thumbnail for the sub folders by amalgamating the images contained in it into a thumbnail</p>
<p><a href="http://www.joeaudette.com/photography.aspx"><img width="420" height="207" alt="" src="http://www.mojoportal.com/Data/Sites/1/photogallery.png" /></a></p>
<p>So there are 3 top level folders, ChichenItza, resort, and skyline</p>
<p>Its available now in svn trunk for developers and will be in the next release which will probably be in the next few weeks.</p><br /><a href='https://www.mojoportal.com/new-image-gallery-landed-in-svn.aspx'>Joe Audette</a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/new-image-gallery-landed-in-svn.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=New+Image+Gallery+Landed+in+svn+https%3a%2f%2fwww.mojoportal.com%2fnew-image-gallery-landed-in-svn.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fnew-image-gallery-landed-in-svn.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/new-image-gallery-landed-in-svn.aspx</link>
      <author>joe.audette@gmail.com (Joe Audette)</author>
      <comments>https://www.mojoportal.com/new-image-gallery-landed-in-svn.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/new-image-gallery-landed-in-svn.aspx</guid>
      <pubDate>Thu, 21 Feb 2008 21:35:52 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.2.4.6-b Released</title>
      <description><![CDATA[<p>I've just released <a href="http://www.mojoportal.com">mojoPortal</a> 2.2.4.6-b, its available now on the download page.</p>
<p>Nothing changed in the core schema thats why the version only changed to -b. However there are some changes that make it worth the effort to upgrade.</p>
<p>The Poll Feature by Christian Fredh and the Survey Feature by Rob Henry have been revamped to make them a little more user friendly and more consistent with other features. These are 2 very cool features which up till now I haven't used much myself because this site is running on MySql and they were only implemented for MS SQL. Rob actually implemented most of the MySql layer for the Survey recently so I picked up where he left off and finished it then went on and implemented MySql for the Poll as well. You can try them out on this site, the <a href="http://www.mojoportal.com/poll.aspx">Poll is here</a> and the <a href="http://www.mojoportal.com/survey.aspx">Survey is here</a>. Go ahead and try them, I'd be interested in your answers to some of the questions I created.</p>
<p>Another new feature is the link browser in the FCKeditor is now implemented so you can browse and link to pages in the site or files in the file system more easily.</p>
<p>As always back up your site and db before upgrading. You'll want to be sure and get the new Web.config file, don't try to keep the old one, just restore any customizations from the old one to the new one.</p>
<p>Although the core schema didn't change you still need to visit the /Setup/Default.aspx page after uploading the new files so it can upgrade the Poll and Survey.</p>
<p>Other than these new features there are only a couple of minor bug fixes. The SQLite blog bug is fixed and it was the worst one reported since the previous release.</p>
<p>Also wanted to mention <a href="http://tirania.org/blog/archive/2008/Jan-23.html">as noted in Miguel's blog</a>, mojoPortal is also available in rpm format for a few flavors of Linux. The root folder is <a href="http://download.opensuse.org/repositories/Mono:/Community/">here</a>, you can drill down through the different distros to find the correct package. This is all thanks to the magic of the OpenSuse Build service and Joseph Hill who initially set it up for mojoPortal. The rpms don't have the very latest release but they are easier to install. I plan to get involved in keeping them up to date after I learn how.</p><br /><a href='https://www.mojoportal.com/mojoportal-2246-b-released.aspx'></a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2246-b-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.2.4.6-b+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2246-b-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2246-b-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2246-b-released.aspx</link>
      <author>()</author>
      <comments>https://www.mojoportal.com/mojoportal-2246-b-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2246-b-released.aspx</guid>
      <pubDate>Thu, 24 Jan 2008 22:28:23 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal 2.2.4.6 Released</title>
      <description><![CDATA[<p>I'm happy to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.2.4.6.</p>

<p>Its been over 3 months since the last packaged release which is a bit longer than usual, my general motto is release early and release often but I had set a goal for this release to include the Newsletter which took a little longer than anticiapted. I was also side tracked on some other projects and of course we had several major holidays and family events to sidetrack me too. As a result this is a significant new release with a lot of new goodness.</p>

<h3>Whats New?</h3>

<p><a href="http://www.mojoportal.com/usingthenewsletter.aspx">Newsletter</a> is a feature that a lot of users have been asking for. Now I hope you will all login to this site and opt in to our new mojoPortal News. I plan to send newsletters about once a month but I suppose it will depend on how much news we have each month. Thanks to those of you who signed up for the testing list and provided feedback!</p>

<p><a href="http://www.mojoportal.com/googlemaps.aspx">Google Maps</a> is one of the things I got sidetracked on as a need for it came up in a customer project. After meeting the customer needs I dressed it up a little more and made a new mojoPortal feature that makes it easy to put google maps in your site with various options for showing satelite, hybrid, and driving directions.</p>

<p>A feature to allow banning ip addresses is now included. I periodically review my logs and see evidence of malicious traffic and decided it was time to block some of those. A new feature has also been added to capture users ip addresses so that if a site has any troublesome users they can be banned.&nbsp; Of course they may come back using a different ip address but every little bit of defense helps. Another benefit of capturing ip addresses is that <a href="http://www.ipligence.com/">there are ways of determining approximate logitude and latitude based on ip addresses</a> and this presents a possibility to create cool features to plot community members on a map. So this will lead to some other cool features in the future.</p>

<p>We have a new Simplified Chinese translation as well as updates to the Russian, German, and Swedish translations contributed by the community. Thanks to all!</p>

<p>In the Blog, as soon as you create a post with a future date a new "Edit Drafts" link appears to make it easier to keep track of posts you are working on but aren;t ready to publish.</p>

<p>This release contains updated version of FCKeditor (v2.5.1) and ExtJs (2.0) toolkit.</p>

<p>The Site Settings, Page Settings, My Account (User Profile), Manage Users pages have all been updated to use Tab Panel layout provided by ExtJs. I'm also using the ExtJs grid in several places. I've been writing .NET wrapper controls to make it easy to use these things.</p>

<p>Rob Henry and I both did a bunch of work trying to fix FxCop violations to bring the code into FxCop rule compliance. Very few projects pass all the FxCop rules. Not passing them doesn't mean the code is bad but following the Framework guidelines developed by MS is a good practice. We used <a href="http://sharptoolbox.com/tools/codeit-right">CodeIt Right</a> to help identify and fix a lot of them but there is still a good ways to go. I spent 2 solid weeks on it. Some of the changes were breaking changes so those of you with custom features that haven't been working with the code from svn may need to revisit your code and compile against the new version. The breaking changes were just due to renaming some things and can be fixed easily by careful find and replace of .SiteID with .SiteId, .PageID with .PageId, and .ModuleID with .ModuleId. Does the code work any different or better due to these changes? No but it makes FxCop happier and I think adherance to the framework guidelines is one metric of code quality that is easy to measure. I would not overwieght this as the most important thing though.</p>

<p>I also noticed Rob recently implemented a MySQL data layer for his Survey feature. I haven't had time to test it yet but plan to soon.</p>

<p>I spent a chunk of time working on performance improvements using <a href="http://www.red-gate.com/products/ants_profiler/index.htm">RedGate Antz Profiler</a> and MS ACT load tester. ANTS is a great tool for finding slow places in the code. So I was finding such methods to optimize then load test to verify performance improvement by the optimization. I was able to make some significant gains in requests per second on my test machine using this process.</p>

<p>I'm including the <a href="http://www.mojoportal.com/e-commercesolution.aspx">e-commerce feature</a> in the MS SQL release this time. It still needs a lot of work on the customer facing side but it can sell download products processing credit cards through Authorize.NET. I'll be doing more work on this in the near future and plan to implement Paypal and Google Checkout providers soon. For now consider it experimental but if you want to experiment with it feel free.</p>

<p>It is now possible to <a href="http://www.mojoportal.com/morethan3contentpanels.aspx">make skins with up to 5 content sections</a> as illustrated in the 5contentpanes skin.</p>

<p>Things are working a bit better on Mono as of late. We still have to compile a special build without WebParts but the MS AJAX Update panel works so we're back to one code base again whereas at the time of the 2.2.3.9 mojoportal release we had to keep the 2.2.3.6 version for Mono due to lack of MS AJAX. The biggest problem we currently have is the lack of support for CSS Control Adapters, but the good news is my friend Dean Brettle has taken on the task of implementing the needed support in Mono. Dean is an awesome developer and the author of <a href="http://neatupload.codeplex.com">NeatUpload</a> and <a href="http://neathtml.codeplex.com">NeatHtml</a> both of which are used in mojoPortal. I think its just a matter of time now and all the mojoPortal skins will look as they should on Mono. I know a number of mojoPortal users who are eager for this so its very exciting.</p>

<p>As always, be sure and back up your site and database before upgrading. Report any problems in the forums and we will try to help.</p>

<p>If you like mojoPortal please help spread the word. We've got a lot of exciting plans for 2008 that I'll blog about soon.</p>

<p>&nbsp;</p>
<br /><a href='https://www.mojoportal.com/mojoportal-2246-released.aspx'></a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-2246-released.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+2.2.4.6+Released+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2246-released.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-2246-released.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-2246-released.aspx</link>
      <author>()</author>
      <comments>https://www.mojoportal.com/mojoportal-2246-released.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-2246-released.aspx</guid>
      <pubDate>Sun, 13 Jan 2008 00:34:00 GMT</pubDate>
    </item>
    <item>
      <title>Newsletter Feature Landing in svn trunk tonight</title>
      <description><![CDATA[<p>I've been working hard to get the <a href="http://www.mojoportal.com">mojoPortal</a> newsletter feature ready and I plan to make a release this weekend. I'll blog more about that later as there are a lot of new things since the last release. For now I just want to mention that I'll be comitting the newsletter feature to svn trunk in the next few hours for anyone who is eager to get it and anyone who might be able to help test it. I've done preliminary testing in all the data layers and it seems to work in all of them.</p>
<p>This first release of this feature should be considered an alpha. I haven't done eveything with it I want to yet but its at a usable point and will improve by use and feedback. Email does not lend itself to testing, I mean you either send an email or you don't send it. I've tested it on short lists and I've tested simulating long lists with some thread sleeping but thats not a very good simulation.</p>
<p>I've just updated this site with the latest build and created 2 Newletters, mojoPortal News which will be a real newsletter and Temporary Test List which I'm hoping some of you will join so that I can better test the sending of mail to the list. I will send to this list a lot while testing and will ask for replies to verify that the mail is received, but once satisfied its working well this list will stop. So please login now and visit the My Profile page to opt in to my lists.</p>
<p><img width="297" height="270" alt="" src="http://www.mojoportal.com/Data/Sites/1/mojonewsoptin.png" /></p>
<p>&nbsp;</p>
<p>The mail gets sent on a new thread so it doesn't interfere with the UI. There is a new Task Queue Monitor page where you can check the progress. If the application recycles while sending the mail it will kill the thread and therefore stop the process from sending but it is designed to resume where it left off when the application start event is fired.</p>
<p>More work needs to be done in creating some email templates. There are 2 not too great ones included. Email templates are a pain compared to regular html because you can only get consistent styling in different email clients by using in-line style. Trying to use images in the mail is also problematic. I'll be investigating solutions for these challenges to improve future versions.</p>
<p>This first implementation requires the user to be registered in the site to opt into the list, eventually I may make an opt in option for non registered users. I'll be working on and testing the opt out feature tomorrow to make sure its ready for the release.</p><br /><a href='https://www.mojoportal.com/newsletter-feature-landing-in-svn-trunk-tonight.aspx'></a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/newsletter-feature-landing-in-svn-trunk-tonight.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Newsletter+Feature+Landing+in+svn+trunk+tonight+https%3a%2f%2fwww.mojoportal.com%2fnewsletter-feature-landing-in-svn-trunk-tonight.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fnewsletter-feature-landing-in-svn-trunk-tonight.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/newsletter-feature-landing-in-svn-trunk-tonight.aspx</link>
      <author>()</author>
      <comments>https://www.mojoportal.com/newsletter-feature-landing-in-svn-trunk-tonight.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/newsletter-feature-landing-in-svn-trunk-tonight.aspx</guid>
      <pubDate>Wed, 09 Jan 2008 21:44:52 GMT</pubDate>
    </item>
    <item>
      <title>New Google Map Feature Landing in svn Tonight</title>
      <description><![CDATA[<p>I am about finished implementing a quick google maps feature. I went ahead and updated this site with the code so I could show it off. You can see it in action here: <a href="http://www.mojoportal.com/googlemaps.aspx">http://www.mojoportal.com/googlemaps.aspx</a></p>
<p>It allows you to specify a location, map size, optional to show the map type control (Satellite,hybrid,map), option to show the zoom control, option to open a balloon with info about the location, option to show a local area google search, and a few other options.</p>
<p>I haven't finished implementing the get driving directions, will finish that tomorrow but its exciting enough I couldn't wait to blog about it. Its in my svn sandbox now and will be in <a href="http://www.mojoportal.com/tortoisesvn.aspx">svn trunk</a> by later tonight.</p>
<p>It was really very easy, but visual stuff is always exciting and fun to work on.</p>
<p>Those working from the source code using svn trunk, it will be available in the next few hours. After you do svn update, rebuild the solution then visit yoursiteroot/Setup/Default.aspx to install it. Then it will show up like other features that you can put on any page.</p>
<h3>Update: 2007-12-09</h3>
<p>I got the driving directions working as you can see by clicking the link above. One thing to be aware of is that driving directions won't work on a local network or on localhost using the free google maps API key. As I understand it, if you buy an enterprise license it can work on local networks but the free one only works on public sites. The map seems to work just fine on localhost, its only the driving directions feature that doesn't work on localhost.</p><br /><a href='https://www.mojoportal.com/new-google-map-feature-landing-in-svn-tonight.aspx'></a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/new-google-map-feature-landing-in-svn-tonight.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=New+Google+Map+Feature+Landing+in+svn+Tonight+https%3a%2f%2fwww.mojoportal.com%2fnew-google-map-feature-landing-in-svn-tonight.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fnew-google-map-feature-landing-in-svn-tonight.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/new-google-map-feature-landing-in-svn-tonight.aspx</link>
      <author>()</author>
      <comments>https://www.mojoportal.com/new-google-map-feature-landing-in-svn-tonight.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/new-google-map-feature-landing-in-svn-tonight.aspx</guid>
      <pubDate>Wed, 05 Dec 2007 22:50:31 GMT</pubDate>
    </item>
    <item>
      <title>Checkout the new Site Office layout on the demo site.</title>
      <description><![CDATA[<p>
	I just upadated the mojoPortal <a href="http://demo.mojoportal.com">demo site</a> with the latest code. I've been doing some more work on the ExtJs controls and using them in the Site Office feature. The idea of Site Office is that the core of it will be a UI framework for intranet style applications. Currently we have a plugin model for content management features used in the public side of the web site. Site Office will have its own plugin model that makes it easy to build features that plug in. A feature will have a section in the Menu and clicking the navigation links will open the feature page/control/view in a new tab in the center pane of the layout.</p>
<p>
	You can check it out here: http://demo.mojoportal.com/SiteOffice/Default.aspx and can login with admin@admin.com and password = admin.</p>
<p>
	I have some not yet working features setup that do open in the new tabs but the features don't yet work. I'm really just looking for feedback on the layout. Notice how you can hide panels and resize them. Feel free to click the links and see how it works. Especially cool is if you open a lot of tabs the tabs become scrollable. If you make the side panels wider it doesn't take as many tabs to be able to see the tab scrolling.</p>
<p>
	<img alt="" height="175" src="http://www.mojoportal.com/Data/Sites/1/scrollingtabs.png" width="609" /></p>
<p>
	&nbsp;</p>
<p>
	Currently the Welcome tab which is always present shows the home page of the site. I plan to make it configurable so you could have a special intranet home page that is the default page shown there. Note that you can navigate the site inside this tab.</p>
<p>
	Notice also that if javescript is disabled in your browser it still can show the feature views when you click a navigation link, its just not as rich an experience. Being able to work without javascript is just one accessibility requirement. I'm particularly interested in any other accessibility issues that can be identified and resolved so that the Site Office UI framework can be accessible from the beginning so if you have any expertise on accessibility and you see problems do let us know.</p>
<p>
	I think these ExtJs layout controls go a long way towards a rich user interface for office/intranet style applications. I'm still pondering what can go in the right side and bottom panels. Mabe help could go on the right side. Lots of possibilities really.</p>
<br /><a href='https://www.mojoportal.com/checkout-the-new-site-office-layout-on-the-demo-site.aspx'></a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/checkout-the-new-site-office-layout-on-the-demo-site.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Checkout+the+new+Site+Office+layout+on+the+demo+site.+https%3a%2f%2fwww.mojoportal.com%2fcheckout-the-new-site-office-layout-on-the-demo-site.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fcheckout-the-new-site-office-layout-on-the-demo-site.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/checkout-the-new-site-office-layout-on-the-demo-site.aspx</link>
      <author>()</author>
      <comments>https://www.mojoportal.com/checkout-the-new-site-office-layout-on-the-demo-site.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/checkout-the-new-site-office-layout-on-the-demo-site.aspx</guid>
      <pubDate>Mon, 03 Dec 2007 17:05:00 GMT</pubDate>
    </item>
    <item>
      <title>New Survey Feature Landed in svn trunk</title>
      <description><![CDATA[<p>Those of you who subscribe to svn commit notification may have noticed the new Survey feature by Rob Henry landing in there recently. Rob has been working on this feature for a while and the feature is ready for some testing and feedback so that he can put the final polish on it. You can test using his demo site at <a href="http://www.justsome.net/surveydemo/">http://www.justsome.net/surveydemo/</a></p>

<p>You can login using admin@admin.com and password admin</p>

<p>The feature allows creation of complex multi page surveys and supports a variety of question formats. Currently its only implemented in MS SQL but we plan to add the other data layers after its finished.</p>

<p>Those working with svn trunk can just do svn update, rebuild the mojoportal-survey.sln or mojoportal-complete.sln in VS and then visit the siteroot/Setup/Default.aspx page and the feature will install automatically.</p>

<p>Post any feedback in the <a href="http://www.mojoportal.com/ForumView.aspx?ItemID=9&amp;mid=34&amp;pageid=5">Developer Forums</a></p>

<p>Thanks Rob for your work on this! It will be a valuable feature for the mojoPortal community.</p>
<br /><a href='https://www.mojoportal.com/new-survey-feature-landed-in-svn-trunk.aspx'></a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/new-survey-feature-landed-in-svn-trunk.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=New+Survey+Feature+Landed+in+svn+trunk+https%3a%2f%2fwww.mojoportal.com%2fnew-survey-feature-landed-in-svn-trunk.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fnew-survey-feature-landed-in-svn-trunk.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/new-survey-feature-landed-in-svn-trunk.aspx</link>
      <author>()</author>
      <comments>https://www.mojoportal.com/new-survey-feature-landed-in-svn-trunk.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/new-survey-feature-landed-in-svn-trunk.aspx</guid>
      <pubDate>Fri, 02 Nov 2007 12:46:00 GMT</pubDate>
    </item>
    <item>
      <title>Site Settings Layout Improvements using ExtJs</title>
      <description><![CDATA[<p>I've been wanting to revamp the Site Settings UI in <a href="http://www.mojoportal.com">mojoPortal</a> for a while now. On friday I started doing a little work in the WebStore UI trying to implement tabs for grouping settings. First I implemented a server control that wraps the <a href="http://dojotoolkit.org/">dojo</a> TabContainer but for some reason I could not get the FCKeditor to display in Firefox inside the dojo Tabs. So saturday morning I tried using the <a href="http://extjs.com/">ExtJs</a> project and wrapping a .NET server control around their Tabs and it worked much better.</p>
<p>So I decided to go ahead and use it in Site Settings.</p>
<p><img width="573" height="284" alt="" src="http://www.mojoportal.com/Data/Sites/1/sitesettingstablayout.png" /></p>
<p>Much better organization than the previous layout. I just updated <a href="http://demo.mojoportal.com">demo.mojoportal.com</a> with this for anyone who wants a closer look. It will also be in svn trunk by tonight.</p>
<p>I have to say the ExtJs project is very impressive and I think I will focus on using it instead of dojo. Nothing against the dojo project but ExtJs seems more mature, has better documentation and better demos.</p>
<p>Amazingly impressive is their <a href="http://extjs.com/deploy/dev/examples/desktop/desktop.html">WebDesktop demo</a>. Very cool stuff.</p><br /><a href='https://www.mojoportal.com/site-settings-layout-improvements-using-extjs.aspx'></a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/site-settings-layout-improvements-using-extjs.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=Site+Settings+Layout+Improvements+using+ExtJs+https%3a%2f%2fwww.mojoportal.com%2fsite-settings-layout-improvements-using-extjs.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fsite-settings-layout-improvements-using-extjs.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/site-settings-layout-improvements-using-extjs.aspx</link>
      <author>()</author>
      <comments>https://www.mojoportal.com/site-settings-layout-improvements-using-extjs.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/site-settings-layout-improvements-using-extjs.aspx</guid>
      <pubDate>Sun, 28 Oct 2007 18:47:45 GMT</pubDate>
    </item>
    <item>
      <title>mojoPortal e-commerce Demo Site is back online</title>
      <description><![CDATA[<p>We finally got our <a href="http://www.mojoportal.com">mojoPortal</a> e-commerce demo site back online at <a href="http://storedemo.mojoportal.com/">http://storedemo.mojoportal.com/</a></p>
<p>Not much work has happened with this project since our initial sponsor went out of business without ever using it. But there has been some interest in getting it moving again and at least some possibility for new sponsorship is in the winds so I thought it would be good to get the demo site running again so people can check it out and help with testing and feedback.</p>
<p>Currently it only supports download products but you can proceed all the way through checkout and you can download the products. It uses Authorize.NET for the payment gateway and is hooked into a test account so you can test it using the card number 4111111111111111 and it will go through. The products in the store are mp3 files of my orginal music which was the only thing I had handy to make download test products with.</p>
<p>More information about the project (though not so up to date) can be found here: <a href="http://www.mojoportal.com/e-commercesolution.aspx">http://www.mojoportal.com/e-commercesolution.aspx</a></p>
<p>and we have special forums for anyone who wants to discuss this project here: <br />
<a href="http://www.mojoportal.com/e-commerceforum.aspx">http://www.mojoportal.com/e-commerceforum.aspx</a></p>
<p>Also don't forget, October 26, 2007 is the last day you can <a href="http://www.packtpub.com/article/best-other-open-source-cms-award-final-mojoportal">vote for mojoPortal</a> in the PackT Publishing Open Source CMS Awards so if you haven't voted already please show your support and vote for mojoPortal.</p>
<p><a href="http://www.packtpub.com/article/best-other-open-source-cms-award-final-mojoportal"><img width="468" height="60" src="http://www.mojoportal.com/Data/Sites/1/vote-mojoPortal-468x60.gif" alt="" /></a></p>
<p>&nbsp;</p><br /><a href='https://www.mojoportal.com/mojoportal-e-commerce-demo-site-is-back-online.aspx'></a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/mojoportal-e-commerce-demo-site-is-back-online.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=mojoPortal+e-commerce+Demo+Site+is+back+online+https%3a%2f%2fwww.mojoportal.com%2fmojoportal-e-commerce-demo-site-is-back-online.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fmojoportal-e-commerce-demo-site-is-back-online.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/mojoportal-e-commerce-demo-site-is-back-online.aspx</link>
      <author>()</author>
      <comments>https://www.mojoportal.com/mojoportal-e-commerce-demo-site-is-back-online.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/mojoportal-e-commerce-demo-site-is-back-online.aspx</guid>
      <pubDate>Sat, 20 Oct 2007 19:11:19 GMT</pubDate>
    </item>
    <item>
      <title>MS AJAX and Mono - Heads Up to svn users</title>
      <description><![CDATA[<p>For a while now I've held off on fully utilizing the <a href="http://asp.net/ajax/">MS AJAX framework</a> in the core of <a href="http://www.mojoportal.com">mojoPortal</a> because it was not yet supported in Mono but recently, at least in Mono built from svn head quite a bit of the System.Web.Extensions stuff is working. In the past I had an AJAX Extensions pak which could be used to add MS AJAX support for Windows in case developers wanted to use it in their custom features. It also allowed for making the WebPart drag and drop work in Firefox by using the Microsoft.Web.Preview namespace. The Microsoft.Web.Preview stuff is not working in Mono yet but since WebParts are also not working in Mono yet its not needed. However in svn trunk I've modified (or will have soon, merge is in process) the Solution so that these things are referenced and no extension pak is needed. Since some web.config settings are needed to use these things I made a custom Web.config for mono that comments out these things otherwise errors happen on Mono. So heads up to any Mono users who are working with mojoPortal from svn.</p>
<p>If you are working with Mono compiled yourself from svn, you'll need to replace the Web.config file in the Web folder with the one from the _mono_errata folder</p>
<p>If you are working with Mono 1.2.4 or 1.2.5 release versions you will need to either just use the current zip download or use svn/branches/2.2.3.6 because the System.Web.Extensions stuff is not yet available in these versions.</p>
<p>One of the changes to add more general support for MS AJAX was to add the ScriptManager to the layout.master file of each skin so if you are using a custom skin you will need to copy this from one of the included skins into your custom skin.</p>
<p>I may go ahead and make another release with this soon as I know some developers are anxious to start using MS AJAX in mojoPortal and this will make it easier. I used the UpdatePanel in the BlogEdit.aspx page so Categories can be added to a post nice and smooth with no full postback.</p>
<p>Another thing I did recently that is in svn is I implemented a ProviderModel pattern for the IndexBuilders used to build the Lucene.NET seach engine index. This will make it much easier for developers to make their own features participate in Search by implementing an IndexBuilderProvider (which only requires implementing 2 methods). I plan to write a tutorial on that soon but I think most developers could figure it out just by looking at the included providers for existing features.</p>
<p>I'm still a fan of some of the other AJAX frameworks included with mojoPortal, especially dojo which I plan to use more of but its nice to finally be able to use the MS AJAX stuff. UpdatePanel makes things very easy.</p><br /><a href='https://www.mojoportal.com/ms-ajax-and-mono-heads-up-to-svn-users.aspx'></a>&nbsp;&nbsp;<a href='https://www.mojoportal.com/ms-ajax-and-mono-heads-up-to-svn-users.aspx'>...</a><a class='tweetthislink' title='Tweet This' href='http://twitter.com/home?status=MS+AJAX+and+Mono+-+Heads+Up+to+svn+users+https%3a%2f%2fwww.mojoportal.com%2fms-ajax-and-mono-heads-up-to-svn-users.aspx'><img src='https://www.mojoportal.com/Data/SiteImages/tweet-button-2015.png' alt='Tweet This' /></a><div class='fblikebutton'><iframe src='http://www.facebook.com/plugins/like.php?href=https%3a%2f%2fwww.mojoportal.com%2fms-ajax-and-mono-heads-up-to-svn-users.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;height=35&amp;action=like&amp;colorscheme=light' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden;width:450px; height:35px;'></iframe></div>]]></description>
      <link>https://www.mojoportal.com/ms-ajax-and-mono-heads-up-to-svn-users.aspx</link>
      <author>()</author>
      <comments>https://www.mojoportal.com/ms-ajax-and-mono-heads-up-to-svn-users.aspx</comments>
      <guid isPermaLink="true">https://www.mojoportal.com/ms-ajax-and-mono-heads-up-to-svn-users.aspx</guid>
      <pubDate>Fri, 31 Aug 2007 18:16:20 GMT</pubDate>
    </item>
  </channel>
</rss>