1
/*****************************************************************************
3
* Copyright (c) 2003-2005 Kupu Contributors. All rights reserved.
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.
9
*****************************************************************************/
11
// $Id: kupuinit_multi.js,v 1.1.1.1 2006/04/11 17:56:12 source Exp $
14
//----------------------------------------------------------------------------
15
// Sample initialization function
16
//----------------------------------------------------------------------------
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
27
// first we create a logger
28
var l = new PlainLogger('kupu-toolbox-debuglog', 5);
30
// now some config values
31
var conf = loadDictFromXML(document, 'kupuconfig');
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));
39
var kupu = new KupuMultiEditor(documents, conf, l);
42
var contextmenu = new ContextMenu();
43
kupu.setContextMenu(contextmenu);
46
// now we can create a UI object which we can use from the UI
47
var ui = new KupuUI('kupu-tb-styles');
49
// the ui must be registered to the editor like a tool so it can be notified
51
kupu.registerTool('ui', ui); // XXX Should this be a different method?
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);
60
var boldchecker = ParentWithStyleChecker(new Array('b', 'strong'),
61
'fontWeight', 'bold');
62
var boldbutton = new KupuStateButton('kupu-bold-button',
67
kupu.registerTool('boldbutton', boldbutton);
69
var italicschecker = ParentWithStyleChecker(new Array('i', 'em'),
70
'fontStyle', 'italic');
71
var italicsbutton = new KupuStateButton('kupu-italic-button',
72
execCommand('italic'),
75
'kupu-italic-pressed');
76
kupu.registerTool('italicsbutton', italicsbutton);
78
var underlinechecker = ParentWithStyleChecker(new Array('u'),
79
'textDecoration', 'underline');
80
var underlinebutton = new KupuStateButton('kupu-underline-button',
81
execCommand('underline'),
84
'kupu-underline-pressed');
85
kupu.registerTool('underlinebutton', underlinebutton);
87
var subscriptchecker = ParentWithStyleChecker(new Array('sub'));
88
var subscriptbutton = new KupuStateButton('kupu-subscript-button',
89
execCommand('subscript'),
92
'kupu-subscript-pressed');
93
kupu.registerTool('subscriptbutton', subscriptbutton);
95
var superscriptchecker = ParentWithStyleChecker(new Array('super', 'sup'));
96
var superscriptbutton = new KupuStateButton('kupu-superscript-button',
97
execCommand('superscript'),
100
'kupu-superscript-pressed');
101
kupu.registerTool('superscriptbutton', superscriptbutton);
103
var justifyleftbutton = new KupuButton('kupu-justifyleft-button',
104
execCommand('justifyleft'));
105
kupu.registerTool('justifyleftbutton', justifyleftbutton);
107
var justifycenterbutton = new KupuButton('kupu-justifycenter-button',
108
execCommand('justifycenter'));
109
kupu.registerTool('justifycenterbutton', justifycenterbutton);
111
var justifyrightbutton = new KupuButton('kupu-justifyright-button',
112
execCommand('justifyright'));
113
kupu.registerTool('justifyrightbutton', justifyrightbutton);
115
var outdentbutton = new KupuButton('kupu-outdent-button', execCommand('outdent'));
116
kupu.registerTool('outdentbutton', outdentbutton);
118
var indentbutton = new KupuButton('kupu-indent-button', execCommand('indent'));
119
kupu.registerTool('indentbutton', indentbutton);
121
var undobutton = new KupuButton('kupu-undo-button', execCommand('undo'));
122
kupu.registerTool('undobutton', undobutton);
124
var redobutton = new KupuButton('kupu-redo-button', execCommand('redo'));
125
kupu.registerTool('redobutton', redobutton);
127
var removeimagebutton = new KupuRemoveElementButton('kupu-removeimage-button',
130
kupu.registerTool('removeimagebutton', removeimagebutton);
131
var removelinkbutton = new KupuRemoveElementButton('kupu-removelink-button',
134
kupu.registerTool('removelinkbutton', removelinkbutton);
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);
143
var listtool = new ListTool('kupu-list-ul-addbutton',
144
'kupu-list-ol-addbutton',
145
'kupu-ulstyles', 'kupu-olstyles');
146
kupu.registerTool('listtool', listtool);
148
var definitionlisttool = new DefinitionListTool('kupu-list-dl-addbutton');
149
kupu.registerTool('definitionlisttool', definitionlisttool);
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);
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);
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);
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'
178
tabletool.registerToolBox('tabletoolbox', tabletoolbox);
180
var showpathtool = new ShowPathTool();
181
kupu.registerTool('showpathtool', showpathtool);
183
var sourceedittool = new MultiSourceEditTool('kupu-source-button',
184
'kupu-editor-textarea-');
185
kupu.registerTool('sourceedittool', sourceedittool);
189
// Function that returns function to open a drawer
190
var opendrawer = function(drawerid) {
191
return function(button, editor) {
192
drawertool.openDrawer(drawerid);
196
var imagelibdrawerbutton = new KupuButton('kupu-imagelibdrawer-button',
197
opendrawer('imagelibdrawer'));
198
kupu.registerTool('imagelibdrawerbutton', imagelibdrawerbutton);
200
var linklibdrawerbutton = new KupuButton('kupu-linklibdrawer-button',
201
opendrawer('linklibdrawer'));
202
kupu.registerTool('linklibdrawerbutton', linklibdrawerbutton);
204
var linkdrawerbutton = new KupuButton('kupu-linkdrawer-button',
205
opendrawer('linkdrawer'));
206
kupu.registerTool('linkdrawerbutton', linkdrawerbutton);
208
var tabledrawerbutton = new KupuButton('kupu-tabledrawer-button',
209
opendrawer('tabledrawer'));
210
kupu.registerTool('tabledrawerbutton', tabledrawerbutton);
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);
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);
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);
227
var linkdrawer = new LinkDrawer('kupu-linkdrawer', linktool);
228
drawertool.registerDrawer('linkdrawer', linkdrawer);
230
var tabledrawer = new TableDrawer('kupu-tabledrawer', tabletool);
231
drawertool.registerDrawer('tabledrawer', tabledrawer);
233
// register some cleanup filter
234
// remove tags that aren't in the XHTML DTD
235
var nonxhtmltagfilter = new NonXHTMLTagFilter();
236
kupu.registerFilter(nonxhtmltagfilter);