[ Index ]

PHP Cross Reference of Drupal 6 (yi-drupal)

title

Body

[close]

/sites/all/modules/fckeditor/fckeditor/editor/_source/classes/ -> fcktoolbarstylecombo.js (source)

   1  /*

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

   3   * Copyright (C) 2003-2009 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   * FCKToolbarPanelButton Class: Handles the Fonts combo selector.

  22   */
  23  
  24  var FCKToolbarStyleCombo = function( tooltip, style )
  25  {
  26      if ( tooltip === false )
  27          return ;
  28  
  29      this.CommandName = 'Style' ;
  30      this.Label        = this.GetLabel() ;
  31      this.Tooltip    = tooltip ? tooltip : this.Label ;
  32      this.Style        = style ? style : FCK_TOOLBARITEM_ICONTEXT ;
  33  
  34      this.DefaultLabel = FCKConfig.DefaultStyleLabel || '' ;
  35  }
  36  
  37  // Inherit from FCKToolbarSpecialCombo.

  38  FCKToolbarStyleCombo.prototype = new FCKToolbarSpecialCombo ;
  39  
  40  FCKToolbarStyleCombo.prototype.GetLabel = function()
  41  {
  42      return FCKLang.Style ;
  43  }
  44  
  45  FCKToolbarStyleCombo.prototype.GetStyles = function()
  46  {
  47      var styles = {} ;
  48      var allStyles = FCK.ToolbarSet.CurrentInstance.Styles.GetStyles() ;
  49  
  50      for ( var styleName in allStyles )
  51      {
  52          var style = allStyles[ styleName ] ;
  53          if ( !style.IsCore )
  54              styles[ styleName ] = style ;
  55      }
  56      return styles ;
  57  }
  58  
  59  FCKToolbarStyleCombo.prototype.CreateItems = function( targetSpecialCombo )
  60  {
  61      var targetDoc = targetSpecialCombo._Panel.Document ;
  62  
  63      // Add the Editor Area CSS to the panel so the style classes are previewed correctly.

  64      FCKTools.AppendStyleSheet( targetDoc, FCKConfig.ToolbarComboPreviewCSS ) ;
  65      FCKTools.AppendStyleString( targetDoc, FCKConfig.EditorAreaStyles ) ;
  66      targetDoc.body.className += ' ForceBaseFont' ;
  67  
  68      // Add ID and Class to the body.

  69      FCKConfig.ApplyBodyAttributes( targetDoc.body ) ;
  70  
  71      // Get the styles list.

  72      var styles = this.GetStyles() ;
  73  
  74      for ( var styleName in styles )
  75      {
  76          var style = styles[ styleName ] ;
  77  
  78          // Object type styles have no preview.

  79          var caption = style.GetType() == FCK_STYLE_OBJECT ?
  80              styleName :
  81              FCKToolbarStyleCombo_BuildPreview( style, style.Label || styleName ) ;
  82  
  83          var item = targetSpecialCombo.AddItem( styleName, caption ) ;
  84  
  85          item.Style = style ;
  86      }
  87  
  88      // We must prepare the list before showing it.

  89      targetSpecialCombo.OnBeforeClick = this.StyleCombo_OnBeforeClick ;
  90  }
  91  
  92  FCKToolbarStyleCombo.prototype.RefreshActiveItems = function( targetSpecialCombo )
  93  {
  94      var startElement = FCK.ToolbarSet.CurrentInstance.Selection.GetBoundaryParentElement( true ) ;
  95  
  96      if ( startElement )
  97      {
  98          var path = new FCKElementPath( startElement ) ;
  99          var elements = path.Elements ;
 100  
 101          for ( var e = 0 ; e < elements.length ; e++ )
 102          {
 103              for ( var i in targetSpecialCombo.Items )
 104              {
 105                  var item = targetSpecialCombo.Items[i] ;
 106                  var style = item.Style ;
 107  
 108                  if ( style.CheckElementRemovable( elements[ e ], true ) )
 109                  {
 110                      targetSpecialCombo.SetLabel( style.Label || style.Name ) ;
 111                      return ;
 112                  }
 113              }
 114          }
 115      }
 116  
 117      targetSpecialCombo.SetLabel( this.DefaultLabel ) ;
 118  }
 119  
 120  FCKToolbarStyleCombo.prototype.StyleCombo_OnBeforeClick = function( targetSpecialCombo )
 121  {
 122      // Two things are done here:

 123      //    - In a control selection, get the element name, so we'll display styles

 124      //      for that element only.

 125      //    - Select the styles that are active for the current selection.

 126  
 127      // Clear the current selection.

 128      targetSpecialCombo.DeselectAll() ;
 129  
 130      var startElement ;
 131      var path ;
 132      var tagName ;
 133  
 134      var selection = FCK.ToolbarSet.CurrentInstance.Selection ;
 135  
 136      if ( selection.GetType() == 'Control' )
 137      {
 138          startElement = selection.GetSelectedElement() ;
 139          tagName = startElement.nodeName.toLowerCase() ;
 140      }
 141      else
 142      {
 143          startElement = selection.GetBoundaryParentElement( true ) ;
 144          path = new FCKElementPath( startElement ) ;
 145      }
 146  
 147      for ( var i in targetSpecialCombo.Items )
 148      {
 149          var item = targetSpecialCombo.Items[i] ;
 150          var style = item.Style ;
 151  
 152          if ( ( tagName && style.Element == tagName ) || ( !tagName && style.GetType() != FCK_STYLE_OBJECT ) )
 153          {
 154              item.style.display = '' ;
 155  
 156              if ( ( path && style.CheckActive( path ) ) || ( !path && style.CheckElementRemovable( startElement, true ) ) )
 157                  targetSpecialCombo.SelectItem( style.Name ) ;
 158          }
 159          else
 160              item.style.display = 'none' ;
 161      }
 162  }
 163  
 164  function FCKToolbarStyleCombo_BuildPreview( style, caption )
 165  {
 166      var styleType = style.GetType() ;
 167      var html = [] ;
 168  
 169      if ( styleType == FCK_STYLE_BLOCK )
 170          html.push( '<div class="BaseFont">' ) ;
 171  
 172      var elementName = style.Element ;
 173  
 174      // Avoid <bdo> in the preview.

 175      if ( elementName == 'bdo' )
 176          elementName = 'span' ;
 177  
 178      html = [ '<', elementName ] ;
 179  
 180      // Assign all defined attributes.

 181      var attribs    = style._StyleDesc.Attributes ;
 182      if ( attribs )
 183      {
 184          for ( var att in attribs )
 185          {
 186              html.push( ' ', att, '="', style.GetFinalAttributeValue( att ), '"' ) ;
 187          }
 188      }
 189  
 190      // Assign the style attribute.

 191      if ( style._GetStyleText().length > 0 )
 192          html.push( ' style="', style.GetFinalStyleValue(), '"' ) ;
 193  
 194      html.push( '>', caption, '</', elementName, '>' ) ;
 195  
 196      if ( styleType == FCK_STYLE_BLOCK )
 197          html.push( '</div>' ) ;
 198  
 199      return html.join( '' ) ;
 200  }


Generated: Mon Jul 9 18:01:44 2012 Cross-referenced by PHPXref 0.7