All pages
Powered by GitBook
1 of 1

Loading...

8. Richtext

A richtext type variable is used to represent and manipulate a sequence of characters that holds rich content.

Implicit HTML Encoding

When you concatenate a text value to a richtext variable, implicit encoding is applied to the text value. This is not always desired; therefore, the ToRichText() function can be used. Let’s dissect the example above.

This line declares the variable @rt as richtext.

Since the left-hand side @rt is of type richtext and the expression on the right-hand side is a literal text, the text is treated as richtext. The value of the variable @rt is now <strong>This text is very.

Once again, the left-hand side @rt is of type richtext, but the expression on the right-hand side is a concatenation of richtext + richtext, resulting in the value <strong>This text is very strong</strong>.

What happens if we don't use the ToRichText() function?

In this case, the expression is of richtext + text. When evaluating the right text operand, it will be coerced into richtext. During this conversion, the text value will be HTML encoded, resulting in <strong>This text is very strong&lt;/strong&gt;. This is not what we wanted in this example, as it generates malformed HTML.

So, be cautious when concatenating with richtext.

Postback

Fortunately, performing a postback with richtext is quite straightforward. You don't have to deal with localization, and updating the property with a new value is simply a matter of sending it back as is.

Print Output Overview

Since we are dealing with richtext, the encoding is mostly ignored, except for JavaScript encoding. Let’s assume we have a variable var @rt: richtext that holds the value <p>I am a paragraph.</p>. The following encoding (or lack thereof) will produce the corresponding outputs:

Encoding
Output
<?
	var @rt: richtext
	@rt := "<strong>This text is very"
	@rt := @rt + ToRichText(" strong</strong>")
?>
var @rt: richtext

<?= @rt ?>

<p>I am a paragraph.</p>

<?attr @rt ?>

<p>I am a paragraph.</p>

<?js @rt ?>

"<p>I am a paragraph.</p>"

<?raw @rt ?>

<p>I am a paragraph.</p>

@rt := "<strong>This text is very"
@rt := @rt + ToRichText(" strong</strong>")
@rt := @rt + " strong</strong>"
<? register input @RichTextProperty ?>
<textarea name="<?attr OutputId(@RichTextProperty) ?>"><?= @RichTextProperty ?></textarea>