Annotation of kupu/common/kupuinit.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.js 12166 2005-05-10 16:17:35Z guido $
                     12: 
                     13: 
                     14: //----------------------------------------------------------------------------
                     15: // Sample initialization function
                     16: //----------------------------------------------------------------------------
                     17: 
                     18: function initKupu(iframe) {
                     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:     // the we create the document, hand it over the id of the iframe
                     34:     var doc = new KupuDocument(iframe);
                     35:     
                     36:     // now we can create the controller
                     37:     var kupu = new KupuEditor(doc, conf, l);
                     38: 
                     39:     var contextmenu = new ContextMenu();
                     40:     kupu.setContextMenu(contextmenu);
                     41: 
                     42:     // now we can create a UI object which we can use from the UI
                     43:     var ui = new KupuUI('kupu-tb-styles');
                     44: 
                     45:     // the ui must be registered to the editor like a tool so it can be notified
                     46:     // of state changes
                     47:     kupu.registerTool('ui', ui); // XXX Should this be a different method?
                     48: 
                     49:     // add the buttons to the toolbar
                     50:     var savebuttonfunc = function(button, editor) {editor.saveDocument()};
                     51:     var savebutton = new KupuButton('kupu-save-button', savebuttonfunc);
                     52:     kupu.registerTool('savebutton', savebutton);
                     53: 
                     54:     // function that returns a function to execute a button command
                     55:     var execCommand = function(cmd) {
                     56:         return function(button, editor) {
                     57:             editor.execCommand(cmd);
                     58:         };
                     59:     };
                     60: 
                     61:     var boldchecker = ParentWithStyleChecker(new Array('b', 'strong'),
                     62:                                              'fontWeight', 'bold', 'bold');
                     63:     var boldbutton = new KupuStateButton('kupu-bold-button', 
                     64:                                          execCommand('bold'),
                     65:                                          boldchecker,
                     66:                                          'kupu-bold',
                     67:                                          'kupu-bold-pressed');
                     68:     kupu.registerTool('boldbutton', boldbutton);
                     69: 
                     70:     var italicschecker = ParentWithStyleChecker(new Array('i', 'em'),
                     71:                                               'fontStyle', 'italic', 'italic');
                     72:     var italicsbutton = new KupuStateButton('kupu-italic-button', 
                     73:                                            execCommand('italic'),
                     74:                                            italicschecker, 
                     75:                                            'kupu-italic', 
                     76:                                            'kupu-italic-pressed');
                     77:     kupu.registerTool('italicsbutton', italicsbutton);
                     78: 
                     79:     var underlinechecker = ParentWithStyleChecker(new Array('u'),
                     80:                                    'textDecoration', 'underline', 'underline');
                     81:     var underlinebutton = new KupuStateButton('kupu-underline-button', 
                     82:                                               execCommand('underline'),
                     83:                                               underlinechecker,
                     84:                                               'kupu-underline', 
                     85:                                               'kupu-underline-pressed');
                     86:     kupu.registerTool('underlinebutton', underlinebutton);
                     87: 
                     88:     var subscriptchecker = ParentWithStyleChecker(new Array('sub'),
                     89:                                                   null, null, 'subscript');
                     90:     var subscriptbutton = new KupuStateButton('kupu-subscript-button',
                     91:                                               execCommand('subscript'),
                     92:                                               subscriptchecker,
                     93:                                               'kupu-subscript',
                     94:                                               'kupu-subscript-pressed');
                     95:     kupu.registerTool('subscriptbutton', subscriptbutton);
                     96: 
                     97:     var superscriptchecker = ParentWithStyleChecker(new Array('super', 'sup'),
                     98:                                                     null, null, 'superscript');
                     99:     var superscriptbutton = new KupuStateButton('kupu-superscript-button', 
                    100:                                                 execCommand('superscript'),
                    101:                                                 superscriptchecker,
                    102:                                                 'kupu-superscript', 
                    103:                                                 'kupu-superscript-pressed');
                    104:     kupu.registerTool('superscriptbutton', superscriptbutton);
                    105: 
                    106:     var justifyleftbutton = new KupuButton('kupu-justifyleft-button',
                    107:                                            execCommand('justifyleft'));
                    108:     kupu.registerTool('justifyleftbutton', justifyleftbutton);
                    109: 
                    110:     var justifycenterbutton = new KupuButton('kupu-justifycenter-button',
                    111:                                              execCommand('justifycenter'));
                    112:     kupu.registerTool('justifycenterbutton', justifycenterbutton);
                    113: 
                    114:     var justifyrightbutton = new KupuButton('kupu-justifyright-button',
                    115:                                             execCommand('justifyright'));
                    116:     kupu.registerTool('justifyrightbutton', justifyrightbutton);
                    117: 
                    118:     var outdentbutton = new KupuButton('kupu-outdent-button', execCommand('outdent'));
                    119:     kupu.registerTool('outdentbutton', outdentbutton);
                    120: 
                    121:     var indentbutton = new KupuButton('kupu-indent-button', execCommand('indent'));
                    122:     kupu.registerTool('indentbutton', indentbutton);
                    123: 
                    124:     var undobutton = new KupuButton('kupu-undo-button', execCommand('undo'));
                    125:     kupu.registerTool('undobutton', undobutton);
                    126: 
                    127:     var redobutton = new KupuButton('kupu-redo-button', execCommand('redo'));
                    128:     kupu.registerTool('redobutton', redobutton);
                    129: 
                    130:     var removeimagebutton = new KupuRemoveElementButton('kupu-removeimage-button',
                    131:                            'img',
                    132:                            'kupu-removeimage');
                    133:     kupu.registerTool('removeimagebutton', removeimagebutton);
                    134:     var removelinkbutton = new KupuRemoveElementButton('kupu-removelink-button',
                    135:                               'a',
                    136:                               'kupu-removelink');
                    137:     kupu.registerTool('removelinkbutton', removelinkbutton);
                    138: 
                    139:     // add some tools
                    140:     // XXX would it be better to pass along elements instead of ids?
                    141:     var colorchoosertool = new ColorchooserTool('kupu-forecolor-button',
                    142:                                                 'kupu-hilitecolor-button',
                    143:                                                 'kupu-colorchooser');
                    144:     kupu.registerTool('colorchooser', colorchoosertool);
                    145: 
                    146:     var listtool = new ListTool('kupu-list-ul-addbutton',
                    147:                                 'kupu-list-ol-addbutton',
                    148:                                 'kupu-ulstyles', 'kupu-olstyles');
                    149:     kupu.registerTool('listtool', listtool);
                    150:     
                    151:     var definitionlisttool = new DefinitionListTool('kupu-list-dl-addbutton');
                    152:     kupu.registerTool('definitionlisttool', definitionlisttool);
                    153:     
                    154:     var proptool = new PropertyTool('kupu-properties-title', 'kupu-properties-description');
                    155:     kupu.registerTool('proptool', proptool);
                    156: 
                    157:     var linktool = new LinkTool();
                    158:     kupu.registerTool('linktool', linktool);
                    159:     var linktoolbox = new LinkToolBox("kupu-link-input", "kupu-link-button", 'kupu-toolbox-links', 'kupu-toolbox', 'kupu-toolbox-active');
                    160:     linktool.registerToolBox('linktoolbox', linktoolbox);
                    161: 
                    162:     var imagetool = new ImageTool();
                    163:     kupu.registerTool('imagetool', imagetool);
                    164:     var imagetoolbox = new ImageToolBox('kupu-image-input', 'kupu-image-addbutton', 
                    165:                                         'kupu-image-float-select', 'kupu-toolbox-images', 
                    166:                                         'kupu-toolbox', 'kupu-toolbox-active');
                    167:     imagetool.registerToolBox('imagetoolbox', imagetoolbox);
                    168: 
                    169:     var tabletool = new TableTool();
                    170:     kupu.registerTool('tabletool', tabletool);
                    171:     var tabletoolbox = new TableToolBox('kupu-toolbox-addtable', 
                    172:         'kupu-toolbox-edittable', 'kupu-table-newrows', 'kupu-table-newcols',
                    173:         'kupu-table-makeheader', 'kupu-table-classchooser', 'kupu-table-alignchooser',
                    174:         'kupu-table-addtable-button', 'kupu-table-addrow-button', 'kupu-table-delrow-button', 
                    175:         'kupu-table-addcolumn-button', 'kupu-table-delcolumn-button', 
                    176:         'kupu-table-fix-button', 'kupu-table-fixall-button', 'kupu-toolbox-tables',
                    177:         'kupu-toolbox', 'kupu-toolbox-active'
                    178:         );
                    179:     tabletool.registerToolBox('tabletoolbox', tabletoolbox);
                    180: 
                    181:     var showpathtool = new ShowPathTool();
                    182:     kupu.registerTool('showpathtool', showpathtool);
                    183: 
                    184:     var sourceedittool = new SourceEditTool('kupu-source-button',
                    185:                                             'kupu-editor-textarea');
                    186:     kupu.registerTool('sourceedittool', sourceedittool);
                    187: 
                    188:     /*var spellchecker = new KupuSpellChecker('kupu-spellchecker-button',
                    189:                                             'spellcheck.cgi');
                    190:     kupu.registerTool('spellchecker', spellchecker);
                    191:     
                    192:     var zoom = new KupuZoomTool('kupu-zoom-button');
                    193:     kupu.registerTool('zoomtool', zoom);
                    194:     
                    195:     var cleanupexpressions = new CleanupExpressionsTool(
                    196:             'kupucleanupexpressionselect', 'kupucleanupexpressionbutton');
                    197:     kupu.registerTool('cleanupexpressions', cleanupexpressions);
                    198:     */
                    199:     // Drawers...
                    200: 
                    201:     // Function that returns function to open a drawer
                    202:     var opendrawer = function(drawerid) {
                    203:         return function(button, editor) {
                    204:             drawertool.openDrawer(drawerid);
                    205:         };
                    206:     };
                    207: 
                    208:     var imagelibdrawerbutton = new KupuButton('kupu-imagelibdrawer-button',
                    209:                                               opendrawer('imagelibdrawer'));
                    210:     kupu.registerTool('imagelibdrawerbutton', imagelibdrawerbutton);
                    211: 
                    212:     var linklibdrawerbutton = new KupuButton('kupu-linklibdrawer-button',
                    213:                                              opendrawer('linklibdrawer'));
                    214:     kupu.registerTool('linklibdrawerbutton', linklibdrawerbutton);
                    215: 
                    216:     var linkdrawerbutton = new KupuButton('kupu-linkdrawer-button',
                    217:                                           opendrawer('linkdrawer'));
                    218:     kupu.registerTool('linkdrawerbutton', linkdrawerbutton);
                    219: 
                    220:     var tabledrawerbutton = new KupuButton('kupu-tabledrawer-button',
                    221:                                            opendrawer('tabledrawer'));
                    222:     kupu.registerTool('tabledrawerbutton', tabledrawerbutton);
                    223: 
                    224:     // create some drawers, drawers are some sort of popups that appear when a 
                    225:     // toolbar button is clicked
                    226:     var drawertool = new DrawerTool();
                    227:     kupu.registerTool('drawertool', drawertool);
                    228: 
                    229:     try {
                    230:         var linklibdrawer = new LinkLibraryDrawer(linktool, 
                    231:                                                   conf['link_xsl_uri'],
                    232:                                                   conf['link_libraries_uri'],
                    233:                                                   conf['link_images_uri']);
                    234:         drawertool.registerDrawer('linklibdrawer', linklibdrawer);
                    235: 
                    236:         var imagelibdrawer = new ImageLibraryDrawer(imagetool, 
                    237:                                                     conf['image_xsl_uri'],
                    238:                                                     conf['image_libraries_uri'],
                    239:                                                     conf['search_images_uri']);
                    240:         drawertool.registerDrawer('imagelibdrawer', imagelibdrawer);
                    241:     } catch(e) {
                    242:         var msg = _('There was a problem initializing the drawers. Most ' +
                    243:                 'likely the XSLT or XML files aren\'t available. If this ' +
                    244:                 'is not the Kupu demo version, check your files or the ' +
                    245:                 'service that provide them (error: ${error}).',
                    246:                 {'error': (e.message || e.toString())});
                    247:         alert(msg);
                    248:     };
                    249: 
                    250:     var linkdrawer = new LinkDrawer('kupu-linkdrawer', linktool);
                    251:     drawertool.registerDrawer('linkdrawer', linkdrawer);
                    252: 
                    253:     var tabledrawer = new TableDrawer('kupu-tabledrawer', tabletool);
                    254:     drawertool.registerDrawer('tabledrawer', tabledrawer);
                    255: 
                    256:     // register some cleanup filter
                    257:     // remove tags that aren't in the XHTML DTD
                    258:     var nonxhtmltagfilter = new NonXHTMLTagFilter();
                    259:     kupu.registerFilter(nonxhtmltagfilter);
                    260: 
                    261:     return kupu;
                    262: };

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