Divers Forum România
Logo
AdvancedForum
  • Search section:
.
Divers Forum România

Pagina 1 din 1
MesajPostat: Mar Mai 16, 2017 9:18 pm
#1
mihai
mihai
Membru onorific
avatar
/10000
Mesaje Mesaje : 187
Vârstă Vârstă : 19
Romania
Tutorial [BETA] Notificari in browser
Zeus a scris:Salutare tuturor,

In aceasta dupa-amiaza am realizat un cod pentru afisarea notificarilor in browser.

Demonstratie




Instalare


Pentru instalarea acestei caracteristici intrati in:
Panou > Module > HTML & JAVASCRIPT > Gestiunea codurilor javascript > Creati un nou cod JavaScript

Completati rubricile cu:

  • Titlu: Notificari in browser
  • Amplasare: Toate paginile
  • Cod:

    Cod:

    function compareDate(from, to, check) {
        var fDate = Date.parse(from),
            lDate = Date.parse(to),
            cDate = Date.parse(check);

        if ((cDate <= lDate && cDate >= fDate)) {
            return true;
        }
        return false;
    }

    function addDays(theDate, days) {
        return new Date(theDate.getTime() + days * 24 * 60 * 60 * 1000);
    }

    function setCookie(cname, cvalue, exdays) {
        var d = new Date();
        d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
        var expires = "expires=" + d.toGMTString();
        document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
    }

    function getCookie(cname) {
        var name = cname + "=";
        var decodedCookie = decodeURIComponent(document.cookie);
        var ca = decodedCookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') {
                c = c.substring(1);
            }
            if (c.indexOf(name) == 0) {
                return c.substring(name.length, c.length);
            }
        }
        return "";
    }

    document.addEventListener('DOMContentLoaded', function() {
        if (Notification.permission !== "granted")
            Notification.requestPermission();
    });

    function ChromeNotif() {
        if (!Notification) {
            return;
        }

        if (Notification.permission !== "granted") {
            Notification.requestPermission();
        } else if (navigator.cookieEnabled === true) {
            console.log("[CONSOLE] Google Notifications working");
            var notif_icon = "http://redcdn.net/frmste/images/sigle.png";
            var forums = [6, 4, 5, 16];
            var limit = 4;

            var text = function(cont, tag) {
                tag = cont.getElementsByTagName(tag)[0];
                return (tag && tag.firstChild && tag.firstChild.nodeValue) || '';
            };
            for (var j = 0, f;
                (f = forums[j++]);) {
                $.get('/feed/?f=' + f, function(xml) {
                    var topics = xml.getElementsByTagName('item'),
                        i = 0,
                        t = null;

                    for (;
                        (t = topics[i++]);) {

                        var topic_date = new Date(text(t, 'pubDate'));

                        if (compareDate(addDays(new Date(), -1), addDays(new Date(), +1), topic_date)) {
                            var topic_link = text(t, 'link'),
                                topic_title = text(t, 'title'),
                                topic_desc = text(t, 'description');
                            if (getCookie("notif_" + topic_title + "") != topic_link) {

                                var notification = new Notification(topic_title, {
                                    icon: notif_icon,
                                    body: topic_desc.replace(/\n/g, ' ')
                                });

                                notification.onclick = function() {
                                    window.open(topic_link);
                                };

                                setCookie("notif_" + topic_title + "", topic_link, 30);
                            }

                        }

                        if (i >= limit) break;
                    }
                });
            }

        }
    }

    jQuery(function($) {
        ChromeNotif();
    });

    window.setInterval(function() {
        ChromeNotif();
    }, 60000);





Personalizarea notificarilor din cod:

var forums = [6, 4, 5, 16];

Inlocuiti sirul de numere din acea linie cu ID-urile sectiuniilor dorite.


var limit = 4;

Inlocuiti acea valoare cu numarul de notificari de afisat in acelasi timp.


var notif_icon = "[Trebuie sa fiti inscris si conectat pentru a vedea acest link]";

Inlocuiti acea imagine cu sigla dorita.


Dupa efectuarea modificarlor dorite validati formularul.


De retinut faptul ca aceste notificari nu vor fi vizibile tuturor. Fiecare utilizator va fi intrebat in momentul in care acceseaza forumul daca doreste sau nu afisarea notificarilor.



Codul este inca in faza de dezvoltare, in caz de functionare necorespunzatoare postati aici. Fa cu ochiu'
Vezi profilul utilizatorului http://diversforum.dust.tv/
Raspunde la subiect
Subiecte vechi Subicte noiPagina 1 din 1
[BETA] Notificari in browser
Nu puteti raspunde la subiectele acestui forum