Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Всплывающее сообщение при новых ЛС [Highslide]

Здесь авторы могут постить бета-версии своих модификаций для phpBB 3.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3335
Стаж: 15 лет
Благодарил (а): 35 раз
Поблагодарили: 1434 раза

Всплывающее сообщение при новых ЛС [Highslide]

Сообщение Nekstati »

Это аналог мода Popup Layer on New PMs / Всплывающий слой при новых ЛС.

Отличия:
  • сообщение выводится при помощи Highslide,
  • не затрагиваются PHP-скрипты и языковые файлы, изменения вносятся только в файлы стиля.
popup-pm.png
popup-pm.png (8.46 КБ) 4209 просмотров
Мод предназначен в основном для тех, у кого на форуме уже используется Highslide (например, установлена phpBB Gallery и т. п.). Взять Highslide и инструкции по его установке можно там: http://highslide.com/. В комплекте поставки Highslide имеются несколько JS-файлов; использовать надо тот, в названии которого есть суффикс -full (highslide-full.js или higslide-full.min.js или highslide-full.packed.js).

styles/prosilver/template/overall_header.html
найти и удалить

Код: Выделить всё

	<!-- IF S_USER_PM_POPUP and S_NEW_PM -->
		var url = '{UA_POPUP_PM}';
		window.open(url.replace(/&/g, '&'), '_phpbbprivmsg', 'height=225,resizable=yes,scrollbars=yes, width=400');
	<!-- ENDIF -->
найти

Код: Выделить всё

<body id="phpbb" class="section-{SCRIPT_NAME} {S_CONTENT_DIRECTION}">
добавить после

Код: Выделить всё

<!-- IF S_USER_PM_POPUP and S_NEW_PM -->
<a id="pm-popup-link" href="{UA_POPUP_PM}" onclick="return hs.htmlExpand(this, {objectType: 'ajax', captionEval: null, wrapperClassName: 'pm-popup', outlineType: 'rounded-white', align: 'center', dimmingOpacity: 0.5})"></a>
<script type="text/javascript">
	document.getElementById('pm-popup-link').onclick();
</script>
<!-- ENDIF -->
styles/prosilver/theme/tweaks.css
добавить в конце

Код: Выделить всё

.pm-popup .highslide-move, .pm-popup .highslide-controls, .pm-popup .highslide-footer, .pm-popup .highslide-credits {display: none !important;}
styles/prosilver/template/ucp_pm_popup.html
удалить всё содержимое файла и заменить на

Код: Выделить всё

<div class="panel bg2" style="margin: 0; padding: 15px 10px">
	<div><!-- IF S_NOT_LOGGED_IN -->{L_LOGIN_CHECK_PM}<!-- ELSE --><a href="{U_PRIVATEMSGS}">{MESSAGE}</a><!-- ENDIF -->
	</div>
</div>
Обновить шаблон и тему стиля Prosilver.
Dim565
phpBB 1.4.3
Сообщения: 93
Стаж: 13 лет 8 месяцев
Благодарил (а): 54 раза
Поблагодарили: 4 раза
Контактная информация:

Re: Всплывающее сообщение при новых ЛС [Highslide]

Сообщение Dim565 »

Спасибо, все работает, правда сначала не хотело показываться всплывающее окошко, но я что-то поковырял и заработало (возможно, из-за очистки phpbb_styles_template_data).

Кстати, окошко не будет показываться, если в профиле не стоит галочка на "Всплывающее окно при получении личного сообщения"
Gisher
phpBB 2.0.12
Сообщения: 857
Стаж: 17 лет 5 месяцев
Благодарил (а): 11 раз
Поблагодарили: 13 раз

Re: Всплывающее сообщение при новых ЛС [Highslide]

Сообщение Gisher »

Dim565
<!-- IF S_USER_PM_POPUP and S_NEW_PM -->замени на <!-- IF S_NEW_PM -->и будет показываться вне зависимости от настроек, только на сколько это правильно, если пользователь не хочет вспл. окно)

Добавлено спустя 2 часа 46 минут 4 секунды:
решил поставить у себя, заметил странную штуку, у меня не срабатывает S_NEW_PM, работает если его заменить на S_USER_NEW_PRIVMSG
на мод не грешу, так как он не причём тут, просто интересно в какую сторону копать...
смотрел includes/functions.php, там параметр этот задан... 'S_NEW_PM' => ($s_privmsg_new) ? 1 : 0,
скорей всего погрешность автоматического обновления до 3.0.9
debug включён, ошибок нет
Аватара пользователя
evrus01
Former team member
Сообщения: 1274
Стаж: 13 лет
Откуда: Москва
Благодарил (а): 107 раз
Поблагодарили: 234 раза
Контактная информация:

Re: Всплывающее сообщение при новых ЛС [Highslide]

Сообщение evrus01 »

А для rokbox планируется решение?
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3335
Стаж: 15 лет
Благодарил (а): 35 раз
Поблагодарили: 1434 раза

Re: Всплывающее сообщение при новых ЛС [Highslide]

Сообщение Nekstati »

evrus01, стараюсь не связываться с Rockettheme. Для того, чтобы разобраться в структуре их творений, нужна особенная дурь, у меня такой нет. :)
rocket.png
Аватара пользователя
evrus01
Former team member
Сообщения: 1274
Стаж: 13 лет
Откуда: Москва
Благодарил (а): 107 раз
Поблагодарили: 234 раза
Контактная информация:

Re: Всплывающее сообщение при новых ЛС [Highslide]

Сообщение evrus01 »

Знакомая страница
Это просто такая уличная магия :)
Жаль. Плагин документирован (http://demo.rockettheme.com/extensions/rokbox) и на первый взгляд реализация кажется очевидной.
Попробую как-нибудь МIT' у написать.
demon201984
phpBB 1.4.4
Сообщения: 105
Стаж: 13 лет 1 месяц
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: Всплывающее сообщение при новых ЛС [Highslide]

Сообщение demon201984 »

Nekstati, подскажите, пожалуйста, из-за чего может возникать такая проблема: если я сам себе отправляю ЛС, то все отрабатывает корректно как у вас на картинке -появляется всплывающий слой.
Если же мне присылает кто-либо другой ЛС всплывающего окна не появляется, вместо этого лишь белый лист на весь экран с надписью "Вам пришло новое сообщение".
Clipboard02.jpg
(10.47 КБ) 0 скачиваний
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3335
Стаж: 15 лет
Благодарил (а): 35 раз
Поблагодарили: 1434 раза

Re: Всплывающее сообщение при новых ЛС [Highslide]

Сообщение Nekstati »

Белый лист — это содержимое всплывающего окна, открытое без Highslide. Из-за чего — не знаю. Может, у вас Highslide подключён через какие-то условия. Включайте отладчик JS и смотрите, что он скажет.
demon201984
phpBB 1.4.4
Сообщения: 105
Стаж: 13 лет 1 месяц
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: Всплывающее сообщение при новых ЛС [Highslide]

Сообщение demon201984 »

Вот кусок моего overall_header.html - вроде все корректно. highslide подключен так:

Код: Выделить всё

<link rel="stylesheet" href="{ROOT_PATH}highslide/highslide.css" type="text/css" />
<script type="text/javascript" src="{ROOT_PATH}highslide/highslide-full.js"></script>

Код: Выделить всё

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="{S_CONTENT_DIRECTION}" lang="{S_USER_LANG}" xml:lang="{S_USER_LANG}">
<head>

<meta http-equiv="content-type" content="text/html; charset={S_CONTENT_ENCODING}" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-language" content="{S_USER_LANG}" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="resource-type" content="document" />
<meta name="distribution" content="global" />
<meta name="copyright" content="2000, 2002, 2005, 2007 phpBB Group" />
<meta name="keywords" content="<!-- IF S_IN_INDEX -->{L_SP_KEYWORDS}<!-- ELSE -->{L_SP_KEYWORDS_BEST}{PAGE_TITLE}{L_SP_KEYWORDS_ALL}<!-- ENDIF -->"/>
<meta name="description" content="{L_SP_DESCRIPTION}"/>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
{META}
<title><!-- IF FORUM_ID == "44" -->{L_SP_SITNAME_TITLE44}<!-- ELSE -->{SITENAME}<!-- ENDIF --> &bull; <!-- IF S_IN_MCP -->{L_MCP} &bull; <!-- ELSEIF S_IN_UCP --> {L_UCP} &bull; <!-- ENDIF -->{PAGE_TITLE}</title>

<!-- IF S_ENABLE_FEEDS -->
	<link rel="alternate" type="application/atom+xml" title="{L_FEED} - {SITENAME}" href="{U_FEED}" />
	<!-- IF S_ENABLE_FEEDS_NEWS --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_FEED_NEWS}" href="{U_FEED}?mode=news" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_FORUMS --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_ALL_FORUMS}" href="{U_FEED}?mode=forums" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_TOPICS --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_ALL_TOPICS}" href="{U_FEED}?mode=topics" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_FORUM and S_FORUM_ID --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_FORUM} - {FORUM_NAME}" href="{U_FEED}?f={S_FORUM_ID}" /><!-- ENDIF -->
	<!-- IF S_ENABLE_FEEDS_TOPIC and S_TOPIC_ID --><link rel="alternate" type="application/atom+xml" title="{L_FEED} - {L_TOPIC} - {TOPIC_TITLE}" href="{U_FEED}?f={S_FORUM_ID}&t={S_TOPIC_ID}" /><!-- ENDIF -->
<!-- ENDIF -->

<!--
	phpBB style name: prosilver
	Based on style:   prosilver (this is the default phpBB3 style)
	Original author:  Tom Beddard ( http://www.subBlue.com/ )
	Modified by:

	NOTE: This page was generated by phpBB, the free open-source bulletin board package.
	      The phpBB Group is not responsible for the content of this page and forum. For more information
	      about phpBB please visit http://www.phpbb.com
-->

<script type="text/javascript">
// <![CDATA[
	var jump_page = '{LA_JUMP_PAGE}:';
	var on_page = '{ON_PAGE}';
	var per_page = '{PER_PAGE}';
	var base_url = '{A_BASE_URL}';
	var style_cookie = 'phpBBstyle';
	var style_cookie_settings = '{A_COOKIE_SETTINGS}';
	var onload_functions = new Array();
	var onunload_functions = new Array();

	/**
	* Find a member
	*/
	function find_username(url)
	{
		popup(url, 760, 570, '_usersearch');
		return false;
	}

	/**
	* New function for handling multiple calls to window.onload and window.unload by pentapenguin
	*/
	window.onload = function()
	{
		for (var i = 0; i < onload_functions.length; i++)
		{
			eval(onload_functions[i]);
		}
	}

	window.onunload = function()
	{
		for (var i = 0; i < onunload_functions.length; i++)
		{
			eval(onunload_functions[i]);
		}
	}

// ]]>
</script>

<script type="text/javascript" src="{T_TEMPLATE_PATH}/styleswitcher.js"></script>
<script type="text/javascript" src="{T_TEMPLATE_PATH}/forum_fn.js"></script>

<link href="{T_THEME_PATH}/print.css" rel="stylesheet" type="text/css" media="print" title="printonly" />
<link href="{T_STYLESHEET_LINK}" rel="stylesheet" type="text/css" media="screen, projection" />

<link href="{T_THEME_PATH}/normal.css" rel="stylesheet" type="text/css" title="A" />
<link href="{T_THEME_PATH}/medium.css" rel="alternate stylesheet" type="text/css" title="A+" />
<link href="{T_THEME_PATH}/large.css" rel="alternate stylesheet" type="text/css" title="A++" />

<!-- IF S_CONTENT_DIRECTION eq 'rtl' -->
	<link href="{T_THEME_PATH}/bidi.css" rel="stylesheet" type="text/css" media="screen, projection" />
<!-- ENDIF -->

<!-- добавить в избранное-->
<script type="text/javascript">
function getBrowserInfo() {
 var t,v = undefined;
 if (window.opera) t = 'Opera';
 else if (document.all) {
  t = 'IE';
  var nv = navigator.appVersion;
  var s = nv.indexOf('MSIE')+5;
  v = nv.substring(s,s+1);
 }
 else if (navigator.appName) t = 'Netscape';
 return {type:t,version:v};
}

function bookmark(a){
 var url = window.document.location;
 var title = window.document.title;
 var b = getBrowserInfo();
 if (b.type == 'IE') window.external.AddFavorite(url,title);
 else if (b.type == 'Opera') {
  a.href = url;
  a.rel = "sidebar";
  a.title = ''+title;
  return true;
 }
 else if (b.type == "Netscape") window.sidebar.addPanel(title,url,"");
 else alert("Нажмите CTRL-D, чтобы добавить страницу в закладки.");
 return false;
}
</script>

<link rel="stylesheet" href="{ROOT_PATH}highslide/highslide.css" type="text/css" />
<script type="text/javascript" src="{ROOT_PATH}highslide/highslide-full.js"></script>

<script type="text/javascript">
	hs.wrapperClassName = 'controls-in-heading';
	hs.outlineType = 'rounded-white';
        hs.align = 'center';
	hs.fadeInOut = true;
        hs.numberPosition = 'caption';

	// Add the controlbar
	if (hs.addSlideshow) hs.addSlideshow({
		slideshowGroup: 'highslide',
		interval: 5000,
		repeat: false,
		useControls: true,
		fixedControls: false,
		overlayOptions: {
			opacity: 1,
			position: 'top right',
			hideOnMouseOut: false
		}
	});
</script> 


<script type="text/javascript">
// <![CDATA[
	window.onload = resizeimg;
	function resizeimg()
	{
		if (document.getElementsByTagName)
		{
			var resClass = document.getElementsByTagName('span');
			for (var i = 0; i < resClass.length; i++)
			{
				if (resClass[i].className == "image-resize")
				{
					var img = resClass[i].getElementsByTagName("img");
					if (img[0].width > 400)
					{
						resClass[i].innerHTML = '<a href="' + img[0].src + '" class="highslide" onclick="return hs.expand(this)"><img src="' + img[0].src + '" width="400" alt="" title="{L_SP_ZOOM}"></a><div class="highslide-heading"></div>';
					}
				}
			}
		}
	}
// ]]>
</script>

<!-- INCLUDE ads/ads.js -->
</head>

<body id="phpbb" class="section-{SCRIPT_NAME} {S_CONTENT_DIRECTION}">

<!-- IF S_USER_PM_POPUP and S_NEW_PM -->
<a id="pm-popup-link" href="{UA_POPUP_PM}" onclick="return hs.htmlExpand(this, {objectType: 'ajax', captionEval: null, wrapperClassName: 'pm-popup', outlineType: 'rounded-white', align: 'center', dimmingOpacity: 0.5})"></a>
<script type="text/javascript">
	document.getElementById('pm-popup-link').onclick();
</script>
<!-- ENDIF -->
Профилирование
Когда отправляю сам себе и все ок вот так вот все хорошо:
Clipboard03.jpg
А когда уже другой юзер страница http://сайт.ru/ucp.php?i=pm&mode=popup уже прогружается без highslide (белый лист).

Это у меня только такой глюк?
Shredder
Former team member
Сообщения: 2217
Стаж: 15 лет 3 месяца
Благодарил (а): 236 раз
Поблагодарили: 561 раз
Контактная информация:

Re: Всплывающее сообщение при новых ЛС [Highslide]

Сообщение Shredder »

Nekstati писал(а):Мод предназначен в основном для тех, у кого на форуме уже используется Highslide (например, установлена phpBB Gallery и т. п.)
Если перейти по ссылке всплывающего окна из этой самой галереи, то получается вот что:

адрессайта/gallery/ucp.php?i=pm&folder=inbox

И конечно же ничего не работает.

_________

includes/functions.php

Код: Выделить всё

		'U_PRIVATEMSGS'			=> append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&folder=inbox'),
- замена этой строчки на следующую:

Код: Выделить всё

		'U_PRIVATEMSGS'			=> generate_board_url() . "/ucp.$phpEx?i=pm&folder=inbox",
- решила проблему.
Последний раз редактировалось Shredder 28.04.2012 16:50, всего редактировалось 1 раз.
demon201984
phpBB 1.4.4
Сообщения: 105
Стаж: 13 лет 1 месяц
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: Всплывающее сообщение при новых ЛС [Highslide]

Сообщение demon201984 »

Еще заметил вот что. Всплывающее окно появляется корректно когда скажем мне пришло ЛС в момент моего отсутсвия на сайта. И сразу же после того как я залогинился на сайте - всплывающее окно появляется. Но в процессе работы на сайте - всплывающе окна не отрабатыают - появляется лишь белый лист с текстом "Имеется новое сообщение" - даже в том случае если я нахожусь на index.php

Добавлено спустя 7 минут 13 секунд:
Вообщем опытным путем установил, что все отрабатывает корректно если я нахожусь в блоке /ucp.php c остальных страниц сайта работает не корректно.
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 14 лет 4 месяца
Благодарил (а): 43 раза
Поблагодарили: 506 раз
Контактная информация:

Re: Всплывающее сообщение при новых ЛС [Highslide]

Сообщение Pazh »

demon201984 в файле function.php найти

Код: Выделить всё

		'UA_POPUP_PM'			=> addslashes(append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&mode=popup')),
Заменить на:

Код: Выделить всё

		'UA_POPUP_PM'			=>generate_board_url() . "/ucp.$phpEx?i=pm&mode=popup",
попробуйте так (код не проверялся на работоспособность)
Помощь в ЛС/email только за WM или ЮMoney
demon201984
phpBB 1.4.4
Сообщения: 105
Стаж: 13 лет 1 месяц
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: Всплывающее сообщение при новых ЛС [Highslide]

Сообщение demon201984 »

Pazh
Изменения результата не принесли.

Потестировал еще. Оказалось что на localhost окно появляется довольно таки стабильно, бывают конечно - что появляется белый экран. А вот с реальным сайтом сложнее - тут практически постоянно белый экран, хотя бывает иногда появляется и всплывающее окошко.

Как мне кажется это из за того что, страница сайта грузится дольше чем highslide и форма окна ЛС (хотя страницы сайта у меня прогружаются довольно-таки быстро, проблем с этим нет.). В итоге получаем, что страница сайта не успела загрузиться, а появилось уже сообщение о ЛС - на белом фоне.
Может быть в этом причина?
Если в этом, то можно ли сделать так чтобы всплывающее окно появлялось лишь после того как страница сайта полностью прогрузится?

Добавлено спустя 47 минут 58 секунд:
Все, всем спасибо за участие :) проблема решена.
Как и предполагал проблема была связана с тем что информационное сообщение о новом ЛС загружалась ранее чем успевала прогрузиться страничка из за этого и возникал глюк.

Разместил код:

Код: Выделить всё

<!-- IF S_USER_PM_POPUP and S_NEW_PM -->
<a id="pm-popup-link" href="{UA_POPUP_PM}" onclick="return hs.htmlExpand(this, {objectType: 'ajax', captionEval: null, wrapperClassName: 'pm-popup', outlineType: 'rounded-white', align: 'center', dimmingOpacity: 0.5})"></a>
<script type="text/javascript">
	document.getElementById('pm-popup-link').onclick();
</script>
<!-- ENDIF -->
перед закрывающимся тегом </body> в overall_footer.html
Аватара пользователя
Yukh
phpBB 1.4.4
Сообщения: 153
Стаж: 11 лет 9 месяцев
Откуда: Москва
Благодарил (а): 15 раз
Поблагодарили: 12 раз
Контактная информация:

Re: Всплывающее сообщение при новых ЛС [Highslide]

Сообщение Yukh »

Нашел один неприятный баг.
Если открываешь сообщение по ссылке не с начала страницы (например последнее непрочитанное), то открывается выбранное сообщение, экран затемняется, а чтобы увидеть слой с сообщением о новом ЛС, приходится скроллить в самый верх.

Как победить пока не придумал.
Юрий.
Аватара пользователя
Юрий5
phpBB 1.4.1
Сообщения: 45
Стаж: 13 лет
Откуда: Киев
Благодарил (а): 7 раз
Контактная информация:

Re: Всплывающее сообщение при новых ЛС [Highslide]

Сообщение Юрий5 »

Стесняюсь спросить, на шаблоне subsilver2 "всплывашка" о новом личном сообщении работает?
Закрыто

Вернуться в «Бета-версии модов для phpBB 3.0.x»