Knowledge is power. We love to share it.

News related to Mono products, services and latest developments in our community.

mzilic

Turning plain text URLs into clickable links

07/03/2012Categories: MonoX

Intro

Recently we received a few requests to add an additional feature on MonoX's social networking wall to that would turn plain text URLs into clickable links. Those of you familiar with MonoX know that the its wall uses a simple ASP.NET Textbox, with jQuery plugins providing for more advanecd functionality - autogrow and watermark. Sometimes you will want to utilize the simplicity and "lightweightness" of the textbox while keeping a bit of interactivity and user friendliness. This article demonstrates techniques for "linkifying" texts on just about any Web form out there.

Choosing a tool

Technology has greatly advanced over the past few years. Nowadays it's very easy to find any kind of jQuery plugin for almost anything. Instead of using more powerful and more complicated HTML editors, I decided to approach the problem using a jQuery plugin. We've decided to go with the linkify plugin which can be found here. This plugin detects URLs in the HTML markup and converts them into clickable links.

Why choose linkify?

We've explored a lot of alternatives, but neither of them worked perfectly. Linkify offered the best solution due to its plugin functionality. We could easily improve the existing functionality without the need to edit the plugin source code directly, which saved us a huge amount of time.

Linkify plugins

The built-in functionality itself works great. However, we expanded the default functionality with our own linkify plugin.

The plugin concept allows us to easily add a new functionality or extend the default behavior. The regular expression which we are about to demonstrate is a compilation of our own improvements over the default plugin and suggestions found on the projects github page.
Now let's see how our plugin looks like:
jQuery.extend(jQuery.fn.linkify.plugins, {
    monoPluginCallback: function (html) { return html.replace(/(^|[\[\{”"'(\s]|<)(www\..+?\..+?)((?:[:?]|\.+)?(?=(?:\s|$)|>|[)\]\}”"',]))/g, '$1<a href="<``>://$2">$2</a>$3').replace(/(^|[\[\{“"'(\s]|<)((?:(?:https?|ftp):\/\/|mailto:).+?)((?:[:?]|\.+)?(?=(?:\s|$)|>|[)\]\}”"',]))/g, '$1<a href="$2">$2</a>$3') }
});

Using linkify

Using linkify is pretty much straightforward, once we've defined our plugin all we have to do is to initialize linkify as demonstrated below. In this scenario we are using our custom plugin along with the default plugin:
$('.myClass').linkify('monoPluginCallback');
As you can see, we need to attach it to a desired class in which we want our contents to be linkified, and optionally we can tell it which plugins to use. If we want to use all plugins then we should initialize it using the following parameters:
$('.myClass').linkify('*');

Conclusion

Linkify is a great jQuery plugin which allows us to easily turn plain text URLs into clickable links without having to reinvent the wheel. Its plug-in architecture allows us to easily add additional functionality or to extend the existing functionality. I have attached a small sample which demonstrates the techniques explained in this article.
Rated 4.86, 7 vote(s).