Скрипт спойлера (подсказки) в сообщении!!!исправлено, теперь подсказка сворачивается
Раньше довольно часто поступали запросы на этот скрипт, и вот недавно напомнили о нем снова, чему я очень рада. На мой взгляд, функция очень полезная, особенно для игровых форумов (и не только). Смысл функции таков. Например, вам надо поместитьв сообщение подсказку по похождению игры или чего-то еще. В бщем, это может быть любой текст, который не все пользователи захотят видеть. Вместо этого скрытого текста в сообщении отобразиться кнопка-картинка (Показать спойлер, подсказка, любая). При нажатии на нее пользователь, если захочет, увидит скрытый текст. Остальным он мешать не будет.
Чтобы вставить подсказку в сообщение достаточно воспользоваться кнопкой подсказка (мы ее вставим в HTML под формой ответа), или вручную написать теги <spoiler><endspolier>. Поджалуйства, только не надо щас набрасываться с расспросами типа "А что, HTML теги в сообщениях можно разрешить?". Ответ - нет. Хтмл в соощение нельзя будет вставлять НИКОГДА. Это не хтмл теги, прсото мне быо удобнее прописать <> такие, а не квадратные обычные bb скобочки для оптимизации работы скрипта.
Правило: Ограничение только одно - одну подсказку нельзя вставить внутрь другой. В остальном же в тег подсказки можете вставлять любые дргуие теги - картинки, ссылки, жирный или цветной текст, чо угодно, конфликтов не будет.
Вставлять строго в 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))} else {innerHTML=innerHTML.substring(0, (innerHTML.toLowerCase().indexOf(teg)+1))+hint1+innerHTML.substr(innerHTML.toLowerCase().indexOf(teg1))+hint}"
var trt="<div onclick='"+hid+"'>"+"<img src='http://uploads.ru/images/k/karpoff/down.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(/<spoiler>/g, trt)
quers[pl].innerHTML=quers[pl].innerHTML.replace(/<endspoiler>/g, trt1)}}
</script>
Вариант без сворачивания (при повторных кликах с подсказкой ничего не происходит)
<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 src='http://uploads.ru/images/k/karpoff/down.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(/<spoiler>/g, trt)
quers[pl].innerHTML=quers[pl].innerHTML.replace(/<endspoiler>/g, trt1)}}
</script>
Вместо жирного можете вставить свою картинку. В своем скрипте я нагло скоммуниздила картинку из скрипта карпова по скрытию категорию, надеюсь он не против =)))
Также в нагрузку предлагаю для желающих скрипт фильтр защиты от дурака. Так как на каждом форуме найдутся криворукие пользователи, которые что-то обязательно напутают с тегами, случайно сотрут закрывающий тег или вставят одну подсказку в другую, что может вызвать неприятности в отображении страницы с их сообщением, этот фильтр запртит им отсылать сообщение. пока они не включат моск и не исправят ошибки.
Вставлять также в HTML-низ.
<script type="text/javascript">
if ((document.URL.indexOf("viewtopic.php")!=-1)||(document.URL.indexOf("post.php")!=-1))
{document.getElementsByName("submit")[0].onclick=checkSpoilers}
function checkSpoilers()
{
var ents=new Array()
var qa=0
ents[0]=document.getElementsByTagName("textarea")[0].value
qa=1
while (ents[qa-1].indexOf("<spoiler>")!=-1)
{
ents[qa]=ents[qa-1].substr((ents[qa-1].indexOf("<spoiler>")+2))
if ((ents[qa].indexOf("<endspoiler>")==-1)||((ents[qa].indexOf("<endspoiler>")!=-1)&&(ents[qa].indexOf("<spoiler>")!=-1)&&(ents[qa].indexOf("<endspoiler>")>ents[qa].indexOf("<spoiler>"))))
{alert("Вы поместили одну подсказку внутри другой, или же забыли закрыть тег подсказки. Вернитесь к сообщению и исправьте ошибки, затем снова нажмите отправить")
return false}
else
{qa=qa+1}}}
</script>
И, наконец, кнопка для вставки тега - в HTML под формой ответа.
<input type="button" value="Подсказка" onclick="insert_text('<spoiler>', '<endspoiler>')" />