PluginProbe
Wp-Insert / 1.7.2
Wp-Insert v1.7.2
trunk 1.0 1.1 1.2 1.2.1 1.2.2 1.3.0 1.3.1 1.3.3 1.4 1.5.0 1.5.1 1.5.2 1.5.3 1.6.0 1.6.1 1.6.2 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 2.0 All 63 releases
wp-insert / fckeditor / editor / dialog / fck_div.html

fck_div.html in Wp-Insert 1.7.2, at fckeditor/editor/dialog/fck_div.html

397 lines 10.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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-2009 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 var paragraphs = [] ;
207 while ( ( block = iterator.GetNextParagraph() ) )
208 paragraphs.push( block ) ;
209
210 // Make sure all paragraphs have the same parent.
211 var commonParent = paragraphs[0].parentNode ;
212 var tmp = [] ;
213 for ( var i = 0 ; i < paragraphs.length ; i++ )
214 {
215 block = paragraphs[i] ;
216 commonParent = FCKDomTools.GetCommonParents( block.parentNode, commonParent ).pop() ;
217 }
218
219 // The common parent must not be the following tags: table, tbody, tr, ol, ul.
220 while ( commonParent.nodeName.IEquals( 'table', 'tbody', 'tr', 'ol', 'ul' ) )
221 commonParent = commonParent.parentNode ;
222
223 // Reconstruct the block list to be processed such that all resulting blocks
224 // satisfy parentNode == commonParent.
225 var lastBlock = null ;
226 while ( paragraphs.length > 0 )
227 {
228 block = paragraphs.shift() ;
229 while ( block.parentNode != commonParent )
230 block = block.parentNode ;
231 if ( block != lastBlock )
232 tmp.push( block ) ;
233 lastBlock = block ;
234 }
235 paragraphs = tmp ;
236
237 // Split the paragraphs into groups depending on their BlockLimit element.
238 var groups = [] ;
239 var lastBlockLimit = null ;
240 for ( var i = 0 ; i < paragraphs.length ; i++ )
241 {
242 block = paragraphs[i] ;
243 var elementPath = new FCKElementPath( block ) ;
244 if ( elementPath.BlockLimit != lastBlockLimit )
245 {
246 groups.push( [] ) ;
247 lastBlockLimit = elementPath.BlockLimit ;
248 }
249 groups[groups.length - 1].push( block ) ;
250 }
251
252 // Create a DIV container for each group.
253 for ( var i = 0 ; i < groups.length ; i++ )
254 {
255 var divNode = FCK.EditorDocument.createElement( 'div' ) ;
256 groups[i][0].parentNode.insertBefore( divNode, groups[i][0] ) ;
257 for ( var j = 0 ; j < groups[i].length ; j++ )
258 FCKDomTools.MoveNode( groups[i][j], divNode ) ;
259 newBlocks.push( divNode ) ;
260 }
261
262 range.MoveToBookmark( bookmark ) ;
263 range.Select() ;
264
265 FCK.Focus() ;
266 FCK.Events.FireEvent( 'OnSelectionChange' ) ;
267
268 return newBlocks ;
269 }
270
271 function Ok()
272 {
273 oEditor.FCKUndo.SaveUndoStep() ;
274
275 if ( CurrentContainers.length < 1 )
276 CurrentContainers = CreateDiv();
277
278 var setValue = function( attrName, inputName )
279 {
280 var val = GetE( inputName ).value ;
281 for ( var i = 0 ; i < CurrentContainers.length ; i++ )
282 {
283 if ( val == '' )
284 CurrentContainers[i].removeAttribute( attrName ) ;
285 else
286 CurrentContainers[i].setAttribute( attrName, val ) ;
287 }
288 }
289
290 // Apply modifications to the DIV container according to dialog inputs.
291 if ( CurrentContainers.length == 1 )
292 {
293 setValue( 'class', 'txtClass' ) ;
294 setValue( 'id', 'txtId' ) ;
295 }
296 setValue( 'lang', 'txtLang' ) ;
297 if ( FCKBrowserInfo.IsIE )
298 {
299 for ( var i = 0 ; i < CurrentContainers.length ; i++ )
300 CurrentContainers[i].style.cssText = GetE( 'txtInlineStyle' ).value ;
301 }
302 else
303 setValue( 'style', 'txtInlineStyle' ) ;
304 setValue( 'title', 'txtTitle' ) ;
305 for ( var i = 0 ; i < CurrentContainers.length ; i++ )
306 {
307 var dir = GetE( 'selLangDir' ).value ;
308 var styleName = GetE( 'selStyle' ).value ;
309 if ( GetNearestAncestorDirection( CurrentContainers[i] ) != dir )
310 CurrentContainers[i].dir = dir ;
311 else
312 CurrentContainers[i].removeAttribute( 'dir' ) ;
313
314 if ( styleName )
315 FCKStyles.GetStyle( styleName ).ApplyToObject( CurrentContainers[i] ) ;
316 }
317
318 return true ;
319 }
320
321 </script>
322 </head>
323 <body style="overflow: hidden">
324 <div id="divGeneral">
325 <table cellspacing="0" cellpadding="0" width="100%" border="0">
326 <colgroup span="2">
327 <col width="49%" />
328 <col width="2%" />
329 <col width="49%" />
330 </colgroup>
331 <tr>
332 <td>
333 <span fcklang="DlgDivStyle">Style</span><br />
334 <select id="selStyle" style="width: 100%;">
335 </select>
336 </td>
337 <td>&nbsp;</td>
338 <td>
339 <span fcklang="DlgGenClass">Stylesheet Classes</span><br />
340 <input id="txtClass" style="width: 100%" type="text" />
341 </td>
342 </tr>
343 </table>
344 </div>
345 <div id="divAdvanced" style="display: none">
346 <table cellspacing="0" cellpadding="0" width="100%" border="0">
347 <colgroup span="2">
348 <col width="49%" />
349 <col width="2%" />
350 <col width="49%" />
351 </colgroup>
352 <tr>
353 <td>
354 <span fcklang="DlgGenId">Id</span><br />
355 <input style="width: 100%" type="text" id="txtId" />
356 </td>
357 <td>&nbsp;</td>
358 <td>
359 <span fcklang="DlgGenLangCode">Language Code</span><br />
360 <input style="width: 100%" type="text" id="txtLang" />
361 </td>
362 </tr>
363 <tr>
364 <td colspan="3">&nbsp;</td>
365 </tr>
366 <tr>
367 <td colspan="3">
368 <span fcklang="DlgDivInlineStyle">Inline Style</span><br />
369 <input style="width: 100%" type="text" id="txtInlineStyle" />
370 </td>
371 </tr>
372 <tr>
373 <td colspan="3">&nbsp;</td>
374 </tr>
375 <tr>
376 <td colspan="3">
377 <span fcklang="DlgGenTitle">Advisory Title</span><br />
378 <input style="width: 100%" type="text" id="txtTitle" />
379 </td>
380 </tr>
381 <tr>
382 <td>&nbsp;</td>
383 </tr>
384 <tr>
385 <td>
386 <span fcklang="DlgGenLangDir">Language Direction</span><br />
387 <select id="selLangDir">
388 <option fcklang="DlgGenLangDirLtr" value="ltr">Left to Right (LTR)
389 <option fcklang="DlgGenLangDirRtl" value="rtl">Right to Left (RTL)
390 </select>
391 </td>
392 </tr>
393 </table>
394 </div>
395 </body>
396 </html>
397