User:Ungoliant MMDCCLXIV/synshide.js

From Wiktionary, the free dictionary
Jump to navigation Jump to search

Note – after saving, it will take 5-10 minutes before the changes take effect. You may also have to bypass your browser’s cache to see the changes.

  • Mozilla / Firefox / Safari: hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (Command-R on a Macintosh);
  • Konqueror and Chrome: click Reload or press F5;
  • Opera: clear the cache in Tools → Preferences;
  • Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl-F5.

var nymtypes = {
    'synonyms': 'synonyms',
    'synonym': 'synonyms',
    'antonyms': 'antonyms',
    'antonym': 'antonyms',
    'hyponyms': 'hyponyms',
    'hyponym': 'hyponyms',
    'hypernyms': 'hypernyms',
    'hypernym': 'hypernyms',
    // 'coordinateterms': 'coordinate terms'
};

function setupNyms(dltag) {
    var names = '';
    $(dltag).children('dd').children('span.nyms').each(function(){
        var nymclass = /nyms\s([a-z]+)/i.exec(this.className);
        if (nymclass !== null && nymclass.length > 1 && nymtypes[nymclass[1]] !== null) {
            names += ((names.length > 0)? ', ' : '') + nymtypes[nymclass[1]];
        }
    });

    if (names.length === 0) return;


    var toggler = $('<a>');
        
    function show() {
        toggler.html(names + ' ▲');
        if ($(dltag).children('dd').children().not('.nyms').length === 0) {
            $(dltag).show();
        } else {
            $(dltag).children('dd').children('span.nyms').show();
        }
    }
    function hide() {
        toggler.html(names + ' ▼');
        if ($(dltag).children('dd').children().not('.nyms').length === 0) {
            $(dltag).hide();
        } else {
            $(dltag).children('dd').children('span.nyms').hide();
        }
    }
    hide();



    $(dltag).parent().children('ul, dl').first().before($('<span>').addClass('HQToggle').append(toggler).css('margin-left', '5px'));
    toggler.on('click', VisibilityToggles.register('semantic relations', show, hide));



}

$.when($.ready, mw.loader.using('mediawiki.cookie')).done(function(){
    if (mw.config.get('wgNamespaceNumber') === 0) {
        $('dl:has(dd > .nyms)').each(function(){
            setupNyms(this);
        });
    }
});