[ Index ] |
|
Code source de Kupu-1.3.5 |
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: kupuploneinit.js 21720 2006-01-05 15:59:25Z paul $ 12 13 function initPloneKupu(editorId) { 14 var topnode = getFromSelector(editorId); 15 var prefix = '#'+editorId+' '; 16 17 var iframe = getFromSelector(prefix+'iframe.kupu-editor-iframe'); 18 var textarea = getFromSelector(prefix+'textarea.kupu-editor-textarea'); 19 var l = new DummyLogger(); 20 21 // XXX this should be fixed in stylesheets, but I don't know how to do 22 // that without applying this change to the outter document. Damn iframes. 23 var ibody = iframe.contentWindow.document.body; 24 var form = textarea.form; 25 ibody.innerHTML = textarea.value || '<p class=""><br></p>'; 26 27 // now some config values 28 var conf = loadDictFromXML(document, prefix+'xml.kupuconfig'); 29 30 // the we create the document, hand it over the id of the iframe 31 var doc = new KupuDocument(iframe); 32 33 // now we can create the controller 34 var kupu = new KupuEditor(doc, conf, l); 35 36 // add the contextmenu 37 var cm = new ContextMenu(); 38 kupu.setContextMenu(cm); 39 40 // now we can create a UI object which we can use from the UI 41 var ui = new KupuUI(prefix+'select.kupu-tb-styles'); 42 kupu.registerTool('ui', ui); 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 'font-weight', 'bold'); 53 var boldbutton = new KupuStateButton(prefix+'button.kupu-bold', 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 'font-style', 'italic'); 62 var italicsbutton = new KupuStateButton(prefix+'button.kupu-italic', 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 var underlinebutton = new KupuStateButton(prefix+'button.kupu-underline', 71 execCommand('underline'), 72 underlinechecker, 73 'kupu-underline', 74 'kupu-underline-pressed'); 75 kupu.registerTool('underlinebutton', underlinebutton); 76 77 var subscriptchecker = ParentWithStyleChecker(new Array('sub')); 78 var subscriptbutton = new KupuStateButton(prefix+'button.kupu-subscript', 79 execCommand('subscript'), 80 subscriptchecker, 81 'kupu-subscript', 82 'kupu-subscript-pressed'); 83 kupu.registerTool('subscriptbutton', subscriptbutton); 84 85 var superscriptchecker = ParentWithStyleChecker(new Array('super', 'sup')); 86 var superscriptbutton = new KupuStateButton(prefix+'button.kupu-superscript', 87 execCommand('superscript'), 88 superscriptchecker, 89 'kupu-superscript', 90 'kupu-superscript-pressed'); 91 kupu.registerTool('superscriptbutton', superscriptbutton); 92 93 var justifyleftbutton = new KupuButton(prefix+'button.kupu-justifyleft', 94 execCommand('justifyleft')); 95 kupu.registerTool('justifyleftbutton', justifyleftbutton); 96 97 var justifycenterbutton = new KupuButton(prefix+'button.kupu-justifycenter', 98 execCommand('justifycenter')); 99 kupu.registerTool('justifycenterbutton', justifycenterbutton); 100 101 var justifyrightbutton = new KupuButton(prefix+'button.kupu-justifyright', 102 execCommand('justifyright')); 103 kupu.registerTool('justifyrightbutton', justifyrightbutton); 104 105 var outdentbutton = new KupuButton(prefix+'button.kupu-outdent', execCommand('outdent')); 106 kupu.registerTool('outdentbutton', outdentbutton); 107 108 var indentbutton = new KupuButton(prefix+'button.kupu-indent', execCommand('indent')); 109 kupu.registerTool('indentbutton', indentbutton); 110 111 var undobutton = new KupuButton(prefix+'button.kupu-undo', execCommand('undo')); 112 kupu.registerTool('undobutton', undobutton); 113 114 var redobutton = new KupuButton(prefix+'button.kupu-redo', execCommand('redo')); 115 kupu.registerTool('redobutton', redobutton); 116 117 var removeimagebutton = new KupuRemoveElementButton(prefix+'button.kupu-removeimage', 118 'img', 119 'kupu-removeimage'); 120 kupu.registerTool('removeimagebutton', removeimagebutton); 121 var removelinkbutton = new KupuRemoveElementButton(prefix+'button.kupu-removelink', 122 'a', 123 'kupu-removelink'); 124 kupu.registerTool('removelinkbutton', removelinkbutton); 125 126 // add some tools 127 128 var listtool = new ListTool(prefix+'button.kupu-insertunorderedlist', 129 prefix+'button.kupu-insertorderedlist', 130 prefix+'select.kupu-ulstyles', 131 prefix+'select.kupu-olstyles'); 132 kupu.registerTool('listtool', listtool); 133 134 var definitionlisttool = new DefinitionListTool(prefix+'button.kupu-insertdefinitionlist'); 135 kupu.registerTool('definitionlisttool', definitionlisttool); 136 137 var tabletool = new TableTool(); 138 kupu.registerTool('tabletool', tabletool); 139 140 var showpathtool = new ShowPathTool('kupu-showpath-field'); 141 kupu.registerTool('showpathtool', showpathtool); 142 143 var sourceedittool = new SourceEditTool(prefix+'button.kupu-source', 144 prefix+'textarea.kupu-editor-textarea'); 145 kupu.registerTool('sourceedittool', sourceedittool); 146 147 var imagetool = NoContextMenu(new ImageTool()); 148 kupu.registerTool('imagetool', imagetool); 149 150 var linktool = NoContextMenu(new LinkTool()); 151 kupu.registerTool('linktool', linktool); 152 153 var zoom = new KupuZoomTool(prefix+'button.kupu-zoom', 154 prefix+'select.kupu-tb-styles', 155 prefix+'button.kupu-logo'); 156 kupu.registerTool('zoomtool', zoom); 157 158 // XXX - Needs prefix here for multi area support, but also 159 // added to the template 160 var spellchecker = new KupuSpellChecker('kupu-spellchecker-button', 161 'kupu_library_tool/spellcheck'); 162 kupu.registerTool('spellchecker', spellchecker); 163 164 // Use the generic beforeUnload handler if we have it: 165 var beforeunloadTool = window.onbeforeunload && window.onbeforeunload.tool; 166 if (beforeunloadTool) { 167 var initialBody = ibody.innerHTML; 168 beforeunloadTool.addHandler(function() { 169 return ibody.innerHTML != initialBody; 170 }); 171 beforeunloadTool.chkId[textarea.id] = function() { return false; } 172 beforeunloadTool.addForm(form); 173 } 174 // Patch for bad AT format pulldown. 175 var fmtname = textarea.name+'_text_format'; 176 var pulldown = form[fmtname]; 177 if (pulldown && pulldown.type=='select-one') { 178 for (var i=0 ; i < pulldown.length; i++) { 179 var opt = pulldown.options[i]; 180 opt.selected = opt.defaultSelected = (opt.value=='text/html'); 181 } 182 pulldown.disabled = true; 183 var hidden = document.createElement('input'); 184 hidden.type = 'hidden'; 185 hidden.name = fmtname; 186 hidden.value = 'text/html'; 187 pulldown.parentNode.appendChild(hidden); 188 }; 189 190 // Drawers... 191 192 // Function that returns function to open a drawer 193 var opendrawer = function(drawerid) { 194 return function(button, editor) { 195 drawertool.openDrawer(prefix+drawerid); 196 }; 197 }; 198 199 var imagelibdrawerbutton = new KupuButton(prefix+'button.kupu-image', 200 opendrawer('imagelibdrawer')); 201 kupu.registerTool('imagelibdrawerbutton', imagelibdrawerbutton); 202 203 var linklibdrawerbutton = new KupuButton(prefix+'button.kupu-inthyperlink', 204 opendrawer('linklibdrawer')); 205 kupu.registerTool('linklibdrawerbutton', linklibdrawerbutton); 206 207 var linkdrawerbutton = new KupuButton(prefix+'button.kupu-exthyperlink', 208 opendrawer('linkdrawer')); 209 kupu.registerTool('linkdrawerbutton', linkdrawerbutton); 210 211 var tabledrawerbutton = new KupuButton(prefix+'button.kupu-table', 212 opendrawer('tabledrawer')); 213 kupu.registerTool('tabledrawerbutton', tabledrawerbutton); 214 215 // create some drawers, drawers are some sort of popups that appear when a 216 // toolbar button is clicked 217 var drawertool = window.drawertool || new DrawerTool(); 218 kupu.registerTool('drawertool', drawertool); 219 220 var drawerparent = prefix+'div.kupu-librarydrawer-parent'; 221 var linklibdrawer = new LinkLibraryDrawer(linktool, conf['link_xsl_uri'], 222 conf['link_libraries_uri'], 223 conf['search_links_uri'], drawerparent); 224 drawertool.registerDrawer(prefix+'linklibdrawer', linklibdrawer, kupu); 225 226 var imagelibdrawer = new ImageLibraryDrawer(imagetool, conf['image_xsl_uri'], 227 conf['image_libraries_uri'], 228 conf['search_images_uri'], drawerparent); 229 drawertool.registerDrawer(prefix+'imagelibdrawer', imagelibdrawer, kupu); 230 231 var linkdrawer = new LinkDrawer(prefix+'div.kupu-linkdrawer', linktool); 232 drawertool.registerDrawer(prefix+'linkdrawer', linkdrawer, kupu); 233 234 var tabledrawer = new TableDrawer(prefix+'div.kupu-tabledrawer', tabletool); 235 drawertool.registerDrawer(prefix+'tabledrawer', tabledrawer, kupu); 236 237 // register form submit handler, remove the drawer's contents before submitting 238 // the form since it seems to crash IE if we leave them alone 239 function prepareForm(event) { 240 kupu.saveDataToField(this.form, this); 241 var drawer = window.document.getElementById('kupu-librarydrawer'); 242 if (drawer) { 243 drawer.parentNode.removeChild(drawer); 244 } 245 }; 246 addEventHandler(textarea.form, 'submit', prepareForm, textarea); 247 248 return kupu; 249 }; 250 251 // modify LinkDrawer so all links have a target 252 // defaults to _self, override here if reqd. 253 //LinkDrawer.prototype.target = '_blank'; 254
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 15:30:41 2007 | par Balluche grâce à PHPXref 0.7 |