[6] | 1 | /** |
---|
| 2 | * $Id: editor_plugin_src.js 531 2008-01-14 13:34:28Z spocke $ |
---|
| 3 | * |
---|
| 4 | * @author Moxiecode |
---|
| 5 | * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved. |
---|
| 6 | */ |
---|
| 7 | |
---|
| 8 | (function() { |
---|
| 9 | tinymce.create('tinymce.plugins.Save', { |
---|
| 10 | init : function(ed, url) { |
---|
| 11 | var t = this; |
---|
| 12 | |
---|
| 13 | t.editor = ed; |
---|
| 14 | |
---|
| 15 | // Register commands |
---|
| 16 | ed.addCommand('mceSave', t._save, t); |
---|
| 17 | ed.addCommand('mceCancel', t._cancel, t); |
---|
| 18 | |
---|
| 19 | // Register buttons |
---|
| 20 | ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'}); |
---|
| 21 | ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'}); |
---|
| 22 | |
---|
| 23 | ed.onNodeChange.add(t._nodeChange, t); |
---|
| 24 | ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave'); |
---|
| 25 | }, |
---|
| 26 | |
---|
| 27 | getInfo : function() { |
---|
| 28 | return { |
---|
| 29 | longname : 'Save', |
---|
| 30 | author : 'Moxiecode Systems AB', |
---|
| 31 | authorurl : 'http://tinymce.moxiecode.com', |
---|
| 32 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save', |
---|
| 33 | version : tinymce.majorVersion + "." + tinymce.minorVersion |
---|
| 34 | }; |
---|
| 35 | }, |
---|
| 36 | |
---|
| 37 | // Private methods |
---|
| 38 | |
---|
| 39 | _nodeChange : function(ed, cm, n) { |
---|
| 40 | var ed = this.editor; |
---|
| 41 | |
---|
| 42 | if (ed.getParam('save_enablewhendirty')) { |
---|
| 43 | cm.setDisabled('save', !ed.isDirty()); |
---|
| 44 | cm.setDisabled('cancel', !ed.isDirty()); |
---|
| 45 | } |
---|
| 46 | }, |
---|
| 47 | |
---|
| 48 | // Private methods |
---|
| 49 | |
---|
| 50 | _save : function() { |
---|
| 51 | var ed = this.editor, formObj, os, i, elementId; |
---|
| 52 | |
---|
| 53 | if (ed.getParam("fullscreen_is_enabled")) |
---|
| 54 | return true; |
---|
| 55 | |
---|
| 56 | formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form'); |
---|
| 57 | |
---|
| 58 | if (ed.getParam("save_enablewhendirty") && !ed.isDirty()) |
---|
| 59 | return true; |
---|
| 60 | |
---|
| 61 | if (formObj) { |
---|
| 62 | tinyMCE.triggerSave(); |
---|
| 63 | |
---|
| 64 | // Use callback instead |
---|
| 65 | if (os = ed.getParam("save_onsavecallback")) { |
---|
| 66 | if (ed.execCallback('save_onsavecallback', ed)) { |
---|
| 67 | ed.startContent = tinymce.trim(ed.getContent({format : 'raw'})); |
---|
| 68 | ed.nodeChanged(); |
---|
| 69 | } |
---|
| 70 | |
---|
| 71 | return; |
---|
| 72 | } |
---|
| 73 | |
---|
| 74 | ed.isNotDirty = true; |
---|
| 75 | |
---|
| 76 | if (formObj.onsubmit == null || formObj.onsubmit() != false) |
---|
| 77 | formObj.submit(); |
---|
| 78 | |
---|
| 79 | ed.nodeChanged(); |
---|
| 80 | } else |
---|
| 81 | ed.windowManager.alert("Error: No form element found."); |
---|
| 82 | |
---|
| 83 | return true; |
---|
| 84 | }, |
---|
| 85 | |
---|
| 86 | _cancel : function() { |
---|
| 87 | var ed = this.editor, os, h = tinymce.trim(ed.startContent); |
---|
| 88 | |
---|
| 89 | // Use callback instead |
---|
| 90 | if (os = ed.getParam("save_oncancelcallback")) { |
---|
| 91 | ed.execCallback('save_oncancelcallback', ed); |
---|
| 92 | return; |
---|
| 93 | } |
---|
| 94 | |
---|
| 95 | ed.setContent(h); |
---|
| 96 | ed.undoManager.clear(); |
---|
| 97 | ed.nodeChanged(); |
---|
| 98 | } |
---|
| 99 | }); |
---|
| 100 | |
---|
| 101 | // Register plugin |
---|
| 102 | tinymce.PluginManager.add('save', tinymce.plugins.Save); |
---|
| 103 | })(); |
---|