2 * $Id: editor_plugin_src.js 251 2007-04-10 20:16:15Z spocke $
\r
5 * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
\r
8 /* Import plugin specific language pack */
\r
9 tinyMCE.importPluginLanguagePack('save');
\r
11 var TinyMCE_SavePlugin = {
\r
12 getInfo : function() {
\r
15 author : 'Moxiecode Systems AB',
\r
16 authorurl : 'http://tinymce.moxiecode.com',
\r
17 infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',
\r
18 version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
\r
22 initInstance : function(inst) {
\r
23 inst.addShortcut('ctrl', 's', 'lang_save_desc', 'mceSave');
\r
27 * Returns the HTML contents of the save control.
\r
29 getControlHTML : function(cn) {
\r
32 return tinyMCE.getButtonHTML(cn, 'lang_save_desc', '{$pluginurl}/images/save.gif', 'mceSave');
\r
35 return tinyMCE.getButtonHTML(cn, 'lang_cancel_desc', '{$pluginurl}/images/cancel.gif', 'mceCancel');
\r
42 * Executes the save command.
\r
44 execCommand : function(editor_id, element, command, user_interface, value) {
\r
48 return this._save(editor_id, element, command, user_interface, value);
\r
51 return this._cancel(editor_id, element, command, user_interface, value);
\r
54 // Pass to next handler in chain
\r
58 _save : function(editor_id, element, command, user_interface, value) {
\r
59 var inst, formObj, os, i, elementId;
\r
61 if (tinyMCE.getParam("fullscreen_is_enabled"))
\r
64 inst = tinyMCE.selectedInstance;
\r
65 formObj = inst.formElement.form;
\r
67 if (tinyMCE.getParam("save_enablewhendirty") && !inst.isDirty())
\r
71 tinyMCE.triggerSave();
\r
73 // Use callback instead
\r
74 if ((os = tinyMCE.getParam("save_onsavecallback"))) {
\r
75 if (eval(os + '(inst);')) {
\r
76 inst.startContent = tinyMCE.trim(inst.getBody().innerHTML);
\r
77 /*inst.undoLevels = new Array();
\r
79 inst.typingUndoIndex = -1;
\r
80 inst.undoRedo = true;
\r
81 inst.undoLevels[inst.undoLevels.length] = inst.startContent;*/
\r
82 tinyMCE.triggerNodeChange(false, true);
\r
88 // Disable all UI form elements that TinyMCE created
\r
89 for (i=0; i<formObj.elements.length; i++) {
\r
90 elementId = formObj.elements[i].name ? formObj.elements[i].name : formObj.elements[i].id;
\r
92 if (elementId.indexOf('mce_editor_') == 0)
\r
93 formObj.elements[i].disabled = true;
\r
96 inst.isNotDirty = true;
\r
98 if (formObj.onsubmit == null || formObj.onsubmit() != false)
\r
99 inst.formElement.form.submit();
\r
101 tinyMCE.triggerNodeChange(false, true);
\r
103 alert("Error: No form element found.");
\r
108 _cancel : function(editor_id, element, command, user_interface, value) {
\r
109 var inst = tinyMCE.getInstanceById(editor_id), os, h = tinyMCE.trim(inst.startContent);
\r
111 // Use callback instead
\r
112 if ((os = tinyMCE.getParam("save_oncancelcallback"))) {
\r
113 if (eval(os + '(inst);'))
\r
119 inst.undoRedo.undoLevels = [];
\r
120 inst.undoRedo.add({ content : h });
\r
121 inst.undoRedo.undoIndex = 0;
\r
122 inst.undoRedo.typingUndoIndex = -1;
\r
124 tinyMCE.triggerNodeChange(false, true);
\r
129 handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
\r
132 if (tinyMCE.getParam("fullscreen_is_enabled")) {
\r
133 tinyMCE.switchClass(editor_id + '_save', 'mceButtonDisabled');
\r
137 if (tinyMCE.getParam("save_enablewhendirty")) {
\r
138 inst = tinyMCE.getInstanceById(editor_id);
\r
140 if (inst.isDirty()) {
\r
141 tinyMCE.switchClass(editor_id + '_save', 'mceButtonNormal');
\r
145 tinyMCE.switchClass(editor_id + '_save', 'mceButtonDisabled');
\r
152 tinyMCE.addPlugin("save", TinyMCE_SavePlugin);
\r