Help Admin

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

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


Вы здесь » Help Admin » Scripts » Функция Spoiler (скрытие текста)


Функция Spoiler (скрытие текста)

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

1

1 вариант

В html-низ вставить:

<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(14).innerHTML="<img onclick=\"insert_text('[*spoiler]', '[/spoiler]')\" title='Спойлер' src='http://forumupload.ru/uploads/0000/4f/5e/80-1.gif' alt='Спойлер' />"
</script>

2 вариант

В html-низ вставить:

<script type="text/javascript">
var teg=">"
var teg1="<p>"
var hint="</div>"
var hint1="<div style='display: none;'>"
var hint2="display: none"
var hid="if (innerHTML.toLowerCase().indexOf(hint2)!=-1) {innerHTML=innerHTML.substring(0, (innerHTML.toLowerCase().indexOf(teg)+1))"+"+innerHTML.substring((innerHTML.toLowerCase().indexOf(teg1)), (innerHTML.length-6))}"
var trt="<div onclick='"+hid+"'>"+"<img title='Показать скрытый текст' src='http://forumupload.ru/uploads/0000/4f/5e/75-1.gif' /><div style='display: none;'><p>"
var trt1="</p></div></div>"
var quers=document.getElementById('pun-main').getElementsByTagName("div")
var pl=0
for (pl=0; pl<=(quers.length-1); pl++)
{if (quers[pl].className=="post-body")
{quers[pl].innerHTML=quers[pl].innerHTML.replace(/&lt;spoiler&gt;/g, trt)
quers[pl].innerHTML=quers[pl].innerHTML.replace(/&lt;endspoiler&gt;/g, trt1)}}
</script>

В форму ответа вставить:

<input type="button" value="Spoiler2" onclick="insert_text('<*spoiler>', '<*endspoiler>')" />

P.S. Все * из кода нужно удалить!
Оба варианта работают у нас на форуме.

0

2

А как это работает?

Отредактировано abrakadabra (2008-06-12 01:30:28)

0

3

Скрывает текст.

0

4

хорошая вещь

0

5

Pashok,
У меня первый способ не работает. Ошибка вот в чем:
<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(14).innerHTML="<img onclick=\"insert_text('[*spoiler]', '[*/spoiler]')\" title='Спойлер' src='http://forumupload.ru/uploads/0000/4f/5e/80-1.gif' alt='Спойлер' />"
</script>

Не знаю, есть ли где-то функция insert_text(), но, как видимо, она может принимать только один параметр. Например,
insert_text('[*spoiler][*/spoiler]');
Звездочки убираем.

PS
Я на своем форуме решил не полагаться на insert_text(), а решил использовать старую добрую smile();  8-)

Отредактировано crazydog (2009-05-13 21:15:34)

0

6

блин, у меня ни на одном форуме ни одна версия не работает. объясните как им пользоваться

0

7

Архангел
Смотри мой пост выше... Не забудь убрать ВСЕ звездочки из текста.

0

8

crazydog
объясни как им пользоваться....
у меня вот этот скрипт

<style type="text/css">
#button-spoiler {background-image:url('http://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("Спойлер ",from))==-1) return str;
if((pos2=str.indexOf(""),pos+9)==-1) return str;
newpos=str.indexOf("Спойлер ",pos+9)
if(newpos<pos2 && newpos!=-1) str=addSpoiler(str,pos+9,true)
if((pos2=str.indexOf("",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('Спойлер ','')\" src=\"/i/blank.gif\" />"
</script>

мне просто объяснить что надо нажимать и когда....

0

9

Во-первых, у тебя там стоит ссылка на картинку по адресу http://forumupload.ru/uploads/0000/12/13/488-1.gif. Картинки не существует.
Второе и ОЧЕНЬ важное: кто-то очень умный пытался этот скрипт на русский перевести... Теги спойлера [spоiler] и [/spоiler] заменены на теги Спойлер и ничего...
Возможно, что-то и будет работать, но отсутствует тег закрытия спойлера... Где ты такой скрипт откопал?
Он по сути дела не должен работать. Точнее, весь текст после слова "Спойлер" будет скрыт... Да и функция открытия/закрытия спойлера тоже не работает. Вот рабочий скрипт со всеми объяснениями:

Свернутый текст

<script>
function addSpoiler(str,from,internal){
var pos=0,pos2=0,newpos=0
if((pos=str.indexOf("[dspoiler]",from))==-1) return str;
if((pos2=str.indexOf("[/dspoiler]"),pos+9)==-1) return str;
newpos=str.indexOf("[dspoiler]",pos+9)
if(newpos<pos2 && newpos!=-1) str=addSpoiler(str,pos+9,true)
if((pos2=str.indexOf("[/dspoiler]",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("[dspoiler]")!=-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(14).innerHTML="<img onclick=\"smile('[dspoiler][/dspoiler]')\" title='Спойлер' src='http://forumupload.ru/uploads/0000/4f/5e/80-1.gif' alt='Спойлер' />"
</script>

Вместо синего ставим адрес значка кнопки спойлера. Потом все кидаешь в админку, в html-низ.
Далее заходишь в любую тему и тыкаешь в панели меню ответа по значку спойлера. В поле ответа появляется надпись:
[dspoiler][/dspoiler]
Между этими тегами вставляешь свой текст, например:
[dspoiler]Оччень длинный текст.[/dspoiler]

Отредактировано crazydog (2009-05-16 13:59:57)

0

10

crazydog
спасибо, работает, но как-то не правильно... вот смотри, когда уже отправил сообщение, отображается ЭТО Скрытый текст

    Скрытый текст
                                                                                            показать
]

когда нажимаю показать... появляется ЭТО

Скрытый текст
                                                                                                      Скрыть
    ]Мой текст

]

0

11

Так это ж круто))) http://smileak.narod.ru/yeye.gif
А пока можешь все [dspoiler] и [/dspoiler] переправить на [spоiler] и [/spоiler]

А, все, понял.
Там в скрипте есть несколько цифр "9". Ты их все на 10 замени и все будет чики-пики.
Ну, это если у тебя в скрипте хочешь оставить [dspoiler]

Отредактировано crazydog (2009-06-10 14:17:56)

0

12

Если изменить dspoiler на spoiler и цифры 9 на 10 то отображается все нормально.

0

13

не работает...

0

14

crazydog спасибо большое,ВСЕ РАБОТАЕТ!я даже зарегался тут лишь для того чтоб спасибо сказать! весь инет облазел(это я утрирую) и не мог найти как спойлер сделать,все какая то фигня получалась или ваще все падало и не работало.вот только нада разобратся где мне поменять тег Hide на spoiler

Отредактировано Gamer (2011-03-28 19:59:50)

0

15

блин,нарадоваться немогу!!! :jumping:

0

16

а где можно отредактировать тег hide на spoiler чтоб от кнопки работало в tbdev

0

17

нашел где! на будущее тем кто будет читать в файле global.php меняется тег hide на spoiler

0

18

Gamer написал(а):

в файле global.php

на бесплатных сервисах нет доступа к файлам.

0


Вы здесь » Help Admin » Scripts » Функция Spoiler (скрытие текста)