Benutzer:ParaDox/monobook/countTableRows.js

aus Wikipedia, der freien Enzyklopädie

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
// Siehe Diskussionsseite:
// http://de.wikipedia.org/wiki/Benutzer_Diskussion:ParaDox/monobook/countTableRows.js

window.addEventListener('load', function(event) {
    /* ============================== */
    function __ONLOAD() {} // DUMMY

    var thisTabID    = 'CountTableRowsTab';
    var thisLinkText = 'T';

    var thisVersion  = ' (V0.01 by "de:user:ParaDox" 2009-12-28)';
    var thisScript   = '[[:de:user:ParaDox/monobook/countTableRows.js]]';

    var textAreaObj;

    if ( document.getElementById('ca-edit') ) {
        var wikiTab = document.getElementById('ca-edit');
    } else if ( document.getElementById('ca-viewsource') ) {
        var wikiTab = document.getElementById('ca-viewsource');
    } else {
        return;
    }
    if ( document.getElementById(thisTabID) ) {
        alert(thisScript + thisVersion  + '\nFehler: ID "' + thisTabID + '" schon vorhanden!')
        return;
    }

    /* ============================== */
    function makeTab() {
        // geclonten Tab und Link initialisieren
        var cloneTab       = wikiTab.cloneNode(true);
        cloneTab.id        = thisTabID;
        cloneTab.className = '';
        cloneTab.style.marginRight = '1.5pt';

        var cloneTab_link       = cloneTab.firstChild;
        cloneTab_link.accessKey = '';
        cloneTab_link.title     = 'Zähle Tabellen-Reihen' + thisVersion;
        cloneTab_link.href      = '#';
        cloneTab_link.style.paddingLeft     = '2.25pt';
        cloneTab_link.style.paddingRight    = '1.50pt';
        cloneTab_link.style.backgroundColor = '#FFFFBB';

        // LinkText
        cloneTab_link.firstChild.nodeValue = thisLinkText;

        // Tab ins DOM hinter letztem Tab anfügen
        wikiTab.parentNode.appendChild(cloneTab);
    }

    /* ============================== */
    function appendTextarea(pRows, pStr) {
        var textContainer = document.createElement('TEXTAREA');
        document.getElementsByTagName('H1')[0].appendChild(textContainer);
        textContainer.style.width = '100%';
        textContainer.rows  = String(pRows);
        textContainer.value = pStr;
        return textContainer;
    }

    /* ============================== */
    function clickListener() {
        document.addEventListener('click', function(event) {
            if ( event.target.parentNode.id == thisTabID ) {
                event.stopPropagation();
                event.preventDefault();
                displayTableSummary();
            }
        }, true);
    }

    /* ============================== */
    function displayTableSummary() {
        var jetzt = (new Date()).toLocaleString(); jetzt = jetzt.substr(0, jetzt.length - 3);
        var temp, i;
        var tempArr = new Array();
        var result     = '';
        var tableFound = 0;
        var lessThan3Str = '';
        var tableArr = document.getElementById('bodyContent').getElementsByTagName('table');
        for ( var tbl=0; tbl<tableArr.length; tbl++ ) {
            var thisNode = tableArr[tbl];
            tableFound++;
            var tableRowArr = tableArr[tbl].getElementsByTagName('tr');
            if ( tableRowArr.length > 3 ) {
                var tableRowCount = 0;
                for ( var row=0; row<tableRowArr.length; row++ ) {
                    var rowCellArr = tableRowArr[row].getElementsByTagName('td');
                    if ( rowCellArr.length > 0 ) {
                        rowCellArr[0].innerHTML = '<span style="background-color:#FFFF00"><small>[T'
                            + String(tableFound) + ' Z' + String(++tableRowCount)
                            + ']</small></span> ' + rowCellArr[0].innerHTML;
                    }
                }
                result += '* Tabelle ' + String(tbl+1) + ' hat ' + tableRowCount + ' Zeilen.\n';
            } else {
                lessThan3Str += String(tbl+1) + ' ';
            }
        }
        if ( lessThan3Str != '' ) result += '* Tabellen mit weniger als 3 Zeilen: '+ lessThan3Str + '\n';
        var tableFound  = String( tableFound > 0 ? tableFound : 'Keine' );
        var tablePlural = tableFound > 1 ? 'Tabellen' : 'Tabelle';
        var resultText  = '* ' + tableFound + ' ' + tablePlural + ' gefunden am ' + jetzt + '\n';
        if ( document.getElementById('lastmod') ) {
            temp = document.getElementById('lastmod').innerHTML;
            temp = temp.replace(/^ (.*)/,  '$1');
            temp = temp.replace(/(.*)\.$/, '$1');
            resultText += '* ' + temp + '\n';
        } else if ( document.getElementById('contentSub') ) {
            temp    = document.getElementById('contentSub').innerHTML;
            tempArr = temp.match(/.*(Zeitpunkt der Bearbeitung:.+?) durch.*/);
            if ( tempArr != null ) {
                temp = tempArr[1].replace(/^Zeitpunkt der Bearbeitung: (\d\d:\d\d), (.*)/,  'SEITEN-VERSION VOM: $2 $1');
                resultText += '** ' + temp + '\n';
            }
        }
        resultText += result;
        var Zeilen = resultText.split('\n');
        if ( textAreaObj ) {
            textAreaObj.rows  = String(Zeilen.length - 1);
            textAreaObj.value = resultText;
        } else {
            textAreaObj = appendTextarea(Zeilen.length - 1, resultText);
        }
    }

    /* ============================== */
    function __INIT() {} // DUMMY
    makeTab();
    clickListener();
}, false);