tagging as ATutor 1.5.4-release
[atutor.git] / jscripts / tiny_mce / plugins / save / editor_plugin_src.js
1 /**\r
2  * $RCSfile: editor_plugin_src.js,v $\r
3  * $Revision: 1.26 $\r
4  * $Date: 2006/02/13 15:09:28 $\r
5  *\r
6  * @author Moxiecode\r
7  * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.\r
8  */\r
9 \r
10 /* Import plugin specific language pack */\r
11 tinyMCE.importPluginLanguagePack('save', 'en,tr,sv,zh_cn,cs,fa,fr_ca,fr,de,pl,pt_br,nl,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,fi,da,es,cy,is,zh_tw,zh_tw_utf8,sk');\r
12 \r
13 var TinyMCE_SavePlugin = {\r
14         getInfo : function() {\r
15                 return {\r
16                         longname : 'Save',\r
17                         author : 'Moxiecode Systems',\r
18                         authorurl : 'http://tinymce.moxiecode.com',\r
19                         infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_save.html',\r
20                         version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion\r
21                 };\r
22         },\r
23 \r
24         initInstance : function(inst) {\r
25                 inst.addShortcut('ctrl', 's', 'lang_save_desc', 'mceSave');\r
26         },\r
27 \r
28         /**\r
29          * Returns the HTML contents of the save control.\r
30          */\r
31         getControlHTML : function(cn) {\r
32                 switch (cn) {\r
33                         case "save":\r
34                                 return tinyMCE.getButtonHTML(cn, 'lang_save_desc', '{$pluginurl}/images/save.gif', 'mceSave');\r
35                 }\r
36 \r
37                 return "";\r
38         },\r
39 \r
40         /**\r
41          * Executes the save command.\r
42          */\r
43         execCommand : function(editor_id, element, command, user_interface, value) {\r
44                 // Handle commands\r
45                 switch (command) {\r
46                         case "mceSave":\r
47                                 if (tinyMCE.getParam("fullscreen_is_enabled"))\r
48                                         return true;\r
49 \r
50                                 var inst = tinyMCE.selectedInstance;\r
51                                 var formObj = inst.formElement.form;\r
52 \r
53                                 if (tinyMCE.getParam("save_enablewhendirty") && !inst.isDirty())\r
54                                         return true;\r
55 \r
56                                 if (formObj) {\r
57                                         tinyMCE.triggerSave();\r
58 \r
59                                         // Use callback instead\r
60                                         var os;\r
61                                         if ((os = tinyMCE.getParam("save_onsavecallback"))) {\r
62                                                 if (eval(os + '(inst);')) {\r
63                                                         inst.startContent = tinyMCE.trim(inst.getBody().innerHTML);\r
64                                                         /*inst.undoLevels = new Array();\r
65                                                         inst.undoIndex = 0;\r
66                                                         inst.typingUndoIndex = -1;\r
67                                                         inst.undoRedo = true;\r
68                                                         inst.undoLevels[inst.undoLevels.length] = inst.startContent;*/\r
69                                                         tinyMCE.triggerNodeChange(false, true);\r
70                                                 }\r
71 \r
72                                                 return true;\r
73                                         }\r
74 \r
75                                         // Disable all UI form elements that TinyMCE created\r
76                                         for (var i=0; i<formObj.elements.length; i++) {\r
77                                                 var elementId = formObj.elements[i].name ? formObj.elements[i].name : formObj.elements[i].id;\r
78 \r
79                                                 if (elementId.indexOf('mce_editor_') == 0)\r
80                                                         formObj.elements[i].disabled = true;\r
81                                         }\r
82 \r
83                                         tinyMCE.isNotDirty = true;\r
84 \r
85                                         if (formObj.onsubmit == null || formObj.onsubmit() != false)\r
86                                                 inst.formElement.form.submit();\r
87                                 } else\r
88                                         alert("Error: No form element found.");\r
89 \r
90                                 return true;\r
91                 }\r
92                 // Pass to next handler in chain\r
93                 return false;\r
94         },\r
95 \r
96         handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {\r
97                 if (tinyMCE.getParam("fullscreen_is_enabled")) {\r
98                         tinyMCE.switchClass(editor_id + '_save', 'mceButtonDisabled');\r
99                         return true;\r
100                 }\r
101 \r
102                 if (tinyMCE.getParam("save_enablewhendirty")) {\r
103                         var inst = tinyMCE.getInstanceById(editor_id);\r
104 \r
105                         if (inst.isDirty()) {\r
106                                 tinyMCE.switchClass(editor_id + '_save', 'mceButtonNormal');\r
107                                 return true;\r
108                         }\r
109 \r
110                         tinyMCE.switchClass(editor_id + '_save', 'mceButtonDisabled');\r
111                 }\r
112 \r
113                 return true;\r
114         }\r
115 };\r
116 \r
117 tinyMCE.addPlugin("save", TinyMCE_SavePlugin);\r