plugin.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. (function () {
  2. var bbcode = (function () {
  3. 'use strict';
  4. var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
  5. var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');
  6. var html2bbcode = function (s) {
  7. s = global$1.trim(s);
  8. var rep = function (re, str) {
  9. s = s.replace(re, str);
  10. };
  11. rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi, '[url=$1]$2[/url]');
  12. rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi, '[code][color=$1]$2[/color][/code]');
  13. rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi, '[quote][color=$1]$2[/color][/quote]');
  14. rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi, '[code][color=$1]$2[/color][/code]');
  15. rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi, '[quote][color=$1]$2[/color][/quote]');
  16. rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi, '[color=$1]$2[/color]');
  17. rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi, '[color=$1]$2[/color]');
  18. rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi, '[size=$1]$2[/size]');
  19. rep(/<font>(.*?)<\/font>/gi, '$1');
  20. rep(/<img.*?src=\"(.*?)\".*?\/>/gi, '[img]$1[/img]');
  21. rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi, '[code]$1[/code]');
  22. rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi, '[quote]$1[/quote]');
  23. rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi, '[code][b]$1[/b][/code]');
  24. rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi, '[quote][b]$1[/b][/quote]');
  25. rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi, '[code][i]$1[/i][/code]');
  26. rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi, '[quote][i]$1[/i][/quote]');
  27. rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi, '[code][u]$1[/u][/code]');
  28. rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi, '[quote][u]$1[/u][/quote]');
  29. rep(/<\/(strong|b)>/gi, '[/b]');
  30. rep(/<(strong|b)>/gi, '[b]');
  31. rep(/<\/(em|i)>/gi, '[/i]');
  32. rep(/<(em|i)>/gi, '[i]');
  33. rep(/<\/u>/gi, '[/u]');
  34. rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi, '[u]$1[/u]');
  35. rep(/<u>/gi, '[u]');
  36. rep(/<blockquote[^>]*>/gi, '[quote]');
  37. rep(/<\/blockquote>/gi, '[/quote]');
  38. rep(/<br \/>/gi, '\n');
  39. rep(/<br\/>/gi, '\n');
  40. rep(/<br>/gi, '\n');
  41. rep(/<p>/gi, '');
  42. rep(/<\/p>/gi, '\n');
  43. rep(/&nbsp;|\u00a0/gi, ' ');
  44. rep(/&quot;/gi, '"');
  45. rep(/&lt;/gi, '<');
  46. rep(/&gt;/gi, '>');
  47. rep(/&amp;/gi, '&');
  48. return s;
  49. };
  50. var bbcode2html = function (s) {
  51. s = global$1.trim(s);
  52. var rep = function (re, str) {
  53. s = s.replace(re, str);
  54. };
  55. rep(/\n/gi, '<br />');
  56. rep(/\[b\]/gi, '<strong>');
  57. rep(/\[\/b\]/gi, '</strong>');
  58. rep(/\[i\]/gi, '<em>');
  59. rep(/\[\/i\]/gi, '</em>');
  60. rep(/\[u\]/gi, '<u>');
  61. rep(/\[\/u\]/gi, '</u>');
  62. rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi, '<a href="$1">$2</a>');
  63. rep(/\[url\](.*?)\[\/url\]/gi, '<a href="$1">$1</a>');
  64. rep(/\[img\](.*?)\[\/img\]/gi, '<img src="$1" />');
  65. rep(/\[color=(.*?)\](.*?)\[\/color\]/gi, '<font color="$1">$2</font>');
  66. rep(/\[code\](.*?)\[\/code\]/gi, '<span class="codeStyle">$1</span>&nbsp;');
  67. rep(/\[quote.*?\](.*?)\[\/quote\]/gi, '<span class="quoteStyle">$1</span>&nbsp;');
  68. return s;
  69. };
  70. var $_5v5ntp9kjkmcwo6u = {
  71. html2bbcode: html2bbcode,
  72. bbcode2html: bbcode2html
  73. };
  74. global.add('bbcode', function () {
  75. return {
  76. init: function (editor) {
  77. editor.on('beforeSetContent', function (e) {
  78. e.content = $_5v5ntp9kjkmcwo6u.bbcode2html(e.content);
  79. });
  80. editor.on('postProcess', function (e) {
  81. if (e.set) {
  82. e.content = $_5v5ntp9kjkmcwo6u.bbcode2html(e.content);
  83. }
  84. if (e.get) {
  85. e.content = $_5v5ntp9kjkmcwo6u.html2bbcode(e.content);
  86. }
  87. });
  88. }
  89. };
  90. });
  91. function Plugin () {
  92. }
  93. return Plugin;
  94. }());
  95. })();