Annotation of kupu/common/kupuinit_genericelements.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 5482 2004-07-08 10:55:08Z 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');
                     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');
                     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');
                     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:     var subscriptbutton = new KupuStateButton('kupu-subscript-button',
                     90:                                               execCommand('subscript'),
                     91:                                               subscriptchecker,
                     92:                                               'kupu-subscript',
                     93:                                               'kupu-subscript-pressed');
                     94:     kupu.registerTool('subscriptbutton', subscriptbutton);
                     95: 
                     96:     var superscriptchecker = ParentWithStyleChecker(new Array('super', 'sup'));
                     97:     var superscriptbutton = new KupuStateButton('kupu-superscript-button', 
                     98:                                                 execCommand('superscript'),
                     99:                                                 superscriptchecker,
                    100:                                                 'kupu-superscript', 
                    101:                                                 'kupu-superscript-pressed');
                    102:     kupu.registerTool('superscriptbutton', superscriptbutton);
                    103: 
                    104:     var justifyleftbutton = new KupuButton('kupu-justifyleft-button',
                    105:                                            execCommand('justifyleft'));
                    106:     kupu.registerTool('justifyleftbutton', justifyleftbutton);
                    107: 
                    108:     var justifycenterbutton = new KupuButton('kupu-justifycenter-button',
                    109:                                              execCommand('justifycenter'));
                    110:     kupu.registerTool('justifycenterbutton', justifycenterbutton);
                    111: 
                    112:     var justifyrightbutton = new KupuButton('kupu-justifyright-button',
                    113:                                             execCommand('justifyright'));
                    114:     kupu.registerTool('justifyrightbutton', justifyrightbutton);
                    115: 
                    116:     var outdentbutton = new KupuButton('kupu-outdent-button', execCommand('outdent'));
                    117:     kupu.registerTool('outdentbutton', outdentbutton);
                    118: 
                    119:     var indentbutton = new KupuButton('kupu-indent-button', execCommand('indent'));
                    120:     kupu.registerTool('indentbutton', indentbutton);
                    121: 
                    122:     var undobutton = new KupuButton('kupu-undo-button', execCommand('undo'));
                    123:     kupu.registerTool('undobutton', undobutton);
                    124: 
                    125:     var redobutton = new KupuButton('kupu-redo-button', execCommand('redo'));
                    126:     kupu.registerTool('redobutton', redobutton);
                    127: 
                    128:     var removeimagebutton = new KupuRemoveElementButton('kupu-removeimage-button',
                    129:                            'img',
                    130:                            'kupu-removeimage');
                    131:     kupu.registerTool('removeimagebutton', removeimagebutton);
                    132:     var removelinkbutton = new KupuRemoveElementButton('kupu-removelink-button',
                    133:                               'a',
                    134:                               'kupu-removelink');
                    135:     kupu.registerTool('removelinkbutton', removelinkbutton);
                    136: 
                    137:     // add some tools
                    138:     // XXX would it be better to pass along elements instead of ids?
                    139:     var colorchoosertool = new ColorchooserTool('kupu-forecolor-button',
                    140:                                                 'kupu-hilitecolor-button',
                    141:                                                 'kupu-colorchooser');
                    142:     kupu.registerTool('colorchooser', colorchoosertool);
                    143: 
                    144:     var listtool = new ListTool('kupu-list-ul-addbutton',
                    145:                                 'kupu-list-ol-addbutton',
                    146:                                 'kupu-ulstyles', 'kupu-olstyles');
                    147:     kupu.registerTool('listtool', listtool);
                    148:     
                    149:     var definitionlisttool = new DefinitionListTool('kupu-list-dl-addbutton');
                    150:     kupu.registerTool('definitionlisttool', definitionlisttool);
                    151:     
                    152:     var proptool = new PropertyTool('kupu-properties-title', 'kupu-properties-description');
                    153:     kupu.registerTool('proptool', proptool);
                    154: 
                    155:     var linktool = new LinkTool();
                    156:     kupu.registerTool('linktool', linktool);
                    157:     var linktoolbox = new LinkToolBox("kupu-link-input", "kupu-link-button", 'kupu-toolbox-links', 'kupu-toolbox', 'kupu-toolbox-active');
                    158:     linktool.registerToolBox('linktoolbox', linktoolbox);
                    159: 
                    160:     var imagetool = new ImageTool();
                    161:     kupu.registerTool('imagetool', imagetool);
                    162:     var imagetoolbox = new ImageToolBox('kupu-image-input', 'kupu-image-addbutton', 
                    163:                                         'kupu-image-float-select', 'kupu-toolbox-images', 
                    164:                                         'kupu-toolbox', 'kupu-toolbox-active');
                    165:     imagetool.registerToolBox('imagetoolbox', imagetoolbox);
                    166: 
                    167:     var tabletool = new TableTool();
                    168:     kupu.registerTool('tabletool', tabletool);
                    169:     // custom TableToolBox for CNF, Codename Future
                    170:     var tabletoolbox = new CNFTableToolBox('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-setrowrepeat-button', 'kupu-table-delrowrepeat-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:     // Generic elements tool
                    189:     var geneltool = new GenericElementsTool('genericelementsxml');
                    190:     kupu.registerTool('genericelements', geneltool);
                    191: 
                    192:     var geneltoolbox = new GenericElementsToolBox('genericelements-elid', 'genericelements-form',
                    193:                             'genericelements-addbutton', 'genericelements-delbutton',
                    194:                             'genericelements-copybutton', 'genericelements-pastebutton',
                    195:                             'genericelements-cancelbutton', 'genericelements-toolbox',
                    196:                             'kupu-toolbox', 'kupu-toolbox-active');
                    197:     geneltool.registerToolBox('genericelementstoolbox', geneltoolbox);
                    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>