dojo.provide("epages.widget.InfoText"); dojo.require("epages.widget"); dojo.require('epages.format'); dojo.declare("epages.widget.InfoText", [dijit._Widget], { /** * public properties */ readMoreText : "", // read more link text length : "", // number of chars to be displayed as widget param /** * nodes */ readMoreNode : undefined, /** * private properties */ _textContent : undefined, // original text content _htmlContent : undefined, // original html Content _DEFAULT_LENGTH: 130, // max number of chars to be displayed /** * widget life cycle */ postCreate: function() { var length = parseInt(this.length) || this._DEFAULT_LENGTH; // save original text content this._htmlContent = this.domNode.innerHTML; this._textContent = (this.domNode.textContent) ? this.domNode.textContent : this.domNode.innerText; this.domNode.className = "InfoText"; if(this._textContent.length - Math.round(length / 4) < length) { // we don't need the "read more" link if there are only some chars about to be sliced this.expand(); }else { this.domNode.innerHTML = epages.format.slice(this._textContent, length, false)+"<br />"; this.readMoreNode = document.createElement("A"); this.readMoreNode.innerHTML = this.readMoreText; this.readMoreNode.className="NormalFontWeight"; this.domNode.appendChild(this.readMoreNode); this.connect(this.readMoreNode, "click" , "expand"); } }, expand: function() { //summary: show the complete text this.domNode.innerHTML = this._htmlContent; } });