plugin.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. (function () {
  2. var code = (function () {
  3. 'use strict';
  4. var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
  5. var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
  6. var getMinWidth = function (editor) {
  7. return editor.getParam('code_dialog_width', 600);
  8. };
  9. var getMinHeight = function (editor) {
  10. return editor.getParam('code_dialog_height', Math.min(global$1.DOM.getViewPort().h - 200, 500));
  11. };
  12. var Settings = {
  13. getMinWidth: getMinWidth,
  14. getMinHeight: getMinHeight
  15. };
  16. var setContent = function (editor, html) {
  17. editor.focus();
  18. editor.undoManager.transact(function () {
  19. editor.setContent(html);
  20. });
  21. editor.selection.setCursorLocation();
  22. editor.nodeChanged();
  23. };
  24. var getContent = function (editor) {
  25. return editor.getContent({ source_view: true });
  26. };
  27. var Content = {
  28. setContent: setContent,
  29. getContent: getContent
  30. };
  31. var open = function (editor) {
  32. var minWidth = Settings.getMinWidth(editor);
  33. var minHeight = Settings.getMinHeight(editor);
  34. var win = editor.windowManager.open({
  35. title: 'Source code',
  36. body: {
  37. type: 'textbox',
  38. name: 'code',
  39. multiline: true,
  40. minWidth: minWidth,
  41. minHeight: minHeight,
  42. spellcheck: false,
  43. style: 'direction: ltr; text-align: left'
  44. },
  45. onSubmit: function (e) {
  46. Content.setContent(editor, e.data.code);
  47. }
  48. });
  49. win.find('#code').value(Content.getContent(editor));
  50. };
  51. var Dialog = { open: open };
  52. var register = function (editor) {
  53. editor.addCommand('mceCodeEditor', function () {
  54. Dialog.open(editor);
  55. });
  56. };
  57. var Commands = { register: register };
  58. var register$1 = function (editor) {
  59. editor.addButton('code', {
  60. icon: 'code',
  61. tooltip: 'Source code',
  62. onclick: function () {
  63. Dialog.open(editor);
  64. }
  65. });
  66. editor.addMenuItem('code', {
  67. icon: 'code',
  68. text: 'Source code',
  69. onclick: function () {
  70. Dialog.open(editor);
  71. }
  72. });
  73. };
  74. var Buttons = { register: register$1 };
  75. global.add('code', function (editor) {
  76. Commands.register(editor);
  77. Buttons.register(editor);
  78. return {};
  79. });
  80. function Plugin () {
  81. }
  82. return Plugin;
  83. }());
  84. })();