Annotation of kupu/common/kupuinit_form.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.js 4015 2004-04-13 13:31:49Z guido $
12:
13:
14: function initKupu(iframe) {
15: /* This is a copy of initKupu for the form support
16:
17: We only want to disable the save button, but unfortunately
18: that currently still means this method should be overridden
19: completely
20: */
21:
22: // first we create a logger
23: var l = new PlainLogger('kupu-toolbox-debuglog', 5);
24:
25: // now some config values
26: var conf = loadDictFromXML(document, 'kupuconfig');
27:
28: // the we create the document, hand it over the id of the iframe
29: var doc = new KupuDocument(iframe);
30:
31: // now we can create the controller
32: var kupu = new KupuEditor(doc, conf, l);
33:
34: var contextmenu = new ContextMenu();
35: kupu.setContextMenu(contextmenu);
36:
37: // now we can create a UI object which we can use from the UI
38: var ui = new KupuUI('kupu-tb-styles');
39:
40: // the ui must be registered to the editor like a tool so it can be notified
41: // of state changes
42: kupu.registerTool('ui', ui); // XXX Should this be a different method?
43:
44: // function that returns a function to execute a button command
45: var execCommand = function(cmd) {
46: return function(button, editor) {
47: editor.execCommand(cmd);
48: };
49: };
50:
51: var boldchecker = ParentWithStyleChecker(new Array('b', 'strong'),
52: 'fontWeight', 'bold');
53: var boldbutton = new KupuStateButton('kupu-bold-button',
54: execCommand('bold'),
55: boldchecker,
56: 'kupu-bold',
57: 'kupu-bold-pressed');
58: kupu.registerTool('boldbutton', boldbutton);
59:
60: var italicschecker = ParentWithStyleChecker(new Array('i', 'em'),
61: 'fontStyle', 'italic');
62: var italicsbutton = new KupuStateButton('kupu-italic-button',
63: execCommand('italic'),
64: italicschecker,
65: 'kupu-italic',
66: 'kupu-italic-pressed');
67: kupu.registerTool('italicsbutton', italicsbutton);
68:
69: var underlinechecker = ParentWithStyleChecker(new Array('u'),
70: 'textDecoration', 'underline');
71: var underlinebutton = new KupuStateButton('kupu-underline-button',
72: execCommand('underline'),
73: underlinechecker,
74: 'kupu-underline',
75: 'kupu-underline-pressed');
76: kupu.registerTool('underlinebutton', underlinebutton);
77:
78: var subscriptchecker = ParentWithStyleChecker(new Array('sub'));
79: var subscriptbutton = new KupuStateButton('kupu-subscript-button',
80: execCommand('subscript'),
81: subscriptchecker,
82: 'kupu-subscript',
83: 'kupu-subscript-pressed');
84: kupu.registerTool('subscriptbutton', subscriptbutton);
85:
86: var superscriptchecker = ParentWithStyleChecker(new Array('super', 'sup'));
87: var superscriptbutton = new KupuStateButton('kupu-superscript-button',
88: execCommand('superscript'),
89: superscriptchecker,
90: 'kupu-superscript',
91: 'kupu-superscript-pressed');
92: kupu.registerTool('superscriptbutton', superscriptbutton);
93:
94: var justifyleftbutton = new KupuButton('kupu-justifyleft-button',
95: execCommand('justifyleft'));
96: kupu.registerTool('justifyleftbutton', justifyleftbutton);
97:
98: var justifycenterbutton = new KupuButton('kupu-justifycenter-button',
99: execCommand('justifycenter'));
100: kupu.registerTool('justifycenterbutton', justifycenterbutton);
101:
102: var justifyrightbutton = new KupuButton('kupu-justifyright-button',
103: execCommand('justifyright'));
104: kupu.registerTool('justifyrightbutton', justifyrightbutton);
105:
106: var outdentbutton = new KupuButton('kupu-outdent-button', execCommand('outdent'));
107: kupu.registerTool('outdentbutton', outdentbutton);
108:
109: var indentbutton = new KupuButton('kupu-indent-button', execCommand('indent'));
110: kupu.registerTool('indentbutton', indentbutton);
111:
112: var undobutton = new KupuButton('kupu-undo-button', execCommand('undo'));
113: kupu.registerTool('undobutton', undobutton);
114:
115: var redobutton = new KupuButton('kupu-redo-button', execCommand('redo'));
116: kupu.registerTool('redobutton', redobutton);
117:
118: var removeimagebutton = new KupuRemoveElementButton('kupu-removeimage-button',
119: 'img',
120: 'kupu-removeimage');
121: kupu.registerTool('removeimagebutton', removeimagebutton);
122: var removelinkbutton = new KupuRemoveElementButton('kupu-removelink-button',
123: 'a',
124: 'kupu-removelink');
125: kupu.registerTool('removelinkbutton', removelinkbutton);
126:
127: // add some tools
128: // XXX would it be better to pass along elements instead of ids?
129: // var colorchoosertool = new ColorchooserTool('kupu-forecolor-button',
130: // 'kupu-hilitecolor-button',
131: // 'kupu-colorchooser');
132: // kupu.registerTool('colorchooser', colorchoosertool);
133:
134: var listtool = new ListTool('kupu-list-ul-addbutton',
135: 'kupu-list-ol-addbutton',
136: 'kupu-ulstyles', 'kupu-olstyles');
137: kupu.registerTool('listtool', listtool);
138:
139: var definitionlisttool = new DefinitionListTool('kupu-list-dl-addbutton');
140: kupu.registerTool('definitionlisttool', definitionlisttool);
141:
142: var proptool = new PropertyTool('kupu-properties-title', 'kupu-properties-description');
143: kupu.registerTool('proptool', proptool);
144:
145: var linktool = new LinkTool();
146: kupu.registerTool('linktool', linktool);
147: var linktoolbox = new LinkToolBox("kupu-link-input", "kupu-link-button", 'kupu-toolbox-links', 'kupu-toolbox', 'kupu-toolbox-active');
148: linktool.registerToolBox('linktoolbox', linktoolbox);
149:
150: var imagetool = new ImageTool();
151: kupu.registerTool('imagetool', imagetool);
152: var imagetoolbox = new ImageToolBox('kupu-image-input', 'kupu-image-addbutton',
153: 'kupu-image-float-select', 'kupu-toolbox-images',
154: 'kupu-toolbox', 'kupu-toolbox-active');
155: imagetool.registerToolBox('imagetoolbox', imagetoolbox);
156:
157: // var tabletool = new TableTool();
158: // kupu.registerTool('tabletool', tabletool);
159:
160: // var tabletoolbox = new TableToolBox('kupu-toolbox-addtable',
161: // 'kupu-toolbox-edittable', 'kupu-table-newrows', 'kupu-table-newcols',
162: // 'kupu-table-makeheader', 'kupu-table-classchooser', 'kupu-table-alignchooser',
163: // 'kupu-table-addtable-button', 'kupu-table-addrow-button', 'kupu-table-delrow-button',
164: // 'kupu-table-addcolumn-button', 'kupu-table-delcolumn-button',
165: // 'kupu-table-fix-button', 'kupu-table-fixall-button', 'kupu-toolbox-tables',
166: // 'kupu-toolbox', 'kupu-toolbox-active'
167: // );
168: // tabletool.registerToolBox('tabletoolbox', tabletoolbox);
169:
170: var showpathtool = new ShowPathTool();
171: kupu.registerTool('showpathtool', showpathtool);
172:
173: var sourceedittool = new SourceEditTool('kupu-source-button',
174: 'kupu-editor-textarea');
175: kupu.registerTool('sourceedittool', sourceedittool);
176:
177: // Drawers...
178:
179: // Function that returns function to open a drawer
180: var opendrawer = function(drawerid) {
181: return function(button, editor) {
182: drawertool.openDrawer(drawerid);
183: };
184: };
185:
186: var imagelibdrawerbutton = new KupuButton('kupu-imagelibdrawer-button',
187: opendrawer('imagelibdrawer'));
188: kupu.registerTool('imagelibdrawerbutton', imagelibdrawerbutton);
189:
190: var linklibdrawerbutton = new KupuButton('kupu-linklibdrawer-button',
191: opendrawer('linklibdrawer'));
192: kupu.registerTool('linklibdrawerbutton', linklibdrawerbutton);
193:
194: var linkdrawerbutton = new KupuButton('kupu-linkdrawer-button',
195: opendrawer('linkdrawer'));
196: kupu.registerTool('linkdrawerbutton', linkdrawerbutton);
197:
198: // var tabledrawerbutton = new KupuButton('kupu-tabledrawer-button',
199: // opendrawer('tabledrawer'));
200: // kupu.registerTool('tabledrawerbutton', tabledrawerbutton);
201:
202: // create some drawers, drawers are some sort of popups that appear when a
203: // toolbar button is clicked
204: var drawertool = new DrawerTool();
205: kupu.registerTool('drawertool', drawertool);
206:
207: var linklibdrawer = new LinkLibraryDrawer(linktool, conf['link_xsl_uri'],
208: conf['link_libraries_uri'],
209: conf['link_images_uri']);
210: drawertool.registerDrawer('linklibdrawer', linklibdrawer);
211:
212: var imagelibdrawer = new ImageLibraryDrawer(imagetool, conf['image_xsl_uri'],
213: conf['image_libraries_uri'],
214: conf['search_images_uri']);
215: drawertool.registerDrawer('imagelibdrawer', imagelibdrawer);
216:
217: var linkdrawer = new LinkDrawer('kupu-linkdrawer', linktool);
218: drawertool.registerDrawer('linkdrawer', linkdrawer);
219:
220: //var tabledrawer = new TableDrawer('kupu-tabledrawer', tabletool);
221: //drawertool.registerDrawer('tabledrawer', tabledrawer);
222:
223: // make the prepareForm method get called on form submit
224: // some bug in IE makes it crash on saving the form when a lib drawer
225: // was added to the page at some point, remove it on form submit
226: var savebutton = getFromSelector('kupu-save-button');
227: function prepareForm() {
228: var drawer = window.document.getElementById('kupu-librarydrawer');
229: if (drawer) {
230: drawer.parentNode.removeChild(drawer);
231: }
232: kupu.prepareForm(savebutton.form, 'kupu');
233: savebutton.form.submit();
234: };
235: addEventHandler(savebutton, 'click', prepareForm, kupu);
236:
237: //erweiterung preview dw
238: var previewbutton = getFromSelector('kupu-preview-button');
239: function preparePreviewForm() {
240: var drawer = window.document.getElementById('kupu-librarydrawer');
241: if (drawer) {
242: drawer.parentNode.removeChild(drawer);
243: }
244: kupu.prepareForm(previewbutton.form, 'preview');
245: previewbutton.form.submit();
246: };
247: addEventHandler(previewbutton, 'click', preparePreviewForm, kupu);
248:
249: // register some cleanup filter
250: // remove tags that aren't in the XHTML DTD
251: var nonxhtmltagfilter = new NonXHTMLTagFilter();
252: kupu.registerFilter(nonxhtmltagfilter);
253:
254: return kupu;
255: };
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>