Форум поддержки пользователей ZeroParking

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

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


Вы здесь » Форум поддержки пользователей ZeroParking » Вопросы по скриптам » Помогите разобраться со скриптом спойлера


Помогите разобраться со скриптом спойлера

Сообщений 1 страница 5 из 5

1

Вот код из хтмл в форме ответа.

Код:
<style type="text/css">
#button-spoiler {background-image:url('https://forumupload.ru/uploads/0000/12/13/488-1.gif'); padding:0; line-height:0; background-position:center; background-repeat:no-repeat}
</style>
<script>
function addSpoiler(str,from,internal){
var pos=0,pos2=0,newpos=0
if((pos=str.indexOf("[spoiler]",from))==-1) return str;
if((pos2=str.indexOf("[/spoiler]"),pos+9)==-1) return str;
newpos=str.indexOf("[spoiler]",pos+9)
if(newpos<pos2 && newpos!=-1) str=addSpoiler(str,pos+9,true)
if((pos2=str.indexOf("[/spoiler]",pos+9))==-1) return str;
str=str.substring(0,pos)+makeSpoiler(str.substring(pos+9,pos2))+str.substring(pos2+10,str.length)
if( str.indexOf("[**spoiler]")!=-1 && internal==false) str=addSpoiler(str,0,false)
return str}

function makeSpoiler(txt){
txt="<div class=quote-box style='padding:1px'><cite style='width:100%'>Спойлер <input style='width:60px;margin-left:70%;font-size:10px;' type='button' value='Показать' onclick='hideSpoiler(this)'></cite><blockquote style='display:none'>"+txt+"</blockquote></div>"
return txt}

function hideSpoiler(sp){
spoiler=sp.parentNode.parentNode.getElementsByTagName("blockquote")[0]
if(spoiler.style.display=='none'){
spoiler.style.display='inline'
sp.value='Скрыть'}else{
spoiler.style.display='none'
sp.value='Показать'}}

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=addSpoiler(post.innerHTML,0,false)}}
if(form=document.getElementById("form-buttons"))
form.getElementsByTagName("tr")[0].insertCell(19).innerHTML="<img  id=\"button-spoiler\" title=\"Спойлер\" onclick=\"bbcode('[spoiler]','[/spoiler]')\" src=\"/i/blank.gif\" />"
</script>

выглядит он так:
(спойлер свернут/спойлер открыт)
http://i022.radikal.ru/1107/07/921375c2de58.jpg
Проблемы такие:
1. у этого скрипта должна быть где-то вторая часть? если да, в каком месте она должна находиться (и где ее найти?)
2. раньше у нас все прекрасно работало, но части скрипта из хтмл в форме ответа  у нас потерялась. Спойлер такого же вида мы нашли (выше его код), но теперь работает только самый первый спойлер в сообщении. Если, допустим, у меня два спойлера в одном сообщении, то получается вот так:
http://s008.radikal.ru/i304/1107/57/68463a26324a.jpg
и это не глюк браузера, это у всех так!
3. короче, прошу помочь мне найти нармально работающий код такого спойлера. Или найти замену, которая будет хорошо преобразовывать теги старых спойлеров в новые.

0

2

Ура, замените на этот скрипт.

Ставить или в HTML-низ или в Форму ответа.
Должен подхватить оформление от старого скрипта.

Код:
<!--Спойлер-->
<style>
#button-spoiler {background-image:url('https://forumupload.ru/uploads/0000/12/13/488-1.gif'); padding:0; line-height:0; background-position:center; background-repeat:no-repeat; height:26px; width:100%}
</style>
<script type="text/javascript">
function tag_spoiler(){
var y = prompt("Введите описание закрытой кнопки",'');
if(y!='null' && y!='' && typeof(y)!='object' && typeof(y)!='undefined'){
var x = prompt("Введите описание открытой кнопки",'Закрыть');
if(x=='null' || x=='' || typeof(x)=='object' || typeof(x)=='undefined') bbcode('[spoiler='+y+']','[/spoiler]'); else bbcode('[spoiler='+y+'|'+x+']','[/spoiler]');}
else bbcode('[spoiler]','[/spoiler]')
}
function addSpoiler(str,from,internal){
var pos=0,pos2=0,pos_c=0,pos_l=0,newpos=0,string='',close='',open='';
if((pos=str.indexOf("[spoiler",from))==-1) return str;
if((pos2=str.indexOf("[/spoiler]"),pos+9)==-1) return str;
if(((pos_c=str.indexOf("]",pos+8))!=-1) && ((pos_c!=pos+8)&&(pos_c!=pos+9))){
string = str.substring(pos+9,pos_c);
if((pos_l = string.indexOf("|"))!=-1){
close = string.substring(0,pos_l);
open = string.substring(pos_l+1,string.length);
}
else{
close = string;
open = string;
}
}
else{
close = 'Показать';
open = 'Скрыть';
}
newpos=str.indexOf("[spoiler",pos+9)
if(newpos<pos2 && newpos!=-1) str=addSpoiler(str,pos+9,true)
if((pos2=str.indexOf("[/spoiler]",pos+9))==-1) return str;
str=str.substring(0,pos)+makeSpoiler(str.substring(pos_c+1,pos2),open,close)+str.substring(pos2+10,str.length)
if( str.indexOf("[spoiler")!=-1 && internal==false) str=addSpoiler(str,0,false)
return str;
}

function makeSpoiler(txt,open,close){
txt='<div class="quote-box" style="padding:1px;"><cite style="width:100%;">Спойлер <input id="'+open+'" class="spoiler-button" style="width:60px;margin-left:70%;font-size:10px; cursor: pointer;" type="button" value="'+close+'"></cite><blockquote class="quote-box" style="display:none; margin:0; width: 95%; border: 0;">'+txt+'</blockquote></div>'
return txt;
}

$(document).ready(function(){
$("div.quote-box > cite > input.spoiler-button").click(function(){
$(this).parents("div.quote-box:first").find("blockquote.quote-box:first").toggle("slow");
var a = $(this).attr('value');$(this).attr('value',$(this).attr('id'));$(this).attr('id',a);
});
});

if((document.URL.indexOf("viewtopic.php")!=-1) || (document.URL.indexOf("post.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=addSpoiler(post.innerHTML,0,false)
}
}
if(form=document.getElementById("form-buttons"))
form.getElementsByTagName("tr")[0].insertCell(16).innerHTML="<img  id=\"button-spoiler\" title=\"Спойлер\" onclick=\"tag_spoiler('[spoiler]','[/spoiler]')\" src=\"/i/blank.gif\" />"
</script>

0

3

*ушла на свой тестовик*
вроде старые спойлеры работают.

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

Отредактировано Ура (2011-07-19 13:40:59)

0

4

Ура, вот тут правьте:

function makeSpoiler(txt,open,close){
txt='<div class="quote-box" style="padding:1px;"><cite style="width:100%;">Спойлер <input id="'+open+'" class="spoiler-button" style="width:auto; padding:3px;margin-left:70%;font-size:10px; cursor: pointer;" type="button" value="'+close+'"></cite><blockquote class="quote-box" style="display:none; margin:0; width: 95%; border: 0;">'+txt+'</blockquote></div>'
return txt;
}

+1

5

Кофеман
работает.
Спасибо вам огромное! Можно, я вас в щечку за это поцелую?))

0


Вы здесь » Форум поддержки пользователей ZeroParking » Вопросы по скриптам » Помогите разобраться со скриптом спойлера


Рейтинг форумов | Создать форум бесплатно