Страница 1 из 2

Скрипты (расширение функционала форума)

Добавлено: 15.06.2015, 12:28
swed.loki
Просьба, придерживаться формата сообщений в теме
Описание скрипта
Чтобы администратору было легче ориентироваться, обозначайте начало и конец комментариями: ,


В какую форму вставлять: HTML верх, HTML низ, HTML в форме ответа

Код:

Тело скрипта


Добавлено: 15.06.2015, 12:29
swed.loki
Запятая в форму ответа после клика на Ник автора поста
HTML-верх

Код:

function to(username)
{insert('' + username + '' + ', ');}


Добавлено: 15.06.2015, 12:30
swed.loki
Скрипт позволит процитировать сообщение вместе с исходными BB-кодами.
HTML в форме ответа

Код:

var a=document.getElementsByTagName("a")
for (i = 0; icitación ";
}


Добавлено: 15.06.2015, 12:31
swed.loki
Переход на Авторский пост по клику на Ник в цитате
HTML низ

Код:

$(".post-content .quote-box cite:contains('#p')").each(function (){
var b=$(this).text();var c=b.replace(/^#p[\d?]*,/,"");
if(b!=c){b=b.replace(','+c,'');c=(b+b).replace("#p","")+'">'+c+'';
$(this).html('

Добавлено: 15.06.2015, 12:32
swed.loki
Обтекание объекта текстом. Объектом может быть не только изображение.
HTML низ

Код:

$(function(){
$('td#button-link').before('');
$('#floatbut, .vibor').click(function(){
$('div#float').toggle();});
});
elm=document.getElementsByTagName("div")
for(x in elm) if(elm[x].className=="post-content")
{
post = elm[x].innerHTML;
if(post.indexOf("[/float]") != -1) {
floats = /\[float=(.*?)\]([^\[]*)\[\/float\]/gi
elm[x].innerHTML = elm[x].innerHTML.replace(floats, "$2")
}}


Направление обтекания





Добавлено: 15.06.2015, 12:34
swed.loki
Цитирование сообщения полностью, включая ВВ-коды и картинки.
Отличается от скрипта, приведённого выше, более корректной работой и дополнением, заменяющим ссылки на изображения на сами изображения.
Кнопка "BB-Цитата".
HTML в форме ответа или HTML низ

Код:

$(document).ready(function(){var topId=$("#pun-viewtopic .linkst .postlink a[href*='post.php?tid=']").attr("href");
if(topId!=undefined&&$("topic .pl-BB-quote").html()==null){topId=topId.replace(/^http:.*=/i,"");
$(".topic .post").each(function(){var b='/post.php?tid='+topId+'&qid='+$(this).attr("id").replace(/^p/,"");
pp=$(this).find("li.pl-quote");if(pp.html()!==null){
pp.after('BB-Цитата')};});};});


Добавлено: 15.06.2015, 12:35
swed.loki
Описание к каждой теме в форуме, отображаемое под названием темы.
HTML низ
Стиль описания настраивается в блоке CSS в самом начале скрипта.

Код:

.yaxiko {
color: #000000; /* Цвет текста */
margin-top: 2px; /* Частично отступ сверху */
margin-left: 0px; /* Отступ слева */
width: 300px; /*Ширина поля для Описания */
font-size: 95%; /* Размер Шрифта (можно в пикселах) */
display:block;
}
#pun-crumbs1 .yaxiko,
#pun-crumbs2 .yaxiko,
#pun-index .yaxiko,
div.post-links .yaxiko,
#pun-main h1 .yaxiko{
display:none;
}


var opisymb='‡';
$("#pun a:contains('‡')").each(function (){
var ss = $(this).html();
ss=ss.replace('‡','')+'';$(this).html(ss);
if ((document.URL.indexOf("viewtopic.php") == -1) && (document.URL.indexOf("post.php") == -1) && (document.URL.indexOf("edit.php") == -1)){$(this).find(".yaxiko").appendTo($(this).parents("td:first"))};});

$("#pun-viewtopic #pun-crumbs1 .crumbs:contains('‡'),#pun-main h1 span:contains('‡'),#pun-viewtopic #pun-crumbs2 .crumbs:contains('‡')").each(function (){
var ss = $(this).html();var n=ss.indexOf('‡');ss=ss.substring(0,n);$(this).html(ss);});

if (((document.URL.indexOf("edit.php?id")!=-1)||(document.URL.indexOf("post.php?fid")!=-1))&&($("input[name='req_subject']").html()!==null)&&($("#fld4").html()==null)) {
var str2="";

$("span.input:first").after('Тут можно ввести своё Описание Темы:');
$("input[name='submit']").css({'display':'none'});
$("input[name='preview']").css({'display':'none'});

var str=$("input[name='req_subject']").val(),Dleng=str.length;
var L=str.indexOf('‡');

if(L!=-1){
str0=str.substring(0,L-1);
var str2=str.substring(L+1,Dleng);
$("input[name='req_subject']").val(str0);
$("input[name='req_subject']").remove().appendTo(".input:first");
$("#fld4").val(str2);
}

if ($("#pustoj").html()==null){$("input[value='Отправить']").after('');}

if ($("#pustoj2").html()==null){$("input[value='Посмотреть']").after('');}

$("input[name='pustoj2']").click(function (){
if($("#main-reply").val()==''){alert('"Сообщение" это поле обязательно для заполнения в этой форме.');return};
$("input[name='req_subject']").css({'color':''+$("input[name='req_subject']").css("background-color")+''})
var str=$("input[name='req_subject']").val(),str1; str1=$("#fld4").val(); if (str!=""&&str1!=""){
str+=" "+opisymb+str1;$("input[name='req_subject']").val(str);$("#fld4").remove();};
$("input[name='preview']").click();});

$("input[name='pustoj']").click(function (){
if($("#main-reply").val()==''){alert('"Сообщение" это поле обязательно для заполнения в этой форме.');return};
$("input[name='req_subject']").css({'color':''+$("input[name='req_subject']").css("background-color")+''})
var str=$("input[name='req_subject']").val(),str1; str1=$("#fld4").val(); if (str!=""&&str1!=""){
str+=" "+opisymb+str1;$("input[name='req_subject']").val(str);$("#fld4").remove();};
$("input[name='submit']").click();});
}


Добавлено: 15.06.2015, 23:40
swed.loki
Модуль вставки ссылки в сообщение.
Отключена функция сокращения ссылок. Добавлена опция сохранения/очищения описания ссылки.
HTML низ
Стиль описания настраивается в блоке CSS в самом начале скрипта.

Код:

#linkTs-area{
line-height: normal;
position: absolute;
right: 200px; /* Перемещение модуля по горизонтали */
top: 43px; /* Перемещение модуля по вертикали */
padding-bottom: 14px;
padding:22px 30px;
height: 100px; /* Высота модуля */
width: 450px; /* Ширина модуля */
margin: 0px;
}
#linkTs-area sup{
cursor:pointer;
}

Не Очищать Окно x

Вставьте ссылку на веб-страницу

x



Вставьте описание ссылки

x

Вставить





$("#linkTs-area").insertBefore("#smilies-area")

var L='';
$("#button-link img").replaceWith(L)
$("#linkTs-area").insertBefore("#smilies-area");var Lft='[';

function setcookieL(a,b,c){if(c){var d=new Date();d.setTime(d.getTime());d=new Date(d.getTime()+c*1000*60)}if(a&&b)document.cookie=a+'='+b+(c?'; expires='+d.toGMTString():'');else return false}function getcookieL(a){var b=new RegExp(a+'=([^;]){1,}');var c=b.exec(document.cookie);if(c){c=c[0].split('=')}else{return false}return c[1]?c[1]:false}

function SetMemClear(){$('#linkTs').val('');if(getcookieL('MemClea')=='1'){$("#linkTs-area p:first u").html('Очищать Описание');$('#linkTs2').val('');}else{$("#linkTs-area p:first u").html('Не Очищать Описание')}}

function MemClea(){if(getcookieL('MemClea')=='1'){setcookieL('MemClea','0',4/10000);$("#linkTs-area p:first u").html('Не Очищать Описание');}else{setcookieL('MemClea','1',24*60);$("#linkTs-area p:first u").html('Очищать Описание')}}

function insAles(){var L=$("#linkTs").val();var l=$("#linkTs2").val();
if (!l ||$.trim(l) == '') l = L;
L=Lft+'url='+L+']'+l+Lft+'/url]';smile(L);
changeVisibility('linkTs-area');}

$("#main-reply").click(function(){$("#linkTs-area").hide()});


Добавлено: 07.07.2015, 01:14
swed.loki
Закладки в сообщениях.
Для быстрого перехода на сообщение из любого места форума на это сообщение можно поставить закладку.
HTML низ (Скрипт большой, поэтому в самый низ)

Скрипт закладокКод:

function pakCodeURI (sPak) { //alert("Длина входной строки >"+sPak.length)
sPak=sPak.replace(/^([^%])/g,"");//alert(sPak)

sPak=sPak.replace(/%D0/mg,"%G"); sPak=sPak.replace(/%D1/mg,"%b");
sPak=sPak.replace(/%20/mg,"%c"); sPak=sPak.replace(/%B0/mg,"%d");
sPak=sPak.replace(/%BE/mg,"%e"); sPak=sPak.replace(/%80/mg,"%f");
sPak=sPak.replace(/%81/mg,"%g"); sPak=sPak.replace(/%82/mg,"%h");
sPak=sPak.replace(/%83/mg,"%i"); sPak=sPak.replace(/%BD/mg,"%j");

sPak=sPak.replace(/%B5/mg,"%k"); sPak=sPak.replace(/%B8/mg,"%m");
sPak=sPak.replace(/%BB/mg,"%n"); sPak=sPak.replace(/%B1/mg,"%o");
sPak=sPak.replace(/%BA/mg,"%p"); sPak=sPak.replace(/%BE/mg,"%q");
sPak=sPak.replace(/%B9/mg,"%r"); sPak=sPak.replace(/%BF/mg,"%s");
sPak=sPak.replace(/%8B/mg,"%t"); sPak=sPak.replace(/%2C/mg,"%u");

sPak=sPak.replace(/%B2/mg,"%v"); sPak=sPak.replace(/%B4/mg,"%w");
sPak=sPak.replace(/%8F/mg,"%x"); sPak=sPak.replace(/%09/mg,"%y");
sPak=sPak.replace(/%G%e%b/mg,"%H"); sPak=sPak.replace(/%G%e%G/mg,"%Y");
sPak=sPak.replace(/%G%m%G/mg,"%I"); sPak=sPak.replace(/%G%j%b%t/mg,"%J");
sPak=sPak.replace(/%G%j%u/mg,"%K"); sPak=sPak.replace(/%G%j/mg,"%L");

sPak=sPak.replace(/%G%k/mg,"%M"); sPak=sPak.replace(/%G%d/mg,"%N");
sPak=sPak.replace(/%G%9/mg,"%O"); sPak=sPak.replace(/%M%N%K/mg,"%P");
sPak=sPak.replace(/%G%A/mg,"%R"); sPak=sPak.replace(/%G%s/mg,"%S");
sPak=sPak.replace(/%G%m/mg,"%T"); sPak=sPak.replace(/%G%r/mg,"%X");
sPak=sPak.replace(/%b%f/mg,"%U"); sPak=sPak.replace(/%b%h/mg,"%W");

sPak=sPak.replace(/%M%G/mg,"%Z"); sPak=sPak.replace(/%b%8/mg,"%V");
sPak=sPak.replace(/%G%B/mg,"%&"); sPak=sPak.replace(/%u%O/mg,"%#");
sPak=sPak.replace(/%G%v/mg,"%a"); sPak=sPak.replace(/%b%g/mg,"%z");
sPak=sPak.replace(/%&C/mg,"%]");

//alert("2(До % delete > "+sPak.length)//alert(sPak)
sPak=sPak.replace(/%/mg,"");//alert("Ужатие URI>"+sPak.length)//alert(">>>"+sPak)
return sPak;

} //End/Упаковка encodeURIComponent
//======== Распаковка encodeURIComponent ==================
function unpakCodeURI (str_unpak) {//alert("function unpakCodeURI"+str_unpak)

str_unpak=str_unpak.replace(/(^(?:[^]+)(?:(?:[^]+)(?:/gm,"");

//alert("URI-Code >"+str_unpak.length)//alert(str_unpak)

return decodeURIComponent(str_unpak);

} // End/Распаковка (decodeURIComponent)

// Библиотека для кукисов
function setCookie33(name, value, expires, path, domain, secure) {
if (!name || !value) return false; //alert("HELLO>>"+value)
var today = new Date();
today.setTime( today.getTime() );
var expires_date = new Date( today.getTime() + (expires) );
value = encodeURIComponent(value);
if (value.length > 1000) value="1$"+pakCodeURI(value);

var str = encodeURIComponent(name) + '=' + value;//alert(value)

if (expires) str += '; expires=' + expires_date.toGMTString();
if (path) str += '; path=' + path;
if (domain) str += '; domain=' + domain;
if (secure) str += '; secure';

document.cookie = str;
return true;
}

function getCookie33(name) {
name= encodeURIComponent(name)
var pattern = "(?:; )?" + name + "=([^;]*);?";
var regexp = new RegExp(pattern,"g");
if (regexp.test(document.cookie)){
NumPak = RegExp["$1"].replace(/^((?:\d{1,2})\$)?([^\$]*)$/g,"$1")
if(NumPak == "1$" ) return unpakCodeURI(RegExp["$2"]);
return decodeURIComponent(RegExp["$2"])
}
return false
}
function deleteCookie33( name, path, domain ) {

if ( getCookie33( name ) ) name= encodeURIComponent(name);document.cookie = name + '=' +
( ( path ) ? ';path=' + path : '') +
( ( domain ) ? ';domain=' + domain : '' ) +
';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}

//Обработка селекторов по событиям( перевод this в $(this)
var numb_event=0;
function THiS(a){numb_event++;var b=numb_event, d='numb_event';
if(a.getAttribute(d)==null){a.setAttribute(d,b);}else{b=a.getAttribute(d)}
return $("#pun *[numb_event='"+b+"']")
}

document.write(".item11 {text-align:center;}.item11 .child li{width:95%!important;}.item11 .child {text-align:right;}.item11:hover .child{display:inline!important;}.item11 .child li{position:relative;z-index:100; text-align:right!important;padding:3px 3px 3px 0;margin:0px;border:1px solid #ccc!important;font-size:11px!important;background:#f0f0f0 !important;display:block!important;}.item11 .child{background-image:url(http://forum.mybb.ru/i/blank.gif)!important;position:relative;z-index:100;margin-top: -3px!important;margin-left: -20px!important;}.item11 .child li a{color:#000!important;font-weight:normal!important;}.item11 .child li .a2{text-align:left!important;position:absolute;display:none!important;margin-top: -6px;}.item11 .child li .a2 a[href*=\"/viewforum.php?id=\"]{margin-top:-12px!important;}.item11 .child li:hover{background-image:none!important;background-color:#626262;}.item11 .child li:hover a{color:#747474!important;}.item11 .child li:hover .a2{display:inline!important;}.item11 .child li .a2 span{font-weight:bold!important;}.item11 .child li .a2 a{display:block!important;margin:0px;color:#333!important; border:1px solid #B7B7B7!important;background:#e2e2e2;font-weight:normal;padding:3px;height:19px;} .item11 .child li .a2 a:hover {background:#f0f0f0 !important;}")
var stBookmark="Сохранить";

var MyBookmark={}; //MyBookmark=[post,scrol,Idfor,IdTem,txtM];
var sep0r=String.fromCharCode(11)

function SetPst(){
var ByMymark={};
var L=getCookie33('MarkCooki')
if(L){setCookie33('MarkCooki',L,30*24*60*60*1000);
L=L.split(sep0r+sep0r),a=[];
if(L.length>1){
for (var i=0; i1){
for (var i=0; i#TRyams{display:inline-block!important;z-index:1000!important;position:relative!important;}');
var strL0="Мои Закладки";
$("#pun-ulinks a[href$='search.php?action=show_recent']").parent('li').after(strL0);

var LstM=$("#pun-ulinks li.item11 ul");//alert(LstM.html())

function SetMarkUlink (LstM) {
var str1="";
var str3="";

var str21="В форуме: ";
var str23="";

var str31=" В Теме: ";
var str33="";

// Предустановка Закладок в "Закладках"
var i=0,a,b,Ifor=$(".category .tcl .tclcon h3");
LstM.html('');
for(var key in Pst){
a=key.substring(2);b=a+'#p'+a;
LstM.prepend(str1+b+str2+Pst[key][4]+str3+'pr'+a+str4)
LstM.find("span.a2.pr"+key.substring(2)).attr("alt",Pst[key][3])
} //alert(MarkCooki)

LstM.find("span.a2[alt]").each(function(J){
var tid=$(this).attr("alt");//alert(tid);
d=LTemTit[tid]
var a=str31+tid+str32+d+str33;//
$(this).append(a);
});

if( $(".punbb").attr("id")=="pun-index"){
for(var key in Pst){
a=Ifor.find("a[href*='id="+Pst[key][2]+"']").html();
if(a!=null){
b=str21+Pst[key][2]+str22+a+str23;//alert(b);
LstM.find("span.a2.pr"+key.substring(2)).prepend(b);
}

}
}
var L=$(".My_Bookmarks[alt^='Шесть важных']");
if(L.html()!=null){
var DArr=[]
L.find("p").each(function(J){
if(J';
var Ls2='';
var Ls3='';
for (k=0; k';
if( $(".punbb").attr("id")=="pun-index"){
L+=str21+0+'" style="margin-top:-12px!important;'+str2+'= Info ='+str23;}
L+='';//End element
} LstM.prepend(L);//alert(L)
}
}

SetMarkUlink (LstM)

// Предустановка Закладок в постах
var Pst=MyBookmark;
$("#pun-viewtopic .post").each(function(){
var pst='#'+$(this).attr("id");//alert(pst); //alert(Pst[pst][0])

if(Pst[pst]!=undefined){
$(this).prepend(stBookmark+Pst[pst][1]+endBookmark);
$(this).find(".span_Bookmark input.inBookmark").val(Pst[pst][4]);
$(this).find(".span_Bookmark input.inBookmark").attr("alt",Pst[pst][4]);
}
});

function ReReseTm(){

var L00=''
for(var id in LTemTit){
var settD=1;
for(var key in Pst){//alert("LTemTit[id]>"+id+"?"+Pst[key][3])
if(id==Pst[key][3]){
settD=0;break;}
}
if(settD){delete LTemTit[id];
}else {L00+=sep0r+id+sep0r+LTemTit[id]}
} //alert("L00="+L00);
return L00.replace(sep0r,'');
}

function makeBookmark (pst,scrl,Idfor,IdTem,txtM,TemTitl) {
if(Pst[pst]!=undefined){delete Pst[pst];ReReseTm ();
}
if(typeof(scrl)!='undefined'||typeof(txtM)!='undefined'){Pst[pst]=[pst,scrl,Idfor,IdTem,txtM];
LTemTit[IdTem]=TemTitl;}
//======== Функция Tst-SetCooki
var FirstKey,y=0; for(var key in Pst) {if(!y){FirstKey=key;} y++;}
if(y>15){delete Pst[FirstKey],ReReseTm();}
var MarkCooki='';
for(var key in Pst){
for(var i in Pst[key]){
MarkCooki+=Pst[key]+sep0r;
} MarkCooki+=sep0r;
} //alert(MarkCooki)
var L=ReReseTm();
if(y){setCookie33('MarkCooki',MarkCooki,30*24*60*60*1000);//alert(getCookie33('MarkCooki'))
setCookie33('LTemTitl',L,30*24*60*60*1000);//alert(getCookie33('LTemTitl'))
}else {deleteCookie33('MarkCooki');deleteCookie33('LTemTitl');}
//=========
}

function ReloadBookmark (pst,scrl,txtM) {

var TemaTitl=$("#pun-main h1:first span").html().substring(0,34)//alert(TemaTitl);
var Mforum=$("html head:first link[rel='up']").attr("href").replace(/^.+php\?id=/img,"");//alert(Mforum);
var Mtema=$("html head:first link[rel='alternate']").attr("href").replace(/^.*tid=/img,""); //alert(Mtema);

$(pst+" .span_Bookmark").replaceWith('');

makeBookmark(pst,scrl,Mforum,Mtema,txtM,TemaTitl);

$(pst).prepend(stBookmark+scrl+endBookmark);
$(pst+" .span_Bookmark").find("input.inBookmark").val(txtM);
$(pst+" .span_Bookmark").find("input.inBookmark").attr("alt",txtM);
}

function SetBookmark(postselekt,top) {
var today = new Date();
var d=parseInt(today.getDate());if(d

.post .Bookmark img[src$="i/blank.gif"]{
cursor:pointer;
}


var L=$("#My_Bookmarks2").html();$(".item11 .child").prepend(L)


Добавлено: 07.07.2015, 22:09
swed.loki
Отступ первой строки в абзаце сообщения или "красная строка".

В файле style.css в стиль абзаца сообщения добавить строку c параметром отступа.

В качестве значений принимаются любые единицы длины, принятые в CSS — например, пикселы (px), дюймы (in), пункты (pt) и др. При задании значения в процентах, отступ первой строки вычисляется в зависимости от ширины блока. Допустимо использовать отрицательные значения, но при этом в разных браузерах возможно появление ошибок.
/* B1.3 */
.punbb .post-content p {
margin: 0;
padding: 0 0 1em 0;
line-height: 150%;
text-indent: 2em; /* Отступ красной строки*/
}
Единица em — это изменяемое значение, которое зависит от размера шрифта текущего элемента (размер устанавливается через стилевое свойство font-size). В каждом браузере заложен размер текста, применяемый в том случае, когда этот размер явно не задан. Поэтому изначально 1em равен размеру шрифта, заданного в браузере по умолчанию или размеру шрифта родительского элемента.

В сообщениях форума один абзац отделяется от другого двумя нажатиями клавиши "Enter" (пустая строка между блоками текста).
Одно нажатие клавиши "Enter" соответствует переносу строки внутри абзаца.