friendica/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js

1 line
6.0 KiB
JavaScript
Raw Normal View History

2013-02-05 02:16:13 +01:00
(function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(ed,url){var t=this,dialect=ed.getParam("bbcode_dialect","dfrn").toLowerCase();ed.onBeforeSetContent.add(function(ed,o){o.content=t["_"+dialect+"_bbcode2html"](o.content)});ed.onPostProcess.add(function(ed,o){if(o.set)o.content=t["_"+dialect+"_bbcode2html"](o.content);if(o.get)o.content=t["_"+dialect+"_html2bbcode"](o.content)})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_dfrn_html2bbcode:function(s){s=tinymce.trim(s);function rep(re,str){s=s.replace(re,str)}function get(re){return s.match(re)}function _h2b_cb(match){var f,g,tof=[],tor=[];var find_spanc=/<span [^>]*class *= *[\"'](?:[^\"']* )*oembed(?: [^\"']*)*[\"'][^>]*>(.*?(?:<span[^>]*>(.*?)<\/span *>)*.*?)<\/span *>/gi;while(f=find_spanc.exec(match)){var find_a=/<a([^>]* rel=[\"']oembed[\"'][^>]*)>.*?<\/a *>/gi;if(g=find_a.exec(f[1])){var find_href=/href=[\"']([^\"']*)[\"']/gi;var m2=find_href.exec(g[1]);if(m2[1]){tof.push(f[0]);tor.push("[EMBED]"+m2[1]+"[/EMBED]")}}}for(var i=0;i<tof.length;i++)match=match.replace(tof[i],tor[i]);return match}if(s.indexOf('class="oembed')>=0){s=_h2b_cb(s)}var codes=get(/<code>(.*?)<\/code>/gi);rep(/<code>(.*?)<\/code>/gi,"[$!$!CODEBLOCK!$!$]");rep(/<a class=\"bookmark\" href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[bookmark=$1]$2[/bookmark]");rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");rep(/<span style=\"color:(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");rep(/<font>(.*?)<\/font>/gi,"$1");rep(/<img[^>]*?width=\"([^>]*?)\"[^>]*?height=\"([^>]*?)\"[^>]*?src=\"([^>]*?)\"[^>]*?\/>/gi,"[img=$1x$2]$3[/img]");rep(/<img[^>]*?height=\"([^>]*?)\"[^>]*?width=\"([^>]*?)\"[^>]*?src=\"([^>]*?)\"[^>]*?\/>/gi,"[img=$2x$1]$3[/img]");rep(/<img[^>]*?src=\"([^>]*?)\"[^>]*?height=\"([^>]*?)\"[^>]*?width=\"([^>]*?)\"[^>]*?\/>/gi,"[img=$3x$2]$1[/img]");rep(/<img[^>]*?src=\"([^>]*?)\"[^>]*?width=\"([^>]*?)\"[^>]*?height=\"([^>]*?)\"[^>]*?\/>/gi,"[img=$2x$3]$1[/img]");rep(/<img[^>]*?src=\"([^>]*?)\"[^>]*?\/>/gi,"[img]$1[/img]");rep(/<ul class=\"listbullet\" style=\"list-style-type\: circle\;\">(.*?)<\/ul>/gi,"[list]$1[/list]");rep(/<ul class=\"listnone\" style=\"list-style-type\: none\;\">(.*?)<\/ul>/gi,"[list=]$1[/list]");rep(/<ul class=\"listdecimal\" style=\"list-style-type\: decimal\;\">(.*?)<\/ul>/gi,"[list=1]$1[/list]");rep(/<ul class=\"listlowerroman\" style=\"list-style-type\: lower-roman\;\">(.*?)<\/ul>/gi,"[list=i]$1[/list]");rep(/<ul class=\"listupperroman\" style=\"list-style-type\: upper-roman\;\">(.*?)<\/ul>/gi,"[list=I]$1[/list]");rep(/<ul class=\"listloweralpha\" style=\"list-style-type\: lower-alpha\;\">(.*?)<\/ul>/gi,"[list=a]$1[/list]");rep(/<ul class=\"listupperalpha\" style=\"list-style-type\: upper-alpha\;\">(.*?)<\/ul>/gi,"[list=A]$1[/list]");rep(/<li>(.*?)<\/li>/gi,"[li]$1[/li]");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(/<hr \/>/gi,"[hr]");rep(/<br (.*?)\/>/gi,"\n");rep(/<br\/>/gi,"\n");rep(/<br>/gi,"\n");rep(/<p>/gi,"");rep(/<\/p>/gi,"\n");rep(/&nbsp;|\u00a0/gi," ");rep(/&quot;/gi,'"');rep(/&lt;/gi,"<");rep(/&gt;/gi,">");rep(/&amp;/gi,"&");rep(/<div>/gi,"");rep(/<\/div>/gi,"");if(codes!=null){for(var i=0;i<codes.length;i++){codes[i]=codes[i].replace("<code>","");codes[i]=codes[i].replace("</code>","");rep(/\[\$!\$!CODEBLOCK!\$!\$\]/i,"[code]"+codes[i]+"[/code]")}}return s},_dfrn_bbcode2html:function(s){s=tinymce.trim(s);function rep(re,str){s=s.replace(re,str)}function get(re){return s.match(re)}var codes=get(/\[code\](.*?)\[\/code\]/gi);rep(/\[code\](.*?)\[\/code\]/gi,"[$!$!CODEBLOCK!$!$]");rep(/\n/gi,"<br />");r