/*****************************************************************************
*
* Copyright (c) 2003-2005 Kupu Contributors. All rights reserved.
*
* This software is distributed under the terms of the Kupu
* License. See LICENSE.txt for license text. For a list of Kupu
* Contributors see CREDITS.txt.
*
*****************************************************************************/
// $Id: kupuinit_form.js,v 1.1.1.1 2005/08/30 17:10:22 dwinter Exp $
function initKupu(iframe) {
/* This is a copy of initKupu for the form support
We only want to disable the save button, but unfortunately
that currently still means this method should be overridden
completely
*/
// first we create a logger
var l = new PlainLogger('kupu-toolbox-debuglog', 5);
// now some config values
var conf = loadDictFromXML(document, 'kupuconfig');
// the we create the document, hand it over the id of the iframe
var doc = new KupuDocument(iframe);
// now we can create the controller
var kupu = new KupuEditor(doc, conf, l);
var contextmenu = new ContextMenu();
kupu.setContextMenu(contextmenu);
// now we can create a UI object which we can use from the UI
var ui = new KupuUI('kupu-tb-styles');
// the ui must be registered to the editor like a tool so it can be notified
// of state changes
kupu.registerTool('ui', ui); // XXX Should this be a different method?
// function that returns a function to execute a button command
var execCommand = function(cmd) {
return function(button, editor) {
editor.execCommand(cmd);
};
};
var boldchecker = ParentWithStyleChecker(new Array('b', 'strong'),
'fontWeight', 'bold');
var boldbutton = new KupuStateButton('kupu-bold-button',
execCommand('bold'),
boldchecker,
'kupu-bold',
'kupu-bold-pressed');
kupu.registerTool('boldbutton', boldbutton);
var italicschecker = ParentWithStyleChecker(new Array('i', 'em'),
'fontStyle', 'italic');
var italicsbutton = new KupuStateButton('kupu-italic-button',
execCommand('italic'),
italicschecker,
'kupu-italic',
'kupu-italic-pressed');
kupu.registerTool('italicsbutton', italicsbutton);
var underlinechecker = ParentWithStyleChecker(new Array('u'),
'textDecoration', 'underline');
var underlinebutton = new KupuStateButton('kupu-underline-button',
execCommand('underline'),
underlinechecker,
'kupu-underline',
'kupu-underline-pressed');
kupu.registerTool('underlinebutton', underlinebutton);
var subscriptchecker = ParentWithStyleChecker(new Array('sub'));
var subscriptbutton = new KupuStateButton('kupu-subscript-button',
execCommand('subscript'),
subscriptchecker,
'kupu-subscript',
'kupu-subscript-pressed');
kupu.registerTool('subscriptbutton', subscriptbutton);
var superscriptchecker = ParentWithStyleChecker(new Array('super', 'sup'));
var superscriptbutton = new KupuStateButton('kupu-superscript-button',
execCommand('superscript'),
superscriptchecker,
'kupu-superscript',
'kupu-superscript-pressed');
kupu.registerTool('superscriptbutton', superscriptbutton);
var justifyleftbutton = new KupuButton('kupu-justifyleft-button',
execCommand('justifyleft'));
kupu.registerTool('justifyleftbutton', justifyleftbutton);
var justifycenterbutton = new KupuButton('kupu-justifycenter-button',
execCommand('justifycenter'));
kupu.registerTool('justifycenterbutton', justifycenterbutton);
var justifyrightbutton = new KupuButton('kupu-justifyright-button',
execCommand('justifyright'));
kupu.registerTool('justifyrightbutton', justifyrightbutton);
var outdentbutton = new KupuButton('kupu-outdent-button', execCommand('outdent'));
kupu.registerTool('outdentbutton', outdentbutton);
var indentbutton = new KupuButton('kupu-indent-button', execCommand('indent'));
kupu.registerTool('indentbutton', indentbutton);
var undobutton = new KupuButton('kupu-undo-button', execCommand('undo'));
kupu.registerTool('undobutton', undobutton);
var redobutton = new KupuButton('kupu-redo-button', execCommand('redo'));
kupu.registerTool('redobutton', redobutton);
var removeimagebutton = new KupuRemoveElementButton('kupu-removeimage-button',
'img',
'kupu-removeimage');
kupu.registerTool('removeimagebutton', removeimagebutton);
var removelinkbutton = new KupuRemoveElementButton('kupu-removelink-button',
'a',
'kupu-removelink');
kupu.registerTool('removelinkbutton', removelinkbutton);
// add some tools
// XXX would it be better to pass along elements instead of ids?
// var colorchoosertool = new ColorchooserTool('kupu-forecolor-button',
// 'kupu-hilitecolor-button',
// 'kupu-colorchooser');
// kupu.registerTool('colorchooser', colorchoosertool);
var listtool = new ListTool('kupu-list-ul-addbutton',
'kupu-list-ol-addbutton',
'kupu-ulstyles', 'kupu-olstyles');
kupu.registerTool('listtool', listtool);
var definitionlisttool = new DefinitionListTool('kupu-list-dl-addbutton');
kupu.registerTool('definitionlisttool', definitionlisttool);
var proptool = new PropertyTool('kupu-properties-title', 'kupu-properties-description');
kupu.registerTool('proptool', proptool);
var linktool = new LinkTool();
kupu.registerTool('linktool', linktool);
var linktoolbox = new LinkToolBox("kupu-link-input", "kupu-link-button", 'kupu-toolbox-links', 'kupu-toolbox', 'kupu-toolbox-active');
linktool.registerToolBox('linktoolbox', linktoolbox);
var imagetool = new ImageTool();
kupu.registerTool('imagetool', imagetool);
var imagetoolbox = new ImageToolBox('kupu-image-input', 'kupu-image-addbutton',
'kupu-image-float-select', 'kupu-toolbox-images',
'kupu-toolbox', 'kupu-toolbox-active');
imagetool.registerToolBox('imagetoolbox', imagetoolbox);
// var tabletool = new TableTool();
// kupu.registerTool('tabletool', tabletool);
// var tabletoolbox = new TableToolBox('kupu-toolbox-addtable',
// 'kupu-toolbox-edittable', 'kupu-table-newrows', 'kupu-table-newcols',
// 'kupu-table-makeheader', 'kupu-table-classchooser', 'kupu-table-alignchooser',
// 'kupu-table-addtable-button', 'kupu-table-addrow-button', 'kupu-table-delrow-button',
// 'kupu-table-addcolumn-button', 'kupu-table-delcolumn-button',
// 'kupu-table-fix-button', 'kupu-table-fixall-button', 'kupu-toolbox-tables',
// 'kupu-toolbox', 'kupu-toolbox-active'
// );
// tabletool.registerToolBox('tabletoolbox', tabletoolbox);
var showpathtool = new ShowPathTool();
kupu.registerTool('showpathtool', showpathtool);
var sourceedittool = new SourceEditTool('kupu-source-button',
'kupu-editor-textarea');
kupu.registerTool('sourceedittool', sourceedittool);
// Drawers...
// Function that returns function to open a drawer
var opendrawer = function(drawerid) {
return function(button, editor) {
drawertool.openDrawer(drawerid);
};
};
var imagelibdrawerbutton = new KupuButton('kupu-imagelibdrawer-button',
opendrawer('imagelibdrawer'));
kupu.registerTool('imagelibdrawerbutton', imagelibdrawerbutton);
var linklibdrawerbutton = new KupuButton('kupu-linklibdrawer-button',
opendrawer('linklibdrawer'));
kupu.registerTool('linklibdrawerbutton', linklibdrawerbutton);
var linkdrawerbutton = new KupuButton('kupu-linkdrawer-button',
opendrawer('linkdrawer'));
kupu.registerTool('linkdrawerbutton', linkdrawerbutton);
// var tabledrawerbutton = new KupuButton('kupu-tabledrawer-button',
// opendrawer('tabledrawer'));
// kupu.registerTool('tabledrawerbutton', tabledrawerbutton);
// create some drawers, drawers are some sort of popups that appear when a
// toolbar button is clicked
var drawertool = new DrawerTool();
kupu.registerTool('drawertool', drawertool);
var linklibdrawer = new LinkLibraryDrawer(linktool, conf['link_xsl_uri'],
conf['link_libraries_uri'],
conf['link_images_uri']);
drawertool.registerDrawer('linklibdrawer', linklibdrawer);
var imagelibdrawer = new ImageLibraryDrawer(imagetool, conf['image_xsl_uri'],
conf['image_libraries_uri'],
conf['search_images_uri']);
drawertool.registerDrawer('imagelibdrawer', imagelibdrawer);
var linkdrawer = new LinkDrawer('kupu-linkdrawer', linktool);
drawertool.registerDrawer('linkdrawer', linkdrawer);
//var tabledrawer = new TableDrawer('kupu-tabledrawer', tabletool);
//drawertool.registerDrawer('tabledrawer', tabledrawer);
// make the prepareForm method get called on form submit
// some bug in IE makes it crash on saving the form when a lib drawer
// was added to the page at some point, remove it on form submit
var savebutton = getFromSelector('kupu-save-button');
function prepareForm() {
var drawer = window.document.getElementById('kupu-librarydrawer');
if (drawer) {
drawer.parentNode.removeChild(drawer);
}
kupu.prepareForm(savebutton.form, 'kupu');
savebutton.form.submit();
};
addEventHandler(savebutton, 'click', prepareForm, kupu);
//erweiterung preview dw
var previewbutton = getFromSelector('kupu-preview-button');
function preparePreviewForm() {
var drawer = window.document.getElementById('kupu-librarydrawer');
if (drawer) {
drawer.parentNode.removeChild(drawer);
}
kupu.prepareForm(previewbutton.form, 'preview');
previewbutton.form.submit();
};
addEventHandler(previewbutton, 'click', preparePreviewForm, kupu);
// register some cleanup filter
// remove tags that aren't in the XHTML DTD
var nonxhtmltagfilter = new NonXHTMLTagFilter();
kupu.registerFilter(nonxhtmltagfilter);
return kupu;
};
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>