Annotation of loncom/html/htmlarea/reference.html, revision 1.1
1.1 ! www 1: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
! 2: <html> <head>
! 3: <title>HTMLArea-3.0 Reference</title>
! 4:
! 5: <style type="text/css">
! 6: @import url(htmlarea.css);
! 7: body { font: 14px verdana,sans-serif; background: #fff; color: #000; }
! 8: h1, h2 { font-family:tahoma,sans-serif; }
! 9: h1 { border-bottom: 2px solid #000; }
! 10: h2 { border-bottom: 1px solid #aaa; }
! 11: h3, h4 { margin-bottom: 0px; font-family: Georgia,serif; font-style: italic; }
! 12: h4 { font-size: 90%; margin-left: 1em; }
! 13: acronym { border-bottom: 1px dotted #063; color: #063; }
! 14: p { margin-left: 2em; margin-top: 0.3em; }
! 15: li p { margin-left: 0px; }
! 16: .abstract { padding: 5px; margin: 0px 10em; font-size: 90%; border: 1px dashed #aaa; background: #eee;}
! 17: li { margin-left: 2em; }
! 18: em { color: #042; }
! 19: a { color: #00f; }
! 20: a:hover { color: #f00; }
! 21: a:active { color: #f80; }
! 22: span.browser { font-weight: bold; color: #864; }
! 23: .fixme { font-size: 20px; font-weight: bold; color: red; background: #fab;
! 24: padding: 5px; text-align: center; }
! 25: .code {
! 26: background: #e4efff; padding: 5px; border: 1px dashed #abc; margin-left: 2em; margin-right: 2em;
! 27: font-family: fixed,"lucidux mono","andale mono","courier new",monospace;
! 28: }
! 29: .note, .warning { font-weight: bold; color: #0a0; font-variant: small-caps; }
! 30: .warning { color: #a00; }
! 31:
! 32: .string {
! 33: color: #06c;
! 34: } /* font-lock-string-face */
! 35: .comment {
! 36: color: #840;
! 37: } /* font-lock-comment-face */
! 38: .variable-name {
! 39: color: #000;
! 40: } /* font-lock-variable-name-face */
! 41: .type {
! 42: color: #008;
! 43: font-weight: bold;
! 44: } /* font-lock-type-face */
! 45: .reference {
! 46: color: #048;
! 47: } /* font-lock-reference-face */
! 48: .preprocessor {
! 49: color: #808;
! 50: } /* font-lock-preprocessor-face */
! 51: .keyword {
! 52: color: #00f;
! 53: font-weight: bold;
! 54: } /* font-lock-keyword-face */
! 55: .function-name {
! 56: color: #044;
! 57: } /* font-lock-function-name-face */
! 58: .html-tag {
! 59: font-weight: bold;
! 60: } /* html-tag-face */
! 61: .html-helper-italic {
! 62: font-style: italic;
! 63: } /* html-helper-italic-face */
! 64: .html-helper-bold {
! 65: font-weight: bold;
! 66: } /* html-helper-bold-face */
! 67:
! 68: </style>
! 69:
! 70: <script type="text/javascript" src="htmlarea.js"></script>
! 71: <script type="text/javascript" src="dialog.js"></script>
! 72: <script tyle="text/javascript" src="lang/en.js"></script>
! 73:
! 74: </head>
! 75:
! 76: <body onload="HTMLArea.replace('TA')">
! 77:
! 78:
! 79: <h1>HTMLArea-3.0 Documentation</h1>
! 80:
! 81: <div class="abstract" style="color: red; font-weight: bold">
! 82:
! 83: This documentation contains valid information, but is outdated in the
! 84: terms that it does not covers all the features of HTMLArea. A new
! 85: documentation project will be started, based on LaTeX.
! 86:
! 87: </div>
! 88:
! 89:
! 90: <h2>Introduction</h2>
! 91:
! 92: <h3>What is HTMLArea?</h3>
! 93:
! 94: <p>HTMLArea is a free <acronym title="What You See Is What You Get"
! 95: >WYSIWYG</acronym> editor replacement for <code><textarea></code>
! 96: fields. By adding a few simple lines of JavaScript code to your web page
! 97: you can replace a regular textarea with a rich text editor that lets your
! 98: users do the following:</p>
! 99:
! 100: <ul>
! 101: <li>Format text to be bold, italicized, or underlined.</li>
! 102: <li>Change the face, size, style and color.</li>
! 103: <li>Left, center, or right-justify paragraphs.</li>
! 104: <li>Make bulleted or numbered lists.</li>
! 105: <li>Indent or un-indent paragraphs.</li>
! 106: <li>Insert a horizontal line.</li>
! 107: <li>Insert hyperlinks and images.</li>
! 108: <li>View the raw HTML source of what they're editing.</li>
! 109: <li>and much more...</li>
! 110: </ul>
! 111:
! 112: <p>Some of the interesting features of HTMLArea that set's it apart from
! 113: other web based WYSIWYG editors are as follows:</p>
! 114:
! 115: <ul>
! 116: <li>It's lightweight, fast loading and can transform a regular textarea
! 117: into a rich-text editor with a single line of JavaScript.</li>
! 118: <li>Generates clean, valid HTML.</li>
! 119: <li>It's 100% backwards compatible with older or non-supported browsers
! 120: (they get the original textarea field).</li>
! 121: <li>It's free and can be incorporated into any free or commercial
! 122: program.</li>
! 123: <li>It works with any server-side languages (ASP, PHP, Perl, Java,
! 124: etc).</li>
! 125: <li>It's written in JavaScript and can be easily viewed, modified or
! 126: extended.</li>
! 127: <li>It remembers entered content when a user navigates away and then hits
! 128: "back" in their browser.</li>
! 129: <li>Since it replaces existing textareas it doesn't require a lot of code
! 130: to add it to your pages (just one line).</li>
! 131: <li>Did we mention it was free? ;-)</li>
! 132: </ul>
! 133:
! 134: <h3>Is it really free? What's the catch?</h3>
! 135:
! 136: <p>Yes! It's really free. You can use it, modify it, distribute it with your
! 137: software, or do just about anything you like with it.</p>
! 138:
! 139: <h3>What are the browser requirements?</h3>
! 140:
! 141: <p>HTMLArea requires <span class="browser"><a
! 142: href="http://www.microsoft.com/ie">Internet Explorer</a> >= 5.5</span>
! 143: (Windows only), or <span class="browser"><a
! 144: href="http://mozilla.org">Mozilla</a> >= 1.3-Beta</span> on any platform.
! 145: Any browser based on <a href="http://mozilla.org/newlayout">Gecko</a> will
! 146: also work, provided that Gecko version is at least the one included in
! 147: Mozilla-1.3-Beta (for example, <a
! 148: href="http://galeon.sf.net">Galeon-1.2.8</a>). However, it is backwards
! 149: compatible with other browsers. They will get a regular textarea field
! 150: instead of a WYSIWYG editor.</p>
! 151:
! 152: <h3>Can I see an example of what it looks like?</h3>
! 153:
! 154: <p>Just make sure you're using one of the browsers mentioned above and see
! 155: below.</p>
! 156:
! 157: <form onsubmit="return false;">
! 158: <textarea id="TA" style="width: 100%; height: 15em;">
! 159: <p>Here is some sample text in textarea that's been transformed with <font
! 160: color="#0000CC"><b>HTMLArea</b></font>.<br />
! 161: You can make things <b>bold</b>, <i>italic</i>, <u>underline</u>. You can change the
! 162: <font size="3">size</font> and <b><font color="#0000CC">c</font><font color="#00CC00">o</font><font color="#00CCCC">l</font><font color="#CC0000">o</font><font color="#CC00CC">r</font><font color="#CCCC00">s</font><font color="#CCCCCC">!</font></b>
! 163: And lots more...</p>
! 164:
! 165: <p align="center"><font size="4" color="#ff0000"><b><u>Try HTMLArea
! 166: today!</u></b></font><br /></p>
! 167: </textarea>
! 168: </form>
! 169:
! 170: <h3>Where can I find out more info, download the latest version and talk to
! 171: other HTMLArea users?</h3>
! 172:
! 173: <p>You can find out more about HTMLArea and download the latest version on
! 174: the <a href="http://www.interactivetools.com/products/htmlarea/">HTMLArea
! 175: homepage</a> and you can talk to other HTMLArea users and post any comments
! 176: or suggestions you have in the <a
! 177: href="http://www.interactivetools.com/iforum/Open_Source_C3/htmlArea_v3.0_-_Alpha_Release_F14/"
! 178: >HTMLArea forum</a>.</p>
! 179:
! 180: <h2>Keyboard shortcuts</h2>
! 181:
! 182: <p>The editor provides the following key combinations:</p>
! 183:
! 184: <ul>
! 185: <li>CTRL-A -- select all</li>
! 186: <li>CTRL-B -- bold</li>
! 187: <li>CTRL-I -- italic</li>
! 188: <li>CTRL-U -- underline</li>
! 189: <li>CTRL-S -- strikethrough</li>
! 190: <li>CTRL-L -- justify left</li>
! 191: <li>CTRL-E -- justify center</li>
! 192: <li>CTRL-R -- justify right</li>
! 193: <li>CTRL-J -- justify full</li>
! 194: <li>CTRL-1 .. CTRL-6 -- headings (<h1> .. <h6>)</li>
! 195: </ul>
! 196:
! 197: <h2>Installation</h2>
! 198:
! 199: <h3>How do I add HTMLArea to my web page?</h3>
! 200:
! 201: <p>It's easy. First you need to upload HTMLArea files to your website.
! 202: Just follow these steps.</p>
! 203:
! 204: <ol>
! 205: <li>Download the latest version from the <a
! 206: href="http://www.interactivetools.com/products/htmlarea/">htmlArea
! 207: homepage</a>.</li>
! 208: <li>Unzip the files onto your local computer (making sure to maintain the
! 209: directory structure contained in the zip).</li>
! 210: <li>Create a new folder on your website called /htmlarea/ (make sure it's
! 211: NOT inside the cgi-bin).</li>
! 212: <li>Transfer all the HTMLArea files from your local computer into the
! 213: /htmlarea/ folder on your website.</li>
! 214: <li>Open the example page /htmlarea/example.html with your browser to make
! 215: sure everything works.</li>
! 216: </ol>
! 217:
! 218: <p>Once htmlArea is on your website all you need to do is add some
! 219: JavaScript to any pages that you want to add WYSIWYG editors to. Here's how
! 220: to do that.</p>
! 221:
! 222: <ol>
! 223:
! 224: <li>Include the "htmlarea.js" script:
! 225: <pre class="code"
! 226: ><span class="function-name"><</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">"text/javascript"</span> <span class="variable-name">src=</span><span class="string">"/htmlarea/htmlarea.js"</span><span class="function-name">></span><span class="paren-face-match"><</span><span class="html-tag">/script</span><span class="paren-face-match">></span></pre>
! 227: </li>
! 228:
! 229: <li>If you are using popup dialogs, i.e. for insert table, insert image,
! 230: select color, then you need to include the "dialog.js" file. This is
! 231: recommended anyway.
! 232: <pre class="code"
! 233: ><span class="function-name"><</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">"text/javascript"</span> <span class="variable-name">src=</span><span class="string">"/htmlarea/dialog.js"</span><span class="paren-face-match">></span><span class="function-name"><</span><span class="html-tag">/script</span><span class="function-name">></span></pre>
! 234: </li>
! 235:
! 236: <li>Include the corresponding language definition file. <span
! 237: class="note">Note</span>:
! 238: internationalization is available only since version 3.0. Check the files
! 239: containing "lang" in the distribution ZIP. If your preferred language is
! 240: not there yet and you decide to write it, please consider sending it to
! 241: us so that it gets included in the next release.
! 242: <pre class="code"
! 243: ><span class="function-name"><</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">"text/javascript"</span> <span class="variable-name">src=</span><span class="string">"/htmlarea/lang/en.js"</span><span class="function-name">></span><span class="paren-face-match"><</span><span class="html-tag">/script</span><span class="paren-face-match">></span></pre>
! 244:
! 245: <li>Include the stylesheet (be sure to put this inside the HEAD tag):
! 246: <pre class="code"
! 247: ><span class="function-name"><</span><span class="html-tag">style</span> <span class="variable-name">type=</span><span class="string">"text/css"</span><span class="function-name">></span>@import url<span class="function-name">(</span>/htmlarea/htmlarea.css<span class="function-name">)</span><span class="paren-face-match"><</span><span class="html-tag">/style</span><span class="paren-face-match">></span></pre>
! 248: </li>
! 249:
! 250: <li><p>If you want to change all your <textarea>-s into
! 251: HTMLArea-s then you can use the simplest way to create HTMLArea:</p>
! 252: <pre class="code"
! 253: ><span class="function-name"><</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">"text/javascript"</span> <span class="variable-name">defer=</span><span class="string">"1"</span><span class="function-name">></span>
! 254: HTMLArea.replaceAll<span class="function-name">()</span>;
! 255: <span class="paren-face-match"><</span><span class="html-tag">/script</span><span class="paren-face-match">></span></pre>
! 256: <p><span class="note">Note:</span> you can also add the
! 257: <code>HTMLArea.replaceAll()</code> code to the <code>onload</code>
! 258: event handler for the <code>body</code> element, if you find it more appropriate.</p>
! 259:
! 260: <p>A different approach, if you have more than one textarea and only want
! 261: to change one of them, is to use <code>HTMLArea.replace("id")</code> --
! 262: pass the <code>id</code> of your textarea. Do not use the
! 263: <code>name</code> attribute anymore, it's not a standard solution!</p>
! 264:
! 265: </ol>
! 266:
! 267: <h3>I want to change the editor settings, how do I do that?</h3>
! 268:
! 269: <p>While it's true that all you need is one line of JavaScript to create an
! 270: htmlArea WYSIWYG editor, you can also specify more config settings in the
! 271: code to control how the editor works and looks. Here's an example of some of
! 272: the available settings:</p>
! 273:
! 274: <pre class="code"
! 275: ><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config(); <span class="comment">// create a new configuration object
! 276: </span> <span class="comment">// having all the default values
! 277: </span>config.width = '<span class="string">90%</span>';
! 278: config.height = '<span class="string">200px</span>';
! 279:
! 280: <span class="comment">// the following sets a style for the page body (black text on yellow page)
! 281: // and makes all paragraphs be bold by default
! 282: </span>config.pageStyle =
! 283: '<span class="string">body { background-color: yellow; color: black; font-family: verdana,sans-serif } </span>' +
! 284: '<span class="string">p { font-width: bold; } </span>';
! 285:
! 286: <span class="comment">// the following replaces the textarea with the given id with a new
! 287: // HTMLArea object having the specified configuration
! 288: </span>HTMLArea.replace('<span class="string">id</span>', config);</pre>
! 289:
! 290: <p><span class="warning">Important:</span> It's recommended that you add
! 291: custom features and configuration to a separate file. This will ensure you
! 292: that when we release a new official version of HTMLArea you'll have no
! 293: trouble upgrading it.</p>
! 294:
! 295: <h3>How do I customize the toolbar?</h3>
! 296:
! 297: <p>Using the configuration object introduced above allows you to completely
! 298: control what the toolbar contains. Following is an example of a one-line,
! 299: customized toolbar, much simpler than the default one:</p>
! 300:
! 301: <pre class="code"
! 302: ><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
! 303: config.toolbar = [
! 304: ['<span class="string">fontname</span>', '<span class="string">space</span>',
! 305: '<span class="string">fontsize</span>', '<span class="string">space</span>',
! 306: '<span class="string">formatblock</span>', '<span class="string">space</span>',
! 307: '<span class="string">bold</span>', '<span class="string">italic</span>', '<span class="string">underline</span>']
! 308: ];
! 309: HTMLArea.replace('<span class="string">id</span>', config);</pre>
! 310:
! 311: <p>The toolbar is an Array of Array objects. Each array in the toolbar
! 312: defines a new line. The default toolbar looks like this:</p>
! 313:
! 314: <pre class="code"
! 315: >config.toolbar = [
! 316: [ "<span class="string">fontname</span>", "<span class="string">space</span>",
! 317: "<span class="string">fontsize</span>", "<span class="string">space</span>",
! 318: "<span class="string">formatblock</span>", "<span class="string">space</span>",
! 319: "<span class="string">bold</span>", "<span class="string">italic</span>", "<span class="string">underline</span>", "<span class="string">separator</span>",
! 320: "<span class="string">strikethrough</span>", "<span class="string">subscript</span>", "<span class="string">superscript</span>", "<span class="string">separator</span>",
! 321: "<span class="string">copy</span>", "<span class="string">cut</span>", "<span class="string">paste</span>", "<span class="string">space</span>", "<span class="string">undo</span>", "<span class="string">redo</span>" ],
! 322:
! 323: [ "<span class="string">justifyleft</span>", "<span class="string">justifycenter</span>", "<span class="string">justifyright</span>", "<span class="string">justifyfull</span>", "<span class="string">separator</span>",
! 324: "<span class="string">insertorderedlist</span>", "<span class="string">insertunorderedlist</span>", "<span class="string">outdent</span>", "<span class="string">indent</span>", "<span class="string">separator</span>",
! 325: "<span class="string">forecolor</span>", "<span class="string">hilitecolor</span>", "<span class="string">textindicator</span>", "<span class="string">separator</span>",
! 326: "<span class="string">inserthorizontalrule</span>", "<span class="string">createlink</span>", "<span class="string">insertimage</span>", "<span class="string">inserttable</span>", "<span class="string">htmlmode</span>", "<span class="string">separator</span>",
! 327: "<span class="string">popupeditor</span>", "<span class="string">separator</span>", "<span class="string">showhelp</span>", "<span class="string">about</span>" ]
! 328: ];</pre>
! 329:
! 330: <p>Except three strings, all others in the examples above need to be defined
! 331: in the <code>config.btnList</code> object (detailed a bit later in this
! 332: document). The three exceptions are: 'space', 'separator' and 'linebreak'.
! 333: These three have the following meaning, and need not be present in
! 334: <code>btnList</code>:</p>
! 335:
! 336: <ul>
! 337: <li>'space' -- Inserts a space of 5 pixels (the width is configurable by external
! 338: <acronym title="Cascading Style Sheets">CSS</acronym>) at the current
! 339: position in the toolbar.</li>
! 340: <li>'separator' -- Inserts a small vertical separator, for visually grouping related
! 341: buttons.</li>
! 342: <li>'linebreak' -- Starts a new line in the toolbar. Subsequent controls will be
! 343: inserted on the new line.</li>
! 344: </ul>
! 345:
! 346: <p><span class="warning">Important:</span> It's recommended that you add
! 347: custom features and configuration to a separate file. This will ensure you
! 348: that when we release a new official version of HTMLArea you'll have no
! 349: trouble upgrading it.</p>
! 350:
! 351: <h3>How do I create custom buttons?</h3>
! 352:
! 353: <p>By design, the toolbar is easily extensible. For adding a custom button
! 354: one needs to follow two steps.</p>
! 355:
! 356: <h4 id="regbtn">1. Register the button in <code>config.btnList</code>.</h4>
! 357:
! 358: <p>For each button in the toolbar, HTMLArea needs to know the following
! 359: information:</p>
! 360: <ul>
! 361: <li>a name for it (we call it the ID of the button);</li>
! 362: <li>the path to an image to be displayed in the toolbar;</li>
! 363: <li>a tooltip for it;</li>
! 364: <li>whether the button is enabled or not in text mode;</li>
! 365: <li>what to do when the button is clicked;</li>
! 366: </ul>
! 367: <p>You need to provide all this information for registering a new button
! 368: too. The button ID can be any string identifier and it's used when
! 369: defining the toolbar, as you saw above. We recommend starting
! 370: it with "my-" so that it won't clash with the standard ID-s (those from
! 371: the default toolbar).</p>
! 372:
! 373: <p class="note">Register button example #1</p>
! 374:
! 375: <pre class="code"
! 376: ><span class="comment">// get a default configuration
! 377: </span><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
! 378: <span class="comment">// register the new button using Config.registerButton.
! 379: // parameters: button ID, tooltip, image, textMode,
! 380: </span>config.registerButton("<span class="string">my-hilite</span>", "<span class="string">Highlight text</span>", "<span class="string">my-hilite.gif</span>", <span class="keyword">false</span>,
! 381: <span class="comment">// function that gets called when the button is clicked
! 382: </span> <span class="keyword">function</span>(editor, id) {
! 383: editor.surroundHTML('<span class="string"><span class="hilite"></span>', '<span class="string"></span></span>');
! 384: }
! 385: );</pre>
! 386:
! 387: <p>An alternate way of calling registerButton is exemplified above. Though
! 388: the code might be a little bit larger, using this form makes your code more
! 389: maintainable. It doesn't even needs comments as it's pretty clear.</p>
! 390:
! 391: <p class="note">Register button example #2</p>
! 392:
! 393: <pre class="code"
! 394: ><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
! 395: config.registerButton({
! 396: id : "<span class="string">my-hilite</span>",
! 397: tooltip : "<span class="string">Highlight text</span>",
! 398: image : "<span class="string">my-hilite.gif</span>",
! 399: textMode : <span class="keyword">false</span>,
! 400: action : <span class="keyword">function</span>(editor, id) {
! 401: editor.surroundHTML('<span class="string"><span class="hilite"></span>', '<span class="string"></span></span>');
! 402: }
! 403: });</pre>
! 404:
! 405: <p>You might notice that the "action" function receives two parameters:
! 406: <b>editor</b> and <b>id</b>. In the examples above we only used the
! 407: <b>editor</b> parameter. But it could be helpful for you to understand
! 408: both:</p>
! 409:
! 410: <ul>
! 411: <li><b>editor</b> is a reference to the HTMLArea object. Since our entire
! 412: code now has an <acronym title="Object Oriented Programming">OOP</acronym>-like
! 413: design, you need to have a reference to
! 414: the editor object in order to do things with it. In previous versions of
! 415: HTMLArea, in order to identify the object an ID was used -- the ID of the
! 416: HTML element. In this version ID-s are no longer necessary.</li>
! 417:
! 418: <li><b>id</b> is the button ID. Wondering why is this useful? Well, you
! 419: could use the same handler function (presuming that it's not an anonymous
! 420: function like in the examples above) for more buttons. You can <a
! 421: href="#btnex">see an example</a> a bit later in this document.</li>
! 422: </ul>
! 423:
! 424: <h4>2. Inserting it into the toolbar</h4>
! 425:
! 426: <p>At this step you need to specify where in the toolbar to insert the
! 427: button, or just create the whole toolbar again as you saw in the previous
! 428: section. You use the button ID, as shown in the examples of customizing the
! 429: toolbar in the previous section.</p>
! 430:
! 431: <p>For the sake of completion, following there are another examples.</p>
! 432:
! 433: <p class="note">Append your button to the default toolbar</p>
! 434:
! 435: <pre class="code"
! 436: >config.toolbar.push([ "<span class="string">my-hilite</span>" ]);</pre>
! 437:
! 438: <p class="note">Customized toolbar</p>
! 439:
! 440: <pre class="code"
! 441: >config.toolbar = [
! 442: ['<span class="string">fontname</span>', '<span class="string">space</span>',
! 443: '<span class="string">fontsize</span>', '<span class="string">space</span>',
! 444: '<span class="string">formatblock</span>', '<span class="string">space</span>',
! 445: '<span class="string">separator</span>', '<span class="string">my-hilite</span>', '<span class="string">separator</span>', '<span class="string">space</span>', <span class="comment">// here's your button
! 446: </span> '<span class="string">bold</span>', '<span class="string">italic</span>', '<span class="string">underline</span>', '<span class="string">space</span>']
! 447: ];</pre>
! 448:
! 449: <p><span class="note">Note:</span> in the example above our new button is
! 450: between two vertical separators. But this is by no means required. You can
! 451: put it wherever you like. Once registered in the btnList (<a
! 452: href="#regbtn">step 1</a>) your custom button behaves just like a default
! 453: button.</p>
! 454:
! 455: <p><span class="warning">Important:</span> It's recommended that you add
! 456: custom features and configuration to a separate file. This will ensure you
! 457: that when we release a new official version of HTMLArea you'll have no
! 458: trouble upgrading it.</p>
! 459:
! 460: <h4 id="btnex">A complete example</h4>
! 461:
! 462: <p>Please note that it is by no means necessary to include the following
! 463: code into the htmlarea.js file. On the contrary, it might not work there.
! 464: The configuration system is designed such that you can always customize the
! 465: editor <em>from outside files</em>, thus keeping the htmlarea.js file
! 466: intact. This will make it easy for you to upgrade your HTMLArea when we
! 467: release a new official version. OK, I promise it's the last time I said
! 468: this. ;)</p>
! 469:
! 470: <pre class="code"
! 471: ><span class="comment">// All our custom buttons will call this function when clicked.
! 472: // We use the <b>buttonId</b> parameter to determine what button
! 473: // triggered the call.
! 474: </span><span class="keyword">function</span> <span class="function-name">clickHandler</span>(editor, buttonId) {
! 475: <span class="keyword">switch</span> (buttonId) {
! 476: <span class="keyword">case</span> "<span class="string">my-toc</span>":
! 477: editor.insertHTML("<span class="string"><h1>Table Of Contents</h1></span>");
! 478: <span class="keyword">break</span>;
! 479: <span class="keyword">case</span> "<span class="string">my-date</span>":
! 480: editor.insertHTML((<span class="keyword">new</span> Date()).toString());
! 481: <span class="keyword">break</span>;
! 482: <span class="keyword">case</span> "<span class="string">my-bold</span>":
! 483: editor.execCommand("<span class="string">bold</span>");
! 484: editor.execCommand("<span class="string">italic</span>");
! 485: <span class="keyword">break</span>;
! 486: <span class="keyword">case</span> "<span class="string">my-hilite</span>":
! 487: editor.surroundHTML("<span class="string"><span class=\"hilite\"></span>", "<span class="string"></span></span>");
! 488: <span class="keyword">break</span>;
! 489: }
! 490: };
! 491:
! 492: <span class="comment">// Create a new configuration object
! 493: </span><span class="keyword">var</span> <span class="variable-name">config</span> = <span class="keyword">new</span> HTMLArea.Config();
! 494:
! 495: <span class="comment">// Register our custom buttons
! 496: </span>config.registerButton("<span class="string">my-toc</span>", "<span class="string">Insert TOC</span>", "<span class="string">my-toc.gif</span>", <span class="keyword">false</span>, clickHandler);
! 497: config.registerButton("<span class="string">my-date</span>", "<span class="string">Insert date/time</span>", "<span class="string">my-date.gif</span>", <span class="keyword">false</span>, clickHandler);
! 498: config.registerButton("<span class="string">my-bold</span>", "<span class="string">Toggle bold/italic</span>", "<span class="string">my-bold.gif</span>", <span class="keyword">false</span>, clickHandler);
! 499: config.registerButton("<span class="string">my-hilite</span>", "<span class="string">Hilite selection</span>", "<span class="string">my-hilite.gif</span>", <span class="keyword">false</span>, clickHandler);
! 500:
! 501: <span class="comment">// Append the buttons to the default toolbar
! 502: </span>config.toolbar.push(["<span class="string">linebreak</span>", "<span class="string">my-toc</span>", "<span class="string">my-date</span>", "<span class="string">my-bold</span>", "<span class="string">my-hilite</span>"]);
! 503:
! 504: <span class="comment">// Replace an existing textarea with an HTMLArea object having the above config.
! 505: </span>HTMLArea.replace("<span class="string">textAreaID</span>", config);</pre>
! 506:
! 507:
! 508: <hr />
! 509: <address>© <a href="http://interactivetools.com" title="Visit our website"
! 510: >InteractiveTools.com</a> 2002, 2003.
! 511: <br />
! 512: HTMLArea v3.0 developed by <a
! 513: href="http://students.infoiasi.ro/~mishoo">Mihai Bazon</a> for
! 514: InteractiveTools.com.
! 515: <br />
! 516: Documentation written by Mihai Bazon.
! 517: </address>
! 518: <!-- hhmts start -->
! 519: Last modified on Sun Aug 3 16:11:23 2003
! 520: <!-- hhmts end -->
! 521: <!-- doc-lang: English -->
! 522: </body> </html>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>