Mercurial > public > sg101
comparison static/js/tiny_mce/plugins/bbcode/editor_plugin_src.js @ 312:88b2b9cb8c1f
Fixing #142; cut over to the django.contrib.staticfiles app.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Thu, 27 Jan 2011 02:56:10 +0000 |
parents | |
children | 6c182ceb7147 |
comparison
equal
deleted
inserted
replaced
311:b1c39788e511 | 312:88b2b9cb8c1f |
---|---|
1 /** | |
2 * editor_plugin_src.js | |
3 * | |
4 * Copyright 2009, Moxiecode Systems AB | |
5 * Released under LGPL License. | |
6 * | |
7 * License: http://tinymce.moxiecode.com/license | |
8 * Contributing: http://tinymce.moxiecode.com/contributing | |
9 */ | |
10 | |
11 (function() { | |
12 tinymce.create('tinymce.plugins.BBCodePlugin', { | |
13 init : function(ed, url) { | |
14 var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase(); | |
15 | |
16 ed.onBeforeSetContent.add(function(ed, o) { | |
17 o.content = t['_' + dialect + '_bbcode2html'](o.content); | |
18 }); | |
19 | |
20 ed.onPostProcess.add(function(ed, o) { | |
21 if (o.set) | |
22 o.content = t['_' + dialect + '_bbcode2html'](o.content); | |
23 | |
24 if (o.get) | |
25 o.content = t['_' + dialect + '_html2bbcode'](o.content); | |
26 }); | |
27 }, | |
28 | |
29 getInfo : function() { | |
30 return { | |
31 longname : 'BBCode Plugin', | |
32 author : 'Moxiecode Systems AB', | |
33 authorurl : 'http://tinymce.moxiecode.com', | |
34 infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode', | |
35 version : tinymce.majorVersion + "." + tinymce.minorVersion | |
36 }; | |
37 }, | |
38 | |
39 // Private methods | |
40 | |
41 // HTML -> BBCode in PunBB dialect | |
42 _punbb_html2bbcode : function(s) { | |
43 s = tinymce.trim(s); | |
44 | |
45 function rep(re, str) { | |
46 s = s.replace(re, str); | |
47 }; | |
48 | |
49 // example: <strong> to [b] | |
50 rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"); | |
51 rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); | |
52 rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); | |
53 rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); | |
54 rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); | |
55 rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"); | |
56 rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"); | |
57 rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"); | |
58 rep(/<font>(.*?)<\/font>/gi,"$1"); | |
59 rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"); | |
60 rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"); | |
61 rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"); | |
62 rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"); | |
63 rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"); | |
64 rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"); | |
65 rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"); | |
66 rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"); | |
67 rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"); | |
68 rep(/<\/(strong|b)>/gi,"[/b]"); | |
69 rep(/<(strong|b)>/gi,"[b]"); | |
70 rep(/<\/(em|i)>/gi,"[/i]"); | |
71 rep(/<(em|i)>/gi,"[i]"); | |
72 rep(/<\/u>/gi,"[/u]"); | |
73 rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"); | |
74 rep(/<u>/gi,"[u]"); | |
75 rep(/<blockquote[^>]*>/gi,"[quote]"); | |
76 rep(/<\/blockquote>/gi,"[/quote]"); | |
77 rep(/<br \/>/gi,"\n"); | |
78 rep(/<br\/>/gi,"\n"); | |
79 rep(/<br>/gi,"\n"); | |
80 rep(/<p>/gi,""); | |
81 rep(/<\/p>/gi,"\n"); | |
82 rep(/ /gi," "); | |
83 rep(/"/gi,"\""); | |
84 rep(/</gi,"<"); | |
85 rep(/>/gi,">"); | |
86 rep(/&/gi,"&"); | |
87 | |
88 return s; | |
89 }, | |
90 | |
91 // BBCode -> HTML from PunBB dialect | |
92 _punbb_bbcode2html : function(s) { | |
93 s = tinymce.trim(s); | |
94 | |
95 function rep(re, str) { | |
96 s = s.replace(re, str); | |
97 }; | |
98 | |
99 // example: [b] to <strong> | |
100 rep(/\n/gi,"<br />"); | |
101 rep(/\[b\]/gi,"<strong>"); | |
102 rep(/\[\/b\]/gi,"</strong>"); | |
103 rep(/\[i\]/gi,"<em>"); | |
104 rep(/\[\/i\]/gi,"</em>"); | |
105 rep(/\[u\]/gi,"<u>"); | |
106 rep(/\[\/u\]/gi,"</u>"); | |
107 rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>"); | |
108 rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>"); | |
109 rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />"); | |
110 rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>"); | |
111 rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span> "); | |
112 rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span> "); | |
113 | |
114 return s; | |
115 } | |
116 }); | |
117 | |
118 // Register plugin | |
119 tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin); | |
120 })(); |