Всплывающие подсказки в постах, бета-версия
Авторы: Romych, rps
для работы с подсказками нам потребуется плагин Lytebox, а так же мы будем использовать тот что установлен на нашем сервисе поумолчанию - jquery.tipsy
оба плагина, как выяснилось, поддерживают работу с html контентом внутри всплывающих подсказок, что позволяет делать невероятные вещи, которые не даёт возможности делать тот же спойлер.
пример, подсказка может всплывать при наведении на установленную вами картинку, и автоматически начнёт проигрываться музыка или воспроизводиться видео внутри подсказки, можно вставлять так же любые таблицы, наполненные любым контентом.
Всплывающие подсказки 5 видов, для удобства работы с ними создана вот такая форма:
в html-верх:
<script type="text/javascript" language="javascript" src="http://lytebox.com/lib/lytebox/lytebox.js"></script>
<link rel="stylesheet" href="http://lytebox.com/lib/lytebox/lytebox.css" type="text/css" media="screen" />
.my {
background-color: #FFFFFF;
color: #488baa;
font-size: 12px;
font-family: Tahoma;
line-height: 125%;
border-radius: 15px;
-moz-box-shadow: inset 0 0 1em #8cb9d6;
-webkit-box-shadow: inset 0 0 1em #8cb9d6;
box-shadow: inset 0 0 1em #8cb9d6;
filter: progid:DXImageTransform.Microsoft.Shadow(color='#8cb9d6', Direction=145, Strength=3);
}
.post-content {
overflow: visible !important;
}
.tipsy-inner {
font-size:16px!important;
max-width:450px !important;
text-align: left !important;
}
.lytetip {
position: static !important;
}
.lytetip span {
position: absolute !important;
top: inherit !important;
left: inherit !important;
display: inline-block !important;
visibility: hidden;
width: auto !important;
margin-top: 0.9em;
}
.lytetip:hover span {
display: inline-block !important;
visibility: visible;
}
#fon {
position: fixed;
z-index: 2;
top: 0;
left: 0;
height: 100%;
width: 100%;
background-color: #000;
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=50);
opacity: 0.5;
}
</style>
в html-низ:
<!--Подсказки-->
<script language="javascript">
$('td#button-hide').before('<td id="tooltips" style=\'background-image:url("http://www.iconsearch.ru/uploads/icons/splashyicons/16x16/comments_reply.png")\' onclick="return changeVisibility(\'tipsybox\', this);"><img src="/i/blank.gif" title="Всплывающие подсказки"></td>');
$('#tooltips').click(function(){$('#tipsybox').before('<div id="fon"></div>'); });
if ((document.URL.indexOf("viewtopic.php")!=-1) || (document.URL.indexOf("post.php")!=-1)){
elm= document.getElementsByTagName("div");
for (y in elm) {if (elm[y].className == "post-content") {
p = elm[y].getElementsByTagName("p");
for (z in p) {if(!p[z] || !p[z].innerHTML) continue;
var post = p[z].innerHTML;
if(post.indexOf("[/mytool]")!= -1) {
tool = /\[mytool=(.*?)\](.*?)\|(.*?)\[\/mytool\]/gi
post = post.replace(tool, "<a href='javascript:void(0)' data-lyte-options='$1' class='lytetip' data-tip='$3'>$2</a>")
};
p[z].innerHTML = post;}}}}
function getRadioGroupValue(radioGroupObj){for (var i=0;i<radioGroupObj.length;i++)if (radioGroupObj[i].checked) return radioGroupObj[i].value;return null;}
function act2() {var tips=getRadioGroupValue(document.rf.tip);var op=document.getElementById('opis').value;var ur=document.getElementById('adr').value;insert('[mytool='+tips+']'+ur+'|'+op+'[/mytool]');changeVisibility('tipsybox');var d=document.getElementById('fon');d.parentNode.removeChild(d);}
</script>
<div class="my" align="center" id="tipsybox" style="display:none;width:375px;padding:8px;position:fixed;top:25%;right:35%;z-index:900;" class="container">
<strong>Варианты всплывающих подсказок</strong><br><br>
<form name="rf" style="text-align:center;padding:5px;word-spacing:4px;">
<input type="radio" name="tip" value="tipStyle:info changeTipCursor:false" onclick="this.form.act.onclick=act2"><a href="#" class="lytetip" data-lyte-options="tipStyle:info" data-tip="информационная" onclick="this.form.act.onclick=act2"> info</a>
<input type="radio" name="tip" value="tipStyle:help changeTipCursor:false" onclick="this.form.act.onclick=act2"><a href="#" class="lytetip" data-lyte-options="tipStyle:help" data-tip="вопрос"> help</a>
<input type="radio" name="tip" value="tipStyle:warning changeTipCursor:false" onclick="this.form.act.onclick=act2"><a href="#" class="lytetip" data-lyte-options="tipStyle:warning" data-tip="предупреждение"> warning</a>
<input type="radio" name="tip" value="tipStyle:error changeTipCursor:false" onclick="this.form.act.onclick=act2"><a href="#" class="lytetip" data-lyte-options="tipStyle:error" data-tip="ошибкa"> error</a>
<br><br>
<textarea id="adr" cols="45" rows="3" style="background:#f0f8ff; width: 100%;" placeholder="Введите слово или bb-code с изображением, при наведении на которое будет появляться всплывающая подсказка"></textarea><textarea id="opis" cols="45" rows="3" style="background:#f0f8ff; width: 100%;" placeholder="Введите текст с применением любых bb-cod'ов, этот текст будет виден в подсказке при наведении курсора"></textarea>
<button type=button name=act>Создать подсказку</button> <button type="reset" onclick="changeVisibility('tipsybox');var d=document.getElementById('fon');d.parentNode.removeChild(d);">Отмена</button></form></div>



но не понятно 