Annotation of kupuMPIWG/silva/kupusilvainit.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: kupusilvainit.js 12187 2005-05-11 14:29:58Z guido $
        !            12: 
        !            13: // XXX Port this to the default dist?
        !            14: KupuEditor.prototype.afterInit = function() {
        !            15:     // select the line after the first heading, if the document is correctly
        !            16:     // formatted
        !            17:     this.getDocument().getWindow().focus();
        !            18:     var doc = this.getInnerDocument();
        !            19:     var body = doc.getElementsByTagName('body')[0];
        !            20:     var h = null;
        !            21:     var iterator = new NodeIterator(body);
        !            22:     while (h = iterator.next()) {
        !            23:         if (h.nodeType == 1 && h.nodeName.toLowerCase() == 'h2') {
        !            24:             var selection = this.getSelection();
        !            25:             // okay, the first element node is a h2, select
        !            26:             // next node, if it doesn't exist create and select
        !            27:             var next = h.nextSibling;
        !            28:             if (!next) {
        !            29:                 next = doc.createElement('p');
        !            30:                 next.appendChild(doc.createTextNode('\xa0'));
        !            31:                 body.appendChild(next);
        !            32:             } else {
        !            33:                 var nodeName = next.nodeName.toLowerCase();
        !            34:                 if (nodeName == 'table') {
        !            35:                     next = next.getElementsByTagName('td')[0];
        !            36:                 } else if (nodeName == 'ul' || nodeName == 'ol') {
        !            37:                     next = next.getElementsByTagName('li')[0];
        !            38:                 };
        !            39:             };
        !            40:             selection.selectNodeContents(next);
        !            41:             selection.collapse();
        !            42:             break;
        !            43:         } else if (h.nodeType == 1) {
        !            44:             break;
        !            45:         };
        !            46:     };
        !            47:     // if we don't first focus the outer window, Mozilla won't show a cursor
        !            48:     window.focus();
        !            49:     this.getDocument().getWindow().focus();
        !            50: };
        !            51: 
        !            52: function initSilvaKupu(iframe) {
        !            53:     // first we create a logger
        !            54:     var l = new DummyLogger();
        !            55: 
        !            56:     // now some config values
        !            57:     var conf = loadDictFromXML(document, 'kupuconfig');
        !            58:     
        !            59:     // the we create the document, hand it over the id of the iframe
        !            60:     var doc = new KupuDocument(iframe);
        !            61: 
        !            62:     // now we can create the controller
        !            63:     var kupu = new KupuEditor(doc, conf, l);
        !            64:     
        !            65:     kupu.registerContentChanger(document.getElementById('kupu-editor-textarea'));
        !            66: 
        !            67:     if (kupu.getBrowserName() == 'IE') {
        !            68:         // IE supports onbeforeunload, so let's use that
        !            69:         addEventHandler(window, 'beforeunload', saveOnPart);
        !            70:     } else {
        !            71:         // some versions of Mozilla support onbeforeunload (starting with 1.7)
        !            72:         // so let's try to register and if it fails fall back on onunload
        !            73:         var re = /rv:([0-9\.]+)/
        !            74:         var match = re.exec(navigator.userAgent)
        !            75:         if (match[1] && parseFloat(match[1]) > 1.6) {
        !            76:             addEventHandler(window, 'beforeunload', saveOnPart);
        !            77:         } else {
        !            78:             addEventHandler(window, 'unload', saveOnPart);
        !            79:         };
        !            80:     };
        !            81: 
        !            82:     var cm = new ContextMenu();
        !            83:     kupu.setContextMenu(cm);
        !            84: 
        !            85:     // now we can create a UI object which we can use from the UI
        !            86:     var ui = new SilvaKupuUI('kupu-tb-styles');
        !            87:     kupu.registerTool('ui', ui);
        !            88: 
        !            89:     var savebuttonfunc = function(button, editor) {editor.saveDocument()};
        !            90:     var savebutton = new KupuButton('kupu-save-button', savebuttonfunc);
        !            91:     kupu.registerTool('savebutton', savebutton);
        !            92: 
        !            93:     // function that returns a function to execute a button command
        !            94:     var execCommand = function(cmd) {
        !            95:         return function(button, editor) {
        !            96:             editor.execCommand(cmd);
        !            97:         };
        !            98:     };
        !            99: 
        !           100:     var boldchecker = ParentWithStyleChecker(new Array('b', 'strong'),
        !           101:                                              'font-weight', 'bold');
        !           102:     var boldbutton = new KupuStateButton('kupu-bold-button', 
        !           103:                                          execCommand('bold'),
        !           104:                                          boldchecker,
        !           105:                                          'kupu-bold',
        !           106:                                          'kupu-bold-pressed');
        !           107:     kupu.registerTool('boldbutton', boldbutton);
        !           108: 
        !           109:     var italicschecker = ParentWithStyleChecker(new Array('i', 'em'),
        !           110:                                                 'font-style', 'italic');
        !           111:     var italicsbutton = new KupuStateButton('kupu-italic-button', 
        !           112:                                            execCommand('italic'),
        !           113:                                            italicschecker, 
        !           114:                                            'kupu-italic', 
        !           115:                                            'kupu-italic-pressed');
        !           116:     kupu.registerTool('italicsbutton', italicsbutton);
        !           117: 
        !           118:     var underlinechecker = ParentWithStyleChecker(new Array('u'));
        !           119:     var underlinebutton = new KupuStateButton('kupu-underline-button', 
        !           120:                                               execCommand('underline'),
        !           121:                                               underlinechecker,
        !           122:                                               'kupu-underline', 
        !           123:                                               'kupu-underline-pressed');
        !           124:     kupu.registerTool('underlinebutton', underlinebutton);
        !           125: 
        !           126:     var subscriptchecker = ParentWithStyleChecker(new Array('sub'));
        !           127:     var subscriptbutton = new KupuStateButton('kupu-subscript-button',
        !           128:                                               execCommand('subscript'),
        !           129:                                               subscriptchecker,
        !           130:                                               'kupu-subscript',
        !           131:                                               'kupu-subscript-pressed');
        !           132:     kupu.registerTool('subscriptbutton', subscriptbutton);
        !           133: 
        !           134:     var superscriptchecker = ParentWithStyleChecker(new Array('super', 'sup'));
        !           135:     var superscriptbutton = new KupuStateButton('kupu-superscript-button', 
        !           136:                                                 execCommand('superscript'),
        !           137:                                                 superscriptchecker,
        !           138:                                                 'kupu-superscript', 
        !           139:                                                 'kupu-superscript-pressed');
        !           140:     kupu.registerTool('superscriptbutton', superscriptbutton);
        !           141: 
        !           142:     var undobutton = new KupuButton('kupu-undo-button', execCommand('undo'))
        !           143:     kupu.registerTool('undobutton', undobutton);
        !           144: 
        !           145:     var redobutton = new KupuButton('kupu-redo-button', execCommand('redo'))
        !           146:     kupu.registerTool('redobutton', redobutton);
        !           147: 
        !           148:     var listtool = new ListTool('kupu-list-ul-addbutton', 'kupu-list-ol-addbutton',
        !           149:                                 'kupu-ulstyles', 'kupu-olstyles');
        !           150:     kupu.registerTool('listtool', listtool);
        !           151: 
        !           152:     var dltool = new DefinitionListTool('kupu-list-dl-addbutton');
        !           153:     kupu.registerTool('dltool', dltool);
        !           154: 
        !           155:     var toctool = new SilvaTocTool(
        !           156:         'kupu-toolbox-toc-depth', 'kupu-toc-add-button', 'kupu-toc-del-button',
        !           157:         'kupu-toolbox-toc', 'kupu-toolbox', 'kupu-toolbox-active');
        !           158:     kupu.registerTool('toctool', toctool);
        !           159:     
        !           160:     var linktool = new SilvaLinkTool();
        !           161:     kupu.registerTool('linktool', linktool);
        !           162:     var linktoolbox = new SilvaLinkToolBox(
        !           163:         "kupu-link-input", 'kupu-linktarget-select', 'kupu-linktarget-input',
        !           164:         "kupu-link-addbutton", 'kupu-link-updatebutton',
        !           165:         'kupu-link-delbutton', 'kupu-toolbox-links', 'kupu-toolbox',
        !           166:         'kupu-toolbox-active');
        !           167:     linktool.registerToolBox("linktoolbox", linktoolbox);
        !           168:   
        !           169:     var indextool = new SilvaIndexTool(
        !           170:         "kupu-index-input", 'kupu-index-addbutton', 'kupu-index-updatebutton',
        !           171:         'kupu-index-deletebutton', 'kupu-toolbox-indexes', 'kupu-toolbox',
        !           172:         'kupu-toolbox-active');
        !           173:     kupu.registerTool('indextool', indextool);
        !           174: 
        !           175:     var extsourcetool = new SilvaExternalSourceTool(
        !           176:         'kupu-toolbox-extsource-id', 'kupu-extsource-formcontainer', 
        !           177:         'kupu-extsource-addbutton', 'kupu-extsource-cancelbutton',
        !           178:         'kupu-extsource-updatebutton', 'kupu-extsource-delbutton',
        !           179:         'kupu-toolbox-extsource', 'kupu-toolbox', 'kupu-toolbox-active');
        !           180:     kupu.registerTool('extsourcetool', extsourcetool);
        !           181: 
        !           182:     var citationtool = new SilvaCitationTool(
        !           183:         'kupu-citation-authorinput', 'kupu-citation-sourceinput',
        !           184:         'kupu-citation-addbutton', 'kupu-citation-updatebutton',
        !           185:         'kupu-citation-deletebutton');
        !           186:     kupu.registerTool('citationtool', citationtool);
        !           187:   
        !           188:     var abbrtool = new SilvaAbbrTool('kupu-abbr-type-abbr', 'kupu-abbr-type-acronym', 
        !           189:                                         'kupu-abbr-radiorow', 'kupu-abbr-title',
        !           190:                                         'kupu-abbr-addbutton', 'kupu-abbr-updatebutton',
        !           191:                                         'kupu-abbr-deletebutton', 'kupu-toolbox-abbr',
        !           192:                                         'kupu-toolbox', 'kupu-toolbox-active');
        !           193:     kupu.registerTool('abbrtool', abbrtool);
        !           194:   
        !           195:     var imagetool = new SilvaImageTool(
        !           196:         'kupu-toolbox-image-edit', 'kupu-toolbox-image-src',
        !           197:         'kupu-toolbox-image-target', 'kupu-toolbox-image-target-input',
        !           198:         'kupu-toolbox-image-link-radio-hires',
        !           199:         'kupu-toolbox-image-link-radio-link',  'kupu-toolbox-image-link',
        !           200:         'kupu-toolbox-image-align', 'kupu-toolbox-image-alt', 
        !           201:         'kupu-toolbox-images', 'kupu-toolbox',
        !           202:         'kupu-toolbox-active');
        !           203:     kupu.registerTool('imagetool', imagetool);
        !           204: 
        !           205:     var tabletool = new SilvaTableTool(); 
        !           206:     kupu.registerTool('tabletool', tabletool);
        !           207:     var tabletoolbox = new SilvaTableToolBox(
        !           208:         'kupu-toolbox-addtable', 'kupu-toolbox-edittable', 'kupu-table-newrows',
        !           209:         'kupu-table-newcols','kupu-table-makeheader', 'kupu-table-classchooser',
        !           210:         'kupu-table-alignchooser', 'kupu-table-columnwidth',
        !           211:         'kupu-table-addtable-button', 'kupu-table-addrow-button',
        !           212:         'kupu-table-delrow-button', 'kupu-table-addcolumn-button',
        !           213:         'kupu-table-delcolumn-button', 'kupu-table-fix-button',
        !           214:         'kupu-table-delete-button', 'kupu-toolbox-tables', 
        !           215:         'kupu-toolbox', 'kupu-toolbox-active'
        !           216:         );
        !           217:     tabletool.registerToolBox('tabletoolbox', tabletoolbox);
        !           218: 
        !           219:     var showpathtool = new ShowPathTool();
        !           220:     kupu.registerTool('showpathtool', showpathtool);
        !           221: 
        !           222:     var sourceedittool = new SourceEditTool('kupu-source-button',
        !           223:                                             'kupu-editor-textarea');
        !           224:     kupu.registerTool('sourceedittool', sourceedittool);
        !           225: 
        !           226:     var spellchecker = new KupuSpellChecker('kupu-spellchecker-button',
        !           227:                                             'kupu_spellcheck');
        !           228:     kupu.registerTool('spellchecker', spellchecker);
        !           229: 
        !           230:     var cleanupexpressions = new CleanupExpressionsTool(
        !           231:             'kupucleanupexpressionselect', 'kupucleanupexpressionbutton');
        !           232:     kupu.registerTool('cleanupexpressions', cleanupexpressions);
        !           233: 
        !           234:     var viewsourcetool = new ViewSourceTool();
        !           235:     kupu.registerTool('viewsourcetool', viewsourcetool);
        !           236:     
        !           237:     // Function that returns function to open a drawer
        !           238:     var opendrawer = function(drawerid) {
        !           239:         return function(button, editor) {
        !           240:             drawertool.openDrawer(drawerid);
        !           241:         };
        !           242:     };
        !           243: 
        !           244:     /*
        !           245:     var imagelibdrawerbutton = new KupuButton('kupu-imagelibdrawer-button',
        !           246:                                               opendrawer('imagelibdrawer'));
        !           247:     kupu.registerTool('imagelibdrawerbutton', imagelibdrawerbutton);
        !           248: 
        !           249:     var linklibdrawerbutton = new KupuButton('kupu-linklibdrawer-button',
        !           250:                                              opendrawer('linklibdrawer'));
        !           251:     kupu.registerTool('linklibdrawerbutton', linklibdrawerbutton);
        !           252:     */
        !           253: 
        !           254:     // create some drawers, drawers are some sort of popups that appear when a 
        !           255:     // toolbar button is clicked
        !           256:     var drawertool = new DrawerTool();
        !           257:     kupu.registerTool('drawertool', drawertool);
        !           258: 
        !           259:     /*
        !           260:     var linklibdrawer = new LinkLibraryDrawer(linktool, conf['link_xsl_uri'],
        !           261:                                               conf['link_libraries_uri'],
        !           262:                                               conf['link_images_uri']);
        !           263:     drawertool.registerDrawer('linklibdrawer', linklibdrawer);
        !           264: 
        !           265:     var imagelibdrawer = new ImageLibraryDrawer(imagetool, conf['image_xsl_uri'],
        !           266:                                                 conf['image_libraries_uri'],
        !           267:                                                 conf['search_images_uri']);
        !           268:     drawertool.registerDrawer('imagelibdrawer', imagelibdrawer);
        !           269:     */
        !           270:     
        !           271: //    var nonxhtmltagfilter = new NonXHTMLTagFilter();
        !           272: //    kupu.registerFilter(nonxhtmltagfilter);
        !           273: 
        !           274:     kupu.xhtmlvalid.setAttrFilter(['is_toc', 'toc_depth', 'is_citation', 
        !           275:                                     'source', 'author', 'source_id', 
        !           276:                                     'silva_type', 'alignment', 
        !           277:                                     'link_to_hires', 'link']);
        !           278:     // allow all attributes on div, since ExternalSources require that
        !           279:     kupu.xhtmlvalid.includeTagAttributes(['div'], ['*']);
        !           280:     kupu.xhtmlvalid.includeTagAttributes(['p'], ['silva_type']);
        !           281:     kupu.xhtmlvalid.includeTagAttributes(['h6'], ['silva_type']);
        !           282:     kupu.xhtmlvalid.includeTagAttributes(['img'], ['alignment', 
        !           283:                                             'link_to_hires', 
        !           284:                                             'target', 'link']);
        !           285: 
        !           286:     return kupu;
        !           287: };

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