Webboard

Pełna wersja: DVZ Shoutbox | Powiadomienie o nowych wiadomościach
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
wersja skryptu MyBB: 1.8.7
adres forum: http://minecraftpolska.net/forum/
na czym polega problem (screen, opis, komunikaty, nazwa i wersja wtyczki):

Witam.
Nie wiem czy to odpowiedni dział - jeśli nie, proszę o przeniesienie.
Wpadłem na pomysł aby zrobić powiadomienie o nowej wiadomości w dvz_shoutbox w stylu Facebooka.
Znalazłem taki oto skrypt i lekko go przerobiłem:

Kod:
<script language="javascript" type="text/javascript">
<!--
var s = 0;
var sT = null;
function A() {
s++;
if (s > 19) { s = 1;}
if (s == 1) { document.title = 'Shoutbox: '; }
if (s == 2) { document.title = 'Shoutbox: N '; }
if (s == 3) { document.title = 'Shoutbox: No '; }
if (s == 4) { document.title = 'Shoutbox: Now '; }
if (s == 5) { document.title = 'Shoutbox: Nowa '; }
if (s == 6) { document.title = 'Shoutbox: Nowa w '; }
if (s == 7) { document.title = 'Shoutbox: Nowa wi '; }
if (s == 8) { document.title = 'Shoutbox: Nowa wia '; }
if (s == 9) { document.title = 'Shoutbox: Nowa wiad '; }
if (s == 10) { document.title = 'Shoutbox: Nowa wiado '; }
if (s == 11) { document.title = 'Shoutbox: Nowa wiadom '; }
if (s == 12) { document.title = 'Shoutbox: Nowa wiadomo '; }
if (s == 13) { document.title = 'Shoutbox: Nowa wiadomoś '; }
if (s == 14) { document.title = 'Shoutbox: Nowa wiadomość '; }
if (s == 15) { document.title = 'Shoutbox: Nowa wiadomość! '; }
if (s == 16) { document.title = 'Shoutbox: Nowa wiadomość '; }
if (s == 17) { document.title = 'Shoutbox: Nowa wiadomość! '; }
if (s == 18) { document.title = 'Shoutbox: Nowa wiadomość '; }
if (s == 19) { document.title = 'Shoutbox: Nowa wiadomość! '; }
sT = setTimeout("A()", 150);
}
A();
</script>

Teraz tylko jak go podpiąć pod shoutboxa aby działał gdy karta nie jest aktywna i wyłączał się gdy włączymy kartę z forum?
http://stackoverflow.com/questions/17602...-is-active
+
Przechwycenie zmiany zawartosci na shoutboxie
problem w tym, że ja totalnie nie wiem jak tego użyć :) Jest to pomysł do zrealizowania więc jakby ktoś się podjął byłbym bardzo wdzięczny ;)
Przypatrz się jak to jest zrobione z odtwarzaniem dźwięku przy nowej wiadomości. Teraz nie mam zbytnio czasu, ale jak nie ogarniesz to wieczorem postaram się tym zająć.
Jak sie tym pobawisz try.jquery.com to bez problemu sam to zrobisz :)
Nie musisz wszystkich dzialow przewalkowywac. Ja zrobilem nieco ponad polowe i z podstawami spokojnie sobie radze. Niestety czasu nie mam na wiecej. Moze za jakis czas dokoncze ale teraz jest na on-hold.
Ewentualnie zobacz jak to jest zrealizowane tutaj lub na fb :)
Dobra. Narazie zrobiłem takie coś:

Kod:
<script>
dvz_shoutbox.callbacks['update'].push(function(){
    if ($('#shoutbox .entry.new').length) {
        document.title = "Shoutbox: Nowa wiadomość!";
    }
});
</script>

Teraz poprosiłbym o pomoc w stworzeniu zegarka i zapętlenia tak aby wiadomość przez 5 sekund pulsowała (zmieniała się z nazwy forum na w/w) i po 5 sek znikała.
Moze tworzenie odtwarzacza z petla a po 5s skrypt by go usuwal?
Set interval czy jakos tak ci sie przyda ;)
Trochę google i wychodzi:

Kod:
$(window).blur(function() {
   var defaultTitle = $(document).find("title").text();

   console.log('Blured');
   dvz_shoutbox.callbacks['update'].push(function() {
       if ($('#shoutbox .entry.new').length) {
           document.title = defaultTitle + ' - New Message';
       } else {
           document.title = defaultTitle;
       }
   });
});

A żeby konkretnie twój kod zastosować to:
Kod:
$(window).blur(function() {
   var defaultTitle = $(document).find("title").text();

   console.log('Blured');
   dvz_shoutbox.callbacks['update'].push(function() {
       if ($('#shoutbox .entry.new').length) {
           A();
       } else {
           document.title = defaultTitle;
       }
   });
});

var s = 0;
var sT = null;
function A() {
 s++;
 if (s > 19) { s = 1;}
 if (s == 1) { document.title = 'Shoutbox: '; }
 if (s == 2) { document.title = 'Shoutbox: N '; }
 if (s == 3) { document.title = 'Shoutbox: No '; }
 if (s == 4) { document.title = 'Shoutbox: Now '; }
 if (s == 5) { document.title = 'Shoutbox: Nowa '; }
 if (s == 6) { document.title = 'Shoutbox: Nowa w '; }
 if (s == 7) { document.title = 'Shoutbox: Nowa wi '; }
 if (s == 8) { document.title = 'Shoutbox: Nowa wia '; }
 if (s == 9) { document.title = 'Shoutbox: Nowa wiad '; }
 if (s == 10) { document.title = 'Shoutbox: Nowa wiado '; }
 if (s == 11) { document.title = 'Shoutbox: Nowa wiadom '; }
 if (s == 12) { document.title = 'Shoutbox: Nowa wiadomo '; }
 if (s == 13) { document.title = 'Shoutbox: Nowa wiadomoś '; }
 if (s == 14) { document.title = 'Shoutbox: Nowa wiadomość '; }
 if (s == 15) { document.title = 'Shoutbox: Nowa wiadomość! '; }
 if (s == 16) { document.title = 'Shoutbox: Nowa wiadomość '; }
 if (s == 17) { document.title = 'Shoutbox: Nowa wiadomość! '; }
 if (s == 18) { document.title = 'Shoutbox: Nowa wiadomość '; }
 if (s == 19) { document.title = 'Shoutbox: Nowa wiadomość! '; }
 sT = setTimeout("A()", 150);
}

Pierwszy kod: 
Używamy .blur aby sprawdzić, czy okno nie jest aktywne. Jeśli nie jest to pobieramy domyślny tytuł do zmiennej i używamy dvz's callback w celu sprawdzenia czy nadeszła nowa wiadomość. Jeśli tak to ustawiamy stary (domyślny) tytuł + nowy (info o wiadomości). W przeciwnym wypadku ustawiony jest domyślny i nic poza tym.
Drugi kod:
To samo, lecz tym razem zamiast ustawiać nowy tytuł to odnosimy się prosto do twojego kodu. 

Wybacz, ale nie umiem tłumaczyć.

Teraz przeczytałem jeszcze, że chcesz jakiś zegarek. Wystarczy, że do drugiego kodu dodasz zmienną defaultTitle. A, no i ustawisz odpowiedni czas, aby było 5 sekund.



Edit

Sobie pomyślałem, że i u siebie walne taki bajer, więc dla tych co kompletnie nic nie umieją poniżej umieszczam gotowca. Co do wersji powyższej to posiada ona bug. Polega on na tym, że gdy okno jest aktywne tytuł ciągle pokazuje nam, że posiadamy nową wiadomość. Gdy ktoś zaczyna się uczyć i chciałby się sprawdzić - polecam spróbować naprawić ten błąd. Wystarczy logicznie przemyśleć działanie kodu, a rozwiązanie samo przychodzi :>. W sumie zrobiłem głupi błąd, no ale co tam. Jak ktoś się nie chce bawić i liczy na gotowca:

Kod:
var defaultTitle = $(document).find("title").text(),
    s = 0,
    sT = null;

function A() {
    if (document.hasFocus()) {
        document.title = defaultTitle;
    } else {
        s++;
        if (s > 2) {
            s = 1;
        }
        if (s == 1) {
            document.title = defaultTitle + ' Nowa wiadomość';
        }
        if (s == 2) {
            document.title = defaultTitle;
        }
        sT = setTimeout("A()", 5000);
    }
}

$(window).blur(function() {
    console.log('Blured');
    dvz_shoutbox.callbacks['update'].push(function() {
        if ($('#shoutbox .entry.new').length) {
            A();
        }
    });
});
Jak ten kod zastosować w szablonie ?
Po prostu wklej skrypt i odpal dvz shoutbox.