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>&lt;textarea&gt;</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> &gt;= 5.5</span>
        !           143: (Windows only), or <span class="browser"><a
        !           144: href="http://mozilla.org">Mozilla</a> &gt;= 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 (&lt;h1&gt; .. &lt;h6&gt;)</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">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span> <span class="variable-name">src=</span><span class="string">&quot;/htmlarea/htmlarea.js&quot;</span><span class="function-name">&gt;</span><span class="paren-face-match">&lt;</span><span class="html-tag">/script</span><span class="paren-face-match">&gt;</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">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span> <span class="variable-name">src=</span><span class="string">&quot;/htmlarea/dialog.js&quot;</span><span class="paren-face-match">&gt;</span><span class="function-name">&lt;</span><span class="html-tag">/script</span><span class="function-name">&gt;</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">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span> <span class="variable-name">src=</span><span class="string">&quot;/htmlarea/lang/en.js&quot;</span><span class="function-name">&gt;</span><span class="paren-face-match">&lt;</span><span class="html-tag">/script</span><span class="paren-face-match">&gt;</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">&lt;</span><span class="html-tag">style</span> <span class="variable-name">type=</span><span class="string">&quot;text/css&quot;</span><span class="function-name">&gt;</span>@import url<span class="function-name">(</span>/htmlarea/htmlarea.css<span class="function-name">)</span><span class="paren-face-match">&lt;</span><span class="html-tag">/style</span><span class="paren-face-match">&gt;</span></pre>
        !           248:   </li>
        !           249: 
        !           250:   <li><p>If you want to change all your &lt;textarea&gt;-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">&lt;</span><span class="html-tag">script</span> <span class="variable-name">type=</span><span class="string">&quot;text/javascript&quot;</span> <span class="variable-name">defer=</span><span class="string">&quot;1&quot;</span><span class="function-name">&gt;</span>
        !           254:     HTMLArea.replaceAll<span class="function-name">()</span>;
        !           255: <span class="paren-face-match">&lt;</span><span class="html-tag">/script</span><span class="paren-face-match">&gt;</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: [ &quot;<span class="string">fontname</span>&quot;, &quot;<span class="string">space</span>&quot;,
        !           317:   &quot;<span class="string">fontsize</span>&quot;, &quot;<span class="string">space</span>&quot;,
        !           318:   &quot;<span class="string">formatblock</span>&quot;, &quot;<span class="string">space</span>&quot;,
        !           319:   &quot;<span class="string">bold</span>&quot;, &quot;<span class="string">italic</span>&quot;, &quot;<span class="string">underline</span>&quot;, &quot;<span class="string">separator</span>&quot;,
        !           320:   &quot;<span class="string">strikethrough</span>&quot;, &quot;<span class="string">subscript</span>&quot;, &quot;<span class="string">superscript</span>&quot;, &quot;<span class="string">separator</span>&quot;,
        !           321:   &quot;<span class="string">copy</span>&quot;, &quot;<span class="string">cut</span>&quot;, &quot;<span class="string">paste</span>&quot;, &quot;<span class="string">space</span>&quot;, &quot;<span class="string">undo</span>&quot;, &quot;<span class="string">redo</span>&quot; ],
        !           322: 		
        !           323: [ &quot;<span class="string">justifyleft</span>&quot;, &quot;<span class="string">justifycenter</span>&quot;, &quot;<span class="string">justifyright</span>&quot;, &quot;<span class="string">justifyfull</span>&quot;, &quot;<span class="string">separator</span>&quot;,
        !           324:   &quot;<span class="string">insertorderedlist</span>&quot;, &quot;<span class="string">insertunorderedlist</span>&quot;, &quot;<span class="string">outdent</span>&quot;, &quot;<span class="string">indent</span>&quot;, &quot;<span class="string">separator</span>&quot;,
        !           325:   &quot;<span class="string">forecolor</span>&quot;, &quot;<span class="string">hilitecolor</span>&quot;, &quot;<span class="string">textindicator</span>&quot;, &quot;<span class="string">separator</span>&quot;,
        !           326:   &quot;<span class="string">inserthorizontalrule</span>&quot;, &quot;<span class="string">createlink</span>&quot;, &quot;<span class="string">insertimage</span>&quot;, &quot;<span class="string">inserttable</span>&quot;, &quot;<span class="string">htmlmode</span>&quot;, &quot;<span class="string">separator</span>&quot;,
        !           327:   &quot;<span class="string">popupeditor</span>&quot;, &quot;<span class="string">separator</span>&quot;, &quot;<span class="string">showhelp</span>&quot;, &quot;<span class="string">about</span>&quot; ]
        !           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(&quot;<span class="string">my-hilite</span>&quot;, &quot;<span class="string">Highlight text</span>&quot;, &quot;<span class="string">my-hilite.gif</span>&quot;, <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">&lt;span class=&quot;hilite&quot;&gt;</span>', '<span class="string">&lt;/span&gt;</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        : &quot;<span class="string">my-hilite</span>&quot;,
        !           397:   tooltip   : &quot;<span class="string">Highlight text</span>&quot;,
        !           398:   image     : &quot;<span class="string">my-hilite.gif</span>&quot;,
        !           399:   textMode  : <span class="keyword">false</span>,
        !           400:   action    : <span class="keyword">function</span>(editor, id) {
        !           401:                 editor.surroundHTML('<span class="string">&lt;span class=&quot;hilite&quot;&gt;</span>', '<span class="string">&lt;/span&gt;</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([ &quot;<span class="string">my-hilite</span>&quot; ]);</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> &quot;<span class="string">my-toc</span>&quot;:
        !           477:       editor.insertHTML(&quot;<span class="string">&lt;h1&gt;Table Of Contents&lt;/h1&gt;</span>&quot;);
        !           478:       <span class="keyword">break</span>;
        !           479:     <span class="keyword">case</span> &quot;<span class="string">my-date</span>&quot;:
        !           480:       editor.insertHTML((<span class="keyword">new</span> Date()).toString());
        !           481:       <span class="keyword">break</span>;
        !           482:     <span class="keyword">case</span> &quot;<span class="string">my-bold</span>&quot;:
        !           483:       editor.execCommand(&quot;<span class="string">bold</span>&quot;);
        !           484:       editor.execCommand(&quot;<span class="string">italic</span>&quot;);
        !           485:       <span class="keyword">break</span>;
        !           486:     <span class="keyword">case</span> &quot;<span class="string">my-hilite</span>&quot;:
        !           487:       editor.surroundHTML(&quot;<span class="string">&lt;span class=\&quot;hilite\&quot;&gt;</span>&quot;, &quot;<span class="string">&lt;/span&gt;</span>&quot;);
        !           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(&quot;<span class="string">my-toc</span>&quot;,  &quot;<span class="string">Insert TOC</span>&quot;, &quot;<span class="string">my-toc.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
        !           497: config.registerButton(&quot;<span class="string">my-date</span>&quot;, &quot;<span class="string">Insert date/time</span>&quot;, &quot;<span class="string">my-date.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
        !           498: config.registerButton(&quot;<span class="string">my-bold</span>&quot;, &quot;<span class="string">Toggle bold/italic</span>&quot;, &quot;<span class="string">my-bold.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
        !           499: config.registerButton(&quot;<span class="string">my-hilite</span>&quot;, &quot;<span class="string">Hilite selection</span>&quot;, &quot;<span class="string">my-hilite.gif</span>&quot;, <span class="keyword">false</span>, clickHandler);
        !           500: 
        !           501: <span class="comment">// Append the buttons to the default toolbar
        !           502: </span>config.toolbar.push([&quot;<span class="string">linebreak</span>&quot;, &quot;<span class="string">my-toc</span>&quot;, &quot;<span class="string">my-date</span>&quot;, &quot;<span class="string">my-bold</span>&quot;, &quot;<span class="string">my-hilite</span>&quot;]);
        !           503: 
        !           504: <span class="comment">// Replace an existing textarea with an HTMLArea object having the above config.
        !           505: </span>HTMLArea.replace(&quot;<span class="string">textAreaID</span>&quot;, config);</pre>
        !           506: 
        !           507: 
        !           508: <hr />
        !           509: <address>&copy; <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>