New Color Picker Landed in svn

I've recently been working on some soon to be released enhancements to my Event Calendar Pro 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 mojoPortal 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:

<add name="FavoriteColor"
type=""
iSettingControlSrc="~/Controls/ColorSetting.ascx"
labelResourceKey="Favorite Color"
defaultValue="#34983E"
/>

and the result looks like this:

Color Picker Screen shot

The color picker javascript is using the YUI Color Picker via a custom implementation from Dynamic Drive that I enhanced further to add localization and pre-selection of the color in the picker.

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.

UPDATE 8:45am EST

I've deployed the latest version of Event Calendar Pro to the demo site.

Here is a list of the improvements:

  1. Ability to specify the end date for recurring events.
  2. 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.
  3. 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.
  4. Ability to specify the text for event registration link.
  5. 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.
  6. Meta Keywords and description per event
  7. Map settings per event instead of global

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.

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

mojoPortal 2.2.8.2 Released

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

Blog Improvements

Thanks to the great work of Tom Opgenorth, Microsoft MVP, long time community member and all around cool guy, we now have support for using Windows Live Writer for posting to the blog feature. In fact I'm blogging this release announcement using it. Live Writer support has been a long requested feature so this should make a lot of people happy. I'm enjoying using it myself, its more rich than the web based editor and has spell checking. Its nice being able to save drafts locally and writing posts while offline. To learn how to configure Windows Live Writer for use with your mojoPortal blog see Using Windows Live Writer with Your Blog. There is also one other small improvement to the blog, its an option to show the post author name with each post for the use case where more than one person is posting in the same blog.

Forum Improvement

This was also an enhancement requested recently, previously forum notification email message only provided a link to the forum post, but now there is a setting to enable including the post body in the email notification.

IIS 7 Integrated Pipeline mode support

mojoPortal can now run in IIS 7 Integrated Pipeline mode, which is new in IIS 7. Previously you had to use "Classic" mode, but now it can run in either mode. The pipeline mode is something specified on the application pool and the default in IIS 7 is Integrated.

NeatUpload 1.3.4

This release we upgraded to NeatUpload 1.3.4. NeatUpload by Dean Brettle is the best upload control for .NET available. The new version among other things adds support for IIS 7 Integrated pipeline mode, which in turn made it possible for mojoPortal to support this mode.

Bug Fixes

This release also includes bug fixes for things reported in the forums since the last release.

Upgrade Notes

If you are running mojoPortal 2.2.7.9 or higher, you can skip uploading the ClientScript folder.

I have not yet created a release package for Mono this release because I ran into a hardware problem on my Mono build machine. I'm working on resolving that now and hope to upload a new package for Mono users tomorrow or the next day.

UPDATE 2009-01-07

I've uploaded the for Mono release package. I can say for sure it works using Mono from svn but I don't have an installation of Mono 2.0.1 so I can't be 100% sure if it works with that release.

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

mojoPortal 2.2.8.1 Released

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

Bug Fix

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.

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.

New Stuff

YUI

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 YUI tabs. In this release I implemented a YuiGridView, which is an ASP.NET GridView decorated with the YUI DataTable 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.

Using the Google CDN

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 CDN (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 this blog post 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.

WebStore Gets Its First Report

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.

webstore sales report screen shot

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 road map 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 ZedGraph.

 

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

mojoPortal 2.2.8.0 Released

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

Blog Improvements

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.

WebStore Improvements

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.

Site Search Improvements

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.

404 Page Not Found Handler

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:

<customErrors mode="RemoteOnly" defaultRedirect="yourcustomerrorpage.aspx">
<error statusCode="404" redirect="~/PageNotFound.aspx" />
</customErrors>

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 google webmaster tools. 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.

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.  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.

404 page not found handler screen shot

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.

Bug Fixes

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.

Upgrade Notes

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.

Lots of other fun stuff going on. I've been prototyping some things in Silverlight that I will blog more on later.

 

 

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