+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >\r
-<!--\r
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net\r
- * Copyright (C) 2003-2010 Frederico Caldeira Knabben\r
- *\r
- * == BEGIN LICENSE ==\r
- *\r
- * Licensed under the terms of any of the following licenses at your\r
- * choice:\r
- *\r
- * - GNU General Public License Version 2 or later (the "GPL")\r
- * http://www.gnu.org/licenses/gpl.html\r
- *\r
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")\r
- * http://www.gnu.org/licenses/lgpl.html\r
- *\r
- * - Mozilla Public License Version 1.1 or later (the "MPL")\r
- * http://www.mozilla.org/MPL/MPL-1.1.html\r
- *\r
- * == END LICENSE ==\r
- *\r
- * Form dialog window.\r
--->\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title></title>\r
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\r
- <meta content="noindex, nofollow" name="robots" />\r
- <script src="common/fck_dialog_common.js" type="text/javascript"></script>\r
- <script type="text/javascript">\r
-var dialog = window.parent ;\r
-var oEditor = dialog.InnerDialogLoaded() ;\r
-var FCK = oEditor.FCK ;\r
-var FCKLang = oEditor.FCKLang ;\r
-var FCKBrowserInfo = oEditor.FCKBrowserInfo ;\r
-var FCKStyles = oEditor.FCKStyles ;\r
-var FCKElementPath = oEditor.FCKElementPath ;\r
-var FCKDomRange = oEditor.FCKDomRange ;\r
-var FCKDomTools = oEditor.FCKDomTools ;\r
-var FCKDomRangeIterator = oEditor.FCKDomRangeIterator ;\r
-var FCKListsLib = oEditor.FCKListsLib ;\r
-var AlwaysCreate = dialog.Args().CustomValue ;\r
-\r
-String.prototype.IEquals = function()\r
-{\r
- var thisUpper = this.toUpperCase() ;\r
-\r
- var aArgs = arguments ;\r
-\r
- // The arguments could also be a single array.\r
- if ( aArgs.length == 1 && aArgs[0].pop )\r
- aArgs = aArgs[0] ;\r
-\r
- for ( var i = 0 ; i < aArgs.length ; i++ )\r
- {\r
- if ( thisUpper == aArgs[i].toUpperCase() )\r
- return true ;\r
- }\r
- return false ;\r
-}\r
-\r
-var CurrentContainers = [] ;\r
-if ( !AlwaysCreate )\r
-{\r
- dialog.Selection.EnsureSelection() ;\r
- CurrentContainers = FCKDomTools.GetSelectedDivContainers() ;\r
-}\r
-\r
-// Add some tabs\r
-dialog.AddTab( 'General', FCKLang.DlgDivGeneralTab );\r
-dialog.AddTab( 'Advanced', FCKLang.DlgDivAdvancedTab ) ;\r
-\r
-function AddStyleOption( styleName )\r
-{\r
- var el = GetE( 'selStyle' ) ;\r
- var opt = document.createElement( 'option' ) ;\r
- opt.text = opt.value = styleName ;\r
-\r
- if ( FCKBrowserInfo.IsIE )\r
- el.add( opt ) ;\r
- else\r
- el.add( opt, null ) ;\r
-}\r
-\r
-function OnDialogTabChange( tabCode )\r
-{\r
- ShowE( 'divGeneral', tabCode == 'General' ) ;\r
- ShowE( 'divAdvanced', tabCode == 'Advanced' ) ;\r
- dialog.SetAutoSize( true ) ;\r
-}\r
-\r
-function GetNearestAncestorDirection( node )\r
-{\r
- var dir = 'ltr' ; // HTML default.\r
- while ( ( node = node.parentNode ) )\r
- {\r
- if ( node.dir )\r
- dir = node.dir ;\r
- }\r
- return dir ;\r
-}\r
-\r
-window.onload = function()\r
-{\r
- // First of all, translate the dialog box texts\r
- oEditor.FCKLanguageManager.TranslatePage(document) ;\r
-\r
- dialog.SetOkButton( true ) ;\r
- dialog.SetAutoSize( true ) ;\r
-\r
- // Popuplate the style menu\r
- var styles = FCKStyles.GetStyles() ;\r
- var selectableStyles = {} ;\r
- for ( var i in styles )\r
- {\r
- if ( ! /^_FCK_/.test( i ) && styles[i].Element == 'div' )\r
- selectableStyles[i] = styles[i] ;\r
- }\r
- if ( CurrentContainers.length <= 1 )\r
- {\r
- var target = CurrentContainers[0] ;\r
- var match = null ;\r
- for ( var i in selectableStyles )\r
- {\r
- if ( target && styles[i].CheckElementRemovable( target, true ) )\r
- match = i ;\r
- }\r
- if ( !match )\r
- AddStyleOption( "" ) ;\r
- for ( var i in selectableStyles )\r
- AddStyleOption( i ) ;\r
- if ( match )\r
- GetE( 'selStyle' ).value = match ;\r
-\r
- // Set the value for other inputs\r
- if ( target )\r
- {\r
- GetE( 'txtClass' ).value = target.className ;\r
- GetE( 'txtId' ).value = target.id ;\r
- GetE( 'txtLang' ).value = target.lang ;\r
- GetE( 'txtInlineStyle').value = target.style.cssText ;\r
- GetE( 'txtTitle' ).value = target.title ;\r
- GetE( 'selLangDir').value = target.dir || GetNearestAncestorDirection( target ) ;\r
- }\r
- }\r
- else\r
- {\r
- GetE( 'txtId' ).disabled = true ;\r
- AddStyleOption( "" ) ;\r
- for ( var i in selectableStyles )\r
- AddStyleOption( i ) ;\r
- }\r
-}\r
-\r
-function CreateDiv()\r
-{\r
- var newBlocks = [] ;\r
- var range = new FCKDomRange( FCK.EditorWindow ) ;\r
- range.MoveToSelection() ;\r
-\r
- var bookmark = range.CreateBookmark() ;\r
-\r
- // Kludge for #1592: if the bookmark nodes are in the beginning of\r
- // $tagName, then move them to the nearest block element in the\r
- // $tagName.\r
- if ( FCKBrowserInfo.IsIE )\r
- {\r
- var bStart = range.GetBookmarkNode( bookmark, true ) ;\r
- var bEnd = range.GetBookmarkNode( bookmark, false ) ;\r
-\r
- var cursor ;\r
-\r
- if ( bStart\r
- && bStart.parentNode.nodeName.IEquals( 'div' )\r
- && !bStart.previousSibling )\r
- {\r
- cursor = bStart ;\r
- while ( ( cursor = cursor.nextSibling ) )\r
- {\r
- if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] )\r
- FCKDomTools.MoveNode( bStart, cursor, true ) ;\r
- }\r
- }\r
-\r
- if ( bEnd\r
- && bEnd.parentNode.nodeName.IEquals( 'div' )\r
- && !bEnd.previousSibling )\r
- {\r
- cursor = bEnd ;\r
- while ( ( cursor = cursor.nextSibling ) )\r
- {\r
- if ( FCKListsLib.BlockElements[ cursor.nodeName.toLowerCase() ] )\r
- {\r
- if ( cursor.firstChild == bStart )\r
- FCKDomTools.InsertAfterNode( bStart, bEnd ) ;\r
- else\r
- FCKDomTools.MoveNode( bEnd, cursor, true ) ;\r
- }\r
- }\r
- }\r
- }\r
-\r
- var iterator = new FCKDomRangeIterator( range ) ;\r
- var block ;\r
-\r
- var paragraphs = [] ;\r
- while ( ( block = iterator.GetNextParagraph() ) )\r
- paragraphs.push( block ) ;\r
-\r
- // Make sure all paragraphs have the same parent.\r
- var commonParent = paragraphs[0].parentNode ;\r
- var tmp = [] ;\r
- for ( var i = 0 ; i < paragraphs.length ; i++ )\r
- {\r
- block = paragraphs[i] ;\r
- commonParent = FCKDomTools.GetCommonParents( block.parentNode, commonParent ).pop() ;\r
- }\r
-\r
- // The common parent must not be the following tags: table, tbody, tr, ol, ul.\r
- while ( commonParent.nodeName.IEquals( 'table', 'tbody', 'tr', 'ol', 'ul' ) )\r
- commonParent = commonParent.parentNode ;\r
-\r
- // Reconstruct the block list to be processed such that all resulting blocks\r
- // satisfy parentNode == commonParent.\r
- var lastBlock = null ;\r
- while ( paragraphs.length > 0 )\r
- {\r
- block = paragraphs.shift() ;\r
- while ( block.parentNode != commonParent )\r
- block = block.parentNode ;\r
- if ( block != lastBlock )\r
- tmp.push( block ) ;\r
- lastBlock = block ;\r
- }\r
- paragraphs = tmp ;\r
-\r
- // Split the paragraphs into groups depending on their BlockLimit element.\r
- var groups = [] ;\r
- var lastBlockLimit = null ;\r
- for ( var i = 0 ; i < paragraphs.length ; i++ )\r
- {\r
- block = paragraphs[i] ;\r
- var elementPath = new FCKElementPath( block ) ;\r
- if ( elementPath.BlockLimit != lastBlockLimit )\r
- {\r
- groups.push( [] ) ;\r
- lastBlockLimit = elementPath.BlockLimit ;\r
- }\r
- groups[groups.length - 1].push( block ) ;\r
- }\r
-\r
- // Create a DIV container for each group.\r
- for ( var i = 0 ; i < groups.length ; i++ )\r
- {\r
- var divNode = FCK.EditorDocument.createElement( 'div' ) ;\r
- groups[i][0].parentNode.insertBefore( divNode, groups[i][0] ) ;\r
- for ( var j = 0 ; j < groups[i].length ; j++ )\r
- FCKDomTools.MoveNode( groups[i][j], divNode ) ;\r
- newBlocks.push( divNode ) ;\r
- }\r
-\r
- range.MoveToBookmark( bookmark ) ;\r
- range.Select() ;\r
-\r
- FCK.Focus() ;\r
- FCK.Events.FireEvent( 'OnSelectionChange' ) ;\r
-\r
- return newBlocks ;\r
-}\r
-\r
-function Ok()\r
-{\r
- oEditor.FCKUndo.SaveUndoStep() ;\r
-\r
- if ( CurrentContainers.length < 1 )\r
- CurrentContainers = CreateDiv();\r
-\r
- var setValue = function( attrName, inputName )\r
- {\r
- var val = GetE( inputName ).value ;\r
- for ( var i = 0 ; i < CurrentContainers.length ; i++ )\r
- {\r
- if ( val == '' )\r
- CurrentContainers[i].removeAttribute( attrName ) ;\r
- else\r
- CurrentContainers[i].setAttribute( attrName, val ) ;\r
- }\r
- }\r
-\r
- // Apply modifications to the DIV container according to dialog inputs.\r
- if ( CurrentContainers.length == 1 )\r
- {\r
- setValue( 'class', 'txtClass' ) ;\r
- setValue( 'id', 'txtId' ) ;\r
- }\r
- setValue( 'lang', 'txtLang' ) ;\r
- if ( FCKBrowserInfo.IsIE )\r
- {\r
- for ( var i = 0 ; i < CurrentContainers.length ; i++ )\r
- CurrentContainers[i].style.cssText = GetE( 'txtInlineStyle' ).value ;\r
- }\r
- else\r
- setValue( 'style', 'txtInlineStyle' ) ;\r
- setValue( 'title', 'txtTitle' ) ;\r
- for ( var i = 0 ; i < CurrentContainers.length ; i++ )\r
- {\r
- var dir = GetE( 'selLangDir' ).value ;\r
- var styleName = GetE( 'selStyle' ).value ;\r
- if ( GetNearestAncestorDirection( CurrentContainers[i] ) != dir )\r
- CurrentContainers[i].dir = dir ;\r
- else\r
- CurrentContainers[i].removeAttribute( 'dir' ) ;\r
-\r
- if ( styleName )\r
- FCKStyles.GetStyle( styleName ).ApplyToObject( CurrentContainers[i] ) ;\r
- }\r
-\r
- return true ;\r
-}\r
-\r
- </script>\r
-</head>\r
-<body style="overflow: hidden">\r
- <div id="divGeneral">\r
- <table cellspacing="0" cellpadding="0" width="100%" border="0">\r
- <colgroup span="2">\r
- <col width="49%" />\r
- <col width="2%" />\r
- <col width="49%" />\r
- </colgroup>\r
- <tr>\r
- <td>\r
- <span fcklang="DlgDivStyle">Style</span><br />\r
- <select id="selStyle" style="width: 100%;">\r
- </select>\r
- </td>\r
- <td> </td>\r
- <td>\r
- <span fcklang="DlgGenClass">Stylesheet Classes</span><br />\r
- <input id="txtClass" style="width: 100%" type="text" />\r
- </td>\r
- </tr>\r
- </table>\r
- </div>\r
- <div id="divAdvanced" style="display: none">\r
- <table cellspacing="0" cellpadding="0" width="100%" border="0">\r
- <colgroup span="2">\r
- <col width="49%" />\r
- <col width="2%" />\r
- <col width="49%" />\r
- </colgroup>\r
- <tr>\r
- <td>\r
- <span fcklang="DlgGenId">Id</span><br />\r
- <input style="width: 100%" type="text" id="txtId" />\r
- </td>\r
- <td> </td>\r
- <td>\r
- <span fcklang="DlgGenLangCode">Language Code</span><br />\r
- <input style="width: 100%" type="text" id="txtLang" />\r
- </td>\r
- </tr>\r
- <tr>\r
- <td colspan="3"> </td>\r
- </tr>\r
- <tr>\r
- <td colspan="3">\r
- <span fcklang="DlgDivInlineStyle">Inline Style</span><br />\r
- <input style="width: 100%" type="text" id="txtInlineStyle" />\r
- </td>\r
- </tr>\r
- <tr>\r
- <td colspan="3"> </td>\r
- </tr>\r
- <tr>\r
- <td colspan="3">\r
- <span fcklang="DlgGenTitle">Advisory Title</span><br />\r
- <input style="width: 100%" type="text" id="txtTitle" />\r
- </td>\r
- </tr>\r
- <tr>\r
- <td> </td>\r
- </tr>\r
- <tr>\r
- <td>\r
- <span fcklang="DlgGenLangDir">Language Direction</span><br />\r
- <select id="selLangDir">\r
- <option fcklang="DlgGenLangDirLtr" value="ltr">Left to Right (LTR)\r
- <option fcklang="DlgGenLangDirRtl" value="rtl">Right to Left (RTL)\r
- </select>\r
- </td>\r
- </tr>\r
- </table>\r
- </div>\r
-</body>\r
-</html>\r