/*********************************
MyBB.ru,
Мгновенный предпросмотр сообщения
Версия: V1.3.3
Автор: Alex_63
Дата: 27.10.2015
Последние изменения: 13.09.2016
*********************************/
//==== ФУНКЦИЯ PARSECONTENT() РАСПАРС КОНТЕНТА TEXTAREA ====//
function ParseContent () {
if($('#main-reply:first').parents('.post').length)return;
//==== Распарс bbcode в контенте textarea ====//
var cnt = $('#main-reply:first').val(); //alert(cnt);
// Отключаем распознавание HTML кодов
cnt = cnt.replace(/&/g,'&'); cnt = cnt.replace(//g,'>');
// Распарс блока Код Ч1 - //Вынимаем блоки код;
var arrCODE = [],j=0;
function repl1 (str, p1, offset, s){arrCODE[j]=p1; return ';code-' + j++ +';'}
cnt = cnt.replace(/\[code\]((?:[\s\S](?!\[\/{0,1}code\]))*[\s\S]{0,1})\[\/code\]/gm,repl1);
function replTableTd(str,attr,txt,offset,s1){
var attrArr = attr.split(/\s/gim),strS1 = '',strS2 = '';
for(var i=0;i '+cnt+' ').replace(/\n/g,' ';
var BBquoteL = ' ';
var BBquote0 = ' $1 ';
var BBquote = ' $2 ';
var BBhidText = ' $2 '; var spLlIn='$(this).toggleClass(\'visible\'); $(this).next().toggleClass(\'visible\');';
var BBspoiler0 = ' $1 ';
var BBspoiler = ' $2 ';
// Парсим BB коды
cnt = cnt.replace(/\[b\](.*?)\[\/b\]/gi,'$1'); cnt = cnt.replace(/\[i\](.*?)\[\/i\]/gi,'$1');
cnt = cnt.replace(/\[u\](.*?)\[\/u\]/gi,'$1'); cnt = cnt.replace(/\[s\](.*?)\[\/s\]/gi,'$1 '); cnt = cnt.replace(/\[tr\]([\s\S]*?)\[\/tr\]/mgi,'$1 ');
// Парсим переносы строк
cnt = ('
');
var RXquoteP = /\[quote="#p(.*?),(.*?)"\](.*?)\[\/quote\]/gi, RXquoteL = /\[quote="(.*?),http:\/\/(.*?)"\](.*?)\[\/quote\]/gi;
var RXquoteQ = /\[quote="(.*?)"\](.*?)\[\/quote\]/gi, RXquote = /\[quote=(.*?)\](.*?)\[\/quote\]/gi, RXquote0 = /\[quote\](.*?)\[\/quote\]/gi;
var BBquoteP = '$1');
cnt = cnt.replace(/\[h\](.*?)\[\/h\]/gi,'$1'); cnt = cnt.replace(/\[hr\]/g,'
');
cnt = cnt.replace(/\[sup\](.*?)\[\/sup\]/gi,'$1'); cnt = cnt.replace(/\[sub\](.*?)\[\/sub\]/gi,'$1');
cnt = cnt.replace(/\[you\]/g,UserLogin);
var j=0;if(typeof(QuoteImg)=='undefined'){while(j<4){cnt = cnt.replace(RXquoteP,BBquoteP);j++};j=0;while(j<4){cnt = cnt.replace(RXquoteL,BBquoteL);j++}}
j=0;while(j<4){cnt = cnt.replace(RXquoteQ,BBquote);j++};j=0;while(j<4){cnt = cnt.replace(RXquote,BBquote);j++};j=0;while(j<4){cnt = cnt.replace(RXquote0,BBquote0);j++}
cnt = cnt.replace(/\[hide=(.*?)\](.*?)\[\/hide\]/gi,BBhidText);
cnt = cnt.replace(/\[spoiler="(.*?)"\](.*?)\[\/spoiler\]/gi,BBspoiler); cnt = cnt.replace(/\[spoiler="(.*?)"\](.*?)\[\/spoiler\]/gi,BBspoiler);
cnt = cnt.replace(/\[spoiler=(.*?)\](.*?)\[\/spoiler\]/gi,BBspoiler); cnt = cnt.replace(/\[spoiler\](.*?)\[\/spoiler\]/gi,BBspoiler0);
cnt = cnt.replace(/\[font=(.*?)\](.*?)\[\/font\]/gi,'$2');
cnt = cnt.replace(/\[size=(.*?)\](.*?)\[\/size\]/gi,'$2');
cnt = cnt.replace(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2');
cnt = cnt.replace(/\[align=(.*?)\](.*?)\[\/align\]/gi,'$2');
cnt = cnt.replace(/\[img\](.*?)\[\/img\]/gi,'');
cnt = cnt.replace(/\[img=(.*?)\](.*?)\[\/img\]/gi,'');
cnt = cnt.replace(/\[url=(.*?)\](.*?)\[\/url\]/gi,'$2');
cnt = cnt.replace(/\[url\](.*?)\[\/url\]/gi,'$1');
cnt = cnt.replace(/\[video\](.*?)\[\/video\]/gi,'');
// Распарс остальных BBКодов
cnt = cnt.replace(/\[abbr="(.*?)"\](.*?)\[\/abbr\]/gi,'$2');
cnt = cnt.replace(/\[add\]/g,'Added later');
cnt = cnt.replace(/\[mark\](.*?)\[\/mark\]/gi,'$1');
// Распарс таблиц ч2
function replTable(str,attr,txt,s){attr=attr.replace(/layout/g,'table-layout').replace(/=/g,':').replace(/^\s/,'').replace(/\s/gm,';');return ''+txt+'
'}
cnt = cnt.replace(/\[table(.*?)\](.*?)\[\/table\]/mgi,replTable);
// Распарс Смайлов
var SmileObj = FORUM.get('editor.smile.smilies');
var SmileDir = FORUM.get('editor.smile.dir');
for (var s in SmileObj) {
var reg = new RegExp('\\s'+s.replace(/([\'\-\^\|\(\)])/g,'\\$1')+'\\s','gm');
cnt = cnt.replace(reg,' ');
};
// Парсим пробелы
cnt = cnt.replace(/ /g,' ');
// Распарс блока Код Ч2, - Возвращаем блоки код
var st = '
'; var end = '
'; function repl2 (str, p1, offset, s) {return st + arrCODE[+p1] + end;} if(arrCODE.length)cnt = cnt.replace(/;code-(\d+);/gm,repl2); // Поправка переносов строк cnt = cnt.replace(/
/g,''); cnt = cnt.replace(/'; function setPrev(sel) { $(sel).each(function () { $(this).find('fieldset:first').before('
/g,''); cnt = cnt.replace(/<\/div>
/g,'<\/div>'); cnt = cnt.replace(/
<\/p>
','')); $(this).html($(this).html().replace('<\/div><\/p>
/g,'<\/div>
'); cnt = cnt.replace(/
/g,''); cnt = cnt.replace(/
/g,'
'); cnt = cnt.replace(/
/g,'
'); //==== Скрываем/показываем предпросмотр при вводе====// if(cnt === '' && $('#post-preview').css('display') != 'none') { $('#post-preview').css({'display':'none'}); } if(cnt != '' && $('#post-preview').css('display') == 'none') { $('#post-preview').css({'display':'block'});} if(cnt === '' && $('#post-preview').css('display') == 'none') { $('#post-preview').css({'display':'none'}); } if(cnt === '' && $('#post-preview').css('display') == 'none') { $('#post-preview').css({'display':'none'}); } if(cnt === '' && $('#post-preview').css('display') != 'none') { $('#post-preview').css({'display':'none'}); } $('#post-preview').find('.post-content').html(cnt); $('#post-preview').find('.post-box').each(function(){ $(this).html($(this).html().replace('<\/div><\/p>
<\/p>
<\/p>','')); }); if(typeof(QuoteImg)!='undefined' &&!$('#pun-messages').length){ $('.punbb').prepend(''); setLinkAndAva('#post-preview'); } window.HTMLinPost && HTMLinPost.parseTags('#post-preview'); }//Конец Функции if($('#pun-post, #pun-edit, #pun-poll, #pun-viewtopic').length)(function() { document.write(''); if(PPREV.position == 2) { document.write(''); if($('#pun-viewtopic').length){ document.write(''); } if($('#pun-post,#pun-edit,#pun-poll').length){ document.write(''); } } if($('#post-preview').html() === null) { var pprevcont='
'); $(this).find('fieldset:last').find('script').remove(); $(this).find('fieldset:last').appendTo($(this).find('#PFld1')); $(this).find('#post-preview').remove(); $(pprevcont).appendTo($(this).find('#PFld2')); $(this).find('#post-preview').css('height',($(this).find('fieldset:not(#post-preview)').css('height'))); }); } if(PPREV.position == 0) {$('#post fieldset').before(pprevcont);} if(PPREV.position == 1) {$('#post fieldset').after(pprevcont); } if(PPREV.position == 2) { setPrev($('#post')); } } else { if(PPREV.position == 1) {$('#post-preview').each(function(){$(this).insertAfter($(this).parents('#post').find('fieldset:nth-of-type(2)'));});} if(PPREV.position == 2) { setPrev($('#post')); } } //==== Показываем / Скрываем Предпросмотр при Загрузке Страницы ====// if($('#post-preview').text().length < 1) {$('#post-preview').hide();} else {$('#post-preview').show();ParseContent();} var sTim; //====Вызов функции ====// $('#main-reply:first').live('input',function () { ParseContent(); }); $('#form-buttons img, .pl-quote, .pa-author>a, div[id$="-area"] *, .pl-BBquote, #Bubble').click(function (){ clearTimeout(sTim);sTim = setTimeout(function (){ParseContent();},40); }); }());