[ Index ]

PHP Cross Reference of osCMax 2.0.4

title

Body

[close]

/FCKeditor/editor/dialog/ -> fck_anchor.html (source)

   1  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
   2  <!--
   3   * FCKeditor - The text editor for Internet - http://www.fckeditor.net
   4   * Copyright (C) 2003-2008 Frederico Caldeira Knabben
   5   *
   6   * == BEGIN LICENSE ==
   7   *
   8   * Licensed under the terms of any of the following licenses at your
   9   * choice:
  10   *
  11   *  - GNU General Public License Version 2 or later (the "GPL")
  12   *    http://www.gnu.org/licenses/gpl.html
  13   *
  14   *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
  15   *    http://www.gnu.org/licenses/lgpl.html
  16   *
  17   *  - Mozilla Public License Version 1.1 or later (the "MPL")
  18   *    http://www.mozilla.org/MPL/MPL-1.1.html
  19   *
  20   * == END LICENSE ==
  21   *
  22   * Anchor dialog window.
  23  -->
  24  <html>
  25      <head>
  26          <title>Anchor Properties</title>
  27          <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  28          <meta content="noindex, nofollow" name="robots">
  29          <script src="common/fck_dialog_common.js" type="text/javascript"></script>
  30          <script type="text/javascript">
  31  
  32  var dialog            = window.parent ;
  33  var oEditor            = dialog.InnerDialogLoaded() ;
  34  
  35  var FCK                = oEditor.FCK ;
  36  var FCKBrowserInfo    = oEditor.FCKBrowserInfo ;
  37  var FCKTools        = oEditor.FCKTools ;
  38  var FCKRegexLib        = oEditor.FCKRegexLib ;
  39  
  40  var oDOM            = FCK.EditorDocument ;
  41  
  42  var oFakeImage = dialog.Selection.GetSelectedElement() ;
  43  
  44  var oAnchor ;
  45  
  46  if ( oFakeImage )
  47  {
  48      if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckanchor') )
  49          oAnchor = FCK.GetRealElement( oFakeImage ) ;
  50      else
  51          oFakeImage = null ;
  52  }
  53  
  54  //Search for a real anchor

  55  if ( !oFakeImage )
  56  {
  57      oAnchor = FCK.Selection.MoveToAncestorNode( 'A' ) ;
  58      if ( oAnchor )
  59          FCK.Selection.SelectNode( oAnchor ) ;
  60  }
  61  
  62  window.onload = function()
  63  {
  64      // First of all, translate the dialog box texts

  65      oEditor.FCKLanguageManager.TranslatePage(document) ;
  66  
  67      if ( oAnchor )
  68          GetE('txtName').value = oAnchor.name ;
  69      else
  70          oAnchor = null ;
  71  
  72      window.parent.SetOkButton( true ) ;
  73      window.parent.SetAutoSize( true ) ;
  74  
  75      SelectField( 'txtName' ) ;
  76  }
  77  
  78  function Ok()
  79  {
  80      var sNewName = GetE('txtName').value ;
  81  
  82      // Remove any illegal character in a name attribute:

  83      // A name should start with a letter, but the validator passes anyway.

  84      sNewName = sNewName.replace( /[^\w-_\.:]/g, '_' ) ;
  85  
  86      if ( sNewName.length == 0 )
  87      {
  88          // Remove the anchor if the user leaves the name blank

  89          if ( oAnchor )
  90          {
  91              // Removes the current anchor from the document using the new command

  92              FCK.Commands.GetCommand( 'AnchorDelete' ).Execute() ;
  93              return true ;
  94          }
  95  
  96          alert( oEditor.FCKLang.DlgAnchorErrorName ) ;
  97          return false ;
  98      }
  99  
 100      oEditor.FCKUndo.SaveUndoStep() ;
 101  
 102      if ( oAnchor )    // Modifying an existent anchor.
 103      {
 104          ReadjustLinksToAnchor( oAnchor.name, sNewName );
 105  
 106          // Buggy explorer, bad bad browser. http://alt-tag.com/blog/archives/2006/02/ie-dom-bugs/

 107          // Instead of just replacing the .name for the existing anchor (in order to preserve the content), we must remove the .name

 108          // and assign .name, although it won't appear until it's specially processed in fckxhtml.js

 109  
 110          // We remove the previous name

 111          oAnchor.removeAttribute( 'name' ) ;
 112          // Now we set it, but later we must process it specially

 113          oAnchor.name = sNewName ;
 114  
 115          return true ;
 116      }
 117  
 118      // Create a new anchor preserving the current selection

 119      var aNewAnchors = oEditor.FCK.CreateLink( '#' ) ;
 120  
 121      if ( aNewAnchors.length == 0 )
 122              aNewAnchors.push( oEditor.FCK.InsertElement( 'a' ) ) ;
 123      else
 124      {
 125          // Remove the fake href

 126          for ( var i = 0 ; i < aNewAnchors.length ; i++ )
 127              aNewAnchors[i].removeAttribute( 'href' ) ;
 128      }
 129  
 130      // More than one anchors may have been created, so interact through all of them (see #220).

 131      for ( var i = 0 ; i < aNewAnchors.length ; i++ )
 132      {
 133          oAnchor = aNewAnchors[i] ;
 134  
 135          // Set the name

 136          if ( FCKBrowserInfo.IsIE )
 137          {
 138              // Setting anchor names directly in IE will trash the HTML code stored

 139              // in FCKTempBin after undos. See #2263.

 140              var replaceAnchor = oEditor.FCK.EditorDocument.createElement( '<a name="' +
 141                      FCKTools.HTMLEncode( sNewName ).replace( '"', '&quot;' ) + '">' ) ;
 142              oEditor.FCKDomTools.MoveChildren( oAnchor, replaceAnchor ) ;
 143              oAnchor.parentNode.replaceChild( replaceAnchor, oAnchor ) ;
 144              oAnchor = replaceAnchor ;
 145          }
 146          else
 147              oAnchor.name = sNewName ;
 148  
 149          // IE does require special processing to show the Anchor's image

 150          // Opera doesn't allow to select empty anchors

 151          if ( FCKBrowserInfo.IsIE || FCKBrowserInfo.IsOpera )
 152          {
 153              if ( oAnchor.innerHTML != '' )
 154              {
 155                  if ( FCKBrowserInfo.IsIE )
 156                      oAnchor.className += ' FCK__AnchorC' ;
 157              }
 158              else
 159              {
 160                  // Create a fake image for both IE and Opera

 161                  var oImg = oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__Anchor', oAnchor.cloneNode(true) ) ;
 162                  oImg.setAttribute( '_fckanchor', 'true', 0 ) ;
 163  
 164                  oAnchor.parentNode.insertBefore( oImg, oAnchor ) ;
 165                  oAnchor.parentNode.removeChild( oAnchor ) ;
 166              }
 167  
 168          }
 169      }
 170  
 171      return true ;
 172  }
 173  
 174  // Checks all the links in the current page pointing to the current name and changes them to the new name

 175  function ReadjustLinksToAnchor( sCurrent, sNew )
 176  {
 177      var oDoc = FCK.EditorDocument ;
 178  
 179      var aLinks = oDoc.getElementsByTagName( 'A' ) ;
 180  
 181      var sReference = '#' + sCurrent ;
 182      // The url of the document, so we check absolute and partial references.

 183      var sFullReference = oDoc.location.href.replace( /(#.*$)/, '') ;
 184      sFullReference += sReference ;
 185  
 186      var oLink ;
 187      var i = aLinks.length - 1 ;
 188      while ( i >= 0 && ( oLink = aLinks[i--] ) )
 189      {
 190          var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
 191          if ( sHRef == null )
 192              sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
 193  
 194          if ( sHRef == sReference || sHRef == sFullReference )
 195          {
 196              oLink.href = '#' + sNew ;
 197              SetAttribute( oLink, '_fcksavedurl', '#' + sNew ) ;
 198          }
 199      }
 200  }
 201  
 202          </script>
 203      </head>
 204      <body style="overflow: hidden">
 205          <table height="100%" width="100%">
 206              <tr>
 207                  <td align="center">
 208                      <table border="0" cellpadding="0" cellspacing="0" width="80%">
 209                          <tr>
 210                              <td>
 211                                  <span fckLang="DlgAnchorName">Anchor Name</span><BR>
 212                                  <input id="txtName" style="WIDTH: 100%" type="text">
 213                              </td>
 214                          </tr>
 215                      </table>
 216                  </td>
 217              </tr>
 218          </table>
 219      </body>
 220  </html>


Generated: Fri Jan 1 13:43:16 2010 Cross-referenced by PHPXref 0.7