MediaWiki:Common.js: Difference between revisions

From HandWiki Stage
Jump to navigation Jump to search
Created page with "HandWiki Stage top roll-down navigation: #handwiki-topnav { display: flex; gap: 12px; align-items: flex-start; margin: 0 0 12px 0; padding: 8px 10px; border-bottom: 1px solid #c8ccd1; background: #fff8cc; font-size: 14px; } .handwiki-dropdown { position: relative; display: inline-block; } .handwiki-dropdown-button { border: 1px solid #a2a9b1; background: #ffffff; padding: 6px 12px; cursor: pointer; min-wi..."
 
No edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
/* HandWiki Stage top roll-down navigation */
mw.loader.using('mediawiki.util', function () {
#handwiki-topnav {
    $(function () {
    display: flex;
        if ($('#handwiki-topnav').length || $('#handwiki-rightnav').length) {
    gap: 12px;
            return;
    align-items: flex-start;
        }
    margin: 0 0 12px 0;
    padding: 8px 10px;
    border-bottom: 1px solid #c8ccd1;
    background: #fff8cc;
    font-size: 14px;
}


.handwiki-dropdown {
        function makeMenu(buttonText, extraClass) {
    position: relative;
            var menu = $('<div>', {
    display: inline-block;
                class: 'handwiki-dropdown ' + extraClass
}
            });


.handwiki-dropdown-button {
            var button = $('<div>', {
    border: 1px solid #a2a9b1;
                class: 'handwiki-dropdown-button',
    background: #ffffff;
                text: buttonText
    padding: 6px 12px;
            });
    cursor: pointer;
    min-width: 170px;
    text-align: left;
    font-weight: bold;
}


.handwiki-dropdown-content {
            var content = $('<div>', {
    display: none;
                class: 'handwiki-dropdown-content'
    position: absolute;
            });
    z-index: 9999;
    min-width: 220px;
    background: #ffffff;
    border: 1px solid #a2a9b1;
    box-shadow: 0 2px 6px rgba(0,0,0,0.18);
    padding: 8px 0;
}


.handwiki-dropdown:hover .handwiki-dropdown-content {
            menu.append(button);
    display: block;
            menu.append(content);
}


.handwiki-dropdown-content a {
            return {
    display: block;
                menu: menu,
    padding: 6px 12px;
                content: content
    text-decoration: none;
            };
}
        }


.handwiki-dropdown-content a:hover {
        function addSection(content, title) {
     background: #eaecf0;
            content.append($('<div>', {
}
                class: 'handwiki-menu-section',
                text: title
            }));
        }
 
        function addBand(content, title, extraClass) {
            content.append($('<div>', {
                class: 'handwiki-menu-band ' + (extraClass || ''),
                text: title
            }));
        }
 
        function addTitle(content, title) {
            content.append($('<div>', {
                class: 'handwiki-menu-title',
                text: title
            }));
        }
 
        function addLink(content, href, text, bold) {
            content.append(
                $('<a>', {
                    href: href,
                    text: text,
                    class: bold ? 'handwiki-menu-bold' : ''
                })
            );
        }
 
        /* ============================================================
          Left top navigation: Portal + Sources
          ============================================================ */
 
        var topnav = $('<div>', {
            id: 'handwiki-topnav'
        });
 
        var portal = makeMenu('Portal ▾', 'handwiki-portal-menu');
 
        addTitle(portal.content, 'Encyclopedia of Knowledge');
        addBand(portal.content, 'Portals');
 
        addLink(portal.content, '/index.php/Main_Page', 'Main page', true);
        addLink(portal.content, '/create/', 'Add a new article', true);
        addLink(portal.content, '/index.php/Portal:Data_analysis', 'Data analysis', false);
        addLink(portal.content, '/index.php/Portal:Mathematics', 'Mathematics', false);
 
        addSection(portal.content, 'Natural Sciences');
        addLink(portal.content, '/index.php/Portal:Astronomy_%26_Space', 'Astronomy & Space', false);
        addLink(portal.content, '/index.php/Portal:Biology', 'Biology', false);
        addLink(portal.content, '/index.php/Portal:Computer_concepts', 'Computer concepts', false);
        addLink(portal.content, '/index.php/Portal:Chemistry', 'Chemistry', false);
        addLink(portal.content, '/index.php/Portal:Physics', 'Physics', false);
        addLink(portal.content, '/index.php/Portal:Earth_studies', 'Earth studies', false);
        addLink(portal.content, '/index.php/Portal:Unsolved_problems', 'Unsolved problems', false);
 
        addSection(portal.content, 'Humanities');
        addLink(portal.content, '/index.php/Portal:History', 'History', false);
        addLink(portal.content, '/index.php/Portal:Philosophy', 'Philosophy', false);
        addLink(portal.content, '/index.php/Portal:Social_studies', 'Social studies', false);
        addLink(portal.content, '/index.php/Portal:Religion', 'Religion', false);
        addLink(portal.content, '/index.php/Portal:Medicine', 'Medicine', false);
 
        addSection(portal.content, 'Technology & Finance');
        addLink(portal.content, '/index.php/Portal:Engineering_%26_Tech', 'Engineering & Tech', false);
        addLink(portal.content, '/index.php/Portal:Software_programs', 'Software programs', false);
        addLink(portal.content, '/index.php/Portal:Business_and_economics', 'Business and economics', false);
        addLink(portal.content, '/index.php/Portal:Finance', 'Finance', false);
 
        var sources = makeMenu('Sources ▾', 'handwiki-sources-menu');
 
        addTitle(sources.content, 'Sources');
        addBand(sources.content, 'Quantum Collection', 'handwiki-menu-band-orange');
 
        addLink(sources.content, '/index.php/Book:Quantum_Collection', 'Quantum Collection', true);
        addLink(sources.content, '/index.php/Physics:Quantum basics', 'Physics:Quantum basics', false);
        addLink(sources.content, '/index.php/Book:Quantum_Collection/Matter_(by_scale)', 'Matter by scale', false);
        addLink(sources.content, '/index.php/Book:Quantum_Collection/Methods_and_tools', 'Methods and tools', false);
 
        addSection(sources.content, 'Wiki sources');
        addLink(sources.content, '/index.php/Special:RecentChanges', 'Recent changes', false);
        addLink(sources.content, '/index.php/Special:Random', 'Random page', false);
        addLink(sources.content, '/index.php/Special:SpecialPages', 'Special pages', false);
        addLink(sources.content, '/index.php/Special:Upload', 'Upload file', false);
 
        topnav.append(portal.menu);
        topnav.append(sources.menu);
 
        /* ============================================================
          Right top navigation: Tools
          ============================================================ */
 
        var pageName = mw.config.get('wgPageName');
        var revisionId = mw.config.get('wgRevisionId');
 
        var rightnav = $('<div>', {
            id: 'handwiki-rightnav'
        });
 
        var tools = makeMenu('Tools ▾', 'handwiki-tools-menu');
 
        addTitle(tools.content, 'Page tools');
        addBand(tools.content, 'Tools', 'handwiki-menu-band-gradient');
 
        addLink(tools.content, mw.util.getUrl(pageName, { action: 'edit' }), 'Edit', false);
        addLink(tools.content, mw.util.getUrl(pageName, { action: 'history' }), 'History', false);
        addLink(tools.content, mw.util.getUrl('Special:WhatLinksHere/' + pageName), 'What links here', false);
        addLink(tools.content, mw.util.getUrl('Special:RecentChangesLinked/' + pageName), 'Related changes', false);
        addLink(tools.content, mw.util.getUrl(pageName, { printable: 'yes' }), 'Printable version', false);
 
        if (revisionId) {
            addLink(tools.content, mw.util.getUrl(pageName, { oldid: revisionId }), 'Permanent link', false);
        }
 
        addLink(tools.content, mw.util.getUrl(pageName, { action: 'info' }), 'Page information', false);
 
        addSection(tools.content, 'Admin');
        addLink(tools.content, mw.util.getUrl(pageName, { action: 'delete' }), 'Delete', false);
        addLink(tools.content, mw.util.getUrl('Special:MovePage/' + pageName), 'Move', false);
        addLink(tools.content, mw.util.getUrl(pageName, { action: 'protect' }), 'Protect', false);
 
        rightnav.append(tools.menu);
 
        $('body').append(topnav);
        $('body').append(rightnav);
     });
});

Latest revision as of 22:16, 13 May 2026

mw.loader.using('mediawiki.util', function () {
    $(function () {
        if ($('#handwiki-topnav').length || $('#handwiki-rightnav').length) {
            return;
        }

        function makeMenu(buttonText, extraClass) {
            var menu = $('<div>', {
                class: 'handwiki-dropdown ' + extraClass
            });

            var button = $('<div>', {
                class: 'handwiki-dropdown-button',
                text: buttonText
            });

            var content = $('<div>', {
                class: 'handwiki-dropdown-content'
            });

            menu.append(button);
            menu.append(content);

            return {
                menu: menu,
                content: content
            };
        }

        function addSection(content, title) {
            content.append($('<div>', {
                class: 'handwiki-menu-section',
                text: title
            }));
        }

        function addBand(content, title, extraClass) {
            content.append($('<div>', {
                class: 'handwiki-menu-band ' + (extraClass || ''),
                text: title
            }));
        }

        function addTitle(content, title) {
            content.append($('<div>', {
                class: 'handwiki-menu-title',
                text: title
            }));
        }

        function addLink(content, href, text, bold) {
            content.append(
                $('<a>', {
                    href: href,
                    text: text,
                    class: bold ? 'handwiki-menu-bold' : ''
                })
            );
        }

        /* ============================================================
           Left top navigation: Portal + Sources
           ============================================================ */

        var topnav = $('<div>', {
            id: 'handwiki-topnav'
        });

        var portal = makeMenu('Portal ▾', 'handwiki-portal-menu');

        addTitle(portal.content, 'Encyclopedia of Knowledge');
        addBand(portal.content, 'Portals');

        addLink(portal.content, '/index.php/Main_Page', 'Main page', true);
        addLink(portal.content, '/create/', 'Add a new article', true);
        addLink(portal.content, '/index.php/Portal:Data_analysis', 'Data analysis', false);
        addLink(portal.content, '/index.php/Portal:Mathematics', 'Mathematics', false);

        addSection(portal.content, 'Natural Sciences');
        addLink(portal.content, '/index.php/Portal:Astronomy_%26_Space', 'Astronomy & Space', false);
        addLink(portal.content, '/index.php/Portal:Biology', 'Biology', false);
        addLink(portal.content, '/index.php/Portal:Computer_concepts', 'Computer concepts', false);
        addLink(portal.content, '/index.php/Portal:Chemistry', 'Chemistry', false);
        addLink(portal.content, '/index.php/Portal:Physics', 'Physics', false);
        addLink(portal.content, '/index.php/Portal:Earth_studies', 'Earth studies', false);
        addLink(portal.content, '/index.php/Portal:Unsolved_problems', 'Unsolved problems', false);

        addSection(portal.content, 'Humanities');
        addLink(portal.content, '/index.php/Portal:History', 'History', false);
        addLink(portal.content, '/index.php/Portal:Philosophy', 'Philosophy', false);
        addLink(portal.content, '/index.php/Portal:Social_studies', 'Social studies', false);
        addLink(portal.content, '/index.php/Portal:Religion', 'Religion', false);
        addLink(portal.content, '/index.php/Portal:Medicine', 'Medicine', false);

        addSection(portal.content, 'Technology & Finance');
        addLink(portal.content, '/index.php/Portal:Engineering_%26_Tech', 'Engineering & Tech', false);
        addLink(portal.content, '/index.php/Portal:Software_programs', 'Software programs', false);
        addLink(portal.content, '/index.php/Portal:Business_and_economics', 'Business and economics', false);
        addLink(portal.content, '/index.php/Portal:Finance', 'Finance', false);

        var sources = makeMenu('Sources ▾', 'handwiki-sources-menu');

        addTitle(sources.content, 'Sources');
        addBand(sources.content, 'Quantum Collection', 'handwiki-menu-band-orange');

        addLink(sources.content, '/index.php/Book:Quantum_Collection', 'Quantum Collection', true);
        addLink(sources.content, '/index.php/Physics:Quantum basics', 'Physics:Quantum basics', false);
        addLink(sources.content, '/index.php/Book:Quantum_Collection/Matter_(by_scale)', 'Matter by scale', false);
        addLink(sources.content, '/index.php/Book:Quantum_Collection/Methods_and_tools', 'Methods and tools', false);

        addSection(sources.content, 'Wiki sources');
        addLink(sources.content, '/index.php/Special:RecentChanges', 'Recent changes', false);
        addLink(sources.content, '/index.php/Special:Random', 'Random page', false);
        addLink(sources.content, '/index.php/Special:SpecialPages', 'Special pages', false);
        addLink(sources.content, '/index.php/Special:Upload', 'Upload file', false);

        topnav.append(portal.menu);
        topnav.append(sources.menu);

        /* ============================================================
           Right top navigation: Tools
           ============================================================ */

        var pageName = mw.config.get('wgPageName');
        var revisionId = mw.config.get('wgRevisionId');

        var rightnav = $('<div>', {
            id: 'handwiki-rightnav'
        });

        var tools = makeMenu('Tools ▾', 'handwiki-tools-menu');

        addTitle(tools.content, 'Page tools');
        addBand(tools.content, 'Tools', 'handwiki-menu-band-gradient');

        addLink(tools.content, mw.util.getUrl(pageName, { action: 'edit' }), 'Edit', false);
        addLink(tools.content, mw.util.getUrl(pageName, { action: 'history' }), 'History', false);
        addLink(tools.content, mw.util.getUrl('Special:WhatLinksHere/' + pageName), 'What links here', false);
        addLink(tools.content, mw.util.getUrl('Special:RecentChangesLinked/' + pageName), 'Related changes', false);
        addLink(tools.content, mw.util.getUrl(pageName, { printable: 'yes' }), 'Printable version', false);

        if (revisionId) {
            addLink(tools.content, mw.util.getUrl(pageName, { oldid: revisionId }), 'Permanent link', false);
        }

        addLink(tools.content, mw.util.getUrl(pageName, { action: 'info' }), 'Page information', false);

        addSection(tools.content, 'Admin');
        addLink(tools.content, mw.util.getUrl(pageName, { action: 'delete' }), 'Delete', false);
        addLink(tools.content, mw.util.getUrl('Special:MovePage/' + pageName), 'Move', false);
        addLink(tools.content, mw.util.getUrl(pageName, { action: 'protect' }), 'Protect', false);

        rightnav.append(tools.menu);

        $('body').append(topnav);
        $('body').append(rightnav);
    });
});