/*************************************
MyBB.ru
Подфорумы "не скриптом" - новая версия
Версия: V1.11.7
Автор: Alex_63
Дата создания скрипта: 05.11.2015
Последние изменения от: 26.04.2020
*************************************/
if(typeof(SUBF.category_link)=='undefined'){SUBF.category_link = 1;}
SUBF.expr = $.expr[':'], SUBF.smb = String.fromCharCode(173);
SUBF.hasSmb = function(a){var f=a.substr(0,1);return f=='#'||f==SUBF.smb}
SUBF.expr.text = function(obj,index,meta){return $.trim(obj.textContent)==meta[3]};
SUBF.expr.html = function(obj,index,meta){return $.trim(obj.innerHTML)==meta[3]};
SUBF.expr.hasSmb = function(a){return SUBF.hasSmb(a.innerHTML)};
//== Функция установки подфорумов ==//
function setMainCnt(elem) {var Indx,fIdx,fTtl,IndxA=0,IndxR='',Subf_ST,sSt2,Class,Sub,SubN,subTtl,sel,sel0,icon,
subf,sF,subfA,subfR,tc2,tc3,tcrA,IndxC2,IndxC3,clS,sM,st_Link,SubfCont,subfC2,subfC3,subfA,subfR,fullA,sRC;
function ParseInsSubF(subTtl){
if(SUBF.hasSmb(subTtl))$('.category>h2>span:text("'+subTtl+'")',elem).parents('.category').find('tbody>tr').map(function(){
SubN = $(this); subfC2 = +SubN.find('.tc2').text();subfC3 = +SubN.find('.tc3').text();
IndxC2 += subfC2; IndxC3 += subfC3;
fullA = SubN.find('.tcr>a').attr('href');if(fullA){subfR=SubN.find('.tcr').html();subfA=+fullA.match(/#p(\d+)$/)[1];}else{subfR=' ';subfA=0;}
sel = $(SubfCont).find('.subforums span>a:text("'+subTtl+'")'); sel0 = sel.next('a'); sRC = SUBF.icon_old;
if(subfA>IndxA){IndxA=subfA;IndxR=subfR;sel0.length?sel0.attr('href',fullA):sel.next('img').replaceWith('')}
if(this.className.indexOf('inew')!=-1) { sRC = SUBF.icon_new;
sel0.length?sel0.removeClass('O').addClass('N').find('img').attr('src',SUBF.icon_new):sel.next('img').replaceWith('');
} subTtl = SubN.find('.tclcon h3 a').text();ParseInsSubF(subTtl);
});
};
$('.category tr[id^="forum"] .tclcon>h3>a:hasSmb',elem).parents('tr').map(function () {
Indx = $(this); fIdx = Indx.find('.tclcon>h3>a'); fTtl = fIdx.text(); IndxC2 = +Indx.find('.tc2').text(); IndxC3 = +Indx.find('.tc3').text();
if(Indx.find('.tcr>a').length){IndxR=Indx.find('.tcr').html();IndxA=+Indx.find('.tcr>a').attr('href').match(/#p(\d+)$/)[1];}else{IndxR=' ';IndxA=0;}
Subf_ST = sSt2 = '
'+SUBF.d_title+'
';
$('.category>h2>span:text("'+fTtl+'")',elem).parents('.category').find('tbody>tr').map(function(){
Sub = $(this); Class = Sub.attr('class'); Class = Class.indexOf('inew')!=-1 ? 'N' : 'O';
sF = Sub.find('.tclcon h3');subf = sF.html(); subTtl = sF.find('a').text(); tc3 = +Sub.find('.tc3').text(); tc2 = +Sub.find('.tc2').text();
IndxC2 += tc2; IndxC3 += tc3; tcrA = Sub.find('.tcr').find('a:last').attr('href'); sM = ' class="Icon_LastPost ';
clS = 's' + Sub.attr('id').replace('forum_',''); icon = Class=='N' ? SUBF.icon_new : SUBF.icon_old;
st_Link = tcrA ? '
' : '
';
subf = subf.replace('>#','>'); SubfCont = subf ? '
'+subf+st_Link+'' : ''; Subf_ST += SubfCont;
if(Sub.find('.tcr>a').length){subfR=Sub.find('.tcr').html();subfA=+Sub.find('.tcr>a').attr('href').match(/#p(\d+)$/)[1];}else{subfR=' ';subfA=0;}
if(subfA > IndxA) {IndxA = subfA;IndxR = subfR;} ParseInsSubF(subTtl);
});
if(Subf_ST != sSt2){Subf_ST += '
'; Indx.find('.tclcon').append(Subf_ST);}
Indx.find('.Icon_LastPost.N').length && !Indx.hasClass('inew') && Indx.addClass('inew').find('.icon').addClass('inew');
fIdx.text(fTtl.substr(1));
// Перезапись количества Тем и Сообщений; перезапись Правой колонки
Indx.find('.tc2').html(IndxC2); Indx.find('.tc3').html(IndxC3); Indx.find('.tcr').html(IndxR);
});
};
//== //End//- Обработка Подфорумов ==/
//== Создание списка ссылок, установка в .crumbs ==//
SUBF.setLinks = function(crumbsAppend){
function setLC(L){$('.crumbs').find('a:text("'+$('#pun-title h1 span').text()+'"):first').after(L);$('.crumbs a:hasSmb').map(function(){$(this).html($(this).html().substr(1));});}
if($('#pun-crumbs2').length){setLC(crumbsAppend)}else{$(document).ready(function(){setLC(crumbsAppend)});}
}
SUBF.getParentLinks = function(htmlcont,obj,forID) {
var crumbsAppend = '';
function findAndSet(forID,cTxt,ctId,crumbsAppend){
var sel2 = htmlcont.find('.tclcon h3 a:text("'+cTxt+'")'),href = sel2.attr('href');
if(href){crumbsAppend = ' » '+cTxt+'' +crumbsAppend};
cTxt = sel2.parents('.category').find('h2>span').text();ctId = sel2.parents('.category').attr('id');
if(SUBF.hasSmb(cTxt)){findAndSet(forID,cTxt,ctId,crumbsAppend);}else{
if(SUBF.category_link==1){crumbsAppend = ' » '+cTxt+'' +crumbsAppend;}
obj[forID] = crumbsAppend;
}
}
if(forID) {
var sel = htmlcont.find('.category tbody .tclcon h3 a[href$="viewforum.php?id='+forID+'"]'),Ctg = sel.parents('.category');
var thisParentCtg = Ctg.find('h2>span').text(),thisParCtgID = Ctg.attr('id');
if(SUBF.hasSmb(thisParentCtg)){findAndSet(forID,thisParentCtg,thisParCtgID,crumbsAppend);}else{
if(SUBF.category_link==1){ crumbsAppend =' » '+thisParentCtg+'';}
obj[forID] = crumbsAppend;
}
}//End | if(forID...
}
SUBF.processForumsLinks = function(elem,thisFid){
var ForumObj = {};
elem.find('.category tbody tr:not(.iredirect) .tclcon h3 a').map(function(){var Fid=$(this).attr('href').match(/id=(\d+)$/)[1];SUBF.getParentLinks(elem,ForumObj,Fid);});
localStorage.setItem('ForumsLinksObj',JSON.stringify(ForumObj));
if(thisFid){var Lnks = ForumObj[thisFid];SUBF.setLinks(Lnks);}
}
//==// End/-Создание списка ссылок и установка ==//
//== Дополнительная функция для Подфорумов, удаление решеток ==//
function setSubforums() {
if($('#pun-viewforum').length){$('.main h1>span,.crumbs').each(function() {$(this).html($(this).html().replace(/#/g,''));});}
var addPages = '#pun-post,#pun-edit,#pun-poll,#pun-movetopic,#pun-multimove,#pun-multidelete,#pun-multimegre,#pun-delete,#pun-modviewforum';
if($(addPages).length) { //Добавление ссылок в crumbs на странице отправки/редактирования
var forName = $('#pun-crumbs1').find('a[href*="/viewforum.php?id="]').text();
var forID = $('#pun-crumbs1').find('a[href*="/viewforum.php?id="]').attr('href').split('id=')[1];
var Ltest = false, Lsaved = localStorage.getItem('ForumsLinksObj'); if(!!Lsaved) {Lsaved = JSON.parse(Lsaved)[forID];}
if(Lsaved){ Ltest = true;SUBF.setLinks(Lsaved)};
$('.main h1>span,.crumbs').map(function() {$(this).html($(this).html().replace(/#/g,''));});
if(!Ltest){$.get('/',function(data) {var HtmlData = $(data);SUBF.processForumsLinks(HtmlData,forID)});}
};
}//End
//== Конец Доп.функции ...==//
//====== ОБРАБОТКА ПО ГОТОВНОСТИ #pun-main,- Установка Подфорумов на Главной ======//
$(document).pun_mainReady(function(){
if($('#pun-index').length) { //Это Главная?
var time=new Date().getTime();//Тест времени установки
//Парсим Подфорумы
var punMain = $(document).find('#pun-main');SUBF.punMainContent = punMain[0].outerHTML;
setMainCnt(punMain);
time=new Date().getTime()-time;try{console.log(time+'ms;f:'+$('.subforums').length+';sf:'+$('.subforums>.Inner>span').length)}catch(e){}
$('.category>h2>span:hasSmb').parents('.category').css({'display':'none'});
$('#HideCtg,#Hide_punIndex').remove();
};
if($('#pun-modviewforum').length){$('.main h1>span').each(function(){$(this).html($(this).html().replace(/#/g,''));});}
// Мы на странице Поиска Тем, Удаляем решетку из Ссылки на форум
if($('#pun-searchtopics').length) {$('td.tc2 a:hasSmb').map(function() {$(this).html($(this).html().substr(1));});}
// Правка местонахождения на странице Активных юзеров
if($('#pun-online').length){$('tbody tr').find('.tcl').find('a[href*="viewforum.php?"]:hasSmb').map(function(){$(this).html($(this).html().substr(1));});}
if($('#profile8').length){//Правка в управлении профилем
$('dt:hasSmb').map(function(){$(this).parents('dl').insertAfter($('#profile8').find('label:html("'+$(this).html()+'")').parent());});
$('dt:hasSmb').html('Подфорумы:');
$('dt:hasSmb,label:hasSmb').map(function(){$(this).html($(this).html().split('#')[1]);});
$('#profile8').append('');
}
function setSubfToSlct() {
var c = ' ';
$('select#fld1[name="move_to_forum"],select#fld3[name="forum"]').find('option').each(function(){
var a = $(this).parent('optgroup').attr('label');
if(!a){return;}if(!SUBF.hasSmb(a)){return;}
var b = $(this).parents('select').find('option:text(\''+a+'\')').parent('optgroup').attr('label');
if(typeof(b)!='undefined'&&SUBF.hasSmb(b)){$(this).html(c+' '+$(this).html());}
});
$('select#fld1[name="move_to_forum"],select#fld3[name="forum"]').find('optgroup[label^="#"],optgroup[label^="'+SUBF.smb+'"]').each(function() {
var Label = $(this).attr('label'); var NSp = ' ';
$(this).find('option').each(function(){
if($(this).html().indexOf(c+' '+c)==-1){$(this).html(NSp + $(this).html());}
});
var SubfS_C = $(this).html(); //SubfS_C = '';
$(this).parents('select').find('option:contains(\''+$.trim(Label)+'\')').after(SubfS_C);
$(this).remove();
});
$('select#fld1[name="move_to_forum"],select#fld3[name="forum"]').find('option:contains("#"),option:contains("'+SUBF.smb+'")').map(function(){$(this).html($(this).html().replace(/#/,''));});
}
//Правка форумов - подфорумов - категорий на странице Поиска
if($('#pun-search').length){ setSubfToSlct();}
//Правка Подфорумов на странице Переноса Тем
if($('#pun-movetopic').length) {
$('.crumbs a:hasSmb').map(function(){$(this).html($(this).html().substr(1));});
var ThisF = $('#pun-crumbs1 a[href*="viewforum."]:last').attr('href').split('id=')[1];
$('select#fld1').empty();
$('select#fld1').prepend('');
$.get('/',function(data) {
$(data).find('.category').each(function() {
var cat = $(this).find('h2 span').text(); //alert(cat);
if(cat=='@Blogs') { return; } var lCat = 'label="'+cat+'"';
if(cat.indexOf('\'')!=-1){ lCat = 'label="'+cat+'"';}
else if(cat.indexOf('\"')!=-1){lCat = 'label=\''+cat+'\'';}
$('select#fld1').append('');
$(this).find('tbody tr').each(function(){
var fN=$(this).find('.tclcon>h3>a').text(),tcl_a=$(this).find('.tclcon>h3>a');
if(tcl_a.length){var fID_s=tcl_a.attr('href').split('?id=')[1];}
$('select#fld1 optgroup:last').append('');
});
}); setSubfToSlct();
$('select#fld1').find('option[value="'+ThisF+'"]').attr('disabled','disabled');
});
$('.formsubmit input[name="move_topics_to"]').click(function () {
var Val = $('select#fld1 option:selected').text();
if(Val == 'Выберите форум') {alert('Не выбран форум для переноса');return false;}
});
}
// Правка ссылок в заголовках Постов в Поиске
if($('#pun-searchposts').length)$('.post h3>span').find('a[href*="viewforum"]:first').each(function() {
var fid = $(this).attr('href').split('id=')[1]; var lnks = localStorage.getItem('ForumsLinksObj'); if(!!lnks) {lnks = JSON.parse(lnks)[fid];}
if(lnks){lnks=lnks.replace(/^\s» /g,'').replace(/#/g,'')+' » ';$(this).before(lnks);}
$(this).html($(this).html().replace(/#/g,''));
});
});
//=====//End//Обработка по готовности #pun-main ======//
// Обновление списка ссылок с Главной
if($('#pun-index').length)$(window).load(function(){setTimeout(function(){if(SUBF.punMainContent)SUBF.processForumsLinks($(SUBF.punMainContent));},100);});
//== Ставим Подфорумы в форуме ==//
if($('#pun-viewforum').length)(function() {
var forName = $('head > title').text();
var forID = $('head > link[rel="alternate"]').attr('href').split('id=')[1];
var Ltest = false, Lsaved = localStorage.getItem('ForumsLinksObj'); if(!!Lsaved) {Lsaved = JSON.parse(Lsaved)[forID];}
if(Lsaved){ Ltest = true;SUBF.setLinks(Lsaved)}; //alert(Lsaved);
$.get('/',function(data) { //Получаем данные с Главной
var HtmlData = $(data);
if(!Ltest) {SUBF.processForumsLinks(HtmlData,forID)}
// Ставим секцию подфорумов
if(SUBF.hasSmb(forName)){
var DtMain = $(data).find('#pun-main');
setMainCnt(DtMain);
var CntSubf = $(DtMain).find('.category h2 span:html("'+forName+'")').parents('.category').find('table').html();
if(CntSubf == null) { CntSubf = ''; }
function setSubf(){$('#pun-main table[summary]:first').before('');}
if($(document).find('#pun-main').length){setSubf()}else{$(document).pun_mainReady(function() {setSubf() });}
}
}); if(SUBF.hasSmb(document.title)){document.title=document.title.substr(1);}
}());
//==End/-Ставим подфорумы(на странице форума)== //
//== Добавляем ссылки в .crumbs в Топике, правим Похожие Темы ==//
if($('#pun-viewtopic').length)(function() {
var forName = $('link[rel="up"]').attr('title');
var forID = $('head > link[rel="up"]').attr('href').split('id=')[1];
var Ltest = false, Lsaved = localStorage.getItem('ForumsLinksObj'); if(!!Lsaved) {Lsaved = JSON.parse(Lsaved)[forID];}
if(Lsaved){ Ltest = true;SUBF.setLinks(Lsaved)};
if(!Ltest) {$.get('/',function(data) { var HtmlData = $(data);SUBF.processForumsLinks(HtmlData,forID);});}
$(document).pun_mainReady(function(){if($('#similar-topics').length)$('#similar-topics .st-tc2 a:hasSmb').map(function(){$(this).html($(this).html().substr(1));});});
}());
//==//End// - Добавляем ссылки в Crumbs1,2 в Топике ==//
// ==Правим title на странице Модерирования форумa==//
if($('#pun-modviewforum,#pun-post,#pun-poll').length &&SUBF.hasSmb(document.title)){document.title = document.title.substr(1);}
//== Дополнение: "Кликабельность Категорий"; правка стиля для скрытия - имитации подгрузки ==//
if($('#pun-index').length)(function() {
document.write('');
var st00 = '';
var a = document.URL, b = a.replace(location.protocol+'//'+location.hostname+'/=&pun-category','');
if (a != b) {var hideCat2 = st00 + b + st02;document.write(hideCat2);}
if(SUBF.category_link==1)$(function(){
var c = ''+Ltxt+'');});
if(document.URL.indexOf('=&pun-category')!=-1){
var CtgrID = document.URL.split('pun-category')[1];//alert(CtgrID);
var CtgrTitle = $('.category[id$="pun-category'+CtgrID+'"]').find('h2 a').text();
document.title = CtgrTitle;
$('.crumbs span').wrap('');
$('.crumbs a.forum_lnk').after(' » '+CtgrTitle+'');
$('.category[id$="pun-category'+CtgrID+'"]').find('h2 > span:not(.offctgr):not(.Show-Hide)').html(CtgrTitle);
$('.category').find('.Show-Hide, .offctgr').remove();
$('#pun-stats.section').remove();
}
});
}());
//==/End//-Кликабельность Категорий //Дополнение==//
// КОНЕЦ //