|
|
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| importScript('MediaWiki:Monobook.js/Suchicons.js');
| |
|
| |
|
| /***********************************************
| |
|
| |
| Monoboook Sidbar - [[MediaWiki:Monobook.js/Sidebar.js]]
| |
|
| |
| ***********************************************/
| |
|
| |
| window.wgSidebar = (window.wgSidebar||{});
| |
| importScript('MediaWiki:Monobook.js/Sidebar.js');
| |
|
| |
| /**
| |
| * MonobookSidebar: Sets sidebar submenus for elements of MonoBook, adding special
| |
| * classes to pass the pointer over to allow the effect on all browsers.
| |
| *
| |
| * Date: 15 October 2010
| |
| * Copyright © 2010 Jesús Martínez Novo ([[User:Ciencia Al Poder]])
| |
| *
| |
| * This program is free software; you can redistribute it and/or modify
| |
| * it under the terms of the GNU General Public License as published by
| |
| * the Free Software Foundation; either version 2 of the License, or
| |
| * (at your option) any later version
| |
| */
| |
| MonobookSidebar = {
| |
| re_s: / /g,
| |
| re_p: /%/g,
| |
| loadedMenus: [],
| |
| init: function() {
| |
| if ( !window.wgSidebar ) {
| |
| return;
| |
| }
| |
| for ( var menu in wgSidebar ) {
| |
| var item = document.getElementById( MonobookSidebar.getId( menu ) );
| |
| if ( !item ) {
| |
| continue;
| |
| }
| |
| var menuId = jQuery( item ).parents().get( 2 ).id;
| |
| // Check it's a valid portlet item
| |
| if ( !menuId || menuId == '' ) {
| |
| continue;
| |
| }
| |
| // Generate menu hierarchy
| |
| MonobookSidebar.buildSubmenu( item, wgSidebar[menu] );
| |
| // Set events
| |
| MonobookSidebar.setEvents( menuId );
| |
| }
| |
| },
| |
| buildSubmenu: function( el, arr ) {
| |
| var ul = document.createElement( 'ul' );
| |
| ul.className = 'sub-menu';
| |
| for ( var i = 0; i < arr.length; i++ ) {
| |
| var li = document.createElement( 'li' );
| |
| if ( typeof arr[i] == 'string' ) {
| |
| var a = MonobookSidebar.linkFromText( arr[i] );
| |
| li.appendChild( a );
| |
| } else {
| |
| for ( var menukey in arr[i] ) {
| |
| a = MonobookSidebar.linkFromText( menukey );
| |
| li.appendChild( a );
| |
| MonobookSidebar.buildSubmenu( li, arr[i][menukey] );
| |
| }
| |
| }
| |
| ul.appendChild( li );
| |
| }
| |
| el.appendChild( ul );
| |
| el.className = 'with-sub-menu';
| |
| var em = document.createElement( 'em' );
| |
| em.appendChild( document.createTextNode( '\u203A' ) );
| |
| el.firstChild.appendChild( em );
| |
| },
| |
| setEvents: function( menuId ) {
| |
| for ( var i = 0; i < MonobookSidebar.loadedMenus; i++ ) {
| |
| if ( MonobookSidebar.loadedMenus[i] == menuId ) {
| |
| return;
| |
| }
| |
| }
| |
| jQuery( '#' + menuId ).children().eq( 1 ).children().eq( 0 )
| |
| .bind( 'mouseover', MonobookSidebar.mouseover )
| |
| .bind( 'mouseout', MonobookSidebar.mouseout );
| |
| MonobookSidebar.loadedMenus.push( menuId );
| |
| },
| |
| mouseover: function( e ) {
| |
| var target = e.target;
| |
| while ( target.tagName.toLowerCase() != 'div' ) {
| |
| if ( target.tagName.toLowerCase() == 'a' ) {
| |
| target = target.parentNode;
| |
| }
| |
| if ( target.tagName.toLowerCase() == 'li' ) {
| |
| jQuery( target ).addClass( 'hover' );
| |
| }
| |
| target = target.parentNode;
| |
| }
| |
| },
| |
| mouseout: function( e ) {
| |
| var target = e.target;
| |
| while ( target.tagName.toLowerCase() != 'div' ) {
| |
| if ( target.tagName.toLowerCase() == 'a' ) {
| |
| target = target.parentNode;
| |
| }
| |
| if ( target.tagName.toLowerCase() == 'li' ) {
| |
| jQuery( target ).removeClass( 'hover' );
| |
| }
| |
| target = target.parentNode;
| |
| }
| |
| },
| |
| linkFromText: function( txt ) {
| |
| var article = '', caption = '', sepPos = txt.indexOf( '|' );
| |
| if ( sepPos > 0 ) {
| |
| article = txt.substr( 0, sepPos );
| |
| caption = txt.substr( sepPos + 1 );
| |
| } else {
| |
| article = caption = txt;
| |
| }
| |
| article = article.replace( MonobookSidebar.re_s, '_' ); // removed encodeURIComponent(), it was messing things up --Jack Phoenix
| |
| var a = document.createElement( 'a' );
| |
| if ( article.length > 7 && article.substr( 0, 7 ) == 'http://' ) {
| |
| a.setAttribute( 'href', article );
| |
| } else {
| |
| article = article.replace( MonobookSidebar.re_s, '_' ); // removed encodeURIComponent(), it was messing things up --Jack Phoenix
| |
| // Replace encoded colons with normal colons -- added this. --Jack Phoenix
| |
| article = article.replace( '%3A', ':' ); // added code ends here
| |
| a.setAttribute( 'href', wgArticlePath.replace( '$1', article ) );
| |
| }
| |
| a.appendChild( document.createTextNode( caption ) );
| |
| return a;
| |
| },
| |
| getId: function( name ) {
| |
| return 'n-' + encodeURIComponent( name.replace( MonobookSidebar.re_s, '-' ) ).replace( MonobookSidebar.re_p, '.' );
| |
| }
| |
| };
| |