Benutzer:NAN/common.js

Aus Perrypedia
< Benutzer:NAN
Version vom 20. November 2012, 08:58 Uhr von NAN (Diskussion | Beiträge) (o.k., habe mich getäuscht, false ist in dem Fall doch notwendig. ;-))
Wechseln zu: Navigation, Suche

Anmerkung: Nach dem Speichern muss der Browser-Cache geleert werden, damit die Änderungen sichtbar werden: Mozilla/Firefox: neu laden anklicken (oder Strg-R), IE / Opera: Strg-F5, Safari: Kommando-R, Konqueror Strg-R.

//based on: http://meta.wikimedia.org/wiki/Help:Sorting#Persistent_sort_states_using_cookies
addOnloadHook( function() {
    jQuery('.sortable').each( function() {
        var id = jQuery(this).attr('id');
        if (id != undefined)
        {
            //Versuche passenden cookie zu lesen
            document.shCookie = jQuery.cookie('sortheader-'+id);

            //Falls kein cookie gefunden wurde: Gehe alle Spalten durch und schau, ob Standard-Sortierung
            //durch class="ppSortAsc"  bzw.  class="ppSortDesc"  im Spaltenkopf gesetzt.
            //Da nur eine Spalte möglich ist: Falls versehentlich/fehlerhaft mehrere Spalten markiert wurden, 
            //zählt die erste in der Tabelle gefundene.
            if(document.shCookie == undefined) {
                document.sortheaderId = 0;
                jQuery('#'+id+' th').each( function() {
                    var sh = document.sortheaderId++;
                    if(jQuery(this).hasClass('ppSortAsc')) {
                        document.shCookie = sh;
                        return false;                               //beendet Schleife über Spalten => erstes zählt ("false" notwendig für jQuery-each)
                    } else if(jQuery(this).hasClass('ppSortDesc')) {
                        document.shCookie = sh+100;
                        return false;                               //beendet Schleife über Spalten => erstes zählt
                    }
                });
            }

            //Gehe alle Spalten durch und führe auf die zu sortierende entweder zwei clicks aus (aufsteigend sortiert)
            //oder einen click aus (absteigend sortiert)
            document.sortheaderId = 0;
            jQuery('#'+id+' th').each( function() {
                var sh = document.sortheaderId++;
                if( sh+100 == document.shCookie ) { 
                    jQuery(this).click();
                    jQuery(this).click();
                } else if( sh == document.shCookie ) { 
                    jQuery(this).click();
                    sh += 100; 
                }
                //Zukünftige "clicks" werden in einem cookie gespeichert.
                jQuery(this).bind('click', {id: id, sh: sh}, function(e) {
                    jQuery.cookie('sortheader-'+e.data.id, e.data.sh, { expires: 9999 } );
                    e.data.sh += e.data.sh < 100 ? 100 : -100;
                });
            });
        }
    });
});