102 lines
3.8 KiB
JavaScript
102 lines
3.8 KiB
JavaScript
|
(function () {
|
||
|
var bbcode = (function () {
|
||
|
'use strict';
|
||
|
|
||
|
var PluginManager = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||
|
|
||
|
var Tools = tinymce.util.Tools.resolve('tinymce.util.Tools');
|
||
|
|
||
|
var html2bbcode = function (s) {
|
||
|
s = Tools.trim(s);
|
||
|
var rep = function (re, str) {
|
||
|
s = s.replace(re, str);
|
||
|
};
|
||
|
rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi, '[url=$1]$2[/url]');
|
||
|
rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi, '[code][color=$1]$2[/color][/code]');
|
||
|
rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi, '[quote][color=$1]$2[/color][/quote]');
|
||
|
rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi, '[code][color=$1]$2[/color][/code]');
|
||
|
rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi, '[quote][color=$1]$2[/color][/quote]');
|
||
|
rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi, '[color=$1]$2[/color]');
|
||
|
rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi, '[color=$1]$2[/color]');
|
||
|
rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi, '[size=$1]$2[/size]');
|
||
|
rep(/<font>(.*?)<\/font>/gi, '$1');
|
||
|
rep(/<img.*?src=\"(.*?)\".*?\/>/gi, '[img]$1[/img]');
|
||
|
rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi, '[code]$1[/code]');
|
||
|
rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi, '[quote]$1[/quote]');
|
||
|
rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi, '[code][b]$1[/b][/code]');
|
||
|
rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi, '[quote][b]$1[/b][/quote]');
|
||
|
rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi, '[code][i]$1[/i][/code]');
|
||
|
rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi, '[quote][i]$1[/i][/quote]');
|
||
|
rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi, '[code][u]$1[/u][/code]');
|
||
|
rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi, '[quote][u]$1[/u][/quote]');
|
||
|
rep(/<\/(strong|b)>/gi, '[/b]');
|
||
|
rep(/<(strong|b)>/gi, '[b]');
|
||
|
rep(/<\/(em|i)>/gi, '[/i]');
|
||
|
rep(/<(em|i)>/gi, '[i]');
|
||
|
rep(/<\/u>/gi, '[/u]');
|
||
|
rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi, '[u]$1[/u]');
|
||
|
rep(/<u>/gi, '[u]');
|
||
|
rep(/<blockquote[^>]*>/gi, '[quote]');
|
||
|
rep(/<\/blockquote>/gi, '[/quote]');
|
||
|
rep(/<br \/>/gi, '\n');
|
||
|
rep(/<br\/>/gi, '\n');
|
||
|
rep(/<br>/gi, '\n');
|
||
|
rep(/<p>/gi, '');
|
||
|
rep(/<\/p>/gi, '\n');
|
||
|
rep(/ |\u00a0/gi, ' ');
|
||
|
rep(/"/gi, '"');
|
||
|
rep(/</gi, '<');
|
||
|
rep(/>/gi, '>');
|
||
|
rep(/&/gi, '&');
|
||
|
return s;
|
||
|
};
|
||
|
var bbcode2html = function (s) {
|
||
|
s = Tools.trim(s);
|
||
|
var rep = function (re, str) {
|
||
|
s = s.replace(re, str);
|
||
|
};
|
||
|
rep(/\n/gi, '<br />');
|
||
|
rep(/\[b\]/gi, '<strong>');
|
||
|
rep(/\[\/b\]/gi, '</strong>');
|
||
|
rep(/\[i\]/gi, '<em>');
|
||
|
rep(/\[\/i\]/gi, '</em>');
|
||
|
rep(/\[u\]/gi, '<u>');
|
||
|
rep(/\[\/u\]/gi, '</u>');
|
||
|
rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi, '<a href="$1">$2</a>');
|
||
|
rep(/\[url\](.*?)\[\/url\]/gi, '<a href="$1">$1</a>');
|
||
|
rep(/\[img\](.*?)\[\/img\]/gi, '<img src="$1" />');
|
||
|
rep(/\[color=(.*?)\](.*?)\[\/color\]/gi, '<font color="$1">$2</font>');
|
||
|
rep(/\[code\](.*?)\[\/code\]/gi, '<span class="codeStyle">$1</span> ');
|
||
|
rep(/\[quote.*?\](.*?)\[\/quote\]/gi, '<span class="quoteStyle">$1</span> ');
|
||
|
return s;
|
||
|
};
|
||
|
var $_ewqgam8sjdud79xv = {
|
||
|
html2bbcode: html2bbcode,
|
||
|
bbcode2html: bbcode2html
|
||
|
};
|
||
|
|
||
|
PluginManager.add('bbcode', function () {
|
||
|
return {
|
||
|
init: function (editor) {
|
||
|
editor.on('beforeSetContent', function (e) {
|
||
|
e.content = $_ewqgam8sjdud79xv.bbcode2html(e.content);
|
||
|
});
|
||
|
editor.on('postProcess', function (e) {
|
||
|
if (e.set) {
|
||
|
e.content = $_ewqgam8sjdud79xv.bbcode2html(e.content);
|
||
|
}
|
||
|
if (e.get) {
|
||
|
e.content = $_ewqgam8sjdud79xv.html2bbcode(e.content);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
});
|
||
|
function Plugin () {
|
||
|
}
|
||
|
|
||
|
return Plugin;
|
||
|
|
||
|
}());
|
||
|
})();
|