[ Index ] |
PHP Cross Reference of osCMax 2.0.4 |
[Summary view] [Print] [Text view]
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> </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> </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"> </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"> </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> </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>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Jan 1 13:43:16 2010 | Cross-referenced by PHPXref 0.7 |