Annotation of kupu/common/kupuinit_genericelements.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 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>