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