Subversion Repositories Sites.tela-botanica.org

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
420 florian 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);