[ Index ]
 

Code source de Kupu-1.3.5

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

title

Body

[fermer]

/widgeteer/ -> kupuinit.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: kupusilvainit.js 12187 2005-05-11 14:29:58Z guido $
  12  
  13  // XXX Port this to the default dist?
  14  KupuEditor.prototype.afterInit = function() {
  15      // select the line after the first heading, if the document is correctly
  16      // formatted
  17      this.getDocument().getWindow().focus();
  18      var doc = this.getInnerDocument();
  19      var body = doc.getElementsByTagName('body')[0];
  20      var h = null;
  21      var iterator = new NodeIterator(body);
  22      while (h = iterator.next()) {
  23          if (h.nodeType == 1 && h.nodeName.toLowerCase() == 'h2') {
  24              var selection = this.getSelection();
  25              // okay, the first element node is a h2, select
  26              // next node, if it doesn't exist create and select
  27              var next = h.nextSibling;
  28              if (!next) {
  29                  next = doc.createElement('p');
  30                  next.appendChild(doc.createTextNode('\xa0'));
  31                  body.appendChild(next);
  32              } else {
  33                  var nodeName = next.nodeName.toLowerCase();
  34                  if (nodeName == 'table') {
  35                      next = next.getElementsByTagName('td')[0];
  36                  } else if (nodeName == 'ul' || nodeName == 'ol') {
  37                      next = next.getElementsByTagName('li')[0];
  38                  };
  39              };
  40              selection.selectNodeContents(next);
  41              selection.collapse();
  42              break;
  43          } else if (h.nodeType == 1) {
  44              break;
  45          };
  46      };
  47      // if we don't first focus the outer window, Mozilla won't show a cursor
  48      window.focus();
  49      this.getDocument().getWindow().focus();
  50  };
  51  
  52  function WidgeteerDrawerTool() {
  53      this.drawers = {};
  54      this.current_drawer = null;
  55  };
  56  
  57  //WidgeteerDrawerTool.prototype = new DrawerTool;
  58  
  59  WidgeteerDrawerTool.prototype.openDrawer = function(id) {
  60      /* open a drawer 
  61      
  62          overridden so we can place the drawer in the parent document
  63      */
  64      if (this.current_drawer) {
  65          this.closeDrawer();
  66      };
  67      var drawer = this.drawers[id];
  68      if (this.isIE) {
  69          drawer.editor._saveSelection();
  70      };
  71      
  72      // make sure the right drawertool is available in parent
  73      parent.drawertool = window.drawertool;
  74      var parentdoc = parent.document;
  75      var placeholder = parentdoc.getElementById('drawerplaceholder')
  76  
  77      drawer.createContent();
  78      this.current_drawer = drawer;
  79      if (!parentdoc.importNode) {
  80          // f$@%ng IE
  81          var importNode = function(doc, oNode, bImportChildren){
  82              var oNew;
  83  
  84              if(oNode.nodeType == 1){
  85                  oNew = doc.createElement(oNode.nodeName);
  86                  for(var i = 0; i < oNode.attributes.length; i++){
  87                      oNew.setAttribute(oNode.attributes[i].name, 
  88                                          oNode.attributes[i].value);
  89                  }
  90                  oNew.style.cssText = oNode.style.cssText;
  91              } else if(oNode.nodeType == 3){
  92                  oNew = doc.createTextNode(oNode.nodeValue);
  93              }
  94              
  95              if(bImportChildren && oNode.hasChildNodes()){
  96                  for(var oChild = oNode.firstChild; oChild; 
  97                                  oChild = oChild.nextSibling){
  98                      oNew.appendChild(importNode(doc, oChild, true));
  99                  }
 100              }
 101              
 102              return oNew;
 103          }
 104          var imported = importNode(parentdoc, drawer.element, 1);
 105          placeholder.appendChild(imported);
 106          drawer.element.display = 'none';
 107      } else {
 108          parentdoc.importNode(drawer.element, 1);
 109          placeholder.appendChild(drawer.element);
 110      };
 111      drawer.editor.suspendEditing();
 112      placeholder.style.display = 'block';
 113  };
 114  
 115  WidgeteerDrawerTool.prototype.closeDrawer = function(button) {
 116      if (!this.current_drawer) {
 117          return;
 118      };
 119      this.current_drawer.hide();
 120      this.current_drawer.editor.resumeEditing();
 121      this.current_drawer = null;
 122      var parentdoc = parent.document;
 123      var placeholder = parentdoc.getElementById('drawerplaceholder')
 124      placeholder.style.display = 'none';
 125  };
 126  
 127  var win = window;
 128  parent.HandleDrawerEnter = function(event, clickid) {
 129      var key;
 130      event = event || win.event;
 131      key = event.which || event.keyCode;
 132  
 133      if (key==13) {
 134          if (clickid) {
 135              var button = win.document.getElementById(clickid);
 136              if (button) {
 137                  button.click();
 138              }
 139          }
 140          event.cancelBubble = true;
 141          if (event.stopPropogation) event.stopPropogation();
 142  
 143          return false;
 144      }
 145      return true;
 146  };
 147  
 148  function initKupu(iframe) {
 149      // we have to perform some tricks to find out what 'our' iframe is in
 150      // the parent document
 151      var parentiframes = parent.document.getElementsByTagName('iframe');
 152      var parentiframe = null;
 153      for (var i=0; i < parentiframes.length; i++) {
 154          var pif = parentiframe = parentiframes[i]
 155          if (pif.contentWindow == window) {
 156              // load the contents of the textarea into the body element
 157              iframe.contentWindow.document.getElementsByTagName('body')[0]
 158                      .innerHTML = pif.textarea.value;
 159              break
 160          };
 161      };
 162  
 163      // first we create a logger
 164      var l = new DummyLogger();
 165  
 166      // now some config values
 167      var conf = loadDictFromXML(document, 'kupuconfig');
 168      
 169      // the we create the document, hand it over the id of the iframe
 170      var doc = new KupuDocument(iframe);
 171  
 172      // now we can create the controller
 173      var kupu = new KupuEditor(doc, conf, l);
 174      
 175      var cm = new ContextMenu();
 176      kupu.setContextMenu(cm);
 177  
 178      // now we can create a UI object which we can use from the UI
 179      var ui = new KupuUI('kupu-tb-styles');
 180      kupu.registerTool('ui', ui);
 181  
 182      // function that returns a function to execute a button command
 183      var execCommand = function(cmd) {
 184          return function(button, editor) {
 185              editor.execCommand(cmd);
 186          };
 187      };
 188  
 189      var boldchecker = ParentWithStyleChecker(new Array('b', 'strong'),
 190                                               'font-weight', 'bold');
 191      var boldbutton = new KupuStateButton('kupu-bold-button', 
 192                                           execCommand('bold'),
 193                                           boldchecker,
 194                                           'kupu-bold',
 195                                           'kupu-bold-pressed');
 196      kupu.registerTool('boldbutton', boldbutton);
 197  
 198      var italicschecker = ParentWithStyleChecker(new Array('i', 'em'),
 199                                                  'font-style', 'italic');
 200      var italicsbutton = new KupuStateButton('kupu-italic-button', 
 201                                             execCommand('italic'),
 202                                             italicschecker, 
 203                                             'kupu-italic', 
 204                                             'kupu-italic-pressed');
 205      kupu.registerTool('italicsbutton', italicsbutton);
 206  
 207      var underlinechecker = ParentWithStyleChecker(new Array('u'));
 208      var underlinebutton = new KupuStateButton('kupu-underline-button', 
 209                                                execCommand('underline'),
 210                                                underlinechecker,
 211                                                'kupu-underline', 
 212                                                'kupu-underline-pressed');
 213      kupu.registerTool('underlinebutton', underlinebutton);
 214  
 215      var subscriptchecker = ParentWithStyleChecker(new Array('sub'));
 216      var subscriptbutton = new KupuStateButton('kupu-subscript-button',
 217                                                execCommand('subscript'),
 218                                                subscriptchecker,
 219                                                'kupu-subscript',
 220                                                'kupu-subscript-pressed');
 221      kupu.registerTool('subscriptbutton', subscriptbutton);
 222  
 223      var superscriptchecker = ParentWithStyleChecker(new Array('super', 'sup'));
 224      var superscriptbutton = new KupuStateButton('kupu-superscript-button', 
 225                                                  execCommand('superscript'),
 226                                                  superscriptchecker,
 227                                                  'kupu-superscript', 
 228                                                  'kupu-superscript-pressed');
 229      kupu.registerTool('superscriptbutton', superscriptbutton);
 230  
 231      var undobutton = new KupuButton('kupu-undo-button', execCommand('undo'))
 232      kupu.registerTool('undobutton', undobutton);
 233  
 234      var redobutton = new KupuButton('kupu-redo-button', execCommand('redo'))
 235      kupu.registerTool('redobutton', redobutton);
 236  
 237      var colorchoosertool = new ColorchooserTool('kupu-forecolor-button',
 238                                                  'kupu-hilitecolor-button',
 239                                                  'kupu-colorchooser');
 240      kupu.registerTool('colorchooser', colorchoosertool);
 241      var listtool = new ListTool('kupu-list-ul-addbutton', 'kupu-list-ol-addbutton',
 242                                  'kupu-ulstyles', 'kupu-olstyles');
 243      kupu.registerTool('listtool', listtool);
 244  
 245      var dltool = new DefinitionListTool('kupu-list-dl-addbutton');
 246      kupu.registerTool('dltool', dltool);
 247  
 248      var imagetool = new ImageTool();
 249      kupu.registerTool('imagetool', imagetool);
 250      var handler = function() {
 251          var create_handler = new ContextFixer(imagetool.createImage, 
 252                                                  imagetool).execute;
 253          parent.browser_manager.startBrowser(create_handler,
 254                  parentiframe.textarea.getAttribute('widget:imagepath'),
 255                                                  ['image/jpeg', 'image/png',
 256                                                      'image/gif']);
 257      };
 258      addEventHandler(document.getElementById('kupu-image-button'), 'click',
 259                      handler);
 260  
 261      var linktool = new LinkTool();
 262      kupu.registerTool('linktool', linktool);
 263      var handler = function() {
 264          var create_handler = new ContextFixer(linktool.createLink, 
 265                                                      linktool).execute;
 266          parent.browser_manager.startBrowser(create_handler,
 267                  parentiframe.textarea.getAttribute('widget:linkpath'));
 268      };
 269      addEventHandler(document.getElementById('kupu-intlink-button'), 'click',
 270                      handler);
 271  
 272      var tabletool = new TableTool(); 
 273      kupu.registerTool('tabletool', tabletool);
 274  
 275      var showpathtool = new ShowPathTool();
 276      kupu.registerTool('showpathtool', showpathtool);
 277  
 278      var sourceedittool = new SourceEditTool('kupu-source-button',
 279                                              'kupu-editor-textarea');
 280      kupu.registerTool('sourceedittool', sourceedittool);
 281  
 282      var spellchecker = new KupuSpellChecker('kupu-spellchecker-button',
 283                                              'kupu_spellcheck');
 284      kupu.registerTool('spellchecker', spellchecker);
 285  
 286      var viewsourcetool = new ViewSourceTool();
 287      kupu.registerTool('viewsourcetool', viewsourcetool);
 288      
 289      /*
 290      // Function that returns function to open a drawer
 291      var opendrawer = function(drawerid) {
 292          return function(button, editor) {
 293              drawertool.openDrawer(drawerid);
 294          };
 295      };
 296  
 297      var imagelibdrawerbutton = new KupuButton('kupu-imagelibdrawer-button',
 298                                                opendrawer('imagelibdrawer'));
 299      kupu.registerTool('imagelibdrawerbutton', imagelibdrawerbutton);
 300  
 301      var linklibdrawerbutton = new KupuButton('kupu-linklibdrawer-button',
 302                                               opendrawer('linklibdrawer'));
 303      kupu.registerTool('linklibdrawerbutton', linklibdrawerbutton);
 304  
 305      var linkdrawerbutton = new KupuButton('kupu-linkdrawer-button',
 306                                            opendrawer('linkdrawer'));
 307      kupu.registerTool('linkdrawerbutton', linkdrawerbutton);
 308  
 309      var tabledrawerbutton = new KupuButton('kupu-tabledrawer-button',
 310                                             opendrawer('tabledrawer'));
 311      kupu.registerTool('tabledrawerbutton', tabledrawerbutton);
 312  
 313      // create some drawers, drawers are some sort of popups that appear when a 
 314      // toolbar button is clicked
 315      var drawertool = new WidgeteerDrawerTool();
 316      kupu.registerTool('drawertool', drawertool);
 317  
 318      var linklibdrawer = new LinkLibraryDrawer(linktool, conf['link_xsl_uri'],
 319                                                conf['link_libraries_uri'],
 320                                                conf['link_images_uri']);
 321      drawertool.registerDrawer('linklibdrawer', linklibdrawer);
 322  
 323      var imagelibdrawer = new ImageLibraryDrawer(imagetool, conf['image_xsl_uri'],
 324                                                  conf['image_libraries_uri'],
 325                                                  conf['search_images_uri']);
 326      drawertool.registerDrawer('imagelibdrawer', imagelibdrawer);
 327      
 328      var linkdrawer = new LinkDrawer('kupu-linkdrawer', linktool);
 329      drawertool.registerDrawer('linkdrawer', linkdrawer);
 330  
 331      var tabledrawer = new TableDrawer('kupu-tabledrawer', tabletool);
 332      drawertool.registerDrawer('tabledrawer', tabledrawer);
 333      */
 334  
 335  //    var nonxhtmltagfilter = new NonXHTMLTagFilter();
 336  //    kupu.registerFilter(nonxhtmltagfilter);
 337  
 338      kupu.xhtmlvalid.setAttrFilter(['is_toc', 'toc_depth', 'is_citation', 
 339                                      'source', 'author', 'source_id', 
 340                                      'silva_type', 'alignment', 
 341                                      'link_to_hires', 'link']);
 342      // allow all attributes on div, since ExternalSources require that
 343      kupu.xhtmlvalid.includeTagAttributes(['div'], ['*']);
 344      kupu.xhtmlvalid.includeTagAttributes(['p'], ['silva_type']);
 345      kupu.xhtmlvalid.includeTagAttributes(['h6'], ['silva_type']);
 346      kupu.xhtmlvalid.includeTagAttributes(['img'], ['alignment', 
 347                                              'link_to_hires', 
 348                                              'target', 'link']);
 349  
 350      return kupu;
 351  };


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