ASP.NET Bundle launch giveaway

Unit Testing ASP.NET? ASP.NET unit testing has never been this easy.

Typemock is launching a new product for ASP.NET developers – the ASP.NET Bundle - and for the launch will be giving out FREE licenses to bloggers and their readers.

The ASP.NET Bundle is the ultimate ASP.NET unit testing solution, and offers both Typemock Isolator, a unit test tool and Ivonna, the Isolator add-on for ASP.NET unit testing, for a bargain price.

Typemock Isolator is a leading .NET unit testing tool (C# and VB.NET) for many hard to test technologies such as SharePoint, ASP.NET, MVC, WCF, WPF, Silverlight and more. Note that for unit testing Silverlight there is an open source Isolator add-on called SilverUnit.

The first 60 bloggers who will blog this text in their blog and tell us about it, will get a Free Isolator ASP.NET Bundle license (Typemock Isolator + Ivonna). If you post this in an ASP.NET dedicated blog, you'll get a license automatically (even if more than 60 submit) during the first week of this announcement.

Also 8 bloggers will get an additional 2 licenses (each) to give away to their readers / friends.

Go ahead, click the following link for more information on how to get your free license.

jMonthCalendar: Minor Release 1.2.2

Well it has been awhile since I posted anything new so I thought that I would provide a rundown of the minor new features and fixes in jMonthCalendar 1.2.2

New Features:

  • Dragable Events support using jQuery UI (Optional usage).
  • Add ability to enable or disable calendar links (today link, next year, and previous year).
  • Default Next and Previous link text changed.
  • Added onDayCellDblClick event that passes the date you are double clicking.
  • Added onEventDropped event that passes the event object and the new date being dropped into.
  • Removed my custom Date extensions and replaced it with Datejs, more on this below.
  • Complete Build Process to build, pack and minify the source.

The drag and drop stuff is pretty cool and makes the calendar even slicker. Have to provide props to the reader (Mattias Jakobsson) who took it upon their own to add it in. With the addition of the event when the event is dropped this would allow a developer to update an event using AJAX, allowing the user to easily reorganize events. jQuery UI is not a dependency and this feature is totally optional.

As for the date extension stuff, it was not something I wanted to maintain, and didn't use that often. I hope to add another option in the setup to allow for a date parsing options on the inbound JSON.

Another item I am proud of is a unified build process. I wanted to make releases as easy as possible so I thought I would spend some time learning ANT and looking at other scripts (jQuery, Dojo, and other projects for JavaScript). I managed to write a pretty neat ANT script that will produce all the artifacts for a release and zip it up. I will save the details for another post.

The last point I will mention is now the ability to override the navigation links and turn them on or off depending on your usage. This was asked for and was a simple addition to source. If you have any suggestions, send them along I will add them in to the source if I feel they fit the project goal. Below is an updated definition of all the options available for the plugin.

FYI: The next release will make a change in how the calendar is sized and will absolutely position events over the calendar for Multi Day Event capabilities.

var defaults = {
    height: 650,
    width: 980,
    navHeight: 25,
    labelHeight: 25,
    firstDayOfWeek: 0,
    calendarStartDate:new Date(),
    dragableEvents: false,
    activeDroppableClass: false,
    hoverDroppableClass: false,
    navLinks: {
        enableToday: true,
        enableNextYear: true,
        enablePrevYear: true,
        p:'‹ Prev', 
        n:'Next ›', 
        t:'Today'
    },
    onMonthChanging: function(dateIn) { return true; },
    onMonthChanged: function(dateIn) { return true; },
    onEventLinkClick: function(event) { return true; },
    onEventBlockClick: function(event) { return true; },
    onEventBlockOver: function(event) { return true; },
    onEventBlockOut: function(event) { return true; },
    onDayLinkClick: function(date) { return true; },
    onDayCellClick: function(date) { return true; },
    onDayCellDblClick: function(dateIn) { return true; },
    onEventDropped: function(event, newDate) { return true; },
    locale: {
        days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
        daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
        daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
        months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
        monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
        weekMin: 'wk'
    }
};

New Project Home For jMonthCalendar

It has been awhile since I have had anything to announce with jMonthCalendar. I have been quite busy lately and have been procrastinating at bug fixes and enhancements. Lately, I've been working on an idea to set up project wiki, issue, and source management system using Redmine and Subversion. My current host does not play well with Subversion and was lacking on memory and access needed to run Redmine the way I wanted. So I have moved the project and source over to Google Code.

A few weeks ago I started down the path of setting up a new server/host using SliceHost for the purpose of installing a Subversion server and a RoR application Redmine. They are great, I can't speak anymore highly of their product. Everything got setup and installed perfectly as expected. I got the RoR app up quickly using Phusion Passenger which saved me a ton of pain.

Unfortunately I went to sleep worrying about how I was going to manage an application, open source project and still keep a secure Subversion repository and server while still being able to develop. The other night I decided I would save some and make by life simpler by moving the project over to code.google.com and ditch my slice. Google Code will, now going forward, provide jMonthCalendar a project home, wiki, issues, downloads and Subversion source control. It currently allows anonymous Subversion browsing and the ability to add members to the project for collaborative development. Google code offers everything I would need for an open source project, allowing me to focus on the fun stuff, coding. Along with the new project home I also created a Google Group (found below) for open discussion, support, suggestions, etc. Please feel free to stop buy and check it out.

Comments and suggestions will be greatly appreciated, also if you are currently using jMonthCalendar please let me know, I would love to feature/link your site on the home page. Happy Coding.

If you are interested in jMonthCalendar or looking for the new details, please see below. Latest Release: jMonthCalendar 1.2.1 (bug fixes) Downloads: http://code.google.com/p/jmonthcalendar/downloads/list Project home: http://code.google.com/p/jmonthcalendar/ Google Group: http://groups.google.com/group/jmonthcalendar *Source Code: *http://code.google.com/p/jmonthcalendar/source/list

jMonthCalendar: Minor Release 1.2.0

Wow, let me first start by saying it has been too long since I posted any updates on jMonthCalendar. I hope that the new release of jMonthCalendar 1.2.0 excites you as much as it does me. 1.2.0 sets the stage for some pretty cool stuff. Continue reading to see a short list of the new features and where this project is going next.

On the short list of new features there is:

  • Today Link (navigate back to today's date)
  • Year navigation, jump to '10 or back to '08 in the active month
  • Ability to click a day cell or day link and fire your own custom logic (i.e. add event on that day)
  • JSON date parsing, parse what some from that event object if the calendar is un-aware.
  • Fixed in-line sizing, configurable by options construct
  • Deprecating Date property, replaced by StartDate
  • Added EndDate property to event object

While not all of all of them seem flashy, the last three or four points make the calendar that much closer to having multi-day events and event overflow support.

I am happy to report that I am currently using the calendar on an ASP.Net MVC site on my development machine. I hope to have a new calendaring system ready soon. This should concern you only because when I find issues while developing and using it, I fix them and everyone benefits. In more detail my calendar does a JSON GetData call to a controller actions, which executes and returns JSON formatted events. I am using James Newton-King's JSON.Net library to map and serialize my C# objects. I use the attributes on my properties to rename or exclude them from serialization. Very nice library and commend James for the work.

jMonthCalendar: Minor Relese 1.1.0

I just finished posting a updated release for jMonthCalendar that can be found here. This release mostly consists of a few bug fixes and a new features that have been suggested by fellow supporters (people who post comments, issues and suggestions, and anyone else I've missed). To those and everyone else I say: Thank you.

Most of the bug fixes are internal but one notable thing I changed in my sample's is the Event object JSON string. I have also extended the Event object to accept a CssClass and Description properties.

//Before, (notice the lack of quotes to identify the property)
var events = [
    { EventID: 1, "Date": new Date(2009, 1, 1), "Title": "10:00 pm - EventTitle1", URL: "#" },
    { EventID: 2, "Date": new Date(2009, 1, 2), "Title": "9:30 pm - this is a much longer title", URL: "#" }
];

//After: new properties and quotes property strings (better JSON)
var events = [ 
    { "EventID": 1, "Date": new Date(2009, 1, 1), "Title": "10:00 pm - EventTitle1", "URL": "#", "Description": "This is a sample event description", "CssClass": "Birthday" },
    { "EventID": 2, "Date": new Date(2009, 1, 2), "Title": "9:30 pm - this is a much longer title", "URL": "#", "Description": "This is a sample event description", "CssClass": "Meeting" }
];

The new properties will allow for two things. One, the CssClass is placed onto the event block so that it can be styled with css easily. This could also be used like an event type or category. Second, the description allows for a more information, this is in conjunction with the feature below.

An exciting new feature for some is the ability execute custom code (extension point) when hovering over/out an event. This will provide the ability to do something with the hovered event, like display a ballon/pup-up. The new feature is part of the options construct so it should be define like the example below.

var options = {
    onEventBlockOver: function(event) {
        //of course this is rude example but you could to anything here and pass property values to it.
        //Example, you could create UI ballon and display (set the scope higher) then destroy or close it on out.
        alert(event.Title + " - " + event.Description);
        return true;
    },
    onEventBlockOut: function(event) {
        return true;
    }
};

This was my solution to a comment that someone wanted balloon like pop-ups. I didn't want to have to mess with that since it deals with positioning and calculations that I am not comfortable with spending the time on it now. My continued goal of this project is to avoid dependencies, with the exception of jQuery sponsored projects.

Please keep up the comments for suggestions, issues, requested features, and anything else you think I might like. Thanks for the support.