Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 4260 Просмотров
*

tnex

  • Новичок
  • 5
  • 3 / 0
Под настроение, решил поделиться  ^-^
У меня работает на JomSocial 1.6.288
Итак, для автоматического оповещения о сообщениях надо:

1. В файл /components/com_community/controllers/notification.php после строк
Код
class CommunityNotificationController extends CommunityBaseController
{
добавить следующий код
Код
	function ajaxNotifyUser()
{
if (!isRegisteredUser()) {
return $this->ajaxBlockUnregister();
}

$objResponse = new JAXResponse ();

$my = CFactory::getUser();
$inboxModel =& CFactory::getModel( 'inbox' );
$friendModel =& CFactory::getModel ( 'friends' );
$unreadInbox = $inboxModel->getUnReadInbox();
$pendingFren = $friendModel->getPending($my->id);
$msgCount = 0;
if(! empty( $unreadInbox ))
                      {
$msgCount += count($unreadInbox);
}
if(! empty( $pendingFren ))
                      {
$msgCount += count($pendingFren);
}

if ($msgCount > 0)
{
$objResponse->addScriptCall( 'jQuery("#toolbar-item-notify-count").text('. $msgCount . ');');
$objResponse->addScriptCall( 'jQuery("#toolbar-item-notify").show();');
}

return $objResponse->sendResponse();
}

2. В файл /components/com_community/jax.community.php после строки
Код
/** notification **/
(что, конечно же, для удобства) добавить
Код
$jaxFuncNames[]= 'notification,ajaxNotifyUser';

3. В папке /components/com_community/assets/ создать файл automsg.js
Код
function AutoMsg() {
if ((jQuery('#cWindow').length < 1) || (jQuery('#cWindow').css('display') == 'none')) {
jax.call("community", "notification,ajaxNotifyUser");
}
setTimeout("AutoMsg()", 10000);
}

jQuery(document).ready(function() {
AutoMsg();
});

4. В шаблоне (я вставил в шаблон Joomla сразу перед
Код
</head>
) добавляем вызов скрипта
Код
<script type="text/javascript" src="/components/com_community/assets/automsg.js"></script>

5. В шаблоне в файле toolbar.index.php заменяем
Код
<?php if ( (!empty($notiAlert)) && ($notiAlert > 0) ) { ?>
<li id="toolbar-item-notify">
<a href="javascript:joms.notifications.showWindow();">
<span id="toolbar-item-notify-count"><?php echo $notiAlert; ?></span>
</a>
</li>
<?php }//end if?>
на
Код
<?php  //if ( (!empty($notiAlert)) && ($notiAlert > 0) ) { ?>
<li id="toolbar-item-notify" class="toolbar-item" style="display: none;">
<a href="javascript:joms.notifications.showWindow();">
<span id="toolbar-item-notify-count"><?php //echo $notiAlert; ?></span>
</a>
</li>
<?php  //}//end if?>



Пользуйтесь! Буду рад, если кому пригодится  ^-^
Да, и еще, могу модифицировать под нужды, но уже за $$, точнее рубли

Да и еще, всплывающих окошек не будет. Просто должен появиться блок количеством новых сообщений. Если нужно всплывающее окошко, то в модуле notification.php в функции ajaxNotifyUser код
Код
		if ($msgCount > 0)
{
$objResponse->addScriptCall( 'jQuery("#toolbar-item-notify-count").text('. $msgCount . ');');
$objResponse->addScriptCall( 'jQuery("#toolbar-item-notify").show();');
}
надо заменить на
Код
		if ($msgCount > 0)
{
$objResponse->addScriptCall( 'jQuery("#toolbar-item-notify-count").text('. $msgCount . ');');
$objResponse->addScriptCall( 'jQuery("#toolbar-item-notify").show();');
$objResponse->addScriptCall( 'joms.notifications.showWindow();');
}

Вроде все  ^-^
« Последнее редактирование: 06.04.2010, 14:41:43 от tnex »
*

Zombeee

  • Захожу иногда
  • 328
  • 55 / 3
Цитировать
Да и еще, всплывающих окошек не будет. Просто должен появиться блок количеством новых сообщений. Если нужно всплывающее окошко, то в модуле notification.php в функции ajaxNotifyUser код
Код:

      if ($msgCount > 0)
      {
         $objResponse->addScriptCall( 'jQuery("#toolbar-item-notify-count").text('. $msgCount . ');');
         $objResponse->addScriptCall( 'jQuery("#toolbar-item-notify").show();');
      }

надо заменить на
Код:

      if ($msgCount > 0)
      {
         $objResponse->addScriptCall( 'jQuery("#toolbar-item-notify-count").text('. $msgCount . ');');
         $objResponse->addScriptCall( 'jQuery("#toolbar-item-notify").show();');
         $objResponse->addScriptCall( 'joms.notifications.showWindow();');
      }

а вот это неправильно :) вот некогда мне смотреть новое сообщение... ну, к примеру я пишу сообщение другому пользователю, а эта зараза будет раз в 10 секунд мне надоедать...
*

Stiffman

  • Новичок
  • 4
  • 1 / 0
Получилось внедрить, правда есть еще интересный момент!
Модуль "Кто on-line" гости - показывает каждое обращение к серверу и количество гостей - огого )
*

tnex

  • Новичок
  • 5
  • 3 / 0
а вот это неправильно :) вот некогда мне смотреть новое сообщение... ну, к примеру я пишу сообщение другому пользователю, а эта зараза будет раз в 10 секунд мне надоедать...

Все решаемо, было бы желание, имхо. А придраться можно ко всему. Я же сказал, это базовое решение.

Например, так:
Файл automsg.js
Код
function AutoMsg() {
if ((jQuery('#cWindow').length < 1) || (jQuery('#cWindow').css('display') == 'none')) {
jax.call("community", "notification,ajaxNotifyUser");
}
setTimeout("AutoMsg()", 10000);
}

jQuery(document).ready(function() {
AutoMsg();
});

Я в шапке код поправил с учетом пожеланий Zombeee :)
« Последнее редактирование: 31.03.2010, 13:59:52 от tnex »
*

tnex

  • Новичок
  • 5
  • 3 / 0
Получилось внедрить, правда есть еще интересный момент!
Модуль "Кто on-line" гости - показывает каждое обращение к серверу и количество гостей - огого )


Не знаю, я не пользуюсь этим модулем. Надо подумать :) Выход всегда есть :)
*

Stiffman

  • Новичок
  • 4
  • 1 / 0
Такой вопрос!
А как можно сделать, чтоб уведомление выходило только при загрузке любой страницы ?
Я сделал вот так:
Код
function AutoMsg() {
jax.call("community", "notification,ajaxNotifyUser");
//setTimeout("AutoMsg()", 10000);
}

jQuery(document).ready(function() {
AutoMsg();
});
Но получается, что при загрузке страницы мы посылаем AJAX зарос.
Можно как-то сразу проверять, если новое сообщение есть - выводить всплывающее окно
(а то получается лишний запрос к серверу)?
*

Frizzka

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
А может кто нибудь знает, как сделать чтоб вмсето новых сообщений в всплывающем окне были показаны новые заявки в друзья!!
Знающие люди помогите найти решение, очень надо...За ранее спасибо))
*

jana

  • Захожу иногда
  • 63
  • 2 / 0
  • Яна
А как сделать в новых версиях, например JomSocial 2.4?, а то в реальном времени когда приходит сообщение вместо окна с сообщениями всплывает окно ,,Общее оповещение,, с надписью В данное время у Вас нет новых извещений
*

Trampypys

  • Захожу иногда
  • 132
  • 3 / 1
Большое спасибо! tnex
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] проблема с eventlist

Автор deners

Ответов: 16
Просмотров: 3592
Последний ответ 15.01.2012, 09:11:31
от kharol
help! (Почти решено) JSPT Обработчик события onclick как на полигоне

Автор zevs_1993

Ответов: 4
Просмотров: 2391
Последний ответ 15.07.2011, 00:20:32
от zevs_1993
[Решено]Некоректная работа с модулем Hello me.

Автор delta6

Ответов: 4
Просмотров: 2008
Последний ответ 07.06.2011, 16:52:45
от delta6
[Решено] Выдернуть Аватар из JS

Автор Darknemo

Ответов: 17
Просмотров: 3439
Последний ответ 02.08.2010, 14:36:02
от Darknemo
ищу плагин для jomsocial (список юзеров в личных сообщениях)

Автор maximt

Ответов: 0
Просмотров: 1899
Последний ответ 20.05.2009, 14:15:19
от maximt