[ Index ]
 

Code source de CMS made simple 1.0.5

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

title

Body

[fermer]

/modules/FCKeditorX/FCKeditor/editor/dialog/fck_link/ -> fck_link.js (source)

   1  /*

   2   * FCKeditor - The text editor for Internet - http://www.fckeditor.net

   3   * Copyright (C) 2003-2007 Frederico Caldeira Knabben

   4   *

   5   * == BEGIN LICENSE ==

   6   *

   7   * Licensed under the terms of any of the following licenses at your

   8   * choice:

   9   *

  10   *  - GNU General Public License Version 2 or later (the "GPL")

  11   *    http://www.gnu.org/licenses/gpl.html

  12   *

  13   *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")

  14   *    http://www.gnu.org/licenses/lgpl.html

  15   *

  16   *  - Mozilla Public License Version 1.1 or later (the "MPL")

  17   *    http://www.mozilla.org/MPL/MPL-1.1.html

  18   *

  19   * == END LICENSE ==

  20   *

  21   * Scripts related to the Link dialog window (see fck_link.html).

  22   */
  23  
  24  var oEditor        = window.parent.InnerDialogLoaded() ;
  25  var FCK            = oEditor.FCK ;
  26  var FCKLang        = oEditor.FCKLang ;
  27  var FCKConfig    = oEditor.FCKConfig ;
  28  var FCKRegexLib    = oEditor.FCKRegexLib ;
  29  
  30  //#### Dialog Tabs

  31  
  32  // Set the dialog tabs.

  33  window.parent.AddTab( 'Info', FCKLang.DlgLnkInfoTab ) ;
  34  
  35  if ( !FCKConfig.LinkDlgHideTarget )
  36      window.parent.AddTab( 'Target', FCKLang.DlgLnkTargetTab, true ) ;
  37  
  38  if ( FCKConfig.LinkUpload )
  39      window.parent.AddTab( 'Upload', FCKLang.DlgLnkUpload, true ) ;
  40  
  41  if ( !FCKConfig.LinkDlgHideAdvanced )
  42      window.parent.AddTab( 'Advanced', FCKLang.DlgAdvancedTag ) ;
  43  
  44  // Function called when a dialog tag is selected.

  45  function OnDialogTabChange( tabCode )
  46  {
  47      ShowE('divInfo'        , ( tabCode == 'Info' ) ) ;
  48      ShowE('divTarget'    , ( tabCode == 'Target' ) ) ;
  49      ShowE('divUpload'    , ( tabCode == 'Upload' ) ) ;
  50      ShowE('divAttribs'    , ( tabCode == 'Advanced' ) ) ;
  51  
  52      window.parent.SetAutoSize( true ) ;
  53  }
  54  
  55  //#### Regular Expressions library.

  56  var oRegex = new Object() ;
  57  
  58  oRegex.UriProtocol = /^(((http|https|ftp|news):\/\/)|mailto:)/gi ;
  59  
  60  oRegex.UrlOnChangeProtocol = /^(http|https|ftp|news):\/\/(?=.)/gi ;
  61  
  62  oRegex.UrlOnChangeTestOther = /^((javascript:)|[#\/\.])/gi ;
  63  
  64  oRegex.ReserveTarget = /^_(blank|self|top|parent)$/i ;
  65  
  66  oRegex.PopupUri = /^javascript:void\(\s*window.open\(\s*'([^']+)'\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*\)\s*$/ ;
  67  
  68  // Accessible popups

  69  oRegex.OnClickPopup = /^\s*on[cC]lick="\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*"$/ ;
  70  
  71  oRegex.PopupFeatures = /(?:^|,)([^=]+)=(\d+|yes|no)/gi ;
  72  
  73  //#### Parser Functions

  74  
  75  var oParser = new Object() ;
  76  
  77  oParser.ParseEMailUrl = function( emailUrl )
  78  {
  79      // Initializes the EMailInfo object.

  80      var oEMailInfo = new Object() ;
  81      oEMailInfo.Address    = '' ;
  82      oEMailInfo.Subject    = '' ;
  83      oEMailInfo.Body        = '' ;
  84  
  85      var oParts = emailUrl.match( /^([^\?]+)\??(.+)?/ ) ;
  86      if ( oParts )
  87      {
  88          // Set the e-mail address.

  89          oEMailInfo.Address = oParts[1] ;
  90  
  91          // Look for the optional e-mail parameters.

  92          if ( oParts[2] )
  93          {
  94              var oMatch = oParts[2].match( /(^|&)subject=([^&]+)/i ) ;
  95              if ( oMatch ) oEMailInfo.Subject = decodeURIComponent( oMatch[2] ) ;
  96  
  97              oMatch = oParts[2].match( /(^|&)body=([^&]+)/i ) ;
  98              if ( oMatch ) oEMailInfo.Body = decodeURIComponent( oMatch[2] ) ;
  99          }
 100      }
 101  
 102      return oEMailInfo ;
 103  }
 104  
 105  oParser.CreateEMailUri = function( address, subject, body )
 106  {
 107      var sBaseUri = 'mailto:' + address ;
 108  
 109      var sParams = '' ;
 110  
 111      if ( subject.length > 0 )
 112          sParams = '?subject=' + encodeURIComponent( subject ) ;
 113  
 114      if ( body.length > 0 )
 115      {
 116          sParams += ( sParams.length == 0 ? '?' : '&' ) ;
 117          sParams += 'body=' + encodeURIComponent( body ) ;
 118      }
 119  
 120      return sBaseUri + sParams ;
 121  }
 122  
 123  //#### Initialization Code

 124  
 125  // oLink: The actual selected link in the editor.

 126  var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;
 127  if ( oLink )
 128      FCK.Selection.SelectNode( oLink ) ;
 129  
 130  window.onload = function()
 131  {
 132      // Translate the dialog box texts.

 133      oEditor.FCKLanguageManager.TranslatePage(document) ;
 134  
 135      // Fill the Anchor Names and Ids combos.

 136      LoadAnchorNamesAndIds() ;
 137  
 138      // Load the selected link information (if any).

 139      LoadSelection() ;
 140  
 141      // Update the dialog box.

 142      SetLinkType( GetE('cmbLinkType').value ) ;
 143  
 144      // Show/Hide the "Browse Server" button.

 145      GetE('divBrowseServer').style.display = FCKConfig.LinkBrowser ? '' : 'none' ;
 146  
 147      // Show the initial dialog content.

 148      GetE('divInfo').style.display = '' ;
 149  
 150      // Set the actual uploader URL.

 151      if ( FCKConfig.LinkUpload )
 152          GetE('frmUpload').action = FCKConfig.LinkUploadURL ;
 153  
 154      // Activate the "OK" button.

 155      window.parent.SetOkButton( true ) ;
 156  }
 157  
 158  var bHasAnchors ;
 159  
 160  function LoadAnchorNamesAndIds()
 161  {
 162      // Since version 2.0, the anchors are replaced in the DOM by IMGs so the user see the icon

 163      // to edit them. So, we must look for that images now.

 164      var aAnchors = new Array() ;
 165      var i ;
 166      var oImages = oEditor.FCK.EditorDocument.getElementsByTagName( 'IMG' ) ;
 167      for( i = 0 ; i < oImages.length ; i++ )
 168      {
 169          if ( oImages[i].getAttribute('_fckanchor') )
 170              aAnchors[ aAnchors.length ] = oEditor.FCK.GetRealElement( oImages[i] ) ;
 171      }
 172  
 173      // Add also real anchors

 174      var oLinks = oEditor.FCK.EditorDocument.getElementsByTagName( 'A' ) ;
 175      for( i = 0 ; i < oLinks.length ; i++ )
 176      {
 177          if ( oLinks[i].name && ( oLinks[i].name.length > 0 ) )
 178              aAnchors[ aAnchors.length ] = oLinks[i] ;
 179      }
 180  
 181      var aIds = oEditor.FCKTools.GetAllChildrenIds( oEditor.FCK.EditorDocument.body ) ;
 182  
 183      bHasAnchors = ( aAnchors.length > 0 || aIds.length > 0 ) ;
 184  
 185      for ( i = 0 ; i < aAnchors.length ; i++ )
 186      {
 187          var sName = aAnchors[i].name ;
 188          if ( sName && sName.length > 0 )
 189              oEditor.FCKTools.AddSelectOption( GetE('cmbAnchorName'), sName, sName ) ;
 190      }
 191  
 192      for ( i = 0 ; i < aIds.length ; i++ )
 193      {
 194          oEditor.FCKTools.AddSelectOption( GetE('cmbAnchorId'), aIds[i], aIds[i] ) ;
 195      }
 196  
 197      ShowE( 'divSelAnchor'    , bHasAnchors ) ;
 198      ShowE( 'divNoAnchor'    , !bHasAnchors ) ;
 199  }
 200  
 201  function LoadSelection()
 202  {
 203      if ( !oLink ) return ;
 204  
 205      var sType = 'url' ;
 206  
 207      // Get the actual Link href.

 208      var sHRef = oLink.getAttribute( '_fcksavedurl' ) ;
 209      if ( sHRef == null )
 210          sHRef = oLink.getAttribute( 'href' , 2 ) || '' ;
 211  
 212      // Look for a popup javascript link.

 213      var oPopupMatch = oRegex.PopupUri.exec( sHRef ) ;
 214      if( oPopupMatch )
 215      {
 216          GetE('cmbTarget').value = 'popup' ;
 217          sHRef = oPopupMatch[1] ;
 218          FillPopupFields( oPopupMatch[2], oPopupMatch[3] ) ;
 219          SetTarget( 'popup' ) ;
 220      }
 221  
 222      // Accesible popups, the popup data is in the onclick attribute

 223      if ( !oPopupMatch ) {
 224          var onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
 225          oPopupMatch = oRegex.OnClickPopup.exec( onclick ) ;
 226          if( oPopupMatch )
 227          {
 228              GetE( 'cmbTarget' ).value = 'popup' ;
 229              FillPopupFields( oPopupMatch[1], oPopupMatch[2] ) ;
 230              SetTarget( 'popup' ) ;
 231          }
 232      }
 233  
 234      // Search for the protocol.

 235      var sProtocol = oRegex.UriProtocol.exec( sHRef ) ;
 236  
 237      if ( sProtocol )
 238      {
 239          sProtocol = sProtocol[0].toLowerCase() ;
 240          GetE('cmbLinkProtocol').value = sProtocol ;
 241  
 242          // Remove the protocol and get the remainig URL.

 243          var sUrl = sHRef.replace( oRegex.UriProtocol, '' ) ;
 244  
 245          if ( sProtocol == 'mailto:' )    // It is an e-mail link.
 246          {
 247              sType = 'email' ;
 248  
 249              var oEMailInfo = oParser.ParseEMailUrl( sUrl ) ;
 250              GetE('txtEMailAddress').value    = oEMailInfo.Address ;
 251              GetE('txtEMailSubject').value    = oEMailInfo.Subject ;
 252              GetE('txtEMailBody').value        = oEMailInfo.Body ;
 253          }
 254          else                // It is a normal link.
 255          {
 256              sType = 'url' ;
 257              GetE('txtUrl').value = sUrl ;
 258          }
 259      }
 260      else if ( sHRef.substr(0,1) == '#' && sHRef.length > 1 )    // It is an anchor link.
 261      {
 262          sType = 'anchor' ;
 263          GetE('cmbAnchorName').value = GetE('cmbAnchorId').value = sHRef.substr(1) ;
 264      }
 265      else                    // It is another type of link.
 266      {
 267          sType = 'url' ;
 268  
 269          GetE('cmbLinkProtocol').value = '' ;
 270          GetE('txtUrl').value = sHRef ;
 271      }
 272  
 273      if ( !oPopupMatch )
 274      {
 275          // Get the target.

 276          var sTarget = oLink.target ;
 277  
 278          if ( sTarget && sTarget.length > 0 )
 279          {
 280              if ( oRegex.ReserveTarget.test( sTarget ) )
 281              {
 282                  sTarget = sTarget.toLowerCase() ;
 283                  GetE('cmbTarget').value = sTarget ;
 284              }
 285              else
 286                  GetE('cmbTarget').value = 'frame' ;
 287              GetE('txtTargetFrame').value = sTarget ;
 288          }
 289      }
 290  
 291      // Get Advances Attributes

 292      GetE('txtAttId').value            = oLink.id ;
 293      GetE('txtAttName').value        = oLink.name ;
 294      GetE('cmbAttLangDir').value        = oLink.dir ;
 295      GetE('txtAttLangCode').value    = oLink.lang ;
 296      GetE('txtAttAccessKey').value    = oLink.accessKey ;
 297      GetE('txtAttTabIndex').value    = oLink.tabIndex <= 0 ? '' : oLink.tabIndex ;
 298      GetE('txtAttTitle').value        = oLink.title ;
 299      GetE('txtAttContentType').value    = oLink.type ;
 300      GetE('txtAttCharSet').value        = oLink.charset ;
 301  
 302      var sClass ;
 303      if ( oEditor.FCKBrowserInfo.IsIE )
 304      {
 305          sClass    = oLink.getAttribute('className',2) || '' ;
 306          // Clean up temporary classes for internal use:

 307          sClass = sClass.replace( FCKRegexLib.FCK_Class, '' ) ;
 308  
 309          GetE('txtAttStyle').value    = oLink.style.cssText ;
 310      }
 311      else
 312      {
 313          sClass    = oLink.getAttribute('class',2) || '' ;
 314          GetE('txtAttStyle').value    = oLink.getAttribute('style',2) || '' ;
 315      }
 316      GetE('txtAttClasses').value    = sClass ;
 317  
 318      // Update the Link type combo.

 319      GetE('cmbLinkType').value = sType ;
 320  }
 321  
 322  //#### Link type selection.

 323  function SetLinkType( linkType )
 324  {
 325      ShowE('divLinkTypeUrl'        , (linkType == 'url') ) ;
 326      ShowE('divLinkTypeAnchor'    , (linkType == 'anchor') ) ;
 327      ShowE('divLinkTypeEMail'    , (linkType == 'email') ) ;
 328  
 329      if ( !FCKConfig.LinkDlgHideTarget )
 330          window.parent.SetTabVisibility( 'Target'    , (linkType == 'url') ) ;
 331  
 332      if ( FCKConfig.LinkUpload )
 333          window.parent.SetTabVisibility( 'Upload'    , (linkType == 'url') ) ;
 334  
 335      if ( !FCKConfig.LinkDlgHideAdvanced )
 336          window.parent.SetTabVisibility( 'Advanced'    , (linkType != 'anchor' || bHasAnchors) ) ;
 337  
 338      if ( linkType == 'email' )
 339          window.parent.SetAutoSize( true ) ;
 340  }
 341  
 342  //#### Target type selection.

 343  function SetTarget( targetType )
 344  {
 345      GetE('tdTargetFrame').style.display    = ( targetType == 'popup' ? 'none' : '' ) ;
 346      GetE('tdPopupName').style.display    =
 347          GetE('tablePopupFeatures').style.display = ( targetType == 'popup' ? '' : 'none' ) ;
 348  
 349      switch ( targetType )
 350      {
 351          case "_blank" :
 352          case "_self" :
 353          case "_parent" :
 354          case "_top" :
 355              GetE('txtTargetFrame').value = targetType ;
 356              break ;
 357          case "" :
 358              GetE('txtTargetFrame').value = '' ;
 359              break ;
 360      }
 361  
 362      if ( targetType == 'popup' )
 363          window.parent.SetAutoSize( true ) ;
 364  }
 365  
 366  //#### Called while the user types the URL.

 367  function OnUrlChange()
 368  {
 369      var sUrl = GetE('txtUrl').value ;
 370      var sProtocol = oRegex.UrlOnChangeProtocol.exec( sUrl ) ;
 371  
 372      if ( sProtocol )
 373      {
 374          sUrl = sUrl.substr( sProtocol[0].length ) ;
 375          GetE('txtUrl').value = sUrl ;
 376          GetE('cmbLinkProtocol').value = sProtocol[0].toLowerCase() ;
 377      }
 378      else if ( oRegex.UrlOnChangeTestOther.test( sUrl ) )
 379      {
 380          GetE('cmbLinkProtocol').value = '' ;
 381      }
 382  }
 383  
 384  //#### Called while the user types the target name.

 385  function OnTargetNameChange()
 386  {
 387      var sFrame = GetE('txtTargetFrame').value ;
 388  
 389      if ( sFrame.length == 0 )
 390          GetE('cmbTarget').value = '' ;
 391      else if ( oRegex.ReserveTarget.test( sFrame ) )
 392          GetE('cmbTarget').value = sFrame.toLowerCase() ;
 393      else
 394          GetE('cmbTarget').value = 'frame' ;
 395  }
 396  
 397  // Accesible popups

 398  function BuildOnClickPopup()
 399  {
 400      var sWindowName = "'" + GetE('txtPopupName').value.replace(/\W/gi, "") + "'" ;
 401  
 402      var sFeatures = '' ;
 403      var aChkFeatures = document.getElementsByName( 'chkFeature' ) ;
 404      for ( var i = 0 ; i < aChkFeatures.length ; i++ )
 405      {
 406          if ( i > 0 ) sFeatures += ',' ;
 407          sFeatures += aChkFeatures[i].value + '=' + ( aChkFeatures[i].checked ? 'yes' : 'no' ) ;
 408      }
 409  
 410      if ( GetE('txtPopupWidth').value.length > 0 )    sFeatures += ',width=' + GetE('txtPopupWidth').value ;
 411      if ( GetE('txtPopupHeight').value.length > 0 )    sFeatures += ',height=' + GetE('txtPopupHeight').value ;
 412      if ( GetE('txtPopupLeft').value.length > 0 )    sFeatures += ',left=' + GetE('txtPopupLeft').value ;
 413      if ( GetE('txtPopupTop').value.length > 0 )        sFeatures += ',top=' + GetE('txtPopupTop').value ;
 414  
 415      if ( sFeatures != '' )
 416          sFeatures = sFeatures + ",status" ;
 417  
 418      return ( "window.open(this.href," + sWindowName + ",'" + sFeatures + "'); return false" ) ;
 419  }
 420  
 421  //#### Fills all Popup related fields.

 422  function FillPopupFields( windowName, features )
 423  {
 424      if ( windowName )
 425          GetE('txtPopupName').value = windowName ;
 426  
 427      var oFeatures = new Object() ;
 428      var oFeaturesMatch ;
 429      while( ( oFeaturesMatch = oRegex.PopupFeatures.exec( features ) ) != null )
 430      {
 431          var sValue = oFeaturesMatch[2] ;
 432          if ( sValue == ( 'yes' || '1' ) )
 433              oFeatures[ oFeaturesMatch[1] ] = true ;
 434          else if ( ! isNaN( sValue ) && sValue != 0 )
 435              oFeatures[ oFeaturesMatch[1] ] = sValue ;
 436      }
 437  
 438      // Update all features check boxes.

 439      var aChkFeatures = document.getElementsByName('chkFeature') ;
 440      for ( var i = 0 ; i < aChkFeatures.length ; i++ )
 441      {
 442          if ( oFeatures[ aChkFeatures[i].value ] )
 443              aChkFeatures[i].checked = true ;
 444      }
 445  
 446      // Update position and size text boxes.

 447      if ( oFeatures['width'] )    GetE('txtPopupWidth').value        = oFeatures['width'] ;
 448      if ( oFeatures['height'] )    GetE('txtPopupHeight').value    = oFeatures['height'] ;
 449      if ( oFeatures['left'] )    GetE('txtPopupLeft').value        = oFeatures['left'] ;
 450      if ( oFeatures['top'] )        GetE('txtPopupTop').value        = oFeatures['top'] ;
 451  }
 452  
 453  //#### The OK button was hit.

 454  function Ok()
 455  {
 456      var sUri, sInnerHtml ;
 457  
 458      switch ( GetE('cmbLinkType').value )
 459      {
 460          case 'url' :
 461              sUri = GetE('txtUrl').value ;
 462  
 463              if ( sUri.length == 0 )
 464              {
 465                  alert( FCKLang.DlnLnkMsgNoUrl ) ;
 466                  return false ;
 467              }
 468  
 469              sUri = GetE('cmbLinkProtocol').value + sUri ;
 470  
 471              break ;
 472  
 473          case 'email' :
 474              sUri = GetE('txtEMailAddress').value ;
 475  
 476              if ( sUri.length == 0 )
 477              {
 478                  alert( FCKLang.DlnLnkMsgNoEMail ) ;
 479                  return false ;
 480              }
 481  
 482              sUri = oParser.CreateEMailUri(
 483                  sUri,
 484                  GetE('txtEMailSubject').value,
 485                  GetE('txtEMailBody').value ) ;
 486              break ;
 487  
 488          case 'anchor' :
 489              var sAnchor = GetE('cmbAnchorName').value ;
 490              if ( sAnchor.length == 0 ) sAnchor = GetE('cmbAnchorId').value ;
 491  
 492              if ( sAnchor.length == 0 )
 493              {
 494                  alert( FCKLang.DlnLnkMsgNoAnchor ) ;
 495                  return false ;
 496              }
 497  
 498              sUri = '#' + sAnchor ;
 499              break ;
 500      }
 501  
 502      // No link selected, so try to create one.

 503      if ( !oLink )
 504          oLink = oEditor.FCK.CreateLink( sUri ) ;
 505  
 506      if ( oLink )
 507          sInnerHtml = oLink.innerHTML ;        // Save the innerHTML (IE changes it if it is like an URL).

 508      else
 509      {
 510          // If no selection, use the uri as the link text (by dom, 2006-05-26)

 511  
 512          sInnerHtml = sUri;
 513  
 514          // Built a better text for empty links.

 515          switch ( GetE('cmbLinkType').value )
 516          {
 517              // anchor: use old behavior --> return true

 518              case 'anchor':
 519                  sInnerHtml = sInnerHtml.replace( /^#/, '' ) ;
 520                  break ;
 521  
 522              // url: try to get path

 523              case 'url':
 524                  var oLinkPathRegEx = new RegExp("//?([^?\"']+)([?].*)?$") ;
 525                  var asLinkPath = oLinkPathRegEx.exec( sUri ) ;
 526                  if (asLinkPath != null)
 527                      sInnerHtml = asLinkPath[1];  // use matched path

 528                  break ;
 529  
 530              // mailto: try to get email address

 531              case 'email':
 532                  sInnerHtml = GetE('txtEMailAddress').value ;
 533                  break ;
 534          }
 535  
 536          // Create a new (empty) anchor.

 537          oLink = oEditor.FCK.CreateElement( 'a' ) ;
 538      }
 539  
 540      oEditor.FCKUndo.SaveUndoStep() ;
 541  
 542      oLink.href = sUri ;
 543      SetAttribute( oLink, '_fcksavedurl', sUri ) ;
 544  
 545      // Accesible popups

 546      if( GetE('cmbTarget').value == 'popup' )
 547      {
 548          SetAttribute( oLink, 'onclick_fckprotectedatt', " onclick=\"" + BuildOnClickPopup() + "\"") ;
 549      }
 550      else
 551      {
 552          // Check if the previous onclick was for a popup:

 553          // In that case remove the onclick handler.

 554          var onclick = oLink.getAttribute( 'onclick_fckprotectedatt' ) ;
 555          if( oRegex.OnClickPopup.test( onclick ) )
 556              SetAttribute( oLink, 'onclick_fckprotectedatt', '' ) ;
 557      }
 558  
 559      oLink.innerHTML = sInnerHtml ;        // Set (or restore) the innerHTML

 560  
 561      // Target

 562      if( GetE('cmbTarget').value != 'popup' )
 563          SetAttribute( oLink, 'target', GetE('txtTargetFrame').value ) ;
 564      else
 565          SetAttribute( oLink, 'target', null ) ;
 566  
 567      // Advances Attributes

 568      SetAttribute( oLink, 'id'        , GetE('txtAttId').value ) ;
 569      SetAttribute( oLink, 'name'        , GetE('txtAttName').value ) ;
 570      SetAttribute( oLink, 'dir'        , GetE('cmbAttLangDir').value ) ;
 571      SetAttribute( oLink, 'lang'        , GetE('txtAttLangCode').value ) ;
 572      SetAttribute( oLink, 'accesskey', GetE('txtAttAccessKey').value ) ;
 573      SetAttribute( oLink, 'tabindex'    , ( GetE('txtAttTabIndex').value > 0 ? GetE('txtAttTabIndex').value : null ) ) ;
 574      SetAttribute( oLink, 'title'    , GetE('txtAttTitle').value ) ;
 575      SetAttribute( oLink, 'type'        , GetE('txtAttContentType').value ) ;
 576      SetAttribute( oLink, 'charset'    , GetE('txtAttCharSet').value ) ;
 577  
 578      if ( oEditor.FCKBrowserInfo.IsIE )
 579      {
 580          var sClass = GetE('txtAttClasses').value ;
 581          // If it's also an anchor add an internal class

 582          if ( GetE('txtAttName').value.length != 0 )
 583              sClass += ' FCK__AnchorC' ;
 584          SetAttribute( oLink, 'className', sClass ) ;
 585  
 586          oLink.style.cssText = GetE('txtAttStyle').value ;
 587      }
 588      else
 589      {
 590          SetAttribute( oLink, 'class', GetE('txtAttClasses').value ) ;
 591          SetAttribute( oLink, 'style', GetE('txtAttStyle').value ) ;
 592      }
 593  
 594      // Select the link.

 595      oEditor.FCKSelection.SelectNode(oLink);
 596  
 597      return true ;
 598  }
 599  
 600  function BrowseServer()
 601  {
 602      OpenFileBrowser( FCKConfig.LinkBrowserURL, FCKConfig.LinkBrowserWindowWidth, FCKConfig.LinkBrowserWindowHeight ) ;
 603  }
 604  
 605  function SetUrl( url )
 606  {
 607      document.getElementById('txtUrl').value = url ;
 608      OnUrlChange() ;
 609      window.parent.SetSelectedTab( 'Info' ) ;
 610  }
 611  
 612  function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
 613  {
 614      switch ( errorNumber )
 615      {
 616          case 0 :    // No errors
 617              alert( 'Your file has been successfully uploaded' ) ;
 618              break ;
 619          case 1 :    // Custom error
 620              alert( customMsg ) ;
 621              return ;
 622          case 101 :    // Custom warning
 623              alert( customMsg ) ;
 624              break ;
 625          case 201 :
 626              alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
 627              break ;
 628          case 202 :
 629              alert( 'Invalid file type' ) ;
 630              return ;
 631          case 203 :
 632              alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
 633              return ;
 634          default :
 635              alert( 'Error on file upload. Error number: ' + errorNumber ) ;
 636              return ;
 637      }
 638  
 639      SetUrl( fileUrl ) ;
 640      GetE('frmUpload').reset() ;
 641  }
 642  
 643  var oUploadAllowedExtRegex    = new RegExp( FCKConfig.LinkUploadAllowedExtensions, 'i' ) ;
 644  var oUploadDeniedExtRegex    = new RegExp( FCKConfig.LinkUploadDeniedExtensions, 'i' ) ;
 645  
 646  function CheckUpload()
 647  {
 648      var sFile = GetE('txtUploadFile').value ;
 649  
 650      if ( sFile.length == 0 )
 651      {
 652          alert( 'Please select a file to upload' ) ;
 653          return false ;
 654      }
 655  
 656      if ( ( FCKConfig.LinkUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
 657          ( FCKConfig.LinkUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
 658      {
 659          OnUploadCompleted( 202 ) ;
 660          return false ;
 661      }
 662  
 663      return true ;
 664  }


Généré le : Tue Apr 3 18:50:37 2007 par Balluche grâce à PHPXref 0.7