[ Index ]
 

Code source de Kupu-1.3.5

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/plone/kupu_plone_layer/ -> kupuploneinit.js (source)

   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  


Généré le : Sun Feb 25 15:30:41 2007 par Balluche grâce à PHPXref 0.7