Vorschlag: Benachrichtigungston

  • Ersteller Ersteller Deleted member 149825
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
D

Deleted member 149825

Unregistriert
Vorwort: Sorry, falls es dieses Thema schon gab, ich habe dazu jedoch im Forum nichts gefunden.

Hallo, also, man stelle sich vor: Man sitzt am Computer, hat mehrere Tabs offen. Einmal geht man auf Twitter, schaut sich seine Timeline an, dann geht man auf Youtube und schaut sich ein Video an. Nebenbei ist irgendwo im Hintergrund das Forum geöffnet, indem man vor ca. 10 Minuten einen Beitrag kommentiert hat.
Nichtsahnend, schaut man sich noch ein Video an, und noch eins und so weiter.
Währenddessen hat man im Forum 10 neue Benachrichtigungen, da man ja vorhin einen Beitrag kommentiert hat und andere Leute darauf geantwortet haben und fleißig diskutieren.
Man selbst bekommt davon aber nicht mit, da man erst die Seite aktualisieren muss, damit man die neuen Hinweise sieht. Also geht man wieder ins Forum aktualisiert und sieht die neuen Hinweise, jedoch hat man davon gar nichts mitbekommen, somit sind die anderen Leute bei dem Beitrag schon längst an einem neuen Diskussionspunkt angelangt, und man konnte sich nicht noch auf seine eigenen Worte rechtfertigen.

Und genau deswegen mache ich jetzt den Vorschlag, dass man einen Benachrichtigungston in das Forum integriert. Man nehme sich Facebook als Beispiel. Dort hört man immer einen kurzen Ton, wenn eine neue Benachrichtigung eintrifft, was man genauso gut in das Forum hier übertragen könnte.

Was haltet ihr davon?


Ich hoffe meine Idee ist verständlich formuliert und danke fürs Lesen.
~Mai
 
Das müsse von Xenforo eingefügt werden. Das ist die Firma, von der das Forum ist.

Du kannst ja auf der Website von Xenforo nach Erweiterungen suchen, aber auch wenn du eine findest, wird sie das Team wahrscheinlich nicht einfügen, weil bis jetzt alle Vorschläge für Forumerweiterungen ignoriert wurden, soweit ich weiß...

//Edit: so fame Personen wie ich würden dann aber von den Benachrichtigungstönen vollgespammt werden :c
 
  • Like
Reaktionen: kevinletsPLAY
//Edit: so fame Personen wie ich würden dann aber von den Benachrichtigungstönen vollgespammt werden :c

Ich weiß nun mal nicht wie man all sowas programmiert, aber theoretisch könnte man in den Einstellungen dann auswählen, für was man Benachrichtigt wird und für was nicht.
 
Bin auch gerade ein bisschen am probieren, es zu modifizieren.
Derzeit kommt das Geräusch aber dauerhaft, wenn ich eine neue Nachricht habe.
Falls es funktioniert, kann ich die modifizierte Version hier reinschreiben ._.
 
So, dank deiner Nachricht konnte ich es auch noch fertig testen^^
Ist jetzt fertig modifiziert:

Code:
// ==UserScript==
// @name       XenForo Enhancer
// @namespace  http://mercenarydesign.com.au/
// @version    0.5
// @description  This will enhance a default XenForo website in a few ways. Allow categories to be collapsed. Poll the server more often to get current alerts and inboxes quicker. And to show alerts and inboxes in the title bar over the favicon.
// @match      https://*.gommehd.*/*
// @include    https://*.gommehd.*/*
// @copyright  2012+, MercenaryDesign.com.au
// ==/UserScript==

var main = function () {
    var oldCount=0;
    var Merc = Merc || {};

    /** @param {jQuery} $ jQuery Object */
    !function($, window, document, _undefined)
    {
       //Hier beliebigen Sound einfügen
        mSound = new Audio("http://www.myinstants.com/media/sounds/yay_1.mp3");
              
        Merc.CategoryCollapse = function($nodeList) { this.__construct($nodeList); };
        Merc.CategoryCollapse.prototype = {
            __construct: function($nodeList)
            {
                var that = this;

                this.cookieName = 'merc-categories-collpased';

                this.$cats = $nodeList.find('.category');
                this.$handleTemplate = $('<a style="float: right; cursor: pointer; margin-top: 2px;" class="Popup PopupOpen"><span class="arrowWidget"></span></a>');
                this.closedCats = this.getClosedCats();

                this.$cats.each(function()
                {
                    var $catStrip = $(this).find('.nodeInfo.categoryStrip'),
                        $handle = that.$handleTemplate.clone();

                    if ($.inArray($(this).attr('id'), that.closedCats) !== -1)
                    {
                        $handle.removeClass('PopupOpen');
                        $(this).find('.nodeList').hide();
                    }

                    $handle.click($.context(that, 'toggleNodes'));
                    $catStrip.prepend($handle);
                });
            },

            getClosedCats: function()
            {
                var cookie = $.getCookie(this.cookieName);

                if (cookie)
                    return cookie.split(',');

                return [];
            },

            toggleNodes: function(e)
            {
                var $handle = $(e.currentTarget),
                    open = $handle.hasClass('PopupOpen'),
                    $cat = $handle.closest('.category'),
                    $nodeList = $cat.find('.nodeList'),
                    i;

                if (open)
                {
                    $nodeList.xfSlideUp();
                    $handle.removeClass('PopupOpen');
                    this.closedCats.push($cat.attr('id'));
                }          
                else
                {
                    $nodeList.xfSlideDown();
                    $handle.addClass('PopupOpen');
                    for (i in this.closedCats)
                    {
                        if (this.closedCats[i] == $cat.attr('id'))
                        {
                            this.closedCats.splice(i, 1);
                            break;
                        }
                    }
                }

                this.saveChanges();
            },

            saveChanges: function()
            {
                $.setCookie(this.cookieName, this.closedCats.join(','), 2592000000);
            }
        };

        Merc.SetupAutoPolling = function()
        {
            if (!Merc.loggedIn)
                return;

            $(document).bind('XFAjaxSuccess', Merc.AjaxSuccess);

            Merc.AjaxSuccess();
            setInterval(Merc.PollServer, 1000);
        }

        Merc.PollServer = function()
        {
            if (!Merc.xhr && new Date().getTime() - Merc.lastAjaxCompleted > 10000)
            {
                var ajaxStart = $(document).data('events').ajaxStart[0].handler;
                $(document).unbind('ajaxStart', ajaxStart);
                Merc.xhr = XenForo.ajax('index.php?misc/lightbox', {}, function(){}, { // chose lightbox here because it is the least intensive controller I could find
                    error: function(xhr, responseText, errorThrown)
                    {
                        delete(Merc.xhr);
                        switch (responseText)
                        {
                            case 'timeout':
                            {
                                console.warn(XenForo.phrases.server_did_not_respond_in_time_try_again);
                                break;
                            }
                            case 'parsererror':
                            {
                                console.error('PHP ' + xhr.responseText);
                                break;
                            }
                        }
                        return false;
                    },
                    timeout: 10000
                });
                $(document).bind('ajaxStart', ajaxStart);
            }
        }

        Merc.AjaxSuccess = function(ajaxData)
        {
            var count = parseInt($('#ConversationsMenu_Counter span.Total').text()) + parseInt($('#AlertsMenu_Counter span.Total').text());

            Tinycon.setBubble(count);
          
            if(count>oldCount)
            {
                mSound.play();
            }
            oldCount=count;
              Merc.lastAjaxCompleted = new Date().getTime();

              delete(Merc.xhr);
        }

        // *********************************************************************
        // Detect XenForo and init
        var $html = $('html');
        if (XenForo !== undefined && $html.attr('id') === 'XenForo' && $html.hasClass('Public'))
        {
            Merc.loggedIn = $html.hasClass('LoggedIn');

            //XenForo.register('.nodeList.sectionMain', 'Merc.CategoryCollapse');
            new Merc.CategoryCollapse($('.nodeList.sectionMain'));

            if (!$html.data('pollinterval'))
            {
                /*
                 * Tinycon - A small library for manipulating the Favicon
                 * Tom Moor, http://tommoor.com
                 * Copyright (c) 2012 Tom Moor
                 * MIT Licensed
                 * @version 0.2.6
                */

                (function(){var Tinycon={};var currentFavicon=null;var originalFavicon=null;var originalTitle=document.title;var faviconImage=null;var canvas=null;var options={};var defaults={width:7,height:9,font:'10px arial',colour:'#ffffff',background:'#F03D25',fallback:true};var ua=(function(){var agent=navigator.userAgent.toLowerCase();return function(browser){return agent.indexOf(browser)!==-1}}());var browser={chrome:ua('chrome'),webkit:ua('chrome')||ua('safari'),safari:ua('safari')&&!ua('chrome'),mozilla:ua('mozilla')&&!ua('chrome')&&!ua('safari')};var getFaviconTag=function(){var links=document.getElementsByTagName('link');for(var i=0,len=links.length;i<len;i++){if((links[i].getAttribute('rel')||'').match(/\bicon\b/)){return links[i]}}return false};var removeFaviconTag=function(){var links=document.getElementsByTagName('link');var head=document.getElementsByTagName('head')[0];for(var i=0,len=links.length;i<len;i++){var exists=(typeof(links[i])!=='undefined');if(exists&&links[i].getAttribute('rel')==='icon'){head.removeChild(links[i])}}};var getCurrentFavicon=function(){if(!originalFavicon||!currentFavicon){var tag=getFaviconTag();originalFavicon=currentFavicon=tag?tag.getAttribute('href'):'/favicon.ico'}return currentFavicon};var getCanvas=function(){if(!canvas){canvas=document.createElement("canvas");canvas.width=16;canvas.height=16}return canvas};var setFaviconTag=function(url){removeFaviconTag();var link=document.createElement('link');link.type='image/x-icon';link.rel='icon';link.href=url;document.getElementsByTagName('head')[0].appendChild(link)};var log=function(message){if(window.console)window.console.log(message)};var drawFavicon=function(num,colour){if(!getCanvas().getContext||browser.safari||options.fallback==='force'){return updateTitle(num)}var context=getCanvas().getContext("2d");var colour=colour||'#000000';var num=num||0;var src=getCurrentFavicon();faviconImage=new Image();faviconImage.onload=function(){context.clearRect(0,0,16,16);context.drawImage(faviconImage,0,0,faviconImage.width,faviconImage.height,0,0,16,16);if(num>0)drawBubble(context,num,colour);refreshFavicon()};if(!src.match(/^data/)){faviconImage.crossOrigin='anonymous'}faviconImage.src=src};var updateTitle=function(num){if(options.fallback){if(num>0){document.title='('+num+') '+originalTitle}else{document.title=originalTitle}}};var drawBubble=function(context,num,colour){var len=(num+"").length-1;var width=options.width+(6*len);var w=16-width;var h=16-options.height;context.font=(browser.webkit?'bold ':'')+options.font;context.fillStyle=options.background;context.strokeStyle=options.background;context.lineWidth=1;context.fillRect(w,h,width-1,options.height);context.beginPath();context.moveTo(w-0.5,h+1);context.lineTo(w-0.5,15);context.stroke();context.beginPath();context.moveTo(15.5,h+1);context.lineTo(15.5,15);context.stroke();context.beginPath();context.strokeStyle="rgba(0,0,0,0.3)";context.moveTo(w,16);context.lineTo(15,16);context.stroke();context.fillStyle=options.colour;context.textAlign="right";context.textBaseline="top";context.fillText(num,15,browser.mozilla?7:6)};var refreshFavicon=function(){if(!getCanvas().getContext)return;setFaviconTag(getCanvas().toDataURL())};Tinycon.setOptions=function(custom){options={};for(var key in defaults){options[key]=custom.hasOwnProperty(key)?custom[key]:defaults[key]}return this};Tinycon.setImage=function(url){currentFavicon=url;refreshFavicon();return this};Tinycon.setBubble=function(num,colour){if(isNaN(parseFloat(num))||!isFinite(num))return log('Bubble must be a number');drawFavicon(num,colour);return this};Tinycon.reset=function(){Tinycon.setImage(originalFavicon)};Tinycon.setOptions(defaults);window.Tinycon=Tinycon})();

                Merc.SetupAutoPolling();
            }
        }
    }
    (jQuery, this, document);
  

};



// *********************************************************************
// Inject our main script
var script = document.createElement('script');
script.textContent = '(' + main.toString() + ')();';
document.body.appendChild(script);

Man muss nur an der Stelle, bei der es steht, seine eigene Sounddatei nehmen. Man kann natürlich auch die benutzen, die ich eingefügt habe, aber vielleicht will man ja was anderes benutzen.

Das einzige Problem, welches aber leider nicht zu lösen ist, ist falls mehrere Tabs auf sind.
Dann kommt der Ton so oft, wieviele Tabs vom Forum offen sind.
 
  • Like
Reaktionen: Deleted member 149825
Status
Für weitere Antworten geschlossen.

Soziale Medien

  • X
  • TikTok

Über uns

  • GommeHD.net ist einer der größten Minecraft-Server der Welt. Dir gefällt unser Server? Dann unterstütze uns durch einen Kauf im Shop!
  • Shop