jQuery.fn.shorten = function (settings) {
var config = {
showChars: 100,
ellipsesText: "...",
moreText: "more",
lessText: "less"
};
if (settings) {
$.extend(config, settings);
}
if (typeof $('#wall').data('handleMoreLink') === 'undefined') {
$('#wall').on('click', '.morelink', function () {
var $link = $(this);
if ($link.hasClass('less')) {
$link.removeClass('less');
$link.html(config.moreText);
} else {
$link.addClass('less');
$link.html(config.lessText);
}
$link.parent().prev().toggle();
$link.prev().toggle();
return false;
});
$('#wall').data('handleMoreLink', true);
}
return this.each(function () {
var $this = $(this);
if (typeof $this.data('handleMoreLink') === 'undefined') {
var content = $this.html();
if (content.length > config.showChars) {
var c = content.substr(0, config.showChars);
var h = content.substr(config.showChars, content.length - config.showChars);
var html = c + '' + config.ellipsesText + ' ' + h + ' ' + config.moreText + '';
$this.html(html);
$this.find(".morecontent span").hide();
}
$this.data('handleMoreLink', true);
}
});
};