Annotation of kupuMPIWG/common/kupuinit_form.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 4015 2004-04-13 13:31:49Z guido $
                     12: 
                     13: 
                     14: function initKupu(iframe) {
                     15:     /* This is a copy of initKupu for the form support
                     16:     
                     17:         We only want to disable the save button, but unfortunately
                     18:         that currently still means this method should be overridden
                     19:         completely
                     20:     */
                     21: 
                     22:     // first we create a logger
                     23:     var l = new PlainLogger('kupu-toolbox-debuglog', 5);
                     24:     
                     25:     // now some config values
                     26:     var conf = loadDictFromXML(document, 'kupuconfig');
                     27:     
                     28:     // the we create the document, hand it over the id of the iframe
                     29:     var doc = new KupuDocument(iframe);
                     30:     
                     31:     // now we can create the controller
                     32:     var kupu = new KupuEditor(doc, conf, l);
                     33: 
                     34:     var contextmenu = new ContextMenu();
                     35:     kupu.setContextMenu(contextmenu);
                     36: 
                     37:     // now we can create a UI object which we can use from the UI
                     38:     var ui = new KupuUI('kupu-tb-styles');
                     39: 
                     40:     // the ui must be registered to the editor like a tool so it can be notified
                     41:     // of state changes
                     42:     kupu.registerTool('ui', ui); // XXX Should this be a different method?
                     43: 
                     44:     // function that returns a function to execute a button command
                     45:     var execCommand = function(cmd) {
                     46:         return function(button, editor) {
                     47:             editor.execCommand(cmd);
                     48:         };
                     49:     };
                     50: 
                     51:     var boldchecker = ParentWithStyleChecker(new Array('b', 'strong'),
                     52:                                              'fontWeight', 'bold');
                     53:     var boldbutton = new KupuStateButton('kupu-bold-button', 
                     54:                                          execCommand('bold'),
                     55:                                          boldchecker,
                     56:                                          'kupu-bold',
                     57:                                          'kupu-bold-pressed');
                     58:     kupu.registerTool('boldbutton', boldbutton);
                     59: 
                     60:     var italicschecker = ParentWithStyleChecker(new Array('i', 'em'),
                     61:                                                 'fontStyle', 'italic');
                     62:     var italicsbutton = new KupuStateButton('kupu-italic-button', 
                     63:                                            execCommand('italic'),
                     64:                                            italicschecker, 
                     65:                                            'kupu-italic', 
                     66:                                            'kupu-italic-pressed');
                     67:     kupu.registerTool('italicsbutton', italicsbutton);
                     68: 
                     69:     var underlinechecker = ParentWithStyleChecker(new Array('u'),
                     70:                                                 'textDecoration', 'underline');
                     71:     var underlinebutton = new KupuStateButton('kupu-underline-button', 
                     72:                                               execCommand('underline'),
                     73:                                               underlinechecker,
                     74:                                               'kupu-underline', 
                     75:                                               'kupu-underline-pressed');
                     76:     kupu.registerTool('underlinebutton', underlinebutton);
                     77: 
                     78:     var subscriptchecker = ParentWithStyleChecker(new Array('sub'));
                     79:     var subscriptbutton = new KupuStateButton('kupu-subscript-button',
                     80:                                               execCommand('subscript'),
                     81:                                               subscriptchecker,
                     82:                                               'kupu-subscript',
                     83:                                               'kupu-subscript-pressed');
                     84:     kupu.registerTool('subscriptbutton', subscriptbutton);
                     85: 
                     86:     var superscriptchecker = ParentWithStyleChecker(new Array('super', 'sup'));
                     87:     var superscriptbutton = new KupuStateButton('kupu-superscript-button', 
                     88:                                                 execCommand('superscript'),
                     89:                                                 superscriptchecker,
                     90:                                                 'kupu-superscript', 
                     91:                                                 'kupu-superscript-pressed');
                     92:     kupu.registerTool('superscriptbutton', superscriptbutton);
                     93: 
                     94:     var justifyleftbutton = new KupuButton('kupu-justifyleft-button',
                     95:                                            execCommand('justifyleft'));
                     96:     kupu.registerTool('justifyleftbutton', justifyleftbutton);
                     97: 
                     98:     var justifycenterbutton = new KupuButton('kupu-justifycenter-button',
                     99:                                              execCommand('justifycenter'));
                    100:     kupu.registerTool('justifycenterbutton', justifycenterbutton);
                    101: 
                    102:     var justifyrightbutton = new KupuButton('kupu-justifyright-button',
                    103:                                             execCommand('justifyright'));
                    104:     kupu.registerTool('justifyrightbutton', justifyrightbutton);
                    105: 
                    106:     var outdentbutton = new KupuButton('kupu-outdent-button', execCommand('outdent'));
                    107:     kupu.registerTool('outdentbutton', outdentbutton);
                    108: 
                    109:     var indentbutton = new KupuButton('kupu-indent-button', execCommand('indent'));
                    110:     kupu.registerTool('indentbutton', indentbutton);
                    111: 
                    112:     var undobutton = new KupuButton('kupu-undo-button', execCommand('undo'));
                    113:     kupu.registerTool('undobutton', undobutton);
                    114: 
                    115:     var redobutton = new KupuButton('kupu-redo-button', execCommand('redo'));
                    116:     kupu.registerTool('redobutton', redobutton);
                    117: 
                    118:     var removeimagebutton = new KupuRemoveElementButton('kupu-removeimage-button',
                    119:                            'img',
                    120:                            'kupu-removeimage');
                    121:     kupu.registerTool('removeimagebutton', removeimagebutton);
                    122:     var removelinkbutton = new KupuRemoveElementButton('kupu-removelink-button',
                    123:                               'a',
                    124:                               'kupu-removelink');
                    125:     kupu.registerTool('removelinkbutton', removelinkbutton);
                    126: 
                    127:     // add some tools
                    128:     // XXX would it be better to pass along elements instead of ids?
                    129:    //  var colorchoosertool = new ColorchooserTool('kupu-forecolor-button',
                    130: //                                                 'kupu-hilitecolor-button',
                    131: //                                                 'kupu-colorchooser');
                    132: //     kupu.registerTool('colorchooser', colorchoosertool);
                    133: 
                    134:     var listtool = new ListTool('kupu-list-ul-addbutton',
                    135:                                 'kupu-list-ol-addbutton',
                    136:                                 'kupu-ulstyles', 'kupu-olstyles');
                    137:     kupu.registerTool('listtool', listtool);
                    138:     
                    139:     var definitionlisttool = new DefinitionListTool('kupu-list-dl-addbutton');
                    140:     kupu.registerTool('definitionlisttool', definitionlisttool);
                    141:     
                    142:     var proptool = new PropertyTool('kupu-properties-title', 'kupu-properties-description');
                    143:     kupu.registerTool('proptool', proptool);
                    144: 
                    145:     var linktool = new LinkTool();
                    146:     kupu.registerTool('linktool', linktool);
                    147:     var linktoolbox = new LinkToolBox("kupu-link-input", "kupu-link-button", 'kupu-toolbox-links', 'kupu-toolbox', 'kupu-toolbox-active');
                    148:     linktool.registerToolBox('linktoolbox', linktoolbox);
                    149: 
                    150:     var imagetool = new ImageTool();
                    151:     kupu.registerTool('imagetool', imagetool);
                    152:     var imagetoolbox = new ImageToolBox('kupu-image-input', 'kupu-image-addbutton', 
                    153:                                         'kupu-image-float-select', 'kupu-toolbox-images', 
                    154:                                         'kupu-toolbox', 'kupu-toolbox-active');
                    155:     imagetool.registerToolBox('imagetoolbox', imagetoolbox);
                    156: 
                    157:    //  var tabletool = new TableTool();
                    158: //     kupu.registerTool('tabletool', tabletool);
                    159:     
                    160: //     var tabletoolbox = new TableToolBox('kupu-toolbox-addtable', 
                    161: //         'kupu-toolbox-edittable', 'kupu-table-newrows', 'kupu-table-newcols',
                    162: //         'kupu-table-makeheader', 'kupu-table-classchooser', 'kupu-table-alignchooser',
                    163: //         'kupu-table-addtable-button', 'kupu-table-addrow-button', 'kupu-table-delrow-button', 
                    164: //         'kupu-table-addcolumn-button', 'kupu-table-delcolumn-button', 
                    165: //         'kupu-table-fix-button', 'kupu-table-fixall-button', 'kupu-toolbox-tables',
                    166: //         'kupu-toolbox', 'kupu-toolbox-active'
                    167: //         );
                    168: //     tabletool.registerToolBox('tabletoolbox', tabletoolbox);
                    169: 
                    170:     var showpathtool = new ShowPathTool();
                    171:     kupu.registerTool('showpathtool', showpathtool);
                    172: 
                    173:     var sourceedittool = new SourceEditTool('kupu-source-button',
                    174:                                             'kupu-editor-textarea');
                    175:     kupu.registerTool('sourceedittool', sourceedittool);
                    176: 
                    177:     // Drawers...
                    178: 
                    179:     // Function that returns function to open a drawer
                    180:     var opendrawer = function(drawerid) {
                    181:         return function(button, editor) {
                    182:             drawertool.openDrawer(drawerid);
                    183:         };
                    184:     };
                    185: 
                    186:     var imagelibdrawerbutton = new KupuButton('kupu-imagelibdrawer-button',
                    187:                                               opendrawer('imagelibdrawer'));
                    188:     kupu.registerTool('imagelibdrawerbutton', imagelibdrawerbutton);
                    189: 
                    190:     var linklibdrawerbutton = new KupuButton('kupu-linklibdrawer-button',
                    191:                                              opendrawer('linklibdrawer'));
                    192:     kupu.registerTool('linklibdrawerbutton', linklibdrawerbutton);
                    193: 
                    194:     var linkdrawerbutton = new KupuButton('kupu-linkdrawer-button',
                    195:                                           opendrawer('linkdrawer'));
                    196:     kupu.registerTool('linkdrawerbutton', linkdrawerbutton);
                    197: 
                    198:   //   var tabledrawerbutton = new KupuButton('kupu-tabledrawer-button',
                    199: //                                            opendrawer('tabledrawer'));
                    200: //     kupu.registerTool('tabledrawerbutton', tabledrawerbutton);
                    201: 
                    202:     // create some drawers, drawers are some sort of popups that appear when a 
                    203:     // toolbar button is clicked
                    204:     var drawertool = new DrawerTool();
                    205:     kupu.registerTool('drawertool', drawertool);
                    206: 
                    207:     var linklibdrawer = new LinkLibraryDrawer(linktool, conf['link_xsl_uri'],
                    208:                                               conf['link_libraries_uri'],
                    209:                                               conf['link_images_uri']);
                    210:     drawertool.registerDrawer('linklibdrawer', linklibdrawer);
                    211: 
                    212:     var imagelibdrawer = new ImageLibraryDrawer(imagetool, conf['image_xsl_uri'],
                    213:                                                 conf['image_libraries_uri'],
                    214:                                                 conf['search_images_uri']);
                    215:     drawertool.registerDrawer('imagelibdrawer', imagelibdrawer);
                    216: 
                    217:     var linkdrawer = new LinkDrawer('kupu-linkdrawer', linktool);
                    218:     drawertool.registerDrawer('linkdrawer', linkdrawer);
                    219: 
                    220:     //var tabledrawer = new TableDrawer('kupu-tabledrawer', tabletool);
                    221:     //drawertool.registerDrawer('tabledrawer', tabledrawer);
                    222: 
                    223:     // make the prepareForm method get called on form submit
                    224:     // some bug in IE makes it crash on saving the form when a lib drawer
                    225:     // was added to the page at some point, remove it on form submit
                    226:     var savebutton = getFromSelector('kupu-save-button');
                    227:     function prepareForm() {
                    228:         var drawer = window.document.getElementById('kupu-librarydrawer');
                    229:         if (drawer) {
                    230:             drawer.parentNode.removeChild(drawer);
                    231:         }
                    232:         kupu.prepareForm(savebutton.form, 'kupu');
                    233:         savebutton.form.submit();
                    234:     };
                    235:     addEventHandler(savebutton, 'click', prepareForm, kupu);
                    236: 
                    237:     //erweiterung preview dw
                    238:     var previewbutton = getFromSelector('kupu-preview-button');
                    239:     function preparePreviewForm() {
                    240:         var drawer = window.document.getElementById('kupu-librarydrawer');
                    241:         if (drawer) {
                    242:             drawer.parentNode.removeChild(drawer);
                    243:         }
                    244:         kupu.prepareForm(previewbutton.form, 'preview');
                    245:         previewbutton.form.submit();
                    246:     };
                    247:     addEventHandler(previewbutton, 'click', preparePreviewForm, kupu);
                    248: 
                    249:     // register some cleanup filter
                    250:     // remove tags that aren't in the XHTML DTD
                    251:     var nonxhtmltagfilter = new NonXHTMLTagFilter();
                    252:     kupu.registerFilter(nonxhtmltagfilter);
                    253: 
                    254:     return kupu;
                    255: };

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