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 | })(); |
---|