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

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

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


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


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

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

141

Изменить информацию при регистрации. Duka


http://img17.myimg.de/ghjgjgj419f8.jpg

<script type="text/javascript">
if(document.URL.indexOf("register.php")!=-1){
var div = document.getElementsByClassName("info-box")
div[0].innerHTML = "блаблаблаблаблаблаблаблабла"
}
</script>

0

142

Описание категорий. Duka

<script type="text/javascript">
makeDescription(1, "Описание первой категории")
makeDescription(2, "..второй категории")

function makeDescription(id, txt){
var div = document.getElementsByClassName("catleft")
var idN = id-1;
div[idN].nextSibling.innerHTML+="<br /><small>"+txt+"</small>"
}
</script>

+1

143

Подсвечиваем разделы при наведении мышью. Duka

<script type="text/javascript">
var td = document.getElementsByClassName("tcl")
for(i=0;i<td.length;i++){
td[i].setAttribute("onmouseover", "this.style.backgroundColor='red'")
td[i].setAttribute("onmouseout", "this.style.backgroundColor=''")
}
</script>

red - нужный цвет

Второй способ. Стилем. От Пети (Матрикса)

<style type="text/css">
td.tcl:hover {background: #ccc !important;}
</style>

+1

144

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

http://s1.ipicture.ru/uploads/090111/29129/GIzd46Br9r.png

- Применяется во всех разделах на главной странице
- Каждая картинка ведет к созданию темы и опроса в разделе, в котором она отображается
- Не показывается гостям
- Если раздел - "Переадресация" - кнопки показываться не будут

Код:
<script type="text/javascript">
if(GroupID!=3){
var div = document.getElementsByTagName("div")
var a;
for(r=0; r<div.length; r++){
	if(div[r].className=="tclcon")
	{
a = div[r].getElementsByTagName("h3")[0].getElementsByTagName("a")[0]
if(!isNaN(a.href.substring(a.href.indexOf("id=")+3))){
div[r].innerHTML+="<div style=\"float: right;\"><a title=\"Новая тема\" href=\"/post.php?fid="+a.href.substring(a.href.indexOf("id=")+3)+"\"><img src=\"https://forumupload.ru/uploads/0003/ac/ce/6753-2.gif\" alt=\"+\" /></a>&nbsp;<a title=\"Новый опрос\" href=\"/poll.php?fid="+a.href.substring(a.href.indexOf("id=")+3)+"\"><img src=\"https://forumupload.ru/uploads/0003/ac/ce/6753-1.gif\" alt=\"+\" /></a></div>"
}
	}
}
}
</script>

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

+3

145

Модификация скрытого текста. Duka


Данный скрипт увеличивает возможности стандартного "скрытого текста".

Возможности использования по нескольким условиям:
• количеству репутации(уважения);
• количеству позитива;
• сообщение для группы;
• сообщение для пользователя;
• ограничение по возрасту.

Смело ставим в HTML-в форме ответа. Если планируется использовать в закрытых темах -> HTML-низ.

Как работает?
Используем стандартный хайд https://forum.mybb.ru/i/lock.png, в теле хайда, в самом начале, пишем одно из следующих условий
user=56; //Для пользователя с id=56 (смотреть ссылку профиля)
group=3; //Для группы. id смотреть в параметре show_group= в адресной строке при выборе группы на странице Участники
respect=50; //Для пользователей, у которых суммарное уважение(+/-) больше 50
positive=20; //Для пользователей, у которых суммарный позитив(+/-) больше 20
age=18; //Для пользователей старше 18 лет
Например,

Код:
[hide]group=2; Сообщение модераторам...[/hide]

Вместе с условием по количеству сообщений

Код:
[hide=20]group=2; Сообщение модераторам, набравшие 20 сообщений...[/hide]

Скриншоты:
Для пользователя
Для группы
По уважению
По позитиву
По возрасту

Сам скрипт

Код:
<script type="text/javascript">
var quote = document.getElementsByTagName("blockquote")
var n, condition;
var typet = new Array("respect", "group", "positive", "user", "age");
var typer = new Array((UserRespectPlus-UserRespectMinus).toString(), (GroupID).toString(), (UserPositivePlus-UserPositiveMinus).toString(), (UserID).toString(), (UserAge).toString());
for(q=0;q<typet.length;q++){
for(i=0;i<quote.length;i++){
if(quote[i].previousSibling.innerHTML.indexOf("Скрытый текст")!=-1){
if(quote[i].innerHTML.indexOf(typet[q]+"=")!=-1){
n=parseInt(quote[i].innerHTML.substring(quote[i].innerHTML.indexOf(typet[q]+"=")+(typet[q].length+1), quote[i].innerHTML.indexOf(";")))
if(isNaN(n)==false){
if(q==0){condition = parseInt(typer[0]) < n;}
else if(q==1){condition = parseInt(typer[1]) != n;}
else if(q==2){condition = parseInt(typer[2]) < n;}
else if(q==3){condition = parseInt(typer[3]) != n;}
else if(q==4){condition = parseInt(typer[4]) < n;}
	if(condition){
if(q==0){
	quote[i].innerHTML="Для просмотра скрытого текста нужно иметь "+n+" очков репутации. Осталось набрать "+(n-parseInt(typer[q]))
}else if(q==1){
	quote[i].innerHTML="Вашей группе запрещено просматривать данное сообщение"
}else if(q==2){
	quote[i].innerHTML="Для просмотра скрытого текста нужно иметь "+n+" очков позитива. Осталось набрать "+(n-parseInt(typer[q]))
}else if(q==3){
	quote[i].innerHTML="Данный текст предназначен для <a href='profile.php?id="+n+"'>этого</a> пользователя."
}else if(q==4){
	quote[i].innerHTML="Вам должно испольниться "+n+" лет(года)."
}
	} else {
quote[i].innerHTML=quote[i].innerHTML.substring(quote[i].innerHTML.indexOf(typet[q]+"="+n+";")+((typet[q].length+2)+n.toString().length))
	}
}
}
}
}
}
</script>

Скрипт на данный момент не умеет совмещать в себе несколько условий разом, так что скрещивать хайды не имеет смысла :)

+6

146

Новое цветовыделение...Duka

<script type="text/javascript">
inColor("red", new Array("Duka", "Admin"))
inColor("blue", new Array("AmiRa", "Impuls 101"))
inColor("green", new Array("likka"))
inColor("gray", new Array("rps"))
inColor("yellow", new Array("Шмель", "Изя", "DART"))

function inColor(color, myarray){
var a=document.links
for(i=0;i<a.length;i++){
for(q=0;q<myarray.length;q++){
if(a[i].innerHTML==myarray[q]){
a[i].innerHTML="<span style=\"color: "+color+";\">"+myarray[q]+"</span>"
}}}}
</script>

Копируем то, что выделенно курсивом столько, сколько нужно

+5

147

Возможность редактирования только последнего сообщения. KAFLAN

Скрипт оставляет у пользователей кнопку "редактировать" только для последнего сообщения.
У модераторов и администраторов кнопка остается.

Код:
<script>
document.getElementsByClassName = function(clsName){
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++){
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
    return retVal;
}

if (GroupID && GroupID >= 4)
{
   var arr = document.getElementsByClassName('pl-edit');

   if (arr && arr.length > 1)
   {

      for (var i = 0; i < arr.length - 1; i++)
      {
         arr[i].innerHTML = '';
      }
   }

}
</script>

Вставлять в HTML - низ или HTML - в форме ответа

+1

148

Возможность удаления только последнего сообщения. Impuls 101 (по аналогии KAFLAN)

Скрипт оставляет у пользователей кнопку "удалить" только для последнего сообщения.
У модераторов и администраторов кнопка остается.

Код:
<script>
document.getElementsByClassName = function(clsName){
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++){
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
    return retVal;
}

if (GroupID && GroupID >= 4)
{
   var arr = document.getElementsByClassName('pl-delete');

   if (arr && arr.length > 1)
   {

      for (var i = 0; i < arr.length - 1; i++)
      {
         arr[i].innerHTML = '';
      }
   }

}
</script>

Вставлять в HTML - низ или HTML - в форме ответа

+1

149

Превью стилей. Для дизайн-форумов. Duka


Объяснять нечего. Те, кто просил, поймут для чего это

<script type="text/javascript">
function vzstyle(value){
var tag = document.getElementsByTagName("link")
for(z=0;z<tag.length;z++){
if(tag[z].rel=="stylesheet"){
    tag[z].href=value
    break;
}
}
}
</script>
<select name="sel">
<option value="http://support.rusff.ru/style/RusFF_Classic/RusFF_Classic.css">RusFF_Classic</option>
<option value="http://support.rusff.ru/style/RusFF_FunZone/RusFF_FunZone.css">RusFF_FunZone</option>
<option value="http://support.rusff.ru/style/RusFF_DeathNote/RusFF_DeathNote.css">RusFF_DeathNote</option>
</select>
<input type="button" class="button" onclick="vzstyle(document.getElementsByName('sel')[0].value)" value="ОК" />

Выделенную курсивом строчку копируем. В параметре value вписывать ссылку на файл стиля .css (в файле .css уже должна быть ссылка на _cs.css)

0

150

Цветовыделение тем. Duka


Накалякал скрипт.
Когда будете начинать новую тему, справа от Заголовка будет выпадающее меню с цветами.
Если выбрать любой цвет, то на странице списка тем ваша тема будет выделена любым цветом

Код:
<script type="text/javascript">
if(document.URL.indexOf("viewforum.php")!=-1){
var a = document.getElementsByTagName("a");
var ins, col;
for( i=0; i<a.length; i++ ){
	if(a[i].href.indexOf("viewtopic.php")!=-1 && a[i].innerHTML.indexOf(";;")!=-1){
ins = a[i].innerHTML;
col = ins.substring(0, ins.indexOf(";;"))
txt = ins.substring(ins.indexOf(";;")+2)
a[i].innerHTML = "<span style=\"color: "+col+"\">"+txt+"</span>";
	}
}
} else if(document.URL.indexOf("viewtopic.php")!=-1){
var p = document.getElementsByTagName("p");
if(document.title.indexOf(";;")!=-1){
	document.title = document.title.substring(0, document.title.indexOf(" - ")+3)+document.title.substring(document.title.indexOf(";;")+2)
}
for( q=0; q<p.length; q++ ){
	if(p[q].className=="container crumbs" && p[q].innerHTML.indexOf(";;")!=-1){
p[q].innerHTML = p[q].innerHTML.substring(0, p[q].innerHTML.lastIndexOf("»")+1)+" "+p[q].innerHTML.substring(p[q].innerHTML.indexOf(";;")+2)
	}
}
} else if(document.URL.indexOf("post.php?fid=")!=-1 && GroupID<=2){
var colors = new Array();
colors.push(new Array('Красный', 'red'));
colors.push(new Array('Черный', 'black'));
colors.push(new Array('Желтый', 'yellow'));
colors.push(new Array('Оранжевый', 'orange'));
colors.push(new Array('Синий', 'blue'));
colors.push(new Array('Зеленый', 'green'));
colors.push(new Array('Серый', 'gray'));
var mmass = ""
for(x=0;x<colors.length;x++){
	mmass+="<option style=\"color: "+colors[x][1]+"\" value=\""+colors[x][1]+"\">"+colors[x][0]+"</option>"
}
var p1 = document.getElementsByName("req_subject")[0]
p1.style.visibility = 'hidden'
p1.parentNode.innerHTML+="<input onkeydown=\"st(document.getElementsByName('changer')[0].options[document.getElementsByName('changer')[0].selectedIndex].value)\" onkeyup=\"st(document.getElementsByName('changer')[0].options[document.getElementsByName('changer')[0].selectedIndex].value)\"   id=\"qwe_pole\" type=\"text\" name=\"qwe_pole\" value=\"\" size=\"80\" maxlength=\"70\" /> <select name=\"changer\" onchange=\"st(this.options[this.selectedIndex].value)\"><option value=\"default\">По-умолчанию</option>"+mmass+"</select>"
function st(value){
	if(document.getElementsByName("qwe_pole")[0].value!=""){
	t = document.getElementsByName("req_subject")[0];
	if(value!="default"){
if(t.value.indexOf(";;")!=-1){
	t.value=value+";;"+document.getElementsByName("qwe_pole")[0].value
} else {
	t.value=value+";;"+document.getElementsByName("qwe_pole")[0].value
}
	} else {
t.value=document.getElementsByName("qwe_pole")[0].value
	}
	}
}
}
</script>

+4

151

Профиль справа (Опционально для каждого пользователя). Duka

Помнится, многие спрашивали как сделать профиль справа как на phpbb и спорили, что некоторым пользователям на форуме может это не понравиться.
Набросал скрипт, который для каждого пользователя покажет выпадающее менюю с 2мя опциями - Слева, Справа. При выборе одного из них посты сразу же принимают нужны вид. При гулянии на форуме действие его сохраняется.
Ставим в HTML-верх

<div id="profileSide"></div>
<script type="text/javascript">
function saveCookie(side){
var c_date = new Date();
c_date.setTime(c_date.getTime()+99999999999)
date = c_date.toGMTString();
document.cookie="profileSide="+side+"; expires="+date
}

function getSide(side){
if(side==0 && document.cookie.indexOf("profileSide")!=-1){
    side = document.cookie.substring(document.cookie.indexOf("profileSide=")+12, document.cookie.indexOf("profileSide=")+13)
}
if(side=="L"){
    document.getElementById("profileSide").innerHTML="";
} else if(side=="R"){
    document.getElementById("profileSide").innerHTML="<s"+"tyle type=\"text/css\">.punbb .post h3 span {border-right: 1px solid transparent;border-left: none;padding: 0.5em 1em;display: block; text-align: right;margin-right: 19em;margin-left: 0;}.punbb .post h3 strong {float: left;text-align: left;}.punbb .post .post-author, .pl-email, .pl-website {float: right;}.punbb .post-body {margin-right: 19em;margin-left: 0;border-right: 1px solid;border-left: none;}.punbb .post-links {margin-right: 19em;margin-left: 0em;border-right: 1px solid transparent;border-left: none;}.punbb .post-links ul {margin-right: -19em;margin-left: 0em;text-align: left;}.post-rating {float: left;}</st"+"yle>";
}
}
getSide(0)
</script>

Ставим в форму ответа

Код:
<select>
<option selected="selected">--Отображение профиля--</option>
<option onclick="saveCookie('L'); getSide('L')">|--Слева</option>
<option onclick="saveCookie('R'); getSide('R')">Справа--|</option>
</select>

Нужно найти оптимальный вариант css.
Вместо transparent писать цвет бордеров блока сообщений, ибо сам он в файлике вынесен в .css, а не в _cs.css, где ему положено быть, но, по каким-то причинам, он в .css

Отредактировано Duka (Чт, 26 Фев 2009 23:40:44)

+6

152

Скрываем посты с отрицательным рейтингом. Duka

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

Код:
<script type="text/javascript">
var ratingPostMsgHide = -1; // репутация, при которой пост будет считаться плохим

document.getElementByClassName = function(clsName){
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++){
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
    return retVal;
}
var pozitive = document.getElementByClassName("post-rating")
for( i=0; i<pozitive.length; i++)
{

   rating = pozitive[i].getElementsByTagName("p")[0].getElementsByTagName("a")[0].innerHTML
   rating = parseInt(rating)
   if( rating <= ratingPostMsgHide )
   {
      postMsg = document.getElementByClassName("post-content")[i].innerHTML;
      document.getElementByClassName("post-content")[i].innerHTML = "<div class=\"quote-box\"><blockquote><p><a href=\"javascript: void(0);\" onclick=\"document.getElementById('postMsgID" + i + "').style.display = 'block'\">Данное сообщение имеет отрицательный рейтинг. Для его отображения нажмите сюда</a></p></blockquote></div><div id=\"postMsgID" + i + "\" style=\"display: none;\" class=\"quote-box\"><blockquote><p>" + postMsg + "</p></blockquote></div>"
   }

}
</script>

Отредактировано Duka (Пт, 11 Дек 2009 22:12:44)

+1

153

Часто бывает неудобно на форумах выделять код, эти полосы прокрутки вечно мешают и плохо крутятся =(
Данный скрипт заменяет слово Код: вверху блока с кодом, на ссылку, по клику на который выделяется все содержимое блока с кодом

Код устарел(в связи с обновлением браузеров), новый вариант здесь => Скрипты от пользователей 3
Код:
<script type="text/javascript">
function select_text(elem) {
	if(window.getSelection) {   
var s=window.getSelection();   
if(s.setBaseAndExtent){   
	s.setBaseAndExtent(elem,0,elem,elem.innerText.length-1);   
}
else {   
	var r=document.createRange();   
	r.selectNodeContents(elem);   
	s.removeAllRanges();   
	s.addRange(r);
}   
	}
	else if(document.getSelection){   
var s=document.getSelection();   
var r=document.createRange();   
r.selectNodeContents(elem);   
s.removeAllRanges();   
s.addRange(r);   
	}
	else if(document.selection){   
var r=document.body.createTextRange();   
r.moveToElementText(elem);   
r.select();
	}   
}
</script>
<script type="text/javascript">
var div = document.getElementById('pun-main').getElementsByTagName('div');
for(x in div){
	if(div[x].className=='code-box'){
div[x].getElementsByTagName('strong')[0].innerHTML = '<a href="#" onclick="select_text(this.parentNode.parentNode.childNodes[1].getElementsByTagName(\'pre\')[0]); return false;">Выделить код</a>';
	}
}
</script>

Для разработчиков - функция select_text( var DOM_object) принимает любой DOM объект и создает выделение в нем (если передать функции document.body то выделится вся страница)

+12


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