Archive for category Web Development

Invitation Systems – The Value of Invitations

A website invitation system utilizes electronic invitations to allow users to register and join a website. The invitation system allows for site administrators to control the population of a site by not allowing open registration.

In many instances existing users of the site are given a number of invitations themselves that they can disperse to friends, family, or co-workers, allowing them to join the site.

When to use Invitation Systems:
An invitation system is appropriate when software is in a controlled release period and systems may not be able to handle an over abundance of traffic, or during a beta testing period. Invitations can also be utilized to build buzz around a product or event. By simply offering invitations, outside users become interested in what exactly they think they’re missing out on. Invitations can fulfill one of Maslow’s hierarchy of needs: belongingness.

Invitation systems can also be utilized to keep out the rif-raf. One forum I found moved to an invitation system to “screen new members to ensure as much as possible that we only have Invited Members who are intelligent, mature and genuinely interested in being a productive, long-term part of the” community.

My initial encounter with software invitations was with Google Gmail. Although the Gmail system received great hype when first announced, the general public was not allowed to sign-up. Infact a public signup page did not exist. Instead Google utilized an invitation system which allowed them to control the growth of the Gmail systems use.

Actual Value of the Invitations:
With Google Gmail a market arose for the invitations on eBay, with hundreds of invitations per day selling from between $.99 to $217.50 per invitation. In total there were roughly 3,135 auctions for Gmail invitations auctioned on eBay from 5/06/04 to 6/08/04.

Sample Invitations:
sample invitation
sample invitation 2

No Comments

Moodle “Error enrolling into (course name) as a student”

If you utilize the upload feature in Moodle 1.9.3 to enroll students into a course then you may have come across an error message which states something similar to “Error enrolling into (course name) as a student.” Although not a serious error it will cause a variety of issues for your Moodle system. After troubleshooting the issue I’ve found that it comes from trying to enroll a student/teacher/admin, etc into a course which has an enrollment length of “unlimited”.

There are a two ways I know of to handle this. First you could set all of your courses in Moodle to have an enrollment period of 365 days or less. This could however pose problems for larger systems with many users. You wouldn’t want to have to re-enroll, and track a large set of users.

The better solution is to make a code change to the upload code on your Moodle system. In the uploaduser.php file in the /admin/ directory of your Moodle installation. Somewhere around lines #660 you’ll want to make these code changes:

if ($courseit->enrolperiod) {
$timestart = time();
$timeend = ($oldtimeend-$timestart) + $courseit->enrolperiod + $timestart;
}

if($timestart == “”){
$timestart = time();
}

if($timeend == “”){
$timeend = (time()+630720000);
}

You can’t have no unenroll time for Moodle uploads, so what this code change will do is set the un-enroll period to be 10 years from the date of upload. Please contact me if you have any questions about the code.

Please remember that if you do choose to upgrade your Moodle release that this change may be overwritten. So I generally note files which I’ve changed code on, and be sure to either copy those over after an upgrade, or make similar changes to the new Moodle release files.

, , , ,

No Comments

Dynamically Adding Controls in C# ASP.NET

Adding C# controls dynamically is actually pretty simple:

public void showTextBoxes(){
    //
    TextBox txtBox = new TextBox();
    txtBox.ID = “txtBox1″;
    txtBox.TabIndex = 1;
    txtBox.CssClass = “textBoxClass”;
    //
    form1.Controls.Add(txtBox);
}

Now this all works fine, but is somewhat limiting. Many times when your going to want to add controls you won’t know exactly how many at runtime. The number of controls needed may hinge on a users input. Possibly the value entered into a TextBox. This would then be handled with a loop:

public void showTextBoxes(){
     form1.Controls.Add(new LiteralControl(“<table>”));
    //
    int i = 0;
    //
    int numberOfDays = Convert.ToInt16(txtDays.Text.ToString());
    //
    while (i <= numberOfDays){
         //
         TextBox txtBox = new TextBox();
        //
         txtBox.ID = “txtBox” + i;
         txtBox.TabIndex = i;
         txtBox.CssClass = “textBoxClass”;
         //
         form1.Controls.Add(new LiteralControl(“<tr><td>”));
         //
         form1.Controls.Add(txtBox);
         //
         form1.Controls.Add(new LiteralControl(“</td></tr>”));
        //
         i++;
     }
    form1.Controls.Add(new LiteralControl(“</table>”));
}

This function will create TextBoxes for however many days that the user has entered into the txtDays TextBox. The loop will also give each new TextBox a unique ID and TabIndex. This method though has some drawbacks, such as any information entered into the TextBoxes will be lost on a refresh of the page. So if your using C# and not Javascript for form validation you would lose all dynamically created Controls on validation.

In future posts I will look into ways to handle this issue and other similar situations.

, , , , , ,

No Comments

Cross-Browser Compatible eLearning – What’s the point?

It seems that in the past eLearning developers as a whole had turned a blind eye to cross-browser compatibility, myself included. For years we (hotelearning) created eLearning which was intended for a particular audience, who would, without doubt be using a particular browser, in our case Internet Explorer 6+.

It made our job easy – if the course functioned correctly in IE, then it was ready for deployment. We really had no reason to cross the compatibility bridge till we came to it.

Recently, some of our projects have become completely web-based, and only delivered on-line to an unknown audience, and we really have no idea which browser or operating system our users are utilizing. Browsers such as Firefox and Safari have seen a signifigant increase in adoption over the past few years, and must be taken seriously. Below are some general browser usage statistics as of March 2009.

IE 6.0+ – 57%

Firefox 1.5+ – 31%

Safari – 6%

Opera – 1%

For us to ignore roughly 38% of our audience would be to ignore 38% of our potential customer base, and that was just not acceptable. Our eLearning needed to be cross-browser compatible and yours should be too. It was time to cross the bridge.

So in an effort to try to make our content available to as large an audience as possible, we created a cross-browser compatible interface. In terms of development, it may have taken a bit more time. We found though that we really didn’t have to make many, if any, sacrifices to our design or user experience. Infact, our interface could be considered simpler and more user friendly.

So what is the point of creating a cross-browser compatible user interface? You’ll be able to reach more customers, and those customers viewing the content on different browsers will have consistent functionality and a consistent look.

Failing to plan is planning to fail.

, , ,

No Comments