includes/clientside/tinymce/plugins/bbcode/editor_plugin_src.js
changeset 1 fe660c52c48f
child 335 67bd3121a12e
equal deleted inserted replaced
0:902822492a68 1:fe660c52c48f
       
     1 var TinyMCE_BBCodePlugin = {
       
     2 	getInfo : function() {
       
     3 		return {
       
     4 			longname : 'BBCode Plugin',
       
     5 			author : 'Moxiecode Systems AB',
       
     6 			authorurl : 'http://tinymce.moxiecode.com',
       
     7 			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',
       
     8 			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
       
     9 		};
       
    10 	},
       
    11 
       
    12 	cleanup : function(type, content) {
       
    13 		var dialect = tinyMCE.getParam('bbcode_dialect', 'punbb').toLowerCase();
       
    14 
       
    15 		switch (type) {
       
    16 			case "insert_to_editor":
       
    17 				content = this['_' + dialect + '_bbcode2html'](content);
       
    18 				break;
       
    19 
       
    20 			case "get_from_editor":
       
    21 				content = this['_' + dialect + '_html2bbcode'](content);
       
    22 				break;
       
    23 		}
       
    24 
       
    25 		return content;
       
    26 	},
       
    27 
       
    28 	// Private methods
       
    29 
       
    30 	// HTML -> BBCode in PunBB dialect
       
    31 	_punbb_html2bbcode : function(s) {
       
    32 		s = tinyMCE.trim(s);
       
    33 
       
    34 		function rep(re, str) {
       
    35 			s = s.replace(re, str);
       
    36 		};
       
    37 
       
    38 		// example: <strong> to [b]
       
    39 		rep(/<a href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url]$1[/url]");
       
    40 		rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
       
    41 		rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
       
    42 		rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
       
    43 		rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
       
    44 		rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");
       
    45 		rep(/<font>(.*?)<\/font>/gi,"$1");
       
    46 		rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");
       
    47 		rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");
       
    48 		rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");
       
    49 		rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");
       
    50 		rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");
       
    51 		rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");
       
    52 		rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");
       
    53 		rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");
       
    54 		rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");
       
    55 		rep(/<\/(strong|b)>/gi,"[/b]");
       
    56 		rep(/<(strong|b)>/gi,"[b]");
       
    57 		rep(/<\/(em|i)>/gi,"[/i]");
       
    58 		rep(/<(em|i)>/gi,"[i]");
       
    59 		rep(/<\/u>/gi,"[/u]");
       
    60 		rep(/<u>/gi,"[u]");
       
    61 		rep(/<br \/>/gi,"\n");
       
    62 		rep(/<br\/>/gi,"\n");
       
    63 		rep(/<br>/gi,"\n");
       
    64 		rep(/<p>/gi,"");
       
    65 		rep(/<\/p>/gi,"\n");
       
    66 		rep(/&nbsp;/gi," ");
       
    67 		rep(/&quot;/gi,"\"");
       
    68 		rep(/&lt;/gi,"<");
       
    69 		rep(/&gt;/gi,">");
       
    70 		rep(/&amp;/gi,"&");
       
    71 		rep(/&undefined;/gi,"'"); // quickfix
       
    72 
       
    73 		return s; 
       
    74 	},
       
    75 
       
    76 	// BBCode -> HTML from PunBB dialect
       
    77 	_punbb_bbcode2html : function(s) {
       
    78 		s = tinyMCE.trim(s);
       
    79 
       
    80 		function rep(re, str) {
       
    81 			s = s.replace(re, str);
       
    82 		};
       
    83 
       
    84 		// example: [b] to <strong>
       
    85 		rep(/\n/gi,"<br />");
       
    86 		rep(/\[b\]/gi,"<strong>");
       
    87 		rep(/\[\/b\]/gi,"</strong>");
       
    88 		rep(/\[i\]/gi,"<em>");
       
    89 		rep(/\[\/i\]/gi,"</em>");
       
    90 		rep(/\[u\]/gi,"<u>");
       
    91 		rep(/\[\/u\]/gi,"</u>");
       
    92 		rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
       
    93 		rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
       
    94 		rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");
       
    95 		rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span>&nbsp;");
       
    96 		rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span>&nbsp;");
       
    97 
       
    98 		return s; 
       
    99 	}
       
   100 };
       
   101 
       
   102 tinyMCE.addPlugin("bbcode", TinyMCE_BBCodePlugin);