adding all weblabels from weblabels.fsf.org
[weblabels.fsf.org.git] / www.fsf.org / 20130115 / files / plugins / save / editor_plugin.js
1 /**
2 * $Id: editor_plugin_src.js 609 2008-02-18 16:19:27Z 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', function() {
17 var id = ed.id;
18 if (ed.id == 'mce_fullscreen') {
19 id = ed.settings.fullscreen_editor_id;
20 }
21 tinymce.util.XHR.send({
22 url : ed.settings.document_url + '/tinymce-save',
23 content_type : "application/x-www-form-urlencoded",
24 type : "POST",
25 data : "text=" + encodeURIComponent(ed.getContent()) + "&fieldname=" + id,
26 success : function( data, req, o ) {
27 if (!tinymce.isIE) {
28 tinymce.DOM.addClass(tinymce.DOM.get(ed.id + '_tbl'), 'mceEditorSave');
29 window.setTimeout(function() {
30 tinymce.DOM.removeClass(tinymce.DOM.get(ed.id + '_tbl'), 'mceEditorSave');
31 tinymce.DOM.removeClass(tinymce.DOM.get(ed.id + '_tbl'), 'mceEditorFocus');
32 tinymce.DOM.addClass(tinymce.DOM.get(ed.id + '_tbl'), 'mceEditorFocus');
33 }, 500);
34 }
35 tinymce.DOM.add(document.body, 'div', {id: 'mceSaveMessage', 'class' : 'mceSaveMessage'}, 'Document saved.');
36 window.setTimeout(function () {
37 tinymce.DOM.remove('mceSaveMessage');
38 }, 1000);
39 }
40 });
41 });
42
43 ed.addCommand('mceCancel', t._cancel);
44
45 // Register buttons
46 ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'});
47 ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'});
48
49 ed.onNodeChange.add(t._nodeChange, t);
50 ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave');
51 },
52
53 getInfo : function() {
54 return {
55 longname : 'Save',
56 author : 'Moxiecode Systems AB',
57 authorurl : 'http://tinymce.moxiecode.com',
58 infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',
59 version : tinymce.majorVersion + "." + tinymce.minorVersion
60 };
61 },
62
63 // Private methods
64 _nodeChange : function(ed, cm, n) {
65 var ed = this.editor;
66
67 if (ed.getParam('save_enablewhendirty')) {
68 cm.setDisabled('save', !ed.isDirty());
69 cm.setDisabled('cancel', !ed.isDirty());
70 }
71 },
72
73 // Private methods
74
75 _save : function() {
76 var ed = this.editor, formObj, os, i, elementId;
77
78 formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form');
79
80 if (ed.getParam("save_enablewhendirty") && !ed.isDirty())
81 return;
82
83 tinyMCE.triggerSave();
84
85 // Use callback instead
86 if (os = ed.getParam("save_onsavecallback")) {
87 if (ed.execCallback('save_onsavecallback', ed)) {
88 ed.startContent = tinymce.trim(ed.getContent({format : 'raw'}));
89 ed.nodeChanged();
90 }
91
92 return;
93 }
94
95 if (formObj) {
96 ed.isNotDirty = true;
97
98 if (formObj.onsubmit == null || formObj.onsubmit() != false)
99 formObj.submit();
100
101 ed.nodeChanged();
102 } else
103 ed.windowManager.alert("Error: No form element found.");
104
105 return true;
106 },
107
108 _cancel : function() {
109 var ed = this.editor, os, h = tinymce.trim(ed.startContent);
110
111 // Use callback instead
112 if (os = ed.getParam("save_oncancelcallback")) {
113 ed.execCallback('save_oncancelcallback', ed);
114 return;
115 }
116
117 ed.setContent(h);
118 ed.undoManager.clear();
119 ed.nodeChanged();
120 }
121 });
122
123 // Register plugin
124 tinymce.PluginManager.add('save', tinymce.plugins.Save);
125 })();