Annotation of kupuMPIWG/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>