[ Index ]

PHP Cross Reference of osCMax 2.0.4

title

Body

[close]

/FCKeditor/editor/dialog/ -> fck_div.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   * Form dialog window.
  23  -->
  24  <html xmlns="http://www.w3.org/1999/xhtml">
  25  <head>
  26      <title></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  var dialog    = window.parent ;
  32  var oEditor = dialog.InnerDialogLoaded() ;
  33  var FCK = oEditor.FCK ;
  34  var FCKLang = oEditor.FCKLang ;
  35  var FCKBrowserInfo = oEditor.FCKBrowserInfo ;
  36  var FCKStyles = oEditor.FCKStyles ;
  37  var FCKElementPath = oEditor.FCKElementPath ;
  38  var FCKDomRange = oEditor.FCKDomRange ;
  39  var FCKDomTools = oEditor.FCKDomTools ;
  40  var FCKDomRangeIterator = oEditor.FCKDomRangeIterator ;
  41  var FCKListsLib = oEditor.FCKListsLib ;
  42  var AlwaysCreate = dialog.Args().CustomValue ;
  43  
  44  String.prototype.IEquals = function()
  45  {
  46      var thisUpper = this.toUpperCase() ;
  47  
  48      var aArgs = arguments ;
  49  
  50      // The arguments could also be a single array.

  51      if ( aArgs.length == 1 && aArgs[0].pop )
  52          aArgs = aArgs[0] ;
  53  
  54      for ( var i = 0 ; i < aArgs.length ; i++ )
  55      {
  56          if ( thisUpper == aArgs[i].toUpperCase() )
  57              return true ;
  58      }
  59      return false ;
  60  }
  61  
  62  var CurrentContainers = [] ;
  63  if ( !AlwaysCreate )
  64  {
  65      dialog.Selection.EnsureSelection() ;
  66      CurrentContainers = FCKDomTools.GetSelectedDivContainers() ;
  67  }
  68  
  69  // Add some tabs

  70  dialog.AddTab( 'General', FCKLang.DlgDivGeneralTab );
  71  dialog.AddTab( 'Advanced', FCKLang.DlgDivAdvancedTab ) ;
  72  
  73  function AddStyleOption( styleName )
  74  {
  75      var el = GetE( 'selStyle' ) ;
  76      var opt = document.createElement( 'option' ) ;
  77      opt.text = opt.value = styleName ;
  78  
  79      if ( FCKBrowserInfo.IsIE )
  80          el.add( opt ) ;
  81      else
  82          el.add( opt, null ) ;
  83  }
  84  
  85  function OnDialogTabChange( tabCode )
  86  {
  87      ShowE( 'divGeneral', tabCode == 'General' ) ;
  88      ShowE( 'divAdvanced', tabCode == 'Advanced' ) ;
  89      dialog.SetAutoSize( true ) ;
  90  }
  91  
  92  function GetNearestAncestorDirection( node )
  93  {
  94      var dir = 'ltr' ;    // HTML default.

  95      while ( ( node = node.parentNode ) )
  96      {
  97          if ( node.dir )
  98              dir = node.dir ;
  99      }
 100      return dir ;
 101  }
 102  
 103  window.onload = function()
 104  {
 105      // First of all, translate the dialog box texts

 106      oEditor.FCKLanguageManager.TranslatePage(document) ;
 107  
 108      dialog.SetOkButton( true ) ;
 109      dialog.SetAutoSize( true ) ;
 110  
 111      // Popuplate the style menu

 112      var styles = FCKStyles.GetStyles() ;
 113      var selectableStyles = {} ;
 114      for ( var i in styles )
 115      {
 116          if ( ! /^_FCK_/.test( i ) && styles[i].Element == 'div' )
 117              selectableStyles[i] = styles[i] ;
 118      }
 119      if ( CurrentContainers.length <= 1 )
 120      {
 121          var target = CurrentContainers[0] ;
 122          var match = null ;
 123          for ( var i in selectableStyles )
 124          {
 125              if ( target && styles[i].CheckElementRemovable( target, true ) )
 126                  match = i ;
 127          }
 128          if ( !match )
 129              AddStyleOption( "" ) ;
 130          for ( var i in selectableStyles )
 131              AddStyleOption( i ) ;
 132          if ( match )
 133              GetE( 'selStyle' ).value = match ;
 134  
 135          // Set the value for other inputs

 136          if ( target )
 137          {
 138              GetE( 'txtClass' ).value = target.className ;
 139              GetE( 'txtId' ).value = target.id ;
 140              GetE( 'txtLang' ).value = target.lang ;
 141              GetE( 'txtInlineStyle').value = target.style.cssText ;
 142              GetE( 'txtTitle' ).value = target.title ;
 143              GetE( 'selLangDir').value = target.dir || GetNearestAncestorDirection( target ) ;
 144          }
 145      }
 146      else
 147      {
 148          GetE( 'txtId' ).disabled = true ;
 149          AddStyleOption( "" ) ;
 150          for ( var i in selectableStyles )
 151              AddStyleOption( i ) ;
 152      }
 153  }
 154  
 155  function CreateDiv()
 156  {
 157      var newBlocks = [] ;
 158      var range = new FCKDomRange( FCK.EditorWindow ) ;
 159      range.MoveToSelection() ;
 160  
 161      var bookmark = range.CreateBookmark() ;
 162  
 163      // Kludge for #1592: if the bookmark nodes are in the beginning of

 164      // $tagName, then move them to the nearest block element in the

 165      // $tagName.

 166      if ( FCKBrowserInfo.IsIE )
 167      {
 168          var bStart    = range.GetBookmarkNode( bookmark, true ) ;
 169          var bEnd    = range.GetBookmarkNode( bookmark, false ) ;
 170  
 171          var cursor ;
 172  
 173          if ( bStart
 174                  && bStart.parentNode.nodeName.IEquals( 'div' )
 175                  && !bStart.previousSibling )
 176          {
 177              cursor = bStart ;
 178              while ( ( cursor = cursor.nextSibling ) )
 179              {
 180                  if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] )
 181                      FCKDomTools.MoveNode( bStart, cursor, true ) ;
 182              }
 183          }
 184  
 185          if ( bEnd
 186                  && bEnd.parentNode.nodeName.IEquals( 'div' )
 187                  && !bEnd.previousSibling )
 188          {
 189              cursor = bEnd ;
 190              while ( ( cursor = cursor.nextSibling ) )
 191              {
 192                  if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] )
 193                  {
 194                      if ( cursor.firstChild == bStart )
 195                          FCKDomTools.InsertAfterNode( bStart, bEnd ) ;
 196                      else
 197                          FCKDomTools.MoveNode( bEnd, cursor, true ) ;
 198                  }
 199              }
 200          }
 201      }
 202  
 203      var iterator = new FCKDomRangeIterator( range ) ;
 204      var block ;
 205  
 206      iterator.EnforceRealBlocks = true ;
 207      var paragraphs = [] ;
 208      var groups = [] ;
 209      var lastBlockLimit = null ;
 210      while ( ( block = iterator.GetNextParagraph() ) )
 211      {
 212          var elementPath = new FCKElementPath( block ) ;
 213          if ( elementPath.BlockLimit != lastBlockLimit )
 214          {
 215              groups.push( [] ) ;
 216              lastBlockLimit = elementPath.BlockLimit ;
 217          }
 218          groups[groups.length - 1].push( block ) ;
 219      }
 220  
 221      for ( var i = 0 ; i < groups.length ; i++ )
 222      {
 223          var divNode = FCK.EditorDocument.createElement( 'div' ) ;
 224          groups[i][0].parentNode.insertBefore( divNode, groups[i][0] ) ;
 225          for ( var j = 0 ; j < groups[i].length ; j++ )
 226              FCKDomTools.MoveNode( groups[i][j], divNode ) ;
 227          newBlocks.push( divNode ) ;
 228      }
 229  
 230      range.MoveToBookmark( bookmark ) ;
 231      range.Select() ;
 232  
 233      FCK.Focus() ;
 234      FCK.Events.FireEvent( 'OnSelectionChange' ) ;
 235  
 236      return newBlocks ;
 237  }
 238  
 239  function Ok()
 240  {
 241      oEditor.FCKUndo.SaveUndoStep() ;
 242  
 243      if ( CurrentContainers.length < 1 )
 244          CurrentContainers = CreateDiv();
 245  
 246      var setValue = function( attrName, inputName )
 247      {
 248          var val = GetE( inputName ).value ;
 249          for ( var i = 0 ; i < CurrentContainers.length ; i++ )
 250          {
 251              if ( val == '' )
 252                  CurrentContainers[i].removeAttribute( attrName ) ;
 253              else
 254                  CurrentContainers[i].setAttribute( attrName, val ) ;
 255          }
 256      }
 257  
 258      // Apply modifications to the DIV container according to dialog inputs.

 259      if ( CurrentContainers.length == 1 )
 260      {
 261          setValue( 'class', 'txtClass' ) ;
 262          setValue( 'id', 'txtId' ) ;
 263      }
 264      setValue( 'lang', 'txtLang' ) ;
 265      if ( FCKBrowserInfo.IsIE )
 266      {
 267          for ( var i = 0 ; i < CurrentContainers.length ; i++ )
 268              CurrentContainers[i].style.cssText = GetE( 'txtInlineStyle' ).value ;
 269      }
 270      else
 271          setValue( 'style', 'txtInlineStyle' ) ;
 272      setValue( 'title', 'txtTitle' ) ;
 273      for ( var i = 0 ; i < CurrentContainers.length ; i++ )
 274      {
 275          var dir = GetE( 'selLangDir' ).value ;
 276          var styleName = GetE( 'selStyle' ).value ;
 277          if ( GetNearestAncestorDirection( CurrentContainers[i] ) != dir )
 278              CurrentContainers[i].dir = dir ;
 279          else
 280              CurrentContainers[i].removeAttribute( 'dir' ) ;
 281  
 282          if ( styleName )
 283              FCKStyles.GetStyle( styleName ).ApplyToObject( CurrentContainers[i] ) ;
 284      }
 285  
 286      return true ;
 287  }
 288  
 289      </script>
 290  </head>
 291  <body style="overflow: hidden">
 292      <div id="divGeneral">
 293          <table cellspacing="0" cellpadding="0" width="100%" border="0">
 294              <colgroup span="2">
 295                  <col width="49%" />
 296                  <col width="2%" />
 297                  <col width="49%" />
 298              </colgroup>
 299              <tr>
 300                  <td>
 301                      <span fcklang="DlgDivStyle">Style</span><br />
 302                      <select id="selStyle" style="width: 100%;">
 303                      </select>
 304                  </td>
 305                  <td>&nbsp;</td>
 306                  <td>
 307                      <span fcklang="DlgGenClass">Stylesheet Classes</span><br />
 308                      <input id="txtClass" style="width: 100%" type="text" />
 309                  </td>
 310              </tr>
 311          </table>
 312      </div>
 313      <div id="divAdvanced" style="display: none">
 314          <table cellspacing="0" cellpadding="0" width="100%" border="0">
 315              <colgroup span="2">
 316                  <col width="49%" />
 317                  <col width="2%" />
 318                  <col width="49%" />
 319              </colgroup>
 320              <tr>
 321                  <td>
 322                      <span fcklang="DlgGenId">Id</span><br />
 323                      <input style="width: 100%" type="text" id="txtId" />
 324                  </td>
 325                  <td>&nbsp;</td>
 326                  <td>
 327                      <span fcklang="DlgGenLangCode">Language Code</span><br />
 328                      <input style="width: 100%" type="text" id="txtLang" />
 329                  </td>
 330              </tr>
 331              <tr>
 332                  <td colspan="3">&nbsp;</td>
 333              </tr>
 334              <tr>
 335                  <td colspan="3">
 336                      <span fcklang="DlgDivInlineStyle">Inline Style</span><br />
 337                      <input style="width: 100%" type="text" id="txtInlineStyle" />
 338                  </td>
 339              </tr>
 340              <tr>
 341                  <td colspan="3">&nbsp;</td>
 342              </tr>
 343              <tr>
 344                  <td colspan="3">
 345                      <span fcklang="DlgGenTitle">Advisory Title</span><br />
 346                      <input style="width: 100%" type="text" id="txtTitle" />
 347                  </td>
 348              </tr>
 349              <tr>
 350                  <td>&nbsp;</td>
 351              </tr>
 352              <tr>
 353                  <td>
 354                      <span fcklang="DlgGenLangDir">Language Direction</span><br />
 355                      <select id="selLangDir">
 356                          <option fcklang="DlgGenLangDirLtr" value="ltr">Left to Right (LTR)
 357                          <option fcklang="DlgGenLangDirRtl" value="rtl">Right to Left (RTL)
 358                      </select>
 359                  </td>
 360              </tr>
 361          </table>
 362      </div>
 363  </body>
 364  </html>


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