MediaWiki:Common.js: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 26: Line 26:
var collapseCaption = 'hide';
var collapseCaption = 'hide';
var expandCaption = 'show';
var expandCaption = 'show';
(function() {
    function collapseTable(tableIndex) {
        var Button = document.getElementById('collapseButton' + tableIndex);
        var Table = document.getElementById('collapsibleTable' + tableIndex);
        if (!Table || !Button) {
            return false;
        }
        var Rows = Table.rows;
        var i;
        if (Button.firstChild.data === collapseCaption) {
            for (i = 1; i < Rows.length; i++) {
                Rows[i].style.display = 'none';
            }
            Button.firstChild.data = expandCaption;
        } else {
            for (i = 1; i < Rows.length; i++) {
                Rows[i].style.display = Rows[0].style.display;
            }
            Button.firstChild.data = collapseCaption;
        }
    }
    function createClickHandler(tableIndex) {
        return function(e) {
            e.preventDefault();
            collapseTable(tableIndex);
        };
    }
    function createCollapseButtons() {
        var tableIndex = 0;
        var NavigationBoxes = {};
        var Tables = document.getElementsByTagName('table');
        var i;
        for (i = 0; i < Tables.length; i++) {
            if ($(Tables[i]).hasClass('collapsible')) {
                /* only add button and increment count if there is a header row to work with */
                var HeaderRow = Tables[i].getElementsByTagName('tr')[0];
                if (!HeaderRow) {
                    continue;
                }
                var Header = HeaderRow.getElementsByTagName('th')[0];
                if (!Header) {
                    continue;
                }
                NavigationBoxes[tableIndex] = Tables[i];
                Tables[i].setAttribute('id', 'collapsibleTable' + tableIndex);
                var Button = document.createElement('span');
                var ButtonLink = document.createElement('a');
                var ButtonText = document.createTextNode(collapseCaption);
                // TODO: Declare styles in [[MediaWiki:Gadget-collapsibleTables.css]]
                // Button.className = 'collapseButton';
                Button.style.styleFloat = 'right';
                Button.style.cssFloat = 'right';
                Button.style.fontWeight = 'normal';
                Button.style.textAlign = 'right';
                Button.style.width = '6em';
                ButtonLink.style.color = Header.style.color;
                ButtonLink.setAttribute('id', 'collapseButton' + tableIndex);
                ButtonLink.setAttribute('href', '#');
                $(ButtonLink).on('click', createClickHandler(tableIndex));
                ButtonLink.appendChild(ButtonText);
                Button.appendChild(document.createTextNode('['));
                Button.appendChild(ButtonLink);
                Button.appendChild(document.createTextNode(']'));
                Header.insertBefore(Button, Header.firstChild);
                tableIndex++;
            }
        }
        for (i = 0; i < tableIndex; i++) {
            if ($(NavigationBoxes[i]).hasClass('collapsed') ||
                (tableIndex >= autoCollapse && $(NavigationBoxes[i]).hasClass('autocollapse'))
            ) {
                collapseTable(i);
            }
        }
    }
    mw.hook('wikipage.content').add(createCollapseButtons);
}());


/**
/**
152

edits