Вот html-контент из db
<p>Some p</p>
<p>some p 1</p>
<p><a href="http://www.google.com/">google</a></p>
<p><a href="http://www.yahoo.com/">yahoo</a></p>
<p>{link class="readmore" cat_id="14" content_id="15" slug="Slug 1" content="Content 1"}</p>
<p>{link class="" cat_id="15" content_id="16" slug="Slug 2" content="Content 2"}</p>
<p>Some p 2 </p>
<p>Some p 3</p>
, а затем я использую функцию onBeforeSetContent и конвертирую html для tinymce, например: Нет проблем ...
<p>Some p</p>
<p>some p 1</p>
<p><a href="http://www.google.com/">google</a></p> <p><a href="http://www.yahoo.com/">yahoo</a></p>
<p><a href="#" rel="SpecialLink" class="readmore" title="link class="readmore" cat_id="14" content_id="15" slug="Slug 1" content="Content 1"">Content 1</a>
</p>
<p><a href="#" rel="SpecialLink" class="" title="link class="" cat_id="15" content_id="16" slug="Slug 2" content="Content 2"">Content 2</a></p>
<p>Some p 2 </p>
<p>Some p 3</p>
Когда формаЯ хочу преобразовать специальные URL-адреса в оператор {ссылка и т. д.} снова с помощью функции onPostProcess.Но это не работает.Если я console.log (o.content) в содержимом onPostProcess то же самое;не преобразован и beging сохранен в MySQL неправильно.Но если console.log (t._get_link (o.content)) внутри onBeforeSetContent, то это работает.Я не мог справиться с этим часами.
ed.onBeforeSetContent.add(function(ed, o) {
o.content = t._do_link(o.content);
});
ed.onPostProcess.add(function(ed, o) {
if (o.get)
o.content = t._get_link(o.content);
});
ниже функций _do_link и _get_link;
_do_link : function(co) {
return co.replace(/\{link([^<]+)\}/g, function(a,b){
content = b.match(/content=['"]([^'"]+)/i);
aclass = b.match(/class=['"]([^'"]+)/i);
if(aclass == undefined)
{
aclass = '';
}
else
{
aclass = aclass[1];
}
return '<a href="#" rel="SpecialLink" class="'+aclass+'" title="link'+tinymce.DOM.encode(b)+'">'+content[1]+'</a>';
});
},
_get_link : function(co) {
function getAttr(s, n) {
n = new RegExp(n + '="([^"]+)"', 'g').exec(s);
return n ? tinymce.DOM.decode(n[1]) : '';
};
return co.replace(/(<a href="([^"]+)" ([\S]*=.*(\ )*)*>([^<]+)<\/a>)/g, function(a,im) {
var cls = getAttr(im, 'rel');
if ( cls.indexOf('SpecialLink') != -1 )
{
return '{'+tinymce.trim(getAttr(im, 'title'))+'}';
}
return a;
});
}