Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Архив » Новые возможности форума - скрипты


Новые возможности форума - скрипты

Сообщений 121 страница 140 из 153

121

Запрет просмотра тем гостям. Duka


Простенький скрипт, достаточно простой, запрещающий гостям просматривать темы.
Версия первая.

Код:
<script>
if (GroupID == 3 && (document.URL.indexOf("viewtopic.php")!=-1)){
alert ('Администратор запретил Вам просматривать темы');
history.go(-1);
}
</script>

Ставить в объявление!

0

122

Скрытие формы ответа (Аналог IPB). Duka


Предыдущий скрипт, по словам пользователей, был с ошибками.
Этот вроде заработал. Скрипт очень легкий.
В верх ставим

Код:
<style type="text/css">
#post-form {
display:none;}
</style>

В низ ставим

Код:
<script type="text/javascript">
var arr=document.getElementsByTagName("div")
i=0
if (document.location.href.toLowerCase().indexOf('viewtopic.php') != -1){
while(arr[i] ){
if(arr[i].className=="postlink"){
name=arr[i].innerHTML
name=name.substring(0)
arr[i].innerHTML="<a style='cursor: poinetr;' onClick='document.getElementById(\"post-form\").style.display=\"block\"'><span>Быстрый ответ</span></a> "+name
}i++}}
</script>

Форма скрыта, кнопка Быстрый ответ находится рядом с кнопкой Ответить. При клике появится форма ответа.

+3

123

Реклама во втором посте. Duka


Скрипт писался мной исключительно для форума поддержки RusFF, но т.к. его уже расхватали с исходников, посмею выложить его сюда.

<script type="text/javascript">
var content="<center><a href='http://rusff.ru/new.php' target='_blank'><img src=http://i.rusff.ru/f/ru/rusff/rusff_banner_red1.gif></a></center>";
var namead="RusFF Agent";
var ava="<br /> Реклама";
var sup="Advert agent - block1";
var sub="Advert agent - block2";

var arr=document.getElementsByTagName("div")
i=0
while(arr[i] ){
if((arr[i].className=="post topicpost") || (arr[i].className=="post toppost") || (arr[i].className=="post topicpost endpost")){
name=arr[i].innerHTML
name=name.substring(0)
arr[i].innerHTML=name+"<div class=post><h3><span><strong>#</strong>"+sup+"</span></h3><div class=container><div class=post-author><ul><li class=pa-author><a href=javascript:to('Agent')>"+namead+"</a></li><li class=pa-avatar item2>"+ava+"</li></ul></div><div class=post-body><div class=post-box><div class=post-content><p>"+content+"</p></div></div></div><div class=post-links><ul><li>"+sub+"<span class=acchide>г</span></li></ul></div></div></div>"
}i++}
</script>

Надписи ставить свои.
Если виден всем - ставить в HTML-низ.
Пользователям - HTML в форме ответа
Скриншот
http://s44.radikal.ru/i104/0808/f8/aeded508e4e1t.jpg

0

124

Объявление.Подобие "Важной темы". Duka


Скрипт не выделяет тему и не делает ее Объявлением.
Он просто выводит ссылку на тему первым в списке тем в каждом разделе

<script type="text/javascript">
var isticky="Объявление"
var name_theme="Модульная панель"
var theme="http://support.rusff.ru/viewforum.php?id=40"
var author="Duka"
var arr=document.getElementsByTagName("tbody")
i=0
while(arr[i] ){
if((arr[i].className=="hasicon") && (document.URL.indexOf("viewforum.php")!=-1)){
name=arr[i].innerHTML
name=name.substring(0)
arr[i].innerHTML="<tr class=altstyle isticky><td class=tcl><div class=intd><div class=icon><!-- --></div></div><div class=tclcon><span class=acchide>1</span><span class=stickytext>"+isticky+": </span><a href="+theme+">"+name_theme+"</a><span class=byuser> "+author+"</span></div></td><td class=tc2>-</td><td class=tc3>-</td><td class=tcr><span class=byuser> "+author+"</span></td></tr>"+name;
}i++}
</script>

Жирное менять на свое.

Если виден всем - ставить в HTML-низ.
Пользователям - HTML в форме ответа
Скриншот
http://s57.radikal.ru/i157/0808/17/a2c365c21ffct.jpg

0

125

Информационная панель с данными пользователей. Duka


Наверняка вы видели такую штуку на форумах IPB, vBulletin и прочих.
Появляется блок с информацией: Ник, Имя, Аватар, Статус, Возраст, Дата рождения, уважение, позитив, время на форуме, дата регистрации и прочее.
Скрипт может неким образом заставить пользователя заполнить недостающие поля в профиле, иначе он будет лицезреть надписи вида "не поределено".
Пользователям показывает одну информацию, Гостям - другую.

<script type="text/javascript">
var mon_array = new Array("", "Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря");
Tm = new Date();
Tm.setTime(1000*UserRegistered);
m=Tm.getMonth()+1;
if (m<10) m=m;
hh=Tm.getHours();
mm=Tm.getMinutes()+'';
if (mm<10) mm=mm;
tm='<strong>'+Tm.getDate()+'&nbsp;'+mon_array[m]+'</strong>&nbsp;в&nbsp;<strong>'+hh+':'+mm+'</strong>';
var UserTotalReg = Math.floor(UserTotalTime/86400)
var UserTotalPost = Math.floor(UserPosts/60)
var sex_array = new Array("Пол неопределен. Войдите в <a href='/profile.php?section=personal&id="+UserID+"'>Профиль</a> и установите пол", "Ваш пол: <strong>Муж</strong>", "Ваш пол: <strong>Жен</strong>");
var sex = sex_array[UserSex]
if (UserAvatar == ""){UserAvatar = "http://s54.radikal.ru/i145/0808/84/e1fbc11ac605.png"}
if (UserBirthDate == ""){UserBirthDate = "Дата не выставлена"}
if (UserAge == "0"){UserAge = "[Нет сведений]"}
var user=", <strong>"+UserName+"</strong>";
if (user == ", <strong></strong>"){user = ""}
var arr=document.getElementsByTagName("div")
i=0
while(arr[i] ){
if(arr[i].id=="pun-main") {
name=arr[i].innerHTML
name=name.substring(0)
arr[i].innerHTML="<div class=category><h2>Информационное табло</h2><div class=container><table border=0><tr><td><a href='/profile.php?section=avatar&id="+UserID+"' title='Изменить аватару'><img src="+UserAvatar+"></a><br /><strong>"+UserTitle+"</strong></td><td width=40%>Приветствуем на форуме"+user+"!<br />"+sex+"<br />Вы используете стиль: <strong>"+BoardStyle+"</strong><br />Вы в группе  <strong>"+GroupTitle+"</strong><br />На форуме Вами было оставлено <strong>"+UserPosts+"</strong> сообщений<br />Ваш возраст: <strong>"+UserAge+"</strong>.<Br />Ваш день рождения: <strong>"+UserBirthDate+"</strong><br /><br />Профиль <a href='/profile.php?id="+UserID+"'>"+UserLogin+"</a> | Ваши <a href='/userlist.php?&show_group="+GroupID+"'>соучастники</a></td><td width=40%><strong>Отношения</strong><br /><br /><a href='/respect.php?id="+UserID+"'>Уважение</a>: <strong>"+UserRespectPlus+"</strong>/<strong>"+UserRespectMinus+"</strong><br /><a href='/positive.php?id="+UserID+"'>Позитив</a>: <strong>"+UserPositivePlus+"</strong>/<strong>"+UserPositiveMinus+"</strong><Br /><Br />Вы зарегистрировались "+tm+" и провели на форуме <strong>"+UserTotalReg+"</strong> дней</td></tr></table></div></div><br />"+name
}i++}
</script>
<script type="text/javascript">
var arr=document.getElementsByTagName("div")
i=0
str=document.URL
while(arr[i] ){
if(arr[i].id=="pun-main" && GroupID == "3") {
name=arr[i].innerHTML
name=name.substring(0)
arr[i].innerHTML="<div class=category><h2>Информационное табло</h2><div class=container><table border=0><tr><td><img src=http://s54.radikal.ru/i145/0808/84/e1fbc11ac605.png></td><td width=80%>Приветствуем тебя на форуме, Гость.<br />Для участия в конференциях просьба <a href='login.php'>войти</a> или <a href='register.php'>зарегистрироваться</a>.</td></tr></table></div></div><Br />"+name
}
i++
}
</script>

Менять в скрипте ничего не нужно. По желанию (опытным) можно изменить структуру вывода, все надписи, порядок и адреса картинки [нет_аватара]

Данный скрипт ставить в HTML-низ.
Со временем может случиться такое, что скрипт может не работать, в таком случае создайте тему на форуме с просьбой исправить. Это из-за исправления изменения вывода информации в джс.

Скриншоты?
Пользователям:
http://s50.radikal.ru/i129/0808/43/8b4c3383e761t.jpg
Гостям:
http://s55.radikal.ru/i147/0808/a4/ae0ba574fcd6t.jpg

+9

126

"Горячие клавиши". Duka


Простой скрипт быстрых клавиш.
Идея - Для общих вопросов..
По определенной комбинации клавиш вызывает определенную функцию.
Ctrl + b - добавляет теги [b.][/b.]
Ctrl + i - добавляет теги [i.][/i.]
Ctrl + s - добавляет теги [s.][/s.]
Ctrl + u - добавляет теги [u.][/u.]
Ctrl + Enter - Быстрая отправка сообщения.

Внимание! В некоторых браузерах вместе с функцией может вызвать свои браузерные функции.
К примеру, при комбинации Ctrl + s в Opera "Сохраняет документ".
Идей на другие комбинации у меня не хватило.

Код:
<script type="text/javascript">
document.onkeydown=function(e){
if (e) event=e
if ((event.keyCode==73)&&(event.ctrlKey)){
bbcode('[i]', '[/i]');
}
if ((event.keyCode==66)&&(event.ctrlKey)){
bbcode('[b]', '[/b]');
}
if ((event.keyCode==83)&&(event.ctrlKey)){
bbcode('[s]', '[/s]');
}
if ((event.keyCode==85)&&(event.ctrlKey)){
bbcode('[u]', '[/u]');
}
if ((event.keyCode==13)&&(event.ctrlKey)){
document.getElementById('post').submit.click();
}}
</script>

Отдельно ctrl+Enter(отправка сообщения)

Код:
<script type="text/javascript">
document.onkeydown=function(e){
if (e) event=e
if ((event.keyCode==13)&&(event.ctrlKey)){
document.getElementById('post').submit.click();
}}
</script>

Вставлять в HTML-в форме ответа
О всех неточностях сообщать в теме, ссылка на которую дана выше

+6

127

Цитирование с BB-кодами (Ответить автору). Duka


Скрипт позволит процитировать сообщение вместе с исходными BB-кодами. После клика на Ответить, произойдет редирект на страницу написания нового сообщения с полной цитатой выбранного Вами сообщения. Позволяет прокомментировать одного автора.

Код:
<script type="text/javascript">
var a=document.getElementsByTagName("a")
for (i = 0; i<a.length; i++){
   if(a[i].href.indexOf("post.php?tid=") != -1){
      t = a[i].href.substring(a[i].href.indexOf('=')+1)
   }
}
var m = new Array();
var z = new Array();
for (w = 0; w<a.length; w++){
   if(a[w].href.indexOf("#p") != -1){
        m[w] = a[w].href.substring(a[w].href.indexOf('#p')+2)
           for (e=0; e<w; e++){
              m.shift()
           }
	z.push(m[0])
   }
}
var c = new Array();
q=0
var arr=document.getElementsByTagName("li")
while(q<arr.length){
   if(arr[q].className=="pl-quote"){
        c.push(q)
   }
   q++
}
var cv = new Array ();
  for(y=0;y<c.length;y++){
    cv.push(y)
}
for(w=0; w<cv.length; w++){
	name=arr[c[w]].innerHTML
	arr[c[w]].innerHTML=name+" <a href='/post.php?tid="+t+"&qid="+z[w]+"' title='Ответить на сообщение'>Ответить</a> "; 
}
</script>

Скрипт ставить в HTML-в форме ответа

Стадия: Тестирование!

P.S.: Буду просить Максима добавить такую ссылку в сам движок

+3

128

BB-ссылка на тему. Duka


Очередная завалявшаяся безделушка...

<script type="text/javascript">
function ad(){
prompt('BB-код со страницей\n', '[*url=' + a + ']' + b + '[/url*]')
}
var a = document.URL
var b = document.title
var arr=document.getElementsByTagName("div")
i=0
while(arr[i] ){
if((arr[i].className=="postlink") && (document.URL.indexOf("viewtopic.php")!=-1)){
name=arr[i].innerHTML
arr[i].innerHTML="<a onclick=\"ad()\">Получить ссылку</a> "+name;
}i++}
</script>

Ско скринов все будет понятно.. на странице тем появляется ссыка, при нажатии на которую выскакивает окно с ВВ-кодом для вставки на любой другой форум..

УБРАТЬ КРАСНЫЕ ЗВЕЗДОЧКИ (***)

0

129

Тестирование прошло.
Модераторские теги

Модераторские теги. Duka


Думаю много слов употреблять не стоит)
http://i022.radikal.ru/0804/4f/a48e47179683.jpg

Скрипт тега предупреждения

Код:
[mod][/mod]

Модераторские теги.

Код:
<script>
function addMod(str,from,internal){
var pos=0,pos2=0,newpos=0
if((pos=str.indexOf("[mod]",from))==-1) return str;
if((pos2=str.indexOf("[/mod]"),pos+5)==-1) return str;
newpos=str.indexOf("[mod]",pos+5)
if(newpos<pos2 && newpos!=-1) str=addMod(str,pos+5,true)
if((pos2=str.indexOf("[/mod]",pos+5))==-1) return str;
str=str.substring(0,pos)+makeMod(str.substring(pos+5,pos2))+str.substring(pos2+6,str.length)
if( str.indexOf("[mod]")!=-1 && internal==false) str=addMod(str,0,false)
return str}

function makeMod(txt){
txt="<br><div style=\"margin: 0px; padding: 0px; background-color:#F1F1FD; border-left: 0px solid #6060FF; border-top: 0px dotted #000; border-right: 1px dotted #000; border-bottom: 1px dotted #000;\"><TABLE cellpadding='0' cellspacing='0'><TD align='middle' bgColor='#6060ff' vAlign='center' width='8%'><FONT color='#ffffff' size='+3' style='FONT-FAMILY: Times' title='Предупреждение'><B>&nbsp;i&nbsp;</B></FONT></TD></TD><TD vAlign='middle'>"+txt+"</TD></TABLE></div><br>"
return txt}


if(document.URL.indexOf("viewtopic.php")!=-1){
elm=document.getElementById("pun-main").getElementsByTagName("div")
for(x in elm) if(elm[x].className=="post-content"){
var post=elm[x]
post.innerHTML=addMod(post.innerHTML,0,false)}}
</script>

Скрипт тега нарушения

Код:
[ex][/ex]
Код:
<script>
function addEx(str,from,internal){
var pos=0,pos2=0,newpos=0
if((pos=str.indexOf("[ex]",from))==-1) return str;
if((pos2=str.indexOf("[/ex]"),pos+4)==-1) return str;
newpos=str.indexOf("[ex]",pos+4)
if(newpos<pos2 && newpos!=-1) str=addEx(str,pos+4,true)
if((pos2=str.indexOf("[/ex]",pos+4))==-1) return str;
str=str.substring(0,pos)+makeEx(str.substring(pos+4,pos2))+str.substring(pos2+5,str.length)
if( str.indexOf("[ex]")!=-1 && internal==false) str=addEx(str,0,false)
return str}

function makeEx(txt){
txt="<br><div style=\"margin: 0px; padding: 0px; background-color:#FEF2F2; border-left: 1px solid #FF6060; border-top: 1px dotted #000; border-right: 1px dotted #000; border-bottom: 1px dotted #000;\"><TABLE cellpadding='0' cellspacing='0'><TD align='middle' bgColor='#ff6060' vAlign='center' width='8%'><FONT color='#ffffff' size='+3' style='FONT-FAMILY: Times' title='Грубое нарушение'><B>&nbsp;!&nbsp;</B></FONT></TD></TD><TD vAlign='middle'>"+txt+"</TD></TABLE></div><br>"
return txt}


if(document.URL.indexOf("viewtopic.php")!=-1){
elm=document.getElementById("pun-main").getElementsByTagName("div")
for(x in elm) if(elm[x].className=="post-content"){
var post=elm[x]
post.innerHTML=addEx(post.innerHTML,0,false)}}
</script>

Оптимальнее всего ставить в форму ответа, тогда скрипты будут срабатывать быстрее, чем загрузится страница с остальными скриптами, но гости не будут видеть эффекта. Можно поставить и в html-низ.

Добавлено:Кнопки в форму ответа (Доступны только Администраторам и модераторам)
Для предупреждения

Код:
<style>
#button-mod {background-image:url('http://i029.radikal.ru/0804/26/e430252a0faf.png'); padding:0; line-height:0; background-position:center; background-repeat:no-repeat; height:26px; width:100%}
</style>
<script type="text/javascript">
if((document.getElementById("navadmin")) && (form=document.getElementById("form-buttons")))
form.getElementsByTagName("tr")[0].insertCell(18).innerHTML="<img src='/i/blank.gif' title='Предупреждение' id='button-mod'  onclick=\"bbcode('[mod]', '[/mod]');\"/>"
</script>

Для нарушения

Код:
<style>
#button-ex {background-image:url('http://i007.radikal.ru/0804/c8/e7c48348a35e.png'); padding:0; line-height:0; background-position:center; background-repeat:no-repeat; height:26px; width:100%}
</style>
<script type="text/javascript">
if((document.getElementById("navadmin")) && (form=document.getElementById("form-buttons")))
form.getElementsByTagName("tr")[0].insertCell(18).innerHTML="<img src='/i/blank.gif' title='Предупреждение' id='button-ex'  onclick=\"bbcode('[ex]', '[/ex]');\"/>"
</script>

Версия 2.
http://i031.radikal.ru/0804/6a/2507087f8335.bmp
Вторая версия самого скрипта:
Уведомление

Код:
<script>
function addMod(str,from,internal){
var pos=0,pos2=0,newpos=0
if((pos=str.indexOf("[mod]",from))==-1) return str;
if((pos2=str.indexOf("[/mod]"),pos+5)==-1) return str;
newpos=str.indexOf("[mod]",pos+5)
if(newpos<pos2 && newpos!=-1) str=addMod(str,pos+5,true)
if((pos2=str.indexOf("[/mod]",pos+5))==-1) return str;
str=str.substring(0,pos)+makeMod(str.substring(pos+5,pos2))+str.substring(pos2+6,str.length)
if( str.indexOf("[mod]")!=-1 && internal==false) str=addMod(str,0,false)
return str}

function makeMod(txt){
txt="<br><div style='width:100%;'><div style='border: 1px solid #0084FF;border-left: 4px solid #0084FF;color: #000;border-bottom: 0;font-size: 10px;line-height: 40px;padding-left:10px;vertical-align: middle;'>Сообщение от модератора</div><div style='background: #FAFCFE;border: 1px solid #0084FF;border-left: 4px solid #0084FF;border-top: 0;color: #0084FF;font-weight: bold;padding: 4px;'>"+txt+"</div></div><br>"
return txt}


if(document.URL.indexOf("viewtopic.php")!=-1){
elm=document.getElementById("pun-main").getElementsByTagName("div")
for(x in elm) if(elm[x].className=="post-content"){
var post=elm[x]
post.innerHTML=addMod(post.innerHTML,0,false)}}
</script>

Предупреждение

Код:
<script>
function addEx(str,from,internal){
var pos=0,pos2=0,newpos=0
if((pos=str.indexOf("[ex]",from))==-1) return str;
if((pos2=str.indexOf("[/ex]"),pos+4)==-1) return str;
newpos=str.indexOf("[ex]",pos+4)
if(newpos<pos2 && newpos!=-1) str=addEx(str,pos+4,true)
if((pos2=str.indexOf("[/ex]",pos+4))==-1) return str;
str=str.substring(0,pos)+makeEx(str.substring(pos+4,pos2))+str.substring(pos2+5,str.length)
if( str.indexOf("[ex]")!=-1 && internal==false) str=addEx(str,0,false)
return str}

function makeEx(txt){
txt="<br><br><div style='width:100%;'><div style='border: 1px solid red;border-left: 4px solid red;color: #000;border-bottom: 0;font-size: 10px;line-height: 40px;padding-left:10px;vertical-align: middle;'>Строгое предупреждение от модератора</div><div style='background: #FAFCFE;border: 1px solid red;border-left: 4px solid red;border-top: 0;color: red;font-weight: bold;padding: 4px;'>"+txt+"</div></div><br><br>"
return txt}


if(document.URL.indexOf("viewtopic.php")!=-1){
elm=document.getElementById("pun-main").getElementsByTagName("div")
for(x in elm) if(elm[x].className=="post-content"){
var post=elm[x]
post.innerHTML=addEx(post.innerHTML,0,false)}}
</script>

+1

130

По многочисленным просьбам.

Замена + и - в уважении под подписью. Duka


Ставить в хтмл-низ или форму ответа

<script type="text/javascript">
var a = document.getElementsByTagName("a")
for (i=0; i<a.length; i++){
if(a[i].title == "Позитивное сообщение"){
    a[i].innerHTML = '<img src="КАРТИНКА+" title="+" />'
}
if(a[i].title == "Негативное сообщение"){
    a[i].innerHTML = '<img src="КАРТИНКА-" title="-" />'
}
}
</script>

Под аватарой

<script type="text/javascript">
var img = document.getElementsByTagName("img")
for (i=0; i<img.length; i++){
if(img[i].alt == "+") img[i].src = "КАРТИНКА+"
if(img[i].alt == "-") img[i].src = "КАРТИНКА-"
}
</script>

+1

131

Обзор категорий. аналог IPB. Duka

Имхо, как по мне, так скрипт бесполезен.
Ктото просил, и уже давно.
Кликая на название категории, мы попадаем на страницу списка форумов именно этой категории.
Ставить сие в html-низ.

<script type="text/javascript">
str = document.URL
var cati = str.substring(str.indexOf("wcategory=")+10);
if(str.indexOf("?showcategory=")!=-1 || str.indexOf("index.php?showcategory=")!=-1)
{
var cat = document.getElementsByTagName("div")
for(i=0; i<cat.length; i++)
{
    if(cat[i].id.indexOf("pun-category")!=-1)
    {
    var cat_id = cat[i].id.substring(cat[i].id.indexOf("y")+1, cat[i].id.length)
    document.getElementById("pun-category"+cat_id).style.display = "none"
    }
}
document.getElementById("pun-category"+cati).style.display = "block"
}
var catq = document.getElementsByClassName("catleft")

for(q=0;q<catq.length; q++){
var w = q+1
catq[q].nextSibling.innerHTML="<a href='index.php?showcategory="+w+"'>"+catq[q].nextSibling.innerHTML+"</a>"
}
</script>

+1

132

Быстрый поиск на странице создания тем. Duka


Данный пример можно увидеть на данном форуме.
При создании темы под полем "Заголовок" появляется список наиболее запрашиваемых поисковых запросов, котрые вы составите сами.
При выборе произойдет поиск сообщений (а не тем), где встречается данная фраза.

<script type="text/javascript">
var type="posts"
// or topics
var masslist = "";
var mass = new Array("бэкап", "партнерство", "Дополнительные смайлики", "Недоступен форум", "DNS", "не работает скрипт", "Фон", "сделать стиль", "пропал форум", "партнерство", "шапка")
for (q=0; q<mass.length; q++){
masslist += ", <a href='javascript:void(0)' onclick='f_search(\"" + mass[q] + "\")'>" + mass[q] + "</a>";
}
var p = document.getElementsByTagName("p");
if(document.URL.indexOf("post.php?fid=") != -1){
  for(i=0; i<p.length; i++){
    if(p[i].className=="inputfield required longinput"){
      p[i].innerHTML += "Рекомендуем к поиску: <a href='javascript:void(0)' onclick='f_search(\"поиск\")'>поиск</a>"+masslist;
    }
  }
}
function f_search(qe){
word =  prompt("Введите ключевую фразу для поиска", qe)
if(word){
document.location.href = "http://forum.mybb.ru/search.php?action=search&keywords="+word+"&author=&forum=-1&search_in=all&sort_by=0&sort_dir=DESC&show_as="+type;
}
}
</script>

В переменной type можно указать 2 значения:  posts или topics. При использовании первого, результат будет выводиться в виде сообщений, в которых встречается поисковая фраза. При выборе второй - список тем.

В красной строчке через запятую указать ваши поисковые фразы.

Скрипт ставить в HTML-низ

+1

133

Дополнение в статистику. Duka


Сделал скрипт, начало которого увидел на форуме поддержки 0пк.ру от KAFLAN.
Добавит в статистику число разделов и категорий.

Код:
<script>
var num_f = 0;
var num_c = 0;
var tr = document.getElementsByTagName("tr")
for(i=0;i<tr.length;i++){
	if(tr[i].id.indexOf("forum_f")!=-1){
num_f++
	}
}
var div = document.getElementsByTagName("div")
for(q=0;q<div.length;q++){
	if(div[q].id.indexOf("pun-category")!=-1){
num_c++
	}
}
var v = document.getElementById('onlinelist');
v = v.parentNode.firstChild;
if (!v.innerHTML)
    v = v.nextSibling;
v.innerHTML = '<span>Всего форумов: </span><b>'+num_f+'</b><br /><span>Всего категорий: </span><b>'+num_c+'</b><br />' + v.innerHTML;
</script>

Добавлено:Если есть скрытые разделы, а на странице не соответствует число показанныз разделов и кол-во разделов в статистике, поставьте num_f = -1, если вы хотите убавить чифру в статистике на один раздел. num_f = -3, если у вас 3 скрытых раздела. и так далее

+2

134

Шкала активности. Duka

Один из способов применения.
Создаете группу Новенькие. Устанавливаете значение "Переместить в группу" активные при наобре 100 сообщений.
Ставите скрипт в хтмл в форме ответа.
Под кол-вом сообщений пользователя выведется Процент его активности.
При наобре 100% его форум переведет его в группу Активные.

<script type="text/javascript">
var countMessages = 100;
var li = document.getElementsByClassName("pa-posts")
for(i=0;i<li.length;i++){
var li_nim = li[i].innerHTML.substring(11);
li[i].innerHTML+="<br />Активность: "+percentage(li_nim, countMessages)
}
function percentage(num, count){
if(num < count){
return Math.round(100*num/count)+"%"
}
else return "100%. Активный пользователь"
}
</script>

СКРИНШОТ

+1

135

Новый скрипт смайлов. Duka


Зачем он? ведь и так много подобных скриптов? Ответ просто - тяжело найти чтото рабочее.
Чем этот скрипт отличается от других? Тем, что он заменяет/добавляет смайлики в блоке стандартных смайликов.

Код:
<script type="text/javascript">
var smileDiv = document.getElementById("smilies-block");
if(smileDiv)
{
var smileItem = new Array();
smileItem.push('http://s41.radikal.ru/i092/0810/20/1acb9975a250.gif');
smileItem.push('http://s41.radikal.ru/i092/0810/20/1acb9975a250.gif');

for (i=0; i<smileItem.length; i++){
smileDiv.innerHTML+='<img src="'+smileItem[i]+'" alt=":rusff:" onclick="smile(\'[img]'+smileItem[i]+'[/img]\')" />';
}
}
</script>

Скрипт ставим в HTML форму ответа.

smileItem.push('http://s41.radikal.ru/i092/0810/20/1acb9975a250.gif');
Дублируем столько, сколько нужно добавить смайликов.
Ваши смайлики добавятся в блок общих смайликов.

Как убрать все стандартные смайлики и добавить своих?
Найти в скрипте

var smileDiv = document.getElementById("smilies-block");

и после этого добавить

smileDiv.innerHTML="";

Для партнеров
Вы можете использовать первый вариант для добавления именных смайликов сервиса в блок стандартных смайлов.

ИСПРАВЛЕНО

+4

136

Кубики (Дайсы). Duka

Скрипт позволит "кидать кубики" прямо на форуме.
Полезно для ролевых форумов.

Ставить в HTML в форме ответа

Вариант 1.

Код:
<input type="button" onclick="dice()" value="Кинуть кубики" />
<script type="text/javascript">
function dice()
{
	var FoundErrors = '';
	var diceRes=""
	var CountCube = prompt("Количество кубиков", "3");
	var SideCube = prompt("Сколько граней у кубика?", "6");
	if(CountCube>9){
	alert("Нельзя бросать столько кубиков"); 
	return false;}
	if(SideCube>9){
	alert("Не бывает таких кубиков"); 
	return false;}
	if (!CountCube)
	{return false;}
	if (!SideCube)
	{return false;}
	for(i=0; i<CountCube;i++){
	var dice = (Math.round(Math.random()*SideCube))
	if(dice==0) dice=1;
	diceRes += dice*1936+"-"
	}
	smile('[dice='+diceRes+CountCube+SideCube+']')
}
</script>
<script>
function addDice(str,from,internal){
var pos=0,pos2=0,newpos=0
if((pos=str.indexOf("[dice=",from))==-1) return str;
if((pos2=str.indexOf("]"),pos+6)==-1) return str;
newpos=str.indexOf("]",pos+6)
if(newpos<pos2 && newpos!=-1) str=addDice(str,pos+6,true)
if((pos2=str.indexOf("]",pos+6))==-1) return str;
str=str.substring(0,pos)+makeDice(str.substring(pos+6,pos2))+str.substring(pos2+1,str.length)
if( str.indexOf("[dice=")!=-1 && internal==false) str=addDice(str,0,false)
return str}

function makeDice(dice){
diceMass = dice.split("-")
diceC = dice.substring(dice.length-2, dice.length-1)
diceS = dice.substring(dice.length-1, dice.length)
var diceR=0, diceRu="";
for(i=0;i<diceMass.length-1;i++){diceR+=diceMass[i]/1936;}
for(i=0;i<diceMass.length-1;i++){if(diceMass[i]==diceMass[diceMass.length-2]){diceRu+=diceMass[i]/1936;}else{diceRu+=parseInt(diceMass[i]/1936)+"+";}}
txt="<div class=\"quote-box\"><blockquote><p><b>Количество кубиков</b>: "+diceC+"<br /><b>Граней в кубике</b>: "+diceS+"<br /><br /><b>Результаты броска</b>: ("+diceRu+")="+diceR+"</p></blockquote></div>"
return txt}

if(document.URL.indexOf("viewtopic.php")!=-1){
elm=document.getElementById("pun-main").getElementsByTagName("div")
for(x in elm) if(elm[x].className=="post-content"){
var post=elm[x]
post.innerHTML=addDice(post.innerHTML,0,false)}}
</script>

Вариант 2.

Код:
<input type="button" onclick="dice()" value="Кинуть кубики" />
<script type="text/javascript">
function dice()
{
	var FoundErrors = '';
	var diceRes=""
	var CountCube = prompt("Количество кубиков", "3");
	var SideCube = prompt("Сколько граней у кубика?", "6");
	if(CountCube>9){
	alert("Нельзя бросать столько кубиков"); 
	return false;}
	if(SideCube>9){
	alert("Не бывает таких кубиков"); 
	return false;}
	if (!CountCube)
	{return false;}
	if (!SideCube)
	{return false;}
	for(i=0; i<CountCube;i++){
	var dice = (Math.round(Math.random()*SideCube))
	if(dice==0) dice=1;
	diceRes += dice*1936+"-"
	}
	smile('[dice='+diceRes+CountCube+SideCube+']')
}
</script>
<script>
function addDice(str,from,internal){
var pos=0,pos2=0,newpos=0
if((pos=str.indexOf("[dice=",from))==-1) return str;
if((pos2=str.indexOf("]"),pos+6)==-1) return str;
newpos=str.indexOf("]",pos+6)
if(newpos<pos2 && newpos!=-1) str=addDice(str,pos+6,true)
if((pos2=str.indexOf("]",pos+6))==-1) return str;
str=str.substring(0,pos)+makeDice(str.substring(pos+6,pos2))+str.substring(pos2+1,str.length)
if( str.indexOf("[dice=")!=-1 && internal==false) str=addDice(str,0,false)
return str}

function makeDice(dice){
diceMass = dice.split("-")
diceC = dice.substring(dice.length-2, dice.length-1)
diceS = dice.substring(dice.length-1, dice.length)
var diceR=0, diceRu="";
for(i=0;i<diceMass.length-1;i++){diceR+=diceMass[i]/1936;}
for(i=0;i<diceMass.length-1;i++){if(diceMass[i]==diceMass[diceMass.length-2]){diceRu+=diceMass[i]/1936;}else{diceRu+=parseInt(diceMass[i]/1936)+"+";}}
txt="<div class=\"quote-box\"><blockquote><p><b>Исходный бросок</b>: "+diceC+"d"+diceS+"<br /><br /><b>Результаты броска</b>: ("+diceRu+")="+diceR+"</p></blockquote></div>"
return txt}

if(document.URL.indexOf("viewtopic.php")!=-1){
elm=document.getElementById("pun-main").getElementsByTagName("div")
for(x in elm) if(elm[x].className=="post-content"){
var post=elm[x]
post.innerHTML=addDice(post.innerHTML,0,false)}}
</script>

Описание, скриншоты и поддержка - Скрипт бросков кубика d6

Добавлено:Добавил ограничение в количестве граней и кубиков. 10 максимум

+3

137

Поиск тем (Псевдоаякс). Duka

Данный скрипт поместит кнопочку "Поиск схожих тем" под полем "Заголовок" на странице создания тем.
Люди вводят Название темы и могут сразу проверить наличие подобной на данном форуме без перезагрузки страницы.

Код:
<script type="text/javascript">
var p = document.getElementsByTagName("p");
if(document.URL.indexOf("post.php?fid=") != -1){
  for(i=0; i<p.length; i++){
    if(p[i].className=="inputfield required longinput"){
      p[i].innerHTML += "<input class='button' type='button' value='Поиск схожих тем' onclick='StartSearch()' style='width: 150px;' /><iframe frameborder=0 name='searchFrame' id='searchFrameId' width='100%' height='300px' src='' style='display: none; border: 1px solid #000; width: 99%;'></iframe>";
    }
  }
}
function StartSearch(){
var word=document.getElementById("fld3").value
document.getElementById("searchFrameId").style.display=''
parent.frames['searchFrame'].document.location.href='search.php?action=search&keywords='+word+'&author=&forum=-1&search_in=all&sort_by=0&sort_dir=DESC&show_as=topics&searchajax=1#searchajax'
}
if(document.URL.indexOf("#searchajax")!=-1){
document.write('<style type="text/css">#pun-navlinks, #pun-ulinks, #pun-announcement, #pun-status, #pun-crumbs1, #pun-crumbs2, #pun-about, #html-footer, #pun-break1, #pun-break3, #pun-break4 {display: none;}</style>');
var puntitle = document.getElementById('pun-title');
puntitle.parentNode.removeChild(puntitle);
var a = document.getElementsByTagName("a")
for(q=0; q<a.length; q++){
	a[q].target="_parent"
}
}
</script>

Данный скрипт помещать строго в HTML - низ!

P.S.: Скрипт очень полезный

Исправлен недочет!

+2

138

Всплывающее описание раздела. Duka


Еще одна безделушка %)
Сделает вот так:
http://s1.ipicture.ru/uploads/081025/e10I42d3o4.jpg
При наведени курсора на значок [?] покажет описание раздела.

<script type="text/javascript">
var a = document.getElementsByTagName("a")
for(i=0; i<a.length-1;i++){
if(a[i].href.indexOf("/viewforum.php?id=")!=-1){
    if(a[i].parentNode.parentNode.innerHTML.substring(a[i].parentNode.parentNode.innerHTML.toLowerCase().indexOf('</h3>')+5).length > 0)
    a[i].parentNode.innerHTML+=" <a title='"+a[i].parentNode.parentNode.innerHTML.substring(a[i].parentNode.parentNode.innerHTML.toLowerCase().indexOf('</h3>')+5)+"'>[?]</a>"
    a[i].parentNode.parentNode.innerHTML = a[i].parentNode.parentNode.innerHTML.substring(0, a[i].parentNode.parentNode.innerHTML.toLowerCase().indexOf("</h3>")+5)
}
}

</script>

Ставим в HTML-низ

+2

139

Система предупреждений на форум (Псевдоаякс). Duka

В общем, сделал еще один скрипт, полезный он или нет судить вам.
Что он делает?
А ничего. кроме автоматизации выставления предупреждений он особо и не делает.
Что делаем?
Создаем дополнительное поле с названием Предупреждения, длина текста - 3. Сообщения - Да. Профиль - Нет. Регистрация - Нет. Заполнение - Нет.
Далее запоминаем порядковый номер поля и меняем в скрипте красную жирную тройку на ваш номер.
Ставим скрипт в HTML-низ.
Что будет?
Под аватарой в строчке Предупреждение появится текущее значение, а так же 2 кнопки + и -, добавляющие и удаляющие 10 процентов соответственно.
Если поля у пользователя нет, а есть необходимость выставитьп редупреждение, идем к нему в профиль и ручками прописываем в графу Предупреждение иферку 0 (ноль) без каких-либо посторонних символов и пробелов. Все, теперь смело давим на +10 в его сообщении. При нажатии выскочит уведомление. подождав еще секунд 2-5 (взависимости от скорости интернета), можете выставлять/снимать предупреждение другому пользователю. Плюсы и Минусы под аватарой видят только Администраторы и Модераторы

<iframe name="AddVote" width="0" height="0"></iframe>
<script type="text/javascript">
if(GroupID==1 || GroupID==2){
var dib = document.getElementsByTagName("li")
var ids = new Array();
var p = 0;
var typeDesc;
for(q=0;q<dib.length-1;q++)
{
if(dib[q].className.indexOf("pl-email")!=-1)
{
    if(dib[q].innerHTML.indexOf("profile.php?id=")!=-1)
    {
    ids.push(dib[q].innerHTML.substring(dib[q].innerHTML.indexOf("?id=")+4, dib[q].innerHTML.indexOf("\">П")))
    }
}
}

for(i=0;i<dib.length-1;i++)
{
if(dib[i].className=="pa-fld3")
{
    dib[i].innerHTML+="%(<a target='AddVote' href='profile.php?section=fields&id="+ids[p]+"&type=plu#addVote' onclick='response(\"plu\")'>+10</a>/<a target='AddVote' href='profile.php?section=fields&id="+ids[p]+"&type=minus#addVote' onclick='response(\"minus\")'>-10</a>)"
    p++
}
}

function response(type){
if(type=='plu')typeDesc="повышен"
else if(type=="minus")typeDesc="понижен"
alert('Уровень предупреждения '+typeDesc+' на 10%')
}

if(document.URL.indexOf("#addVote")!=-1)
{
var type=document.URL.substring(document.URL.indexOf("&type=")+6, document.URL.length-8)
var d = document.getElementsByName("form[fld3]")[0]
if(type=='plu')d.value = parseInt(d.value)+10
else if(type=="minus")d.value = parseInt(d.value)-10
document.getElementsByName("update")[0].click()
}
}
</script>

0

140

Убираем название дополнительного поля в темах. Duka


Уберет название поля в сообщениях. К примеру, убрать надпись "Предупреждения" или "Награды" с правом отображения самих предупреждений или наград

<script type="text/javascript">
var fld = document.getElementsByClassName("pa-fld1")
for(i=0;i<fld.length;i++){
fld[i].innerHTML=fld[i].innerHTML.substring(fld[i].innerHTML.indexOf(":")+1)
}
</script>

Красная циферка - номер вашего поля
В HTML-низ или форму ответа(у гостей не сработает)

+1


Вы здесь » Единый форум поддержки » Архив » Новые возможности форума - скрипты