| 1 |
/* |
| 2 |
* FCKeditor - The text editor for Internet - http://www.fckeditor.net |
| 3 |
* Copyright (C) 2003-2009 Frederico Caldeira Knabben |
| 4 |
* |
| 5 |
* == BEGIN LICENSE == |
| 6 |
* |
| 7 |
* Licensed under the terms of any of the following licenses at your |
| 8 |
* choice: |
| 9 |
* |
| 10 |
* - GNU General Public License Version 2 or later (the "GPL") |
| 11 |
* http://www.gnu.org/licenses/gpl.html |
| 12 |
* |
| 13 |
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL") |
| 14 |
* http://www.gnu.org/licenses/lgpl.html |
| 15 |
* |
| 16 |
* - Mozilla Public License Version 1.1 or later (the "MPL") |
| 17 |
* http://www.mozilla.org/MPL/MPL-1.1.html |
| 18 |
* |
| 19 |
* == END LICENSE == |
| 20 |
* |
| 21 |
* Define all commands available in the editor. |
| 22 |
*/ |
| 23 |
|
| 24 |
var FCKCommands = FCK.Commands = new Object() ; |
| 25 |
FCKCommands.LoadedCommands = new Object() ; |
| 26 |
|
| 27 |
FCKCommands.RegisterCommand = function( commandName, command ) |
| 28 |
{ |
| 29 |
this.LoadedCommands[ commandName ] = command ; |
| 30 |
} |
| 31 |
|
| 32 |
FCKCommands.GetCommand = function( commandName ) |
| 33 |
{ |
| 34 |
var oCommand = FCKCommands.LoadedCommands[ commandName ] ; |
| 35 |
|
| 36 |
if ( oCommand ) |
| 37 |
return oCommand ; |
| 38 |
|
| 39 |
switch ( commandName ) |
| 40 |
{ |
| 41 |
case 'Bold' : |
| 42 |
case 'Italic' : |
| 43 |
case 'Underline' : |
| 44 |
case 'StrikeThrough': |
| 45 |
case 'Subscript' : |
| 46 |
case 'Superscript' : oCommand = new FCKCoreStyleCommand( commandName ) ; break ; |
| 47 |
|
| 48 |
case 'RemoveFormat' : oCommand = new FCKRemoveFormatCommand() ; break ; |
| 49 |
|
| 50 |
case 'DocProps' : oCommand = new FCKDialogCommand( 'DocProps' , FCKLang.DocProps , 'dialog/fck_docprops.html' , 400, 380, FCKCommands.GetFullPageState ) ; break ; |
| 51 |
case 'Templates' : oCommand = new FCKDialogCommand( 'Templates' , FCKLang.DlgTemplatesTitle , 'dialog/fck_template.html' , 380, 450 ) ; break ; |
| 52 |
case 'Link' : oCommand = new FCKDialogCommand( 'Link' , FCKLang.DlgLnkWindowTitle , 'dialog/fck_link.html' , 400, 300 ) ; break ; |
| 53 |
case 'Unlink' : oCommand = new FCKUnlinkCommand() ; break ; |
| 54 |
case 'VisitLink' : oCommand = new FCKVisitLinkCommand() ; break ; |
| 55 |
case 'Anchor' : oCommand = new FCKDialogCommand( 'Anchor' , FCKLang.DlgAnchorTitle , 'dialog/fck_anchor.html' , 370, 160 ) ; break ; |
| 56 |
case 'AnchorDelete' : oCommand = new FCKAnchorDeleteCommand() ; break ; |
| 57 |
case 'BulletedList' : oCommand = new FCKDialogCommand( 'BulletedList', FCKLang.BulletedListProp , 'dialog/fck_listprop.html?UL' , 370, 160 ) ; break ; |
| 58 |
case 'NumberedList' : oCommand = new FCKDialogCommand( 'NumberedList', FCKLang.NumberedListProp , 'dialog/fck_listprop.html?OL' , 370, 160 ) ; break ; |
| 59 |
case 'About' : oCommand = new FCKDialogCommand( 'About' , FCKLang.About , 'dialog/fck_about.html' , 420, 330, function(){ return FCK_TRISTATE_OFF ; } ) ; break ; |
| 60 |
case 'Find' : oCommand = new FCKDialogCommand( 'Find' , FCKLang.DlgFindAndReplaceTitle, 'dialog/fck_replace.html' , 340, 230, null, null, 'Find' ) ; break ; |
| 61 |
case 'Replace' : oCommand = new FCKDialogCommand( 'Replace' , FCKLang.DlgFindAndReplaceTitle, 'dialog/fck_replace.html' , 340, 230, null, null, 'Replace' ) ; break ; |
| 62 |
|
| 63 |
case 'Image' : oCommand = new FCKDialogCommand( 'Image' , FCKLang.DlgImgTitle , 'dialog/fck_image.html' , 450, 390 ) ; break ; |
| 64 |
case 'Flash' : oCommand = new FCKDialogCommand( 'Flash' , FCKLang.DlgFlashTitle , 'dialog/fck_flash.html' , 450, 390 ) ; break ; |
| 65 |
case 'SpecialChar' : oCommand = new FCKDialogCommand( 'SpecialChar', FCKLang.DlgSpecialCharTitle , 'dialog/fck_specialchar.html' , 400, 290 ) ; break ; |
| 66 |
case 'Smiley' : oCommand = new FCKDialogCommand( 'Smiley' , FCKLang.DlgSmileyTitle , 'dialog/fck_smiley.html' , FCKConfig.SmileyWindowWidth, FCKConfig.SmileyWindowHeight ) ; break ; |
| 67 |
case 'Table' : oCommand = new FCKDialogCommand( 'Table' , FCKLang.DlgTableTitle , 'dialog/fck_table.html' , 480, 250 ) ; break ; |
| 68 |
case 'TableProp' : oCommand = new FCKDialogCommand( 'Table' , FCKLang.DlgTableTitle , 'dialog/fck_table.html?Parent', 480, 250 ) ; break ; |
| 69 |
case 'TableCellProp': oCommand = new FCKDialogCommand( 'TableCell' , FCKLang.DlgCellTitle , 'dialog/fck_tablecell.html' , 550, 240 ) ; break ; |
| 70 |
|
| 71 |
case 'Style' : oCommand = new FCKStyleCommand() ; break ; |
| 72 |
|
| 73 |
case 'FontName' : oCommand = new FCKFontNameCommand() ; break ; |
| 74 |
case 'FontSize' : oCommand = new FCKFontSizeCommand() ; break ; |
| 75 |
case 'FontFormat' : oCommand = new FCKFormatBlockCommand() ; break ; |
| 76 |
|
| 77 |
case 'Source' : oCommand = new FCKSourceCommand() ; break ; |
| 78 |
case 'Preview' : oCommand = new FCKPreviewCommand() ; break ; |
| 79 |
case 'Save' : oCommand = new FCKSaveCommand() ; break ; |
| 80 |
case 'NewPage' : oCommand = new FCKNewPageCommand() ; break ; |
| 81 |
case 'PageBreak' : oCommand = new FCKPageBreakCommand() ; break ; |
| 82 |
case 'Rule' : oCommand = new FCKRuleCommand() ; break ; |
| 83 |
case 'Nbsp' : oCommand = new FCKNbsp() ; break ; |
| 84 |
|
| 85 |
case 'TextColor' : oCommand = new FCKTextColorCommand('ForeColor') ; break ; |
| 86 |
case 'BGColor' : oCommand = new FCKTextColorCommand('BackColor') ; break ; |
| 87 |
|
| 88 |
case 'Paste' : oCommand = new FCKPasteCommand() ; break ; |
| 89 |
case 'PasteText' : oCommand = new FCKPastePlainTextCommand() ; break ; |
| 90 |
case 'PasteWord' : oCommand = new FCKPasteWordCommand() ; break ; |
| 91 |
|
| 92 |
case 'JustifyLeft' : oCommand = new FCKJustifyCommand( 'left' ) ; break ; |
| 93 |
case 'JustifyCenter' : oCommand = new FCKJustifyCommand( 'center' ) ; break ; |
| 94 |
case 'JustifyRight' : oCommand = new FCKJustifyCommand( 'right' ) ; break ; |
| 95 |
case 'JustifyFull' : oCommand = new FCKJustifyCommand( 'justify' ) ; break ; |
| 96 |
case 'Indent' : oCommand = new FCKIndentCommand( 'indent', FCKConfig.IndentLength ) ; break ; |
| 97 |
case 'Outdent' : oCommand = new FCKIndentCommand( 'outdent', FCKConfig.IndentLength * -1 ) ; break ; |
| 98 |
case 'Blockquote' : oCommand = new FCKBlockQuoteCommand() ; break ; |
| 99 |
case 'CreateDiv' : oCommand = new FCKDialogCommand( 'CreateDiv', FCKLang.CreateDiv, 'dialog/fck_div.html', 380, 210, null, null, true ) ; break ; |
| 100 |
case 'EditDiv' : oCommand = new FCKDialogCommand( 'EditDiv', FCKLang.EditDiv, 'dialog/fck_div.html', 380, 210, null, null, false ) ; break ; |
| 101 |
case 'DeleteDiv' : oCommand = new FCKDeleteDivCommand() ; break ; |
| 102 |
|
| 103 |
case 'TableInsertRowAfter' : oCommand = new FCKTableCommand('TableInsertRowAfter') ; break ; |
| 104 |
case 'TableInsertRowBefore' : oCommand = new FCKTableCommand('TableInsertRowBefore') ; break ; |
| 105 |
case 'TableDeleteRows' : oCommand = new FCKTableCommand('TableDeleteRows') ; break ; |
| 106 |
case 'TableInsertColumnAfter' : oCommand = new FCKTableCommand('TableInsertColumnAfter') ; break ; |
| 107 |
case 'TableInsertColumnBefore' : oCommand = new FCKTableCommand('TableInsertColumnBefore') ; break ; |
| 108 |
case 'TableDeleteColumns' : oCommand = new FCKTableCommand('TableDeleteColumns') ; break ; |
| 109 |
case 'TableInsertCellAfter' : oCommand = new FCKTableCommand('TableInsertCellAfter') ; break ; |
| 110 |
case 'TableInsertCellBefore' : oCommand = new FCKTableCommand('TableInsertCellBefore') ; break ; |
| 111 |
case 'TableDeleteCells' : oCommand = new FCKTableCommand('TableDeleteCells') ; break ; |
| 112 |
case 'TableMergeCells' : oCommand = new FCKTableCommand('TableMergeCells') ; break ; |
| 113 |
case 'TableMergeRight' : oCommand = new FCKTableCommand('TableMergeRight') ; break ; |
| 114 |
case 'TableMergeDown' : oCommand = new FCKTableCommand('TableMergeDown') ; break ; |
| 115 |
case 'TableHorizontalSplitCell' : oCommand = new FCKTableCommand('TableHorizontalSplitCell') ; break ; |
| 116 |
case 'TableVerticalSplitCell' : oCommand = new FCKTableCommand('TableVerticalSplitCell') ; break ; |
| 117 |
case 'TableDelete' : oCommand = new FCKTableCommand('TableDelete') ; break ; |
| 118 |
|
| 119 |
case 'Form' : oCommand = new FCKDialogCommand( 'Form' , FCKLang.Form , 'dialog/fck_form.html' , 380, 210 ) ; break ; |
| 120 |
case 'Checkbox' : oCommand = new FCKDialogCommand( 'Checkbox' , FCKLang.Checkbox , 'dialog/fck_checkbox.html' , 380, 200 ) ; break ; |
| 121 |
case 'Radio' : oCommand = new FCKDialogCommand( 'Radio' , FCKLang.RadioButton , 'dialog/fck_radiobutton.html' , 380, 200 ) ; break ; |
| 122 |
case 'TextField' : oCommand = new FCKDialogCommand( 'TextField' , FCKLang.TextField , 'dialog/fck_textfield.html' , 380, 210 ) ; break ; |
| 123 |
case 'Textarea' : oCommand = new FCKDialogCommand( 'Textarea' , FCKLang.Textarea , 'dialog/fck_textarea.html' , 380, 210 ) ; break ; |
| 124 |
case 'HiddenField' : oCommand = new FCKDialogCommand( 'HiddenField', FCKLang.HiddenField , 'dialog/fck_hiddenfield.html' , 380, 190 ) ; break ; |
| 125 |
case 'Button' : oCommand = new FCKDialogCommand( 'Button' , FCKLang.Button , 'dialog/fck_button.html' , 380, 210 ) ; break ; |
| 126 |
case 'Select' : oCommand = new FCKDialogCommand( 'Select' , FCKLang.SelectionField, 'dialog/fck_select.html' , 400, 340 ) ; break ; |
| 127 |
case 'ImageButton' : oCommand = new FCKDialogCommand( 'ImageButton', FCKLang.ImageButton , 'dialog/fck_image.html?ImageButton', 450, 390 ) ; break ; |
| 128 |
|
| 129 |
case 'SpellCheck' : oCommand = new FCKSpellCheckCommand() ; break ; |
| 130 |
case 'FitWindow' : oCommand = new FCKFitWindow() ; break ; |
| 131 |
|
| 132 |
case 'Undo' : oCommand = new FCKUndoCommand() ; break ; |
| 133 |
case 'Redo' : oCommand = new FCKRedoCommand() ; break ; |
| 134 |
case 'Copy' : oCommand = new FCKCutCopyCommand( false ) ; break ; |
| 135 |
case 'Cut' : oCommand = new FCKCutCopyCommand( true ) ; break ; |
| 136 |
|
| 137 |
case 'SelectAll' : oCommand = new FCKSelectAllCommand() ; break ; |
| 138 |
case 'InsertOrderedList' : oCommand = new FCKListCommand( 'insertorderedlist', 'ol' ) ; break ; |
| 139 |
case 'InsertUnorderedList' : oCommand = new FCKListCommand( 'insertunorderedlist', 'ul' ) ; break ; |
| 140 |
case 'ShowBlocks' : oCommand = new FCKShowBlockCommand( 'ShowBlocks', FCKConfig.StartupShowBlocks ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF ) ; break ; |
| 141 |
|
| 142 |
// Generic Undefined command (usually used when a command is under development). |
| 143 |
case 'Undefined' : oCommand = new FCKUndefinedCommand() ; break ; |
| 144 |
|
| 145 |
// By default we assume that it is a named command. |
| 146 |
default: |
| 147 |
if ( FCKRegexLib.NamedCommands.test( commandName ) ) |
| 148 |
oCommand = new FCKNamedCommand( commandName ) ; |
| 149 |
else |
| 150 |
{ |
| 151 |
alert( FCKLang.UnknownCommand.replace( /%1/g, commandName ) ) ; |
| 152 |
return null ; |
| 153 |
} |
| 154 |
} |
| 155 |
|
| 156 |
FCKCommands.LoadedCommands[ commandName ] = oCommand ; |
| 157 |
|
| 158 |
return oCommand ; |
| 159 |
} |
| 160 |
|
| 161 |
// Gets the state of the "Document Properties" button. It must be enabled only |
| 162 |
// when "Full Page" editing is available. |
| 163 |
FCKCommands.GetFullPageState = function() |
| 164 |
{ |
| 165 |
return FCKConfig.FullPage ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ; |
| 166 |
} |
| 167 |
|
| 168 |
|
| 169 |
FCKCommands.GetBooleanState = function( isDisabled ) |
| 170 |
{ |
| 171 |
return isDisabled ? FCK_TRISTATE_DISABLED : FCK_TRISTATE_OFF ; |
| 172 |
} |
| 173 |
|