File:  [LON-CAPA] / loncom / html / htmlarea / Attic / reference.html
Revision 1.1: download - view: text, annotated - select for diffs
Wed Feb 18 08:07:15 2004 UTC (20 years, 5 months ago) by www
Branches: MAIN
CVS tags: HEAD
Install HTMLArea

    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>