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>