Rev 1372 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/** FCKeditor - The text editor for internet* Copyright (C) 2003-2006 Frederico Caldeira Knabben** Licensed under the terms of the GNU Lesser General Public License:* http://www.opensource.org/licenses/lgpl-license.php** For further information visit:* http://www.fckeditor.net/** "Support Open Source software. What about a donation today?"** File Name: fck_othercommands.js* Definition of other commands that are not available internaly in the* browser (see FCKNamedCommand).** File Authors:* Frederico Caldeira Knabben (fredck@fckeditor.net)*/// ### General Dialog Box Commands.var FCKDialogCommand = function( name, title, url, width, height, getStateFunction, getStateParam ){this.Name = name ;this.Title = title ;this.Url = url ;this.Width = width ;this.Height = height ;this.GetStateFunction = getStateFunction ;this.GetStateParam = getStateParam ;}FCKDialogCommand.prototype.Execute = function(){FCKDialog.OpenDialog( 'FCKDialog_' + this.Name , this.Title, this.Url, this.Width, this.Height ) ;}FCKDialogCommand.prototype.GetState = function(){if ( this.GetStateFunction )return this.GetStateFunction( this.GetStateParam ) ;elsereturn FCK_TRISTATE_OFF ;}// Generic Undefined command (usually used when a command is under development).var FCKUndefinedCommand = function(){this.Name = 'Undefined' ;}FCKUndefinedCommand.prototype.Execute = function(){alert( FCKLang.NotImplemented ) ;}FCKUndefinedCommand.prototype.GetState = function(){return FCK_TRISTATE_OFF ;}// ### FontNamevar FCKFontNameCommand = function(){this.Name = 'FontName' ;}FCKFontNameCommand.prototype.Execute = function( fontName ){if (fontName == null || fontName == ""){// TODO: Remove font name attribute.}elseFCK.ExecuteNamedCommand( 'FontName', fontName ) ;}FCKFontNameCommand.prototype.GetState = function(){return FCK.GetNamedCommandValue( 'FontName' ) ;}// ### FontSizevar FCKFontSizeCommand = function(){this.Name = 'FontSize' ;}FCKFontSizeCommand.prototype.Execute = function( fontSize ){if ( typeof( fontSize ) == 'string' ) fontSize = parseInt(fontSize) ;if ( fontSize == null || fontSize == '' ){// TODO: Remove font size attribute (Now it works with size 3. Will it work forever?)FCK.ExecuteNamedCommand( 'FontSize', 3 ) ;}elseFCK.ExecuteNamedCommand( 'FontSize', fontSize ) ;}FCKFontSizeCommand.prototype.GetState = function(){return FCK.GetNamedCommandValue( 'FontSize' ) ;}// ### FormatBlockvar FCKFormatBlockCommand = function(){this.Name = 'FormatBlock' ;}FCKFormatBlockCommand.prototype.Execute = function( formatName ){if ( formatName == null || formatName == '' )FCK.ExecuteNamedCommand( 'FormatBlock', '<P>' ) ;else if ( formatName == 'div' && FCKBrowserInfo.IsGecko )FCK.ExecuteNamedCommand( 'FormatBlock', 'div' ) ;elseFCK.ExecuteNamedCommand( 'FormatBlock', '<' + formatName + '>' ) ;}FCKFormatBlockCommand.prototype.GetState = function(){return FCK.GetNamedCommandValue( 'FormatBlock' ) ;}// ### Previewvar FCKPreviewCommand = function(){this.Name = 'Preview' ;}FCKPreviewCommand.prototype.Execute = function(){FCK.Preview() ;}FCKPreviewCommand.prototype.GetState = function(){return FCK_TRISTATE_OFF ;}// ### Savevar FCKSaveCommand = function(){this.Name = 'Save' ;}FCKSaveCommand.prototype.Execute = function(){// Get the linked field form.var oForm = FCK.LinkedField.form ;if ( typeof( oForm.onsubmit ) == 'function' ){var bRet = oForm.onsubmit() ;if ( bRet != null && bRet === false )return ;}// Submit the form.oForm.submit() ;}FCKSaveCommand.prototype.GetState = function(){return FCK_TRISTATE_OFF ;}// ### NewPagevar FCKNewPageCommand = function(){this.Name = 'NewPage' ;}FCKNewPageCommand.prototype.Execute = function(){FCKUndo.SaveUndoStep() ;FCK.SetHTML( '' ) ;FCKUndo.Typing = true ;// FCK.SetHTML( FCKBrowserInfo.IsGecko ? ' ' : '' ) ;// FCK.SetHTML( FCKBrowserInfo.IsGecko ? GECKO_BOGUS : '' ) ;}FCKNewPageCommand.prototype.GetState = function(){return FCK_TRISTATE_OFF ;}// ### Source buttonvar FCKSourceCommand = function(){this.Name = 'Source' ;}FCKSourceCommand.prototype.Execute = function(){if ( FCKConfig.SourcePopup ) // Until v2.2, it was mandatory for FCKBrowserInfo.IsGecko.{var iWidth = FCKConfig.ScreenWidth * 0.65 ;var iHeight = FCKConfig.ScreenHeight * 0.65 ;FCKDialog.OpenDialog( 'FCKDialog_Source', FCKLang.Source, 'dialog/fck_source.html', iWidth, iHeight, null, null, true ) ;}elseFCK.SwitchEditMode() ;}FCKSourceCommand.prototype.GetState = function(){return ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ? FCK_TRISTATE_OFF : FCK_TRISTATE_ON ) ;}// ### Undovar FCKUndoCommand = function(){this.Name = 'Undo' ;}FCKUndoCommand.prototype.Execute = function(){if ( FCKBrowserInfo.IsIE )FCKUndo.Undo() ;elseFCK.ExecuteNamedCommand( 'Undo' ) ;}FCKUndoCommand.prototype.GetState = function(){if ( FCKBrowserInfo.IsIE )return ( FCKUndo.CheckUndoState() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ;elsereturn FCK.GetNamedCommandState( 'Undo' ) ;}// ### Redovar FCKRedoCommand = function(){this.Name = 'Redo' ;}FCKRedoCommand.prototype.Execute = function(){if ( FCKBrowserInfo.IsIE )FCKUndo.Redo() ;elseFCK.ExecuteNamedCommand( 'Redo' ) ;}FCKRedoCommand.prototype.GetState = function(){if ( FCKBrowserInfo.IsIE )return ( FCKUndo.CheckRedoState() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ;elsereturn FCK.GetNamedCommandState( 'Redo' ) ;}// ### Page Breakvar FCKPageBreakCommand = function(){this.Name = 'PageBreak' ;}FCKPageBreakCommand.prototype.Execute = function(){// var e = FCK.EditorDocument.createElement( 'CENTER' ) ;// e.style.pageBreakAfter = 'always' ;// Tidy was removing the empty CENTER tags, so the following solution has// been found. It also validates correctly as XHTML 1.0 Strict.var e = FCK.EditorDocument.createElement( 'DIV' ) ;e.style.pageBreakAfter = 'always' ;e.innerHTML = '<span style="DISPLAY:none"> </span>' ;var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', e ) ;oFakeImage = FCK.InsertElement( oFakeImage ) ;}FCKPageBreakCommand.prototype.GetState = function(){return 0 ; // FCK_TRISTATE_OFF}// FCKUnlinkCommand - by Johnny Egeland (johnny@coretrek.com)var FCKUnlinkCommand = function(){this.Name = 'Unlink' ;}FCKUnlinkCommand.prototype.Execute = function(){if ( FCKBrowserInfo.IsGecko ){var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ;if ( oLink )FCK.Selection.SelectNode( oLink ) ;}FCK.ExecuteNamedCommand( this.Name ) ;if ( FCKBrowserInfo.IsGecko )FCK.Selection.Collapse( true ) ;}FCKUnlinkCommand.prototype.GetState = function(){return FCK.GetNamedCommandState( this.Name ) ;}