Регистрация    Войти
Авторизация

Мгновенное оповещение как на сайте vk для ucoz

Мгновенное оповещение как на сайте vk для ucoz

Мгновенное оповещение как на сайте vk для ucoz. Всем привет, вот решил написать небольшой скрипт мгн. оповещений как на ВК.


В любом шаблоне перед
</body>
пишем:
В любом шаблоне перед пишем:

<div class="uBox"></div>


создаём папку js и в ней два файла: cookie.js, ualert.js и вставляем перед
В ualert.js пишим:
setTimeout(function () {    

var source = new EventSource('/php/evstream/index.php');
source.addEventListener('message', function(e) {
// Пришли какие-то данные
var data = e.data;
data = data.split('alert: ');
eval('var newalert = '+data[1]+';');

for( i = 0; i < 4; i++ ){
if(!$('#uBox_'+newalert[i].id).html() && cookie('uBox_'+newalert[i].id)==null){
$('#pmm_player').remove();
$('body').append('<embed type="application/x-shockwave-flash" id="pmm_player"
src="http://usite.su/images/player.swf?song_url=http://usite.su/images/new_ls.mp3&autoplay=1&loop=0" width="0" height="0"/>');
$('.uBox').animate({bottom:'10'}, {queue:false}).fadeIn().append('<div
class="uBoxMesssge" id="uBox_'+newalert[i].id+'"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td colspan="2" valign="top" align="left" class="uBoxTitle"><div class="uBox_close"><a class="uBox_close_s" title="Закрыть" href="javascript://" onclick="ualert_hide('+newalert[i].id+')"></a></div><b>Новое уведомление от '+newalert[i].title+'</b></td></tr><tr><td rowspan="2" width="50px" valign="top"><a href="/index/8-0-"><img class="uBoxAva" src="'+newalert[i].photo+'" border="0"></a></td><td valign="top" align="left" class="uBoxTheme">Тема: '+newalert[i].message+'</td></tr><tr><td valign="top" align="left" class="uBoxMessaged"><a style="word-wrap:break-word;text-decoration:none;text-align:left" href="javascript://"></a></td></tr></table></div>');
}
}
}, false);

source.addEventListener('open', function(e) {
// Соединение было открыто
}, false);

source.addEventListener('error', function(e) {
if (e.eventPhase == EventSource.CLOSED) {
// Соединение закрыто
}
}, false);

}, 5);

function ualert_hide(id){
cookie('uBox_'+id, '1', {expires: 1});

$('#uBox_'+id).animate({bottom:'10'}).fadeOut();

}


В cookie.js пишим:
function cookie(name, value, options) {    
if (typeof value != 'undefined') {
options = options || {};
if (value === null) {
value = '';
options.expires = -1;
}
var expires = '';
if (options.expires && (typeof options.expires == 'number' ||
options.expires.toUTCString)) {
var date;
if (typeof options.expires == 'number') {
date = new Date();
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
} else {
date = options.expires;
}
expires = '; expires=' + date.toUTCString();
}
var path = options.path ? '; path=' + (options.path) : '';
var domain = options.domain ? '; domain=' + (options.domain) : '';
var secure = options.secure ? '; secure' : '';
document.cookie = [name, '=', encodeURIComponent(value), expires, path,
domain,
secure].join('');
} else {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
};


Создаём в папке php папку evstream, в ней создаём 2 файла: base.php, index.php
Своего рода базой является base.php, в нём пишем:

<? 
/*
//Автор: faforty
Файл: base.php
Назначение: исполняет роль базы оповещений
*/
if (! defined ( 'FAFORTYDEV' )) {
die ( "Hacking attempt!" );
}
$base_alert = array(
'1' => array(
'title' => 'ВКурсе. Первый журнал', //Название оповещения
'message' => 'Самая редкая кошка на планете: фото', //Сообщение
'photo' => 'http://cs6005.userapi.com/u76040944/d_f0af6997.jpg', //Url на фото
'group_id' => '1,3,4', //id групп через запятую, для которых выводить
оповещение, 0 - для всех групп
'user_id' => '0', //id пользователей для которых выводить сообщение, 0 -
для всех пользователей
'active' => '1' //1 - оповещание активно, 0 - неактивно
),
'2' => array(
'title' => 'ВКурсе. Первый журнал',
'message' => 'Самая быстрая машина в мире: фото',
'photo' => 'http://cs6005.userapi.com/u76040944/d_f0af6997.jpg',
'group_id' => '0',
'user_id' => '0',
'active' => '1'
)
);
?>


В файле index.php:
<? 
//Автор: faforty
$___notjson = 1;

header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

@error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );
@ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );

define ( 'FAFORTYDEV', true );

$domen = "http://".$_SERVER['HTTP_HOST'];

require_once('./base.php');

function sendMsg($id, $msg) {
echo "id: $id" . PHP_EOL;
echo "data: $msg" . PHP_EOL;
echo PHP_EOL;
ob_flush();
flush();
}
$serverTime = time();

foreach($base_alert as $key => $massiv)
{
$group_id = $massiv['group_id'];
$user_id = $massiv['user_id'];
$my_user = ucoz_getinfo("SITEUSERID");
$v_arr = array('id' => $key, 'title' => $massiv['title'],'message' => $massiv
['message'],'photo' => $massiv['photo']);
if($massiv['active']){
if($group_id==0 && $user_id==0){
$var_js[]= $v_arr;
}else{

$m_group = explode(',',$group_id);
$m_user = explode(',',$user_id);

foreach($m_group as $group){
foreach($m_user as $user){
$user_data = xmlrpc_decode(file_get_contents($domen."/api/index/8-".
$my_user), "utf8");
if(($user == 0 || $user == $user_data["USER_ID"]) && ($group == 0 ||
$group == $user_data["USER_GROUPID"])){
$var_js[]= $v_arr;
}
}
}
}

}
}

sendMsg($serverTime, 'alert: '. json_encode($var_js));
?>


И на последок осталось добавить css. Создаём папку css и там ualert.css:

.uPM{    
position:relative;z-index:9999
}
.uBox{
position:fixed;bottom:5px;right:5px;z-index:9999
}
.uBoxMesssge{
display:none;
padding: 5px;
margin-bottom: 10px;
width:300px;
background: url(http://usite.su/images/uContent-bg.png);
padding: 7px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
-moz-box-shadow: 0px 2px 7px rgba(0, 0, 0, 0.70);
-webkit-box-shadow: 0px 2px 7px rgba(0, 0, 0, 0.70);
box-shadow: 0px 2px 7px rgba(0, 0, 0, 0.70);
}
.uBoxTitle b{
font: bold 11px Tahoma !important;
}

.uBoxMesssge *{
font: 11px Tahoma;
color:#fff;
text-shadow:0px 1px 0px rgba(0, 0, 0, 0.70);
}
.uBoxAva{
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
width:50px;
}

.uBox_close{
background: #000;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
-moz-box-shadow: 0 0 2px #111;
-webkit-box-shadow: 0 0 2px #111;
box-shadow: 0 0 2px #111;
padding: 5px;
margin: 0 0 0 10px;
opacity: 0.6;
width: 7px;
float:right
}

.uBox_close_s{
display: block;
background: url("http://usite.su/images/notifier_close.gif") no-repeat scroll 0 0
transparent;
opacity: 0.6;
width: 7px;
height: 7px;
}
.uBox_close_s:hover{
opacity: 1.0;
}
.uBoxTheme{
padding-left:5px;
color:#bbb;
}
.uBoxMessaged{
padding-left:5px;
}
.uBoxMessaged a{
color:#fff;

}


На этом установка скрипта завершена Работает также как и на ВК.

Есть вопросы по шаблону или скрипту? так задай их и мы ответим!

Автор: chestr  14-05-2012, 11:21   Просмотров: 4374   
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.

Пользователь offline exarh 14 мая 2012 15:08
Для DLE бы такую штуку.

          1
Пользователь offline zomatsa 14 мая 2012 16:07
есть наверно поищи в инете smile

          2
Пользователь offline mega-kz 24 мая 2013 12:52
установите мне пожалуйста ) login ot mail : didar-amangeldin@mail.ru
login ot vk : vk/com/didar.amangeldin

          3

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.