/static/scripts/tiny_mce/plugins/save/editor_plugin_src.js

http://n23.googlecode.com/ · JavaScript · 100 lines · 63 code · 24 blank · 13 comment · 12 complexity · ba6b75fada8cc916a4879da70741e744 MD5 · raw file

  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. (function() {
  8. tinymce.create('tinymce.plugins.Save', {
  9. init : function(ed, url) {
  10. var t = this;
  11. t.editor = ed;
  12. // Register commands
  13. ed.addCommand('mceSave', t._save, t);
  14. ed.addCommand('mceCancel', t._cancel, t);
  15. // Register buttons
  16. ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'});
  17. ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'});
  18. ed.onNodeChange.add(t._nodeChange, t);
  19. ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave');
  20. },
  21. getInfo : function() {
  22. return {
  23. longname : 'Save',
  24. author : 'Moxiecode Systems AB',
  25. authorurl : 'http://tinymce.moxiecode.com',
  26. infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',
  27. version : tinymce.majorVersion + "." + tinymce.minorVersion
  28. };
  29. },
  30. // Private methods
  31. _nodeChange : function(ed, cm, n) {
  32. var ed = this.editor;
  33. if (ed.getParam('save_enablewhendirty')) {
  34. cm.setDisabled('save', !ed.isDirty());
  35. cm.setDisabled('cancel', !ed.isDirty());
  36. }
  37. },
  38. // Private methods
  39. _save : function() {
  40. var ed = this.editor, formObj, os, i, elementId;
  41. formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form');
  42. if (ed.getParam("save_enablewhendirty") && !ed.isDirty())
  43. return true;
  44. tinyMCE.triggerSave();
  45. // Use callback instead
  46. if (os = ed.getParam("save_onsavecallback")) {
  47. if (ed.execCallback('save_onsavecallback', ed)) {
  48. ed.startContent = tinymce.trim(ed.getContent({format : 'raw'}));
  49. ed.nodeChanged();
  50. }
  51. return;
  52. }
  53. if (formObj) {
  54. ed.isNotDirty = true;
  55. if (formObj.onsubmit == null || formObj.onsubmit() != false)
  56. formObj.submit();
  57. ed.nodeChanged();
  58. } else
  59. ed.windowManager.alert("Error: No form element found.");
  60. return true;
  61. },
  62. _cancel : function() {
  63. var ed = this.editor, os, h = tinymce.trim(ed.startContent);
  64. // Use callback instead
  65. if (os = ed.getParam("save_oncancelcallback")) {
  66. ed.execCallback('save_oncancelcallback', ed);
  67. return;
  68. }
  69. ed.setContent(h);
  70. ed.undoManager.clear();
  71. ed.nodeChanged();
  72. }
  73. });
  74. // Register plugin
  75. tinymce.PluginManager.add('save', tinymce.plugins.Save);
  76. })();