In HTML2BBCode: fetch the URL of [EMBED] using JavaScript instead of an ajax-call to a php-script. Once there actually is embedded Code in the HTML, this function is called after every single keypress. Not only is making an ajax-call every keypress bandith intensive - it also made typing hard / slow. Making a lot of JavaScript-RegExp-Computation every keypress isn't exactly great either, but still performs better.
This commit is contained in:
parent
43430ef561
commit
7868e3897b
|
@ -44,61 +44,79 @@
|
||||||
_dfrn_html2bbcode : function(s) {
|
_dfrn_html2bbcode : function(s) {
|
||||||
s = tinymce.trim(s);
|
s = tinymce.trim(s);
|
||||||
|
|
||||||
function rep(re, str) {
|
function rep(re, str) {
|
||||||
|
|
||||||
//modify code to keep stuff intact within [code][/code] blocks
|
//modify code to keep stuff intact within [code][/code] blocks
|
||||||
//Waitman Gobble NO WARRANTY
|
//Waitman Gobble NO WARRANTY
|
||||||
|
|
||||||
|
|
||||||
var o = new Array();
|
var o = new Array();
|
||||||
var x = s.split("[code]");
|
var x = s.split("[code]");
|
||||||
var i = 0;
|
var i = 0;
|
||||||
|
|
||||||
var si = "";
|
var si = "";
|
||||||
si = x.shift();
|
si = x.shift();
|
||||||
si = si.replace(re,str);
|
si = si.replace(re,str);
|
||||||
o.push(si);
|
o.push(si);
|
||||||
|
|
||||||
for (i = 0; i < x.length; i++) {
|
for (i = 0; i < x.length; i++) {
|
||||||
var no = new Array();
|
var no = new Array();
|
||||||
var j = x.shift();
|
var j = x.shift();
|
||||||
var g = j.split("[/code]");
|
var g = j.split("[/code]");
|
||||||
no.push(g.shift());
|
no.push(g.shift());
|
||||||
si = g.shift();
|
si = g.shift();
|
||||||
si = si.replace(re,str);
|
si = si.replace(re,str);
|
||||||
no.push(si);
|
no.push(si);
|
||||||
o.push(no.join("[/code]"));
|
o.push(no.join("[/code]"));
|
||||||
}
|
}
|
||||||
|
|
||||||
s = o.join("[code]");
|
s = o.join("[code]");
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* oembed */
|
/* oembed */
|
||||||
function _h2b_cb(match) {
|
function _h2b_cb(match) {
|
||||||
function s_h2b(data) {
|
/*
|
||||||
match = data;
|
function s_h2b(data) {
|
||||||
|
match = data;
|
||||||
}
|
}
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type:"POST",
|
type:"POST",
|
||||||
url: 'oembed/h2b',
|
url: 'oembed/h2b',
|
||||||
data: {text: match},
|
data: {text: match},
|
||||||
async: false,
|
async: false,
|
||||||
success: s_h2b,
|
success: s_h2b,
|
||||||
dataType: 'html'
|
dataType: 'html'
|
||||||
});
|
});
|
||||||
return match;
|
*/
|
||||||
}
|
|
||||||
|
var f, g, tof = [], tor = [];
|
||||||
|
var find_spanc = /<span [^>]*class *= *[\"'](?:[^\"']* )*oembed(?: [^\"']*)*[\"'][^>]*>(.*?(?:<span[^>]*>(.*?)<\/span *>)*.*?)<\/span *>/ig;
|
||||||
|
while (f = find_spanc.exec(match)) {
|
||||||
|
var find_a = /<a([^>]* rel=[\"']oembed[\"'][^>]*)>.*?<\/a *>/ig;
|
||||||
|
if (g = find_a.exec(f[1])) {
|
||||||
|
var find_href = /href=[\"']([^\"']*)[\"']/ig;
|
||||||
|
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){
|
if (s.indexOf('class="oembed')>=0){
|
||||||
//alert("request oembed html2bbcode");
|
//alert("request oembed html2bbcode");
|
||||||
s = _h2b_cb(s);
|
s = _h2b_cb(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* /oembed */
|
/* /oembed */
|
||||||
|
|
||||||
|
|
||||||
// example: <strong> to [b]
|
// example: <strong> to [b]
|
||||||
rep(/<a class=\"bookmark\" href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[bookmark=$1]$2[/bookmark]");
|
rep(/<a class=\"bookmark\" href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[bookmark=$1]$2[/bookmark]");
|
||||||
|
@ -111,16 +129,16 @@
|
||||||
rep(/<img.*?src=\"(.*?)\".*?height=\"(.*?)\".*?width=\"(.*?)\".*?\/>/gi,"[img=$3x$2]$1[/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=\"(.*?)\".*?width=\"(.*?)\".*?height=\"(.*?)\".*?\/>/gi,"[img=$2x$3]$1[/img]");
|
||||||
rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$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=\"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=\"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=\"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=\"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=\"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=\"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(/<ul class=\"listupperalpha\" style=\"list-style-type\: upper-alpha\;\">(.*?)<\/ul>/gi,"[list=A]$1[/list]");
|
||||||
rep(/<li>(.*?)<\/li>/gi,'[li]$1[/li]');
|
rep(/<li>(.*?)<\/li>/gi,'[li]$1[/li]');
|
||||||
|
|
||||||
rep(/<code>(.*?)<\/code>/gi,"[code]$1[/code]");
|
rep(/<code>(.*?)<\/code>/gi,"[code]$1[/code]");
|
||||||
rep(/<\/(strong|b)>/gi,"[/b]");
|
rep(/<\/(strong|b)>/gi,"[/b]");
|
||||||
rep(/<(strong|b)>/gi,"[b]");
|
rep(/<(strong|b)>/gi,"[b]");
|
||||||
|
@ -149,42 +167,42 @@
|
||||||
// BBCode -> HTML from DFRN dialect
|
// BBCode -> HTML from DFRN dialect
|
||||||
_dfrn_bbcode2html : function(s) {
|
_dfrn_bbcode2html : function(s) {
|
||||||
s = tinymce.trim(s);
|
s = tinymce.trim(s);
|
||||||
|
|
||||||
|
|
||||||
function rep(re, str) {
|
function rep(re, str) {
|
||||||
|
|
||||||
//modify code to keep stuff intact within [code][/code] blocks
|
//modify code to keep stuff intact within [code][/code] blocks
|
||||||
//Waitman Gobble NO WARRANTY
|
//Waitman Gobble NO WARRANTY
|
||||||
|
|
||||||
|
|
||||||
var o = new Array();
|
var o = new Array();
|
||||||
var x = s.split("[code]");
|
var x = s.split("[code]");
|
||||||
var i = 0;
|
var i = 0;
|
||||||
|
|
||||||
var si = "";
|
var si = "";
|
||||||
si = x.shift();
|
si = x.shift();
|
||||||
si = si.replace(re,str);
|
si = si.replace(re,str);
|
||||||
o.push(si);
|
o.push(si);
|
||||||
|
|
||||||
for (i = 0; i < x.length; i++) {
|
for (i = 0; i < x.length; i++) {
|
||||||
var no = new Array();
|
var no = new Array();
|
||||||
var j = x.shift();
|
var j = x.shift();
|
||||||
var g = j.split("[/code]");
|
var g = j.split("[/code]");
|
||||||
no.push(g.shift());
|
no.push(g.shift());
|
||||||
si = g.shift();
|
si = g.shift();
|
||||||
si = si.replace(re,str);
|
si = si.replace(re,str);
|
||||||
no.push(si);
|
no.push(si);
|
||||||
o.push(no.join("[/code]"));
|
o.push(no.join("[/code]"));
|
||||||
}
|
}
|
||||||
|
|
||||||
s = o.join("[code]");
|
s = o.join("[code]");
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// example: [b] to <strong>
|
// example: [b] to <strong>
|
||||||
rep(/\n/gi,"<br />");
|
rep(/\n/gi,"<br />");
|
||||||
rep(/\[b\]/gi,"<strong>");
|
rep(/\[b\]/gi,"<strong>");
|
||||||
|
@ -193,43 +211,43 @@
|
||||||
rep(/\[\/i\]/gi,"</em>");
|
rep(/\[\/i\]/gi,"</em>");
|
||||||
rep(/\[u\]/gi,"<u>");
|
rep(/\[u\]/gi,"<u>");
|
||||||
rep(/\[\/u\]/gi,"</u>");
|
rep(/\[\/u\]/gi,"</u>");
|
||||||
rep(/\[hr\]/gi,"<hr />");
|
rep(/\[hr\]/gi,"<hr />");
|
||||||
rep(/\[bookmark=([^\]]+)\](.*?)\[\/bookmark\]/gi,"<a class=\"bookmark\" href=\"$1\">$2</a>");
|
rep(/\[bookmark=([^\]]+)\](.*?)\[\/bookmark\]/gi,"<a class=\"bookmark\" href=\"$1\">$2</a>");
|
||||||
rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");
|
rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");
|
||||||
rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
|
rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
|
||||||
rep(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,"<img width=\"$1\" height=\"$2\" src=\"$3\" />");
|
rep(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,"<img width=\"$1\" height=\"$2\" src=\"$3\" />");
|
||||||
rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
|
rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
|
||||||
|
|
||||||
rep(/\[list\](.*?)\[\/list\]/gi, '<ul class="listbullet" style="list-style-type: circle;">$1</ul>');
|
rep(/\[list\](.*?)\[\/list\]/gi, '<ul class="listbullet" style="list-style-type: circle;">$1</ul>');
|
||||||
rep(/\[list=\](.*?)\[\/list\]/gi, '<ul class="listnone" style="list-style-type: none;">$1</ul>');
|
rep(/\[list=\](.*?)\[\/list\]/gi, '<ul class="listnone" style="list-style-type: none;">$1</ul>');
|
||||||
rep(/\[list=1\](.*?)\[\/list\]/gi, '<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>');
|
rep(/\[list=1\](.*?)\[\/list\]/gi, '<ul class="listdecimal" style="list-style-type: decimal;">$1</ul>');
|
||||||
rep(/\[list=i\](.*?)\[\/list\]/gi,'<ul class="listlowerroman" style="list-style-type: lower-roman;">$1</ul>');
|
rep(/\[list=i\](.*?)\[\/list\]/gi,'<ul class="listlowerroman" style="list-style-type: lower-roman;">$1</ul>');
|
||||||
rep(/\[list=I\](.*?)\[\/list\]/gi, '<ul class="listupperroman" style="list-style-type: upper-roman;">$1</ul>');
|
rep(/\[list=I\](.*?)\[\/list\]/gi, '<ul class="listupperroman" style="list-style-type: upper-roman;">$1</ul>');
|
||||||
rep(/\[list=a\](.*?)\[\/list\]/gi, '<ul class="listloweralpha" style="list-style-type: lower-alpha;">$1</ul>');
|
rep(/\[list=a\](.*?)\[\/list\]/gi, '<ul class="listloweralpha" style="list-style-type: lower-alpha;">$1</ul>');
|
||||||
rep(/\[list=A\](.*?)\[\/list\]/gi, '<ul class="listupperalpha" style="list-style-type: upper-alpha;">$1</ul>');
|
rep(/\[list=A\](.*?)\[\/list\]/gi, '<ul class="listupperalpha" style="list-style-type: upper-alpha;">$1</ul>');
|
||||||
rep(/\[li\](.*?)\[\/li\]/gi, '<li>$1</li>');
|
rep(/\[li\](.*?)\[\/li\]/gi, '<li>$1</li>');
|
||||||
rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<span style=\"color: $1;\">$2</span>");
|
rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<span style=\"color: $1;\">$2</span>");
|
||||||
rep(/\[size=(.*?)\](.*?)\[\/size\]/gi,"<span style=\"font-size: $1;\">$2</span>");
|
rep(/\[size=(.*?)\](.*?)\[\/size\]/gi,"<span style=\"font-size: $1;\">$2</span>");
|
||||||
rep(/\[code\](.*?)\[\/code\]/gi,"<code>$1</code>");
|
rep(/\[code\](.*?)\[\/code\]/gi,"<code>$1</code>");
|
||||||
rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<blockquote>$1</blockquote>");
|
rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<blockquote>$1</blockquote>");
|
||||||
|
|
||||||
/* oembed */
|
/* oembed */
|
||||||
function _b2h_cb(match, url) {
|
function _b2h_cb(match, url) {
|
||||||
url = bin2hex(url);
|
url = bin2hex(url);
|
||||||
function s_b2h(data) {
|
function s_b2h(data) {
|
||||||
match = data;
|
match = data;
|
||||||
}
|
}
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'oembed/b2h?url=' + url,
|
url: 'oembed/b2h?url=' + url,
|
||||||
async: false,
|
async: false,
|
||||||
success: s_b2h,
|
success: s_b2h,
|
||||||
dataType: 'html'
|
dataType: 'html'
|
||||||
});
|
});
|
||||||
return match;
|
return match;
|
||||||
}
|
}
|
||||||
s = s.replace(/\[embed\](.*?)\[\/embed\]/gi, _b2h_cb);
|
s = s.replace(/\[embed\](.*?)\[\/embed\]/gi, _b2h_cb);
|
||||||
|
|
||||||
/* /oembed */
|
/* /oembed */
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue