Annotation of kupuMPIWG/common/kupuinit_multi.js, revision 1.1.1.1

1.1       dwinter     1: /*****************************************************************************
                      2:  *
                      3:  * Copyright (c) 2003-2005 Kupu Contributors. All rights reserved.
                      4:  *
                      5:  * This software is distributed under the terms of the Kupu
                      6:  * License. See LICENSE.txt for license text. For a list of Kupu
                      7:  * Contributors see CREDITS.txt.
                      8:  *
                      9:  *****************************************************************************/
                     10: 
                     11: // $Id: kupuinit_multi.js 6259 2004-09-01 15:25:36Z guido $
                     12: 
                     13: 
                     14: //----------------------------------------------------------------------------
                     15: // Sample initialization function
                     16: //----------------------------------------------------------------------------
                     17: 
                     18: function initKupu(iframeids) {
                     19:     /* Although this is meant to be a sample implementation, it can
                     20:         be used out-of-the box to run the sample pagetemplate or for simple
                     21:         implementations that just don't use some elements. When you want
                     22:         to do some customization, this should probably be overridden. For 
                     23:         larger customization actions you will have to subclass or roll your 
                     24:         own UI object.
                     25:     */
                     26: 
                     27:     // first we create a logger
                     28:     var l = new PlainLogger('kupu-toolbox-debuglog', 5);
                     29:     
                     30:     // now some config values
                     31:     var conf = loadDictFromXML(document, 'kupuconfig');
                     32:     
                     33:     var documents = new Array();
                     34:     for (var i=0; i < iframeids.length; i++) {
                     35:         var iframe = getFromSelector(iframeids[i]);
                     36:         documents.push(new KupuDocument(iframe));
                     37:     };
                     38: 
                     39:     var kupu = new KupuMultiEditor(documents, conf, l);
                     40: 
                     41:     /* doesn't work yet
                     42:     var contextmenu = new ContextMenu();
                     43:     kupu.setContextMenu(contextmenu);
                     44:     */
                     45: 
                     46:     // now we can create a UI object which we can use from the UI
                     47:     var ui = new KupuUI('kupu-tb-styles');
                     48: 
                     49:     // the ui must be registered to the editor like a tool so it can be notified
                     50:     // of state changes
                     51:     kupu.registerTool('ui', ui); // XXX Should this be a different method?
                     52: 
                     53:     // function that returns a function to execute a button command
                     54:     var execCommand = function(cmd) {
                     55:         return function(button, editor) {
                     56:             editor.execCommand(cmd);
                     57:         };
                     58:     };
                     59: 
                     60:     var boldchecker = ParentWithStyleChecker(new Array('b', 'strong'),
                     61:                                              'fontWeight', 'bold');
                     62:     var boldbutton = new KupuStateButton('kupu-bold-button', 
                     63:                                          execCommand('bold'),
                     64:                                          boldchecker,
                     65:                                          'kupu-bold',
                     66:                                          'kupu-bold-pressed');
                     67:     kupu.registerTool('boldbutton', boldbutton);
                     68: 
                     69:     var italicschecker = ParentWithStyleChecker(new Array('i', 'em'),
                     70:                                                 'fontStyle', 'italic');
                     71:     var italicsbutton = new KupuStateButton('kupu-italic-button', 
                     72:                                            execCommand('italic'),
                     73:                                            italicschecker, 
                     74:                                            'kupu-italic', 
                     75:                                            'kupu-italic-pressed');
                     76:     kupu.registerTool('italicsbutton', italicsbutton);
                     77: 
                     78:     var underlinechecker = ParentWithStyleChecker(new Array('u'),
                     79:                                                 'textDecoration', 'underline');
                     80:     var underlinebutton = new KupuStateButton('kupu-underline-button', 
                     81:                                               execCommand('underline'),
                     82:                                               underlinechecker,
                     83:                                               'kupu-underline', 
                     84:                                               'kupu-underline-pressed');
                     85:     kupu.registerTool('underlinebutton', underlinebutton);
                     86: 
                     87:     var subscriptchecker = ParentWithStyleChecker(new Array('sub'));
                     88:     var subscriptbutton = new KupuStateButton('kupu-subscript-button',
                     89:                                               execCommand('subscript'),
                     90:                                               subscriptchecker,
                     91:                                               'kupu-subscript',
                     92:                                               'kupu-subscript-pressed');
                     93:     kupu.registerTool('subscriptbutton', subscriptbutton);
                     94: 
                     95:     var superscriptchecker = ParentWithStyleChecker(new Array('super', 'sup'));
                     96:     var superscriptbutton = new KupuStateButton('kupu-superscript-button', 
                     97:                                                 execCommand('superscript'),
                     98:                                                 superscriptchecker,
                     99:                                                 'kupu-superscript', 
                    100:                                                 'kupu-superscript-pressed');
                    101:     kupu.registerTool('superscriptbutton', superscriptbutton);
                    102: 
                    103:     var justifyleftbutton = new KupuButton('kupu-justifyleft-button',
                    104:                                            execCommand('justifyleft'));
                    105:     kupu.registerTool('justifyleftbutton', justifyleftbutton);
                    106: 
                    107:     var justifycenterbutton = new KupuButton('kupu-justifycenter-button',
                    108:                                              execCommand('justifycenter'));
                    109:     kupu.registerTool('justifycenterbutton', justifycenterbutton);
                    110: 
                    111:     var justifyrightbutton = new KupuButton('kupu-justifyright-button',
                    112:                                             execCommand('justifyright'));
                    113:     kupu.registerTool('justifyrightbutton', justifyrightbutton);
                    114: 
                    115:     var outdentbutton = new KupuButton('kupu-outdent-button', execCommand('outdent'));
                    116:     kupu.registerTool('outdentbutton', outdentbutton);
                    117: 
                    118:     var indentbutton = new KupuButton('kupu-indent-button', execCommand('indent'));
                    119:     kupu.registerTool('indentbutton', indentbutton);
                    120: 
                    121:     var undobutton = new KupuButton('kupu-undo-button', execCommand('undo'));
                    122:     kupu.registerTool('undobutton', undobutton);
                    123: 
                    124:     var redobutton = new KupuButton('kupu-redo-button', execCommand('redo'));
                    125:     kupu.registerTool('redobutton', redobutton);
                    126: 
                    127:     var removeimagebutton = new KupuRemoveElementButton('kupu-removeimage-button',
                    128:                            'img',
                    129:                            'kupu-removeimage');
                    130:     kupu.registerTool('removeimagebutton', removeimagebutton);
                    131:     var removelinkbutton = new KupuRemoveElementButton('kupu-removelink-button',
                    132:                               'a',
                    133:                               'kupu-removelink');
                    134:     kupu.registerTool('removelinkbutton', removelinkbutton);
                    135: 
                    136:     // add some tools
                    137:     // XXX would it be better to pass along elements instead of ids?
                    138:     var colorchoosertool = new ColorchooserTool('kupu-forecolor-button',
                    139:                                                 'kupu-hilitecolor-button',
                    140:                                                 'kupu-colorchooser');
                    141:     kupu.registerTool('colorchooser', colorchoosertool);
                    142: 
                    143:     var listtool = new ListTool('kupu-list-ul-addbutton',
                    144:                                 'kupu-list-ol-addbutton',
                    145:                                 'kupu-ulstyles', 'kupu-olstyles');
                    146:     kupu.registerTool('listtool', listtool);
                    147:     
                    148:     var definitionlisttool = new DefinitionListTool('kupu-list-dl-addbutton');
                    149:     kupu.registerTool('definitionlisttool', definitionlisttool);
                    150:     
                    151:     /* dunno if we'll ever want to support this
                    152:     var proptool = new PropertyTool('kupu-properties-title', 'kupu-properties-description');
                    153:     kupu.registerTool('proptool', proptool);
                    154:     */
                    155: 
                    156:     var linktool = new LinkTool();
                    157:     kupu.registerTool('linktool', linktool);
                    158:     var linktoolbox = new LinkToolBox("kupu-link-input", "kupu-link-button", 'kupu-toolbox-links', 'kupu-toolbox', 'kupu-toolbox-active');
                    159:     linktool.registerToolBox('linktoolbox', linktoolbox);
                    160: 
                    161:     var imagetool = new ImageTool();
                    162:     kupu.registerTool('imagetool', imagetool);
                    163:     var imagetoolbox = new ImageToolBox('kupu-image-input', 'kupu-image-addbutton', 
                    164:                                         'kupu-image-float-select', 'kupu-toolbox-images', 
                    165:                                         'kupu-toolbox', 'kupu-toolbox-active');
                    166:     imagetool.registerToolBox('imagetoolbox', imagetoolbox);
                    167: 
                    168:     var tabletool = new TableTool();
                    169:     kupu.registerTool('tabletool', tabletool);
                    170:     var tabletoolbox = new TableToolBox('kupu-toolbox-addtable', 
                    171:         'kupu-toolbox-edittable', 'kupu-table-newrows', 'kupu-table-newcols',
                    172:         'kupu-table-makeheader', 'kupu-table-classchooser', 'kupu-table-alignchooser',
                    173:         'kupu-table-addtable-button', 'kupu-table-addrow-button', 'kupu-table-delrow-button', 
                    174:         'kupu-table-addcolumn-button', 'kupu-table-delcolumn-button', 
                    175:         'kupu-table-fix-button', 'kupu-table-fixall-button', 'kupu-toolbox-tables',
                    176:         'kupu-toolbox', 'kupu-toolbox-active'
                    177:         );
                    178:     tabletool.registerToolBox('tabletoolbox', tabletoolbox);
                    179: 
                    180:     var showpathtool = new ShowPathTool();
                    181:     kupu.registerTool('showpathtool', showpathtool);
                    182: 
                    183:     var sourceedittool = new MultiSourceEditTool('kupu-source-button',
                    184:                                                     'kupu-editor-textarea-');
                    185:     kupu.registerTool('sourceedittool', sourceedittool);
                    186: 
                    187:     // Drawers...
                    188: 
                    189:     // Function that returns function to open a drawer
                    190:     var opendrawer = function(drawerid) {
                    191:         return function(button, editor) {
                    192:             drawertool.openDrawer(drawerid);
                    193:         };
                    194:     };
                    195: 
                    196:     var imagelibdrawerbutton = new KupuButton('kupu-imagelibdrawer-button',
                    197:                                               opendrawer('imagelibdrawer'));
                    198:     kupu.registerTool('imagelibdrawerbutton', imagelibdrawerbutton);
                    199: 
                    200:     var linklibdrawerbutton = new KupuButton('kupu-linklibdrawer-button',
                    201:                                              opendrawer('linklibdrawer'));
                    202:     kupu.registerTool('linklibdrawerbutton', linklibdrawerbutton);
                    203: 
                    204:     var linkdrawerbutton = new KupuButton('kupu-linkdrawer-button',
                    205:                                           opendrawer('linkdrawer'));
                    206:     kupu.registerTool('linkdrawerbutton', linkdrawerbutton);
                    207: 
                    208:     var tabledrawerbutton = new KupuButton('kupu-tabledrawer-button',
                    209:                                            opendrawer('tabledrawer'));
                    210:     kupu.registerTool('tabledrawerbutton', tabledrawerbutton);
                    211: 
                    212:     // create some drawers, drawers are some sort of popups that appear when a 
                    213:     // toolbar button is clicked
                    214:     var drawertool = new DrawerTool();
                    215:     kupu.registerTool('drawertool', drawertool);
                    216: 
                    217:     var linklibdrawer = new LinkLibraryDrawer(linktool, conf['link_xsl_uri'],
                    218:                                               conf['link_libraries_uri'],
                    219:                                               conf['link_images_uri']);
                    220:     drawertool.registerDrawer('linklibdrawer', linklibdrawer);
                    221: 
                    222:     var imagelibdrawer = new ImageLibraryDrawer(imagetool, conf['image_xsl_uri'],
                    223:                                                 conf['image_libraries_uri'],
                    224:                                                 conf['search_images_uri']);
                    225:     drawertool.registerDrawer('imagelibdrawer', imagelibdrawer);
                    226: 
                    227:     var linkdrawer = new LinkDrawer('kupu-linkdrawer', linktool);
                    228:     drawertool.registerDrawer('linkdrawer', linkdrawer);
                    229: 
                    230:     var tabledrawer = new TableDrawer('kupu-tabledrawer', tabletool);
                    231:     drawertool.registerDrawer('tabledrawer', tabledrawer);
                    232: 
                    233:     // register some cleanup filter
                    234:     // remove tags that aren't in the XHTML DTD
                    235:     var nonxhtmltagfilter = new NonXHTMLTagFilter();
                    236:     kupu.registerFilter(nonxhtmltagfilter);
                    237: 
                    238:     return kupu;
                    239: };

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>