plugin.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /**
  2. * plugin.js
  3. *
  4. * Copyright, Moxiecode Systems AB
  5. * Released under LGPL License.
  6. *
  7. * License: http://www.tinymce.com/license
  8. * Contributing: http://www.tinymce.com/contributing
  9. */
  10. /*global tinymce:true */
  11. tinymce.PluginManager.add('save', function(editor) {
  12. function save() {
  13. var formObj;
  14. formObj = tinymce.DOM.getParent(editor.id, 'form');
  15. if (editor.getParam("save_enablewhendirty", true) && !editor.isDirty()) {
  16. return;
  17. }
  18. tinymce.triggerSave();
  19. // Use callback instead
  20. if (editor.getParam("save_onsavecallback")) {
  21. if (editor.execCallback('save_onsavecallback', editor)) {
  22. editor.startContent = tinymce.trim(editor.getContent({format: 'raw'}));
  23. editor.nodeChanged();
  24. }
  25. return;
  26. }
  27. if (formObj) {
  28. editor.isNotDirty = true;
  29. if (!formObj.onsubmit || formObj.onsubmit()) {
  30. if (typeof(formObj.submit) == "function") {
  31. formObj.submit();
  32. } else {
  33. editor.windowManager.alert("Error: Form submit field collision.");
  34. }
  35. }
  36. editor.nodeChanged();
  37. } else {
  38. editor.windowManager.alert("Error: No form element found.");
  39. }
  40. }
  41. function cancel() {
  42. var h = tinymce.trim(editor.startContent);
  43. // Use callback instead
  44. if (editor.getParam("save_oncancelcallback")) {
  45. editor.execCallback('save_oncancelcallback', editor);
  46. return;
  47. }
  48. editor.setContent(h);
  49. editor.undoManager.clear();
  50. editor.nodeChanged();
  51. }
  52. function stateToggle() {
  53. var self = this;
  54. editor.on('nodeChange', function() {
  55. self.disabled(editor.getParam("save_enablewhendirty", true) && !editor.isDirty());
  56. });
  57. }
  58. editor.addCommand('mceSave', save);
  59. editor.addCommand('mceCancel', cancel);
  60. editor.addButton('save', {
  61. icon: 'save',
  62. text: 'Save',
  63. cmd: 'mceSave',
  64. disabled: true,
  65. onPostRender: stateToggle
  66. });
  67. editor.addButton('cancel', {
  68. text: 'Cancel',
  69. icon: false,
  70. cmd: 'mceCancel',
  71. disabled: true,
  72. onPostRender: stateToggle
  73. });
  74. editor.addShortcut('ctrl+s', '', 'mceSave');
  75. });