Annotation of kupuMPIWG/common/kupuinit_multi.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_multi.js 6259 2004-09-01 15:25:36Z guido $
12:
13:
14: //----------------------------------------------------------------------------
15: // Sample initialization function
16: //----------------------------------------------------------------------------
17:
18: function initKupu(iframeids) {
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: var documents = new Array();
34: for (var i=0; i < iframeids.length; i++) {
35: var iframe = getFromSelector(iframeids[i]);
36: documents.push(new KupuDocument(iframe));
37: };
38:
39: var kupu = new KupuMultiEditor(documents, conf, l);
40:
41: /* doesn't work yet
42: var contextmenu = new ContextMenu();
43: kupu.setContextMenu(contextmenu);
44: */
45:
46: // now we can create a UI object which we can use from the UI
47: var ui = new KupuUI('kupu-tb-styles');
48:
49: // the ui must be registered to the editor like a tool so it can be notified
50: // of state changes
51: kupu.registerTool('ui', ui); // XXX Should this be a different method?
52:
53: // function that returns a function to execute a button command
54: var execCommand = function(cmd) {
55: return function(button, editor) {
56: editor.execCommand(cmd);
57: };
58: };
59:
60: var boldchecker = ParentWithStyleChecker(new Array('b', 'strong'),
61: 'fontWeight', 'bold');
62: var boldbutton = new KupuStateButton('kupu-bold-button',
63: execCommand('bold'),
64: boldchecker,
65: 'kupu-bold',
66: 'kupu-bold-pressed');
67: kupu.registerTool('boldbutton', boldbutton);
68:
69: var italicschecker = ParentWithStyleChecker(new Array('i', 'em'),
70: 'fontStyle', 'italic');
71: var italicsbutton = new KupuStateButton('kupu-italic-button',
72: execCommand('italic'),
73: italicschecker,
74: 'kupu-italic',
75: 'kupu-italic-pressed');
76: kupu.registerTool('italicsbutton', italicsbutton);
77:
78: var underlinechecker = ParentWithStyleChecker(new Array('u'),
79: 'textDecoration', 'underline');
80: var underlinebutton = new KupuStateButton('kupu-underline-button',
81: execCommand('underline'),
82: underlinechecker,
83: 'kupu-underline',
84: 'kupu-underline-pressed');
85: kupu.registerTool('underlinebutton', underlinebutton);
86:
87: var subscriptchecker = ParentWithStyleChecker(new Array('sub'));
88: var subscriptbutton = new KupuStateButton('kupu-subscript-button',
89: execCommand('subscript'),
90: subscriptchecker,
91: 'kupu-subscript',
92: 'kupu-subscript-pressed');
93: kupu.registerTool('subscriptbutton', subscriptbutton);
94:
95: var superscriptchecker = ParentWithStyleChecker(new Array('super', 'sup'));
96: var superscriptbutton = new KupuStateButton('kupu-superscript-button',
97: execCommand('superscript'),
98: superscriptchecker,
99: 'kupu-superscript',
100: 'kupu-superscript-pressed');
101: kupu.registerTool('superscriptbutton', superscriptbutton);
102:
103: var justifyleftbutton = new KupuButton('kupu-justifyleft-button',
104: execCommand('justifyleft'));
105: kupu.registerTool('justifyleftbutton', justifyleftbutton);
106:
107: var justifycenterbutton = new KupuButton('kupu-justifycenter-button',
108: execCommand('justifycenter'));
109: kupu.registerTool('justifycenterbutton', justifycenterbutton);
110:
111: var justifyrightbutton = new KupuButton('kupu-justifyright-button',
112: execCommand('justifyright'));
113: kupu.registerTool('justifyrightbutton', justifyrightbutton);
114:
115: var outdentbutton = new KupuButton('kupu-outdent-button', execCommand('outdent'));
116: kupu.registerTool('outdentbutton', outdentbutton);
117:
118: var indentbutton = new KupuButton('kupu-indent-button', execCommand('indent'));
119: kupu.registerTool('indentbutton', indentbutton);
120:
121: var undobutton = new KupuButton('kupu-undo-button', execCommand('undo'));
122: kupu.registerTool('undobutton', undobutton);
123:
124: var redobutton = new KupuButton('kupu-redo-button', execCommand('redo'));
125: kupu.registerTool('redobutton', redobutton);
126:
127: var removeimagebutton = new KupuRemoveElementButton('kupu-removeimage-button',
128: 'img',
129: 'kupu-removeimage');
130: kupu.registerTool('removeimagebutton', removeimagebutton);
131: var removelinkbutton = new KupuRemoveElementButton('kupu-removelink-button',
132: 'a',
133: 'kupu-removelink');
134: kupu.registerTool('removelinkbutton', removelinkbutton);
135:
136: // add some tools
137: // XXX would it be better to pass along elements instead of ids?
138: var colorchoosertool = new ColorchooserTool('kupu-forecolor-button',
139: 'kupu-hilitecolor-button',
140: 'kupu-colorchooser');
141: kupu.registerTool('colorchooser', colorchoosertool);
142:
143: var listtool = new ListTool('kupu-list-ul-addbutton',
144: 'kupu-list-ol-addbutton',
145: 'kupu-ulstyles', 'kupu-olstyles');
146: kupu.registerTool('listtool', listtool);
147:
148: var definitionlisttool = new DefinitionListTool('kupu-list-dl-addbutton');
149: kupu.registerTool('definitionlisttool', definitionlisttool);
150:
151: /* dunno if we'll ever want to support this
152: var proptool = new PropertyTool('kupu-properties-title', 'kupu-properties-description');
153: kupu.registerTool('proptool', proptool);
154: */
155:
156: var linktool = new LinkTool();
157: kupu.registerTool('linktool', linktool);
158: var linktoolbox = new LinkToolBox("kupu-link-input", "kupu-link-button", 'kupu-toolbox-links', 'kupu-toolbox', 'kupu-toolbox-active');
159: linktool.registerToolBox('linktoolbox', linktoolbox);
160:
161: var imagetool = new ImageTool();
162: kupu.registerTool('imagetool', imagetool);
163: var imagetoolbox = new ImageToolBox('kupu-image-input', 'kupu-image-addbutton',
164: 'kupu-image-float-select', 'kupu-toolbox-images',
165: 'kupu-toolbox', 'kupu-toolbox-active');
166: imagetool.registerToolBox('imagetoolbox', imagetoolbox);
167:
168: var tabletool = new TableTool();
169: kupu.registerTool('tabletool', tabletool);
170: var tabletoolbox = new TableToolBox('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-addcolumn-button', 'kupu-table-delcolumn-button',
175: 'kupu-table-fix-button', 'kupu-table-fixall-button', 'kupu-toolbox-tables',
176: 'kupu-toolbox', 'kupu-toolbox-active'
177: );
178: tabletool.registerToolBox('tabletoolbox', tabletoolbox);
179:
180: var showpathtool = new ShowPathTool();
181: kupu.registerTool('showpathtool', showpathtool);
182:
183: var sourceedittool = new MultiSourceEditTool('kupu-source-button',
184: 'kupu-editor-textarea-');
185: kupu.registerTool('sourceedittool', sourceedittool);
186:
187: // Drawers...
188:
189: // Function that returns function to open a drawer
190: var opendrawer = function(drawerid) {
191: return function(button, editor) {
192: drawertool.openDrawer(drawerid);
193: };
194: };
195:
196: var imagelibdrawerbutton = new KupuButton('kupu-imagelibdrawer-button',
197: opendrawer('imagelibdrawer'));
198: kupu.registerTool('imagelibdrawerbutton', imagelibdrawerbutton);
199:
200: var linklibdrawerbutton = new KupuButton('kupu-linklibdrawer-button',
201: opendrawer('linklibdrawer'));
202: kupu.registerTool('linklibdrawerbutton', linklibdrawerbutton);
203:
204: var linkdrawerbutton = new KupuButton('kupu-linkdrawer-button',
205: opendrawer('linkdrawer'));
206: kupu.registerTool('linkdrawerbutton', linkdrawerbutton);
207:
208: var tabledrawerbutton = new KupuButton('kupu-tabledrawer-button',
209: opendrawer('tabledrawer'));
210: kupu.registerTool('tabledrawerbutton', tabledrawerbutton);
211:
212: // create some drawers, drawers are some sort of popups that appear when a
213: // toolbar button is clicked
214: var drawertool = new DrawerTool();
215: kupu.registerTool('drawertool', drawertool);
216:
217: var linklibdrawer = new LinkLibraryDrawer(linktool, conf['link_xsl_uri'],
218: conf['link_libraries_uri'],
219: conf['link_images_uri']);
220: drawertool.registerDrawer('linklibdrawer', linklibdrawer);
221:
222: var imagelibdrawer = new ImageLibraryDrawer(imagetool, conf['image_xsl_uri'],
223: conf['image_libraries_uri'],
224: conf['search_images_uri']);
225: drawertool.registerDrawer('imagelibdrawer', imagelibdrawer);
226:
227: var linkdrawer = new LinkDrawer('kupu-linkdrawer', linktool);
228: drawertool.registerDrawer('linkdrawer', linkdrawer);
229:
230: var tabledrawer = new TableDrawer('kupu-tabledrawer', tabletool);
231: drawertool.registerDrawer('tabledrawer', tabledrawer);
232:
233: // register some cleanup filter
234: // remove tags that aren't in the XHTML DTD
235: var nonxhtmltagfilter = new NonXHTMLTagFilter();
236: kupu.registerFilter(nonxhtmltagfilter);
237:
238: return kupu;
239: };
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>