#41 2011.05.15 10:49

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Переезд сервера

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

у меня на 15 сек обновления стоит
ты типо кнопочки не увидел в низу?

Отредактировано TLENS (2011.05.15 10:59)

Неактивен

#42 2011.05.15 11:42

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Переезд сервера

нет, не заметил. опиши подробнее что за кнопочка

Неактивен

#43 2011.05.15 11:43

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Переезд сервера

Минут через 30 освобожусь
Добавлено спустя   2 минуты  57 секунд:
Вот запусти в новом окне нажми обновить и напиши обычно на форуме. Только не через граб.
А да в настройках поставь автообновление.
Добавлено спустя   5 минут  6 секунд:
Корочь доработать надо уже на этом форуме ато я через php мост его толком не сделаю.
Сейчас прийду домой отпишу подробнее

Неактивен

#44 2011.05.15 12:42

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Переезд сервера

Плагин состоит из HTML JS И css/
html

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<div id="window-topic">
<div id="punmessage_list" class="pun">
<div class="block">
<div class="blockform" style="width: 55px;">
<h2 style="height: 20px;"><span onclick="windowTopToggle();" style="cursor: pointer;">Меню</span></h2>
<div id="window-topic-main">
<div class="window-reload window-reload-off" onclick="windowTopReload();" title="Обновить"></div>
<a href="javascript: windowTopSet();">Настройки</a>
</div>
<div class="box" id="window-topic-set">
&nbsp;<select name="reload" onchange="setReloadTimeout(this);">
<option value="0"> Выкл</option>
<option value="15">15 сек</option>
<option value="30">30 сек</option>
<option value="60">1 мин</option>
<option value="180">3 мин</option>
<option value="300">5 мин</option>
<option value="600">10 мин</option>
<option value="900">15 мин</option>
</select>
Интервал обновления<br />
&nbsp;<select name="hide" onchange="setHide(this);">
<option value="500">0.5 сек</option>
<option value="1000">1 сек</option>
<option value="2000">2 сек</option>
<option value="3000">3 сек</option>
<option value="4000">4 сек</option>
<option value="5000">5 сек</option>
<option value="7000">7 сек</option>
<option value="10000">10 сек</option>
</select> Прятать окно если не используется<br />
&nbsp;<input name="windowSetPlay" type="checkbox" onchange="setReloadPlay(this);" /> Включить звук<br />
</div>
<div id="forum" class="box">
<table cellspacing="0">
<thead><tr><th class="tcl" scope="col">Форум</th><th class="tcr" scope="col">Последнее сообщение</th></tr></thead>
<tbody>
<tr><td class="tcl"><div class="intd"><div class="icon"><div class="nosize"></div></div><div class="tclcon"><h3><a href="viewforum.php?id=3">PHP/MySQL </a></h3></div></div></td><td class="tcr"><a href="viewtopic.php?pid=16406#p16406">Debian: установка FFmpeg</a> <span class="byuser">Сегодня 15:04 - xits</span></td></tr>
<tr><td class="tcl"><div class="intd"><div class="icon"><div class="nosize"></div></div><div class="tclcon"><h3><a href="viewforum.php?id=4">xHTML/CSS/JavaScript</a></h3></div></div></td><td class="tcr"><a href="viewtopic.php?pid=16385#p16385">Не хватает ActionScript</a> <span class="byuser">Вчера 21:52 - Gemorroj</span></td></tr>
<tr><td class="tcl"><div class="intd"><div class="icon"><div class="nosize"></div></div><div class="tclcon"><h3><a href="viewforum.php?id=5">Компьютеры/Софт </a></h3></div></div></td><td class="tcr"><a href="viewtopic.php?pid=16402#p16402">Пищит компьютер</a> <span class="byuser">Сегодня 13:35 - Di-grees</span></td></tr>
<tr><td class="tcl"><div class="intd"><div class="icon"><div class="nosize"></div></div><div class="tclcon"><h3><a href="viewforum.php?id=6">Юмор </a></h3></div></div></td><td class="tcr"><a href="viewtopic.php?pid=16162#p16162">Белорусские компьютеры</a> <span class="byuser">2011.05.04 17:00 - TLENS</span></td></tr>
<tr><td class="tcl"><div class="intd"><div class="icon"><div class="nosize"></div></div><div class="tclcon"><h3><a href="viewforum.php?id=7">Общение </a></h3></div></div></td><td class="tcr"><a href="viewtopic.php?pid=16407#p16407">Переезд сервера</a> <span class="byuser">Сегодня 15:20 - TLENS</span></td></tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div id="play">
</div>
</div>

Имена топиков и форумов я вставил для теста в php тебе надо вставить те данные которые ты вставляешь на форуме.
CSS Это понятно обяснять нечего

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
div#window-topic{
position: fixed;
left: 5px;
bottom: 0;
}
div.window-reload{
display: inline;
background-repeat: no-repeat;
width: 20px;
height: 20px;
cursor: pointer;
position: absolute;
right: -25px;
top: 0;
}
div.window-reload#e{
}
div.window-reload-on{
background-image: url(../ajax-loader.gif);
}
div.window-reload-off{
background-image: url(../ajax-loader.png);
}
div#window-topic div#window-topic-main{
display: none;
position: absolute;
right: 25px;
top: 5px;
width: 300px;
text-align: right;
}
div#window-topic div#forum{
text-align:left;
display: none;
}
div#window-topic-set{
text-align:left;
display: none;
}

Ну и скрипт о нем подробнее

Неактивен

#45 2011.05.15 13:34

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Переезд сервера

Описал ввесь скрипт его еще надо много усовершенствовать например приват встроить.
Пример работы смотри на
Мда первый раз когда загружается на моем сайте там будут все мигать так как я не обновляю HTML блок вообще только через JS. Все равно зачем тратить время.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
// чтение cookie
function getCookie(cookieName) {
if (!cookieName)
return false;
var cookies = document.cookie.split('; ');
for (var i = 0; i < cookies.length; i++) {
var singleCookie = cookies[i].split('=');
if (singleCookie[0] == cookieName)
return singleCookie[1];
}
return false;
}
// установка cookie
function setCookie(cookieName, cookieValue, cookieExpire) {
if (!cookieName || !cookieValue)
return false;
var date = (cookieExpire ? new Date(cookieExpire) : new Date());
document.cookie = cookieName + '=' + cookieValue +
'; expires=' + date.toGMTString() +
'; path=/';
return true;
}
// удаление cookie
function deleteCookie(cookieName) {
if (!cookieName)
return false;
var date = new Date('01/01/1970');
document.cookie = cookieName + '=""' +
'; expires=' + date.toGMTString() +
'; path=/';
return true;
}
var windowTop, // обект блока
windowOnToggle, // это защита от повторного toggle 0-1 выполняется или нет
windowOnReload, // тоже только на аякс
windowTopHide, // задается id setTimeout для clearTimeout автоматическое закрытие блока если мыш уходит
windowSetReload = (getCookie('windowSetReload') ? getCookie('windowSetReload') : 0), // это настройка на период обновления для аякса
windowSetPlay = (getCookie('windowSetPlay') ? true : false), // Настройка проигровать мелодию если есть новые сообщения на форуме
windowSetHide = (getCookie('windowSetHide') !== false ? getCookie('windowSetHide') : 3000); // настройка через сколько прятать блок если уйдет мышь
$(document).ready(function() {
windowTop = $('div#window-topic'); // вписываю главный блок для дальнейшей работы чтобы каждый раз не искать в доме
selectReload = windowTop
.find("div#window-topic-set select[name='reload'] option[value='"+ windowSetReload +"']");
windowTop.find("div#window-topic-set input[name='windowSetPlay']")
.attr('checked',windowSetPlay); // В блоке настройки делает checked для выбранной настройки это можно сделать и посредством php
selectHide = windowTop
.find("div#window-topic-set select[name='hide'] option[value='"+ windowSetHide +"']"); // тоже самое
if (selectHide.text()) {
selectHide.attr('selected',1); // устанавливаем чекеды
}
if (selectReload.text()) {
selectReload.attr('selected',1); // устанавливаем чекеды
}
if (Math.floor(windowSetReload) >= 15) {
windowOnReload = setTimeout(windowTopReload, (windowSetReload * 1000)); // Если в настройках включено автообновления запускаем его
}
});
 
 
function windowTopToggle() { // функция открывает закрывает блок превращая в кнопочку
if (windowOnToggle) { // если уже выполняется т.е. дважды тыцнул будет глючить
return false;
} else {
windowOnToggle = 1; // выполняется тоггле
}
if (windowTop.width() > 60) { // Если ширина блока больше значит надо все сворачивать else открывать блок
windowTopSet(1); // закрываем блок с настройками
windowTop.find('div#forum:first').slideUp(500, function () { // закрытие блока с форумами
windowTop.find('div#window-topic-main')
.css('display', 'none'); // скрываем ссылку на настройки и крутилку чтобы не путались
windowTop.find('div.blockform')
.animate({width: '55px'}, 500, function (){ //И всорачиваем <h2>
windowOnToggle =0; // закончили
});
});
windowTop.unbind("mouseleave"); // Снимаем авто тоггле которое должнобыло автоматически свернуть
} else { // Розворачиваем блок
windowTop.find('div.blockform')
.animate({width: '400px'}, 500, function (){
windowTop.find('div#window-topic-main')
.css({display: 'inline'});
windowTop.find('div#forum').slideDown(500, function (){
windowOnToggle = 0;
});
});
windowTop.bind("mouseleave", function () {
windowTopHide = setTimeout(windowTopToggle, windowSetHide); // Устанавливаю автозакрытие если уйдет мышь с блока
}).bind('mouseenter', function () {
clearTimeout(windowTopHide); // если мыш зашла обратно снимаем задачу на закрытие
});
}
return false;
}
 
function windowTopSet(a) { // Блок с настройками показать спрятать работает как тогле или принуденно закрыть первым параметром
var setObject = windowTop.find('div#window-topic-set');
if (setObject.css('display') !== 'none' || a) {
setObject.slideUp(500); // закрыть
} else {
setObject.slideDown(500); // открыть
}
}
function windowNewIcon(a, b) { // делает мигание иконкой возле форума. a = номер форума которым надо замигать 0-4 и = мигать или отключить мигалку
windowTop.find('tbody tr').each(function (c) {
if (a == c) {
if (!b) {
$(this).removeClass('inew')
.find('div.icon')
.removeClass('inew')
.unbind('click')
.attr('title','')
.css('cursor', 'default');
return true;
} else {
$(this).addClass('inew')
.find('div.icon')
.addClass('inew')
.css('cursor', 'pointer') // Делаем возможность снять мигалку кликом тип интерестного ничего нет
.attr('title','Пометить все темы как прочитаные')
.click(function () { // Ну и вешаем на клик эту же функцию только на отключения
windowNewIcon(a);
// Здесь нужно отпрвить запрос на отметку всех тем как прочитаные в текужем форуме
});
return true;
}
}
});
// Функцию надо переписать чет промучился я над ним так уже сделал цыкл надо выбросить да и ремове подправить
}
 
function windowReloadToggle(a) { // Крутилка
if (a) {
windowTop.find('div.window-reload:first')
.removeClass('window-reload-off')
.addClass('window-reload-on');
} else {
windowTop.find('div.window-reload:first')
.removeClass('window-reload-on')
.addClass('window-reload-off');
}
}
 
function setReloadTimeout(a) { // Сохраняем настройки
console.log(a.value);
if (a.value) {
setCookie('windowSetReload', a.value, new Date('01/01/2012'));
windowSetReload = a.value;
if (Math.floor(windowSetReload) >= 15) {
clearTimeout(windowOnReload);
windowOnReload = setTimeout(windowTopReload, (windowSetReload * 1000));
}
} else {
deleteCookie('windowSetReload');
windowSetReload = 0;
}
}
function setHide(a) { // Сохраняем настройки
setCookie('windowSetHide', a.value, new Date('01/01/2012'));
windowSetHide = a.value;
}
function setReloadPlay(a) { // Сохраняем настройки
if (a.checked) {
setCookie('windowSetPlay', true, new Date('01/01/2012'));
windowSetPlay = true;
} else {
deleteCookie('windowSetPlay');
windowSetPlay = false;
}
}
function windowTopReload() { // Функция обновления
clearTimeout(windowOnReload); // Разрушаем предыдущую задачу если еще не началась
var idTimeout;
var arrDateMess = new Array();
// Формируем массив последних сообщений т.е. Отправляет типо такого Вчера 12:47 - DarkRiDDeR на сервер там проверяем если оно не совпадает значет было обновления в какойто теме и выдаст новые данные которые запишем в блок
windowTop.find('tr td span.byuser').each(function (){ // Обработаем цыклом. Теперь содержим 5 ников и дат можно их отправлять на сервер
arrDateMess.push($(this).text()); // Добавляем в масив текущие данные
});
windowReloadToggle(1); // Включаем крутилку
// отправляем постом масив сообщений для проверки
$.post('test.php', // адрес
{'dateMess': arrDateMess}, // Отправляемый массив
function(data) { // Получаем ответ JSON если все ок
windowReloadToggle(); // Отключаем крутилку
if (typeof data.dateMess == 'object') { // если есть обновления
windowTop.find('tbody tr td.tcr').each(function (i){ // Ищем где именно
if (typeof data.dateMess[i] == 'object') { // Проверяем наявность данных обект или болеан если новых сообщений нет
$(this).find('a') // Меняем Ссылку
.attr('href', 'viewtopic.php?pid='+
data.dateMess[i][0])
.html(data.dateMess[i][1]);
$(this).find('span.byuser').html(data.dateMess[i][2]); // иТекст кто ответил и когда
windowNewIcon(i, 1); // Мигаем иконкой
}
}); // Заканчиваем замену
if (windowSetPlay) { // Издаем звук
play(); // Можно еще в <title> оповестить
}
}
}, 'json') // Тип данных JSON
.error(function (){ // Если ошибка
windowReloadToggle(); // отключаем крутилку
return false;
});
if (windowSetReload >= 15) { // Задаем следующее обновления из настроек
windowOnReload = setTimeout(windowTopReload, (windowSetReload * 1000));
}
}
function play(a) { // Играем
textHtml5 = '<audio preload="metadata" autoplay="autoplay">\n';
textHtml5 += '<source src="../sound.ogg" type="audio/ogg; codecs=vorbis">\n';
textHtml5 += '<source src="../sound.mp3" type="audio/mpeg">\n';
textHtml5 += '</audio>\n';
if (!a) {
windowTop.find('div#play').html(textHtml5);
} else {
windowTop.find('div#play').text('');
}
setTimeout('play(1)',6000); //Играем не долго на всякий случай я еще не полностью роздуплил HTML5
}

Добавлено спустя   1 минуту  33 секунды:
Хоть не зря промучился ночь?

Неактивен

#46 2011.05.15 13:37

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Переезд сервера

расскажи, зачем там работа с куками в JS?

Неактивен

#47 2011.05.15 13:37

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Переезд сервера

Настройки сохранять
Добавлено спустя   2 минуты  10 секунд:
Вот
Добавлено спустя   3 минуты  26 секунд:
Да и CSS надо подправить я в нем запутался


Вложения

Неактивен

#48 2011.05.15 13:48

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Переезд сервера

Подогнал пот валидатор вроде все норм.
Ну дак как доделывать будем?

Неактивен

#49 2011.05.15 14:01

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Переезд сервера

смысл плагина? на других сайтах чтобы была возможность всегда иметь в трее окошко форума?
не лучше ли тогда такое реализовать как раширение для браузера?

Неактивен

#50 2011.05.15 14:02

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Переезд сервера

Я для этого сайта делал. А то не удобно както здесь
Добавлено спустя   1 минуту  1 секунду:
Вот видишь ты только написал в тему я ответил
Добавлено спустя   5 минут  58 секунд:
Остальное это за тобой зделать файл который будет отправлять правельный json/
И всунуть это в форум.
Добавлено спустя   7 минут  16 секунд:
Но закончить надо его в начале.
Дак как или удаляем это все нах и пусть здесь будет все как было?

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.015 s