All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.resources.scripts.tiny_mce.plugins.bbcode.editor_plugin_src.js Maven / Gradle / Ivy

The newest version!
/**
 * editor_plugin_src.js
 *
 * Copyright 2009, Moxiecode Systems AB
 * Released under LGPL License.
 *
 * License: http://tinymce.moxiecode.com/license
 * Contributing: http://tinymce.moxiecode.com/contributing
 */

(function() {
	tinymce.create('tinymce.plugins.BBCodePlugin', {
		init : function(ed, url) {
			var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').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
			};
		},

		// Private methods

		// HTML -> BBCode in PunBB dialect
		_punbb_html2bbcode : function(s) {
			s = tinymce.trim(s);

			function rep(re, str) {
				s = s.replace(re, str);
			};

			// example:  to [b]
			rep(/(.*?)<\/a>/gi,"[url=$1]$2[/url]");
			rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
			rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
			rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
			rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
			rep(/(.*?)<\/span>/gi,"[color=$1]$2[/color]");
			rep(/(.*?)<\/font>/gi,"[color=$1]$2[/color]");
			rep(/(.*?)<\/span>/gi,"[size=$1]$2[/size]");
			rep(/(.*?)<\/font>/gi,"$1");
			rep(//gi,"[img]$1[/img]");
			rep(/(.*?)<\/span>/gi,"[code]$1[/code]");
			rep(/(.*?)<\/span>/gi,"[quote]$1[/quote]");
			rep(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");
			rep(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");
			rep(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");
			rep(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");
			rep(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");
			rep(/(.*?)<\/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>/gi,"[u]$1[/u]");
			rep(//gi,"[u]");
			rep(/]*>/gi,"[quote]");
			rep(/<\/blockquote>/gi,"[/quote]");
			rep(/
/gi,"\n"); rep(//gi,"\n"); rep(/
/gi,"\n"); rep(/

/gi,""); rep(/<\/p>/gi,"\n"); rep(/ |\u00a0/gi," "); rep(/"/gi,"\""); rep(/</gi,"<"); rep(/>/gi,">"); rep(/&/gi,"&"); return s; }, // BBCode -> HTML from PunBB dialect _punbb_bbcode2html : function(s) { s = tinymce.trim(s); function rep(re, str) { s = s.replace(re, str); }; // example: [b] to rep(/\n/gi,"
"); rep(/\[b\]/gi,""); rep(/\[\/b\]/gi,""); rep(/\[i\]/gi,""); rep(/\[\/i\]/gi,""); rep(/\[u\]/gi,""); rep(/\[\/u\]/gi,""); rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$2"); rep(/\[url\](.*?)\[\/url\]/gi,"$1"); rep(/\[img\](.*?)\[\/img\]/gi,""); rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2"); rep(/\[code\](.*?)\[\/code\]/gi,"$1 "); rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"$1 "); return s; } }); // Register plugin tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin); })();