Annotation of kupu/common/kupuinit_genericelements.js, revision 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>