Всплывающее окно Личные сообщения

Если у вас возникают проблемы и вопросы по настройке форума phpBB 3.1 / Ascraeus либо выскакивают непонятные ошибки, не устанавливаются либо криво работают расширения, то этот раздел для вас. Обсуждаем все вопросы, связанные со стилями, расширениями, доработками и проблемами их использования.

Модераторы: Vl@d1m1r, Lorem Ipsum, Atlas

Ответить
Аватара пользователя
Олега
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 191
Стаж: 7 лет 1 месяц
Контактная информация:

Всплывающее окно Личные сообщения

Сообщение Олега »

Может кому пригодится. Всплывающее окно Личные сообщения для phpbb 3.1.10 Чуток подправил код от phpbb 3.0 - не выводилось Прочитать
Вставляем вот это в styles/prosilver/overall_header.html в самый конец.
<!-- Всплывающее окно Вам личное сообщение -->

<!-- IF S_USER_NEW_PRIVMSG -->
<script type='text/javascript'>
var displaymode = 'always';
var enablefade = 'no';
var autohidebox = ['yes', 30];
var showonscroll = 'yes';
var IEfadelength = 1;
var Mozfadedegree = 0.2;
if (parseInt(displaymode) != NaN)
{
var random_num = Math.floor(Math.random() * displaymode);
}
function display_hover_prompt()
{
var ie = document.all && !window.opera;
var dom = document.getElementById;
var iebody = (document.compatMode == 'CSS1Compat') ? document.documentElement : document.body;
var objref = (dom) ? document.getElementById('hoverprompt') : document.all.hoverprompt;
var scroll_top = (ie) ? iebody.scrollTop : window.pageYOffset;
var docwidth = (ie) ? iebody.clientWidth : window.innerWidth;
var docheight = (ie) ? iebody.clientHeight: window.innerHeight;
var objwidth = objref.offsetWidth;
var objheight = objref.offsetHeight;
objref.style.left = docwidth/2-objwidth/2+'px';
objref.style.top = scroll_top+docheight/2-objheight/2+'px';
if (showonscroll == 'yes')
{
var showonscrollvar = setInterval('static_hover_prompt()', 50);
}
if (enablefade == 'yes' && objref.filters)
{
objref.filters[0].duration = IEfadelength;
objref.filters[0].Apply();
objref.filters[0].Play();
}
objref.style.visibility = 'visible';
if (objref.style.MozOpacity)
{
if (enablefade == 'yes')
{
var mozfadevar = setInterval('mozilla_hover_prompt_fade()', 90);
}
else
{
objref.style.MozOpacity = 1;
initiate_hover_prompt_hiding();
}
}
else
{
initiate_hover_prompt_hiding()
}
}
function mozilla_hover_prompt_fade()
{
if (parseFloat(objref.style.MozOpacity) < 1)
{
objref.style.MozOpacity = parseFloat(objref.style.MozOpacity)+Mozfadedegree;
}
else
{
clearInterval(mozfadevar);
controlledhidebox();
}
}
function static_hover_prompt()
{
var ie = document.all && !window.opera;
var dom = document.getElementById;
var iebody = (document.compatMode == 'CSS1Compat') ? document.documentElement : document.body;
var objref = (dom) ? document.getElementById('hoverprompt') : document.all.hoverprompt;
var scroll_top = (ie) ? iebody.scrollTop : window.pageYOffset;
var docwidth = (ie) ? iebody.clientWidth : window.innerWidth;
var docheight = (ie) ? iebody.clientHeight: window.innerHeight;
var objwidth = objref.offsetWidth;
var objheight = objref.offsetHeight;
objref.style.top = scroll_top+docheight/3-objheight/2+'px';
}
function hide_hover_prompt()
{
var ie = document.all && !window.opera;
var dom = document.getElementById;
var iebody = (document.compatMode == 'CSS1Compat') ? document.documentElement : document.body;
var objref = (dom) ? document.getElementById('hoverprompt') : document.all.hoverprompt;
objref.style.visibility = 'hidden';
if (typeof showonscrollvar != 'undefined')
{
clearInterval(showonscrollvar);
}
}
function initiate_hover_prompt_hiding()
{
if (autohidebox[0] == "yes")
{
var delayvar = (enablefade == 'yes' && objref.filters) ? (autohidebox[1]+objref.filters[0].duration)*1000 : autohidebox[1]*1000;
initiate_timer(delayvar);
setTimeout('hide_hover_prompt()', delayvar);
}
}
function initiate_timer(time)
{
var newtime = time-1000;
setTimeout('update_timer('+newtime+')', 1000);
}
function update_timer(time)
{
var timer = time/1000;
var ie = document.all && !window.opera;
var dom = document.getElementById;
if (dom)
{
var hp = document.getElementById('hptimer');
if (timer == 1)
{
hp.innerHTML = "<small><i>Окно закроется через "+timer+" секунд</i></small>";
}
else
{
hp.innerHTML = "<small><i>Окно закроется через "+timer+" секунд</i></small>";
}
}
var newtime = time-1000;
setTimeout('update_timer('+newtime+')', 1000);
}
function initiate_hover_prompt()
{
setTimeout('display_hover_prompt()', 100);
}
function get_cookie(Name)
{
var search = Name + "=";
var returnvalue = "";
if (document.cookie.length > 0)
{
var offset = document.cookie.indexOf(search);
if (offset != -1)
{
offset += search.length;
var end = document.cookie.indexOf(';', offset);
if (end == -1)
{
end = document.cookie.length;
}
returnvalue = unescape(document.cookie.substring(offset, end));
}
}
return returnvalue;
}

if (displaymode == "oncepersession" && get_cookie("fadedin") == "" || displaymode == "always" || parseInt(displaymode) != NaN && random_num == 0)
{
if (window.addEventListener)
window.addEventListener('load', initiate_hover_prompt, false)
else if (window.attachEvent)
window.attachEvent('onload', initiate_hover_prompt)
else if (document.getElementById)
window.onload = initiate_hover_prompt;
if (displaymode=="oncepersession")
document.cookie = 'fadedin=yes';
}
</script>

<style type='text/css'>#hoverprompt{position:absolute;width:300px;left:0;top:-400px;padding:4px;z-index:100;visibility:hidden}</style>
<div id='hoverprompt' class="forabg"><div class="inner">
<div class="panel" style="text-align: center;">
<div class="inner">
<div class='maintitle' align='center'><b><font size="3">Внимание !!!</font></b></div>
<table align='center' width='100%' class='row1' cellspacing='0' cellpadding='5'>
<tr>
<td align='center'><b>Вам пришло личное сообщение</b></br></br>
<a href="{U_PRIVATEMSGS}" role="menuitem"><span><b><font size="2">Прочитать </font></b>[</span><strong>{PRIVATE_MESSAGE_COUNT}</strong><span>]</span></a>
<b></br></br>
</td>
</tr>
<tr>
<td align='center'><div id='hptimer'><i>Окно закроется через 30 сек.</i></div></br></td>
</tr>
<tr>
<td align='center'>
<a href="#" onClick="document.getElementById('hoverprompt').style.display='none';return false" style="position: relative; right: 3px;"><img src="styles/prosilver/theme/images/close.png" /></a></td></tr>
</table><br />
</div>
</div>
</div></div>
<!-- ENDIF -->
В папку styles/prosilver/theme/images помещаем кнопку " Закрыть " - сами нарисуете ( высота примерно 17 px )
Обзываете картинку кнопки close.png ( можете другую, просто тогда в коде замените имя файла)
Всё.
Возможны проблемы с кодировкой русского текста. Я просто копировал overall_header.html на ноут, открывал нотепадом и в нем правил текст. Потом сохраняем и заменяем файл на сервере.
Код взят ОТСЕДА Там же почитаете есть небольшой faq ( в принципе он не нужен и так все понятно ) Скрипт полностью настроен можно ничего не трогать только картинку для кнопки закрыть свою поставите.
У меня phpbb 3.1.10
#1
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Всплывающее окно Личные сообщения

Сообщение DeaDRoMeO »

Полезно, спасибо, будет время - переработаю немного текст, и кодировочка у вас полетела в коде. В виде расширения можно сделать это все

Сообщение добавлено... спустя 55 секунд:
По кодировочке, через тот же нотепад++ надо сохранять в кодировке utf-8 без BOOM
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#2
Аватара пользователя
Олега
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 191
Стаж: 7 лет 1 месяц
Контактная информация:

Всплывающее окно Личные сообщения

Сообщение Олега »

Если честно было лень с этой кодировкой заморачиваться из за нескольких строчек русского текста :-0=)

Я вот до сих пор не пойму зачем нужно Личные сообщения и Уведомления Я у себя отключил в админке уведомления. До сих пор не пойму в чем разница. Ведь я так понимаю всегда будут оба "моргать"
У меня phpbb 3.1.10
#3
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Всплывающее окно Личные сообщения

Сообщение DeaDRoMeO »

Просто дублирование информации, видимо у разработчика свои задумки
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#4
Аватара пользователя
Олега
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 191
Стаж: 7 лет 1 месяц
Контактная информация:

Всплывающее окно Личные сообщения

Сообщение Олега »

А чего тогда так мало? Можно еще штук пять влепить чтоб вообще все моргало :al_kana_ft:
У меня phpbb 3.1.10
#5
Ответить