MediaWiki:Gadget-MenuToTabs.js: Difference between revisions

From Zelda Dungeon Wiki
Jump to navigation Jump to search
Want an adless experience? Log in or Create an account.
(Created page.)
 
mNo edit summary
Line 1: Line 1:
$( document ).ready( function() {
$( function() {
var portlet = [];
  if ( mw.config.get( 'skin' ) == 'vector' ) {
var portletId = [];
    $( '#p-cactions' )
var portletToggle = [];
      .removeClass( 'vectorMenu' )
var toggleDiv = '<div class="vectorToggle" id="$1"><span><a href="#"></a></span></div>';
      .addClass( 'vectorTabs' )
      .css( 'margin-left', '0.5em' )
/* Portlets to exclude */
      .find( 'div.menu > ul' )
var excludePortlets = [ 'p-namespaces', 'p-twinkle' ];
        .unwrap()
      .find( 'li > a' )
/* MenuToTabs */
        .wrap( '<span></span>' );
function MenuToTabs( portlet, id ) {
  }
portlet.removeClass( 'vectorMenu' ).addClass( 'vectorTabs' ).css( 'margin-left', '-1px' )
.find( 'div.menu > ul' ).unwrap()
.find( 'li > a' ).wrap( '<span></span>' );
portlet.find( 'li.icon-collapsed' ).removeClass( 'icon-collapsed' ).addClass( 'icon' );
$.cookie( 'vector-tabs-' + id, 'tabs', { expires: 30, path: '/' } );
}
/* TabsToMenu */
function TabsToMenu( portlet, id ) {
portlet.removeClass( 'vectorTabs' ).addClass( 'vectorMenu' ).css( 'margin-left', '' )
.find( 'ul' ).wrap( '<div class="menu"></div>' )
.find( 'span > a' ).unwrap();
portlet.find( 'li.icon' ).removeClass( 'icon' ).addClass( 'icon-collapsed' );
$.cookie( 'vector-tabs-' + id, 'menu', { expires: 30, path: '/' } );
}
/* Initialize */
if ( !mw.config.get( 'skin' ) == 'vector' ) {
return;
}
// Enumerate all instances of vectorMenu
$( '.vectorMenu, .vectorTabs' ).each( function(i) {
portlet[i] = $( this );
portletId[i] = portlet[i].attr( 'id' );
// Skip p-namespaces and other excluded portlets
if ( $.inArray( portletId[i], excludePortlets ) == -1 ) {
// Disable collapsible tabs
portlet[i].find( 'li.collapsible' )
.removeClass( 'collapsible' );
// Left or right?
if ( portlet[i].parent().attr( 'id' ) == 'left-navigation' ) {
portletToggle[i] = $( toggleDiv
.replace( '$1', portletId[i] + '-toggle' ) )
.addClass( 'toggle-left' )
.insertBefore( portlet[i].find( 'ul' ) );
} else {
portletToggle[i] = $( toggleDiv
.replace( '$1', portletId[i] + '-toggle' ) )
.addClass( 'toggle-right' )
.insertAfter( portlet[i].find( 'ul' ) );
}
// Menu or Tabs?
if ( portlet[i].hasClass( 'vectorMenu' ) ) {
if ( $.cookie( 'vector-tabs-' + portletId[i] ) == 'tabs' ) {
MenuToTabs( portlet[i], portletId[i] );
}
}
else if ( portlet[i].hasClass( 'vectorTabs' ) ) {
portlet[i].find( 'h5' )
.wrapInner( '<span></span>' )
.append( '<a href="#"></a>' );
if ( $.cookie( 'vector-tabs-' + portletId[i] ) == 'menu' ) {
TabsToMenu( portlet[i], portletId[i] );
}
}
// Assign click events
portlet[i].find( 'h5 > a' ).click( function(e) {
e.preventDefault();
var ul = portlet[i].find( 'ul' );
ul.animate( { height: 'hide' }, 125, function() {
MenuToTabs( portlet[i], portletId[i] );
ul.animate( { width: 'show' }, 125 );
});
});
portletToggle[i].find( 'a' ).click( function(e) {
e.preventDefault();
var ul = portlet[i].find( 'ul' );
ul.animate( { width: 'hide' }, 125, function() {
TabsToMenu( portlet[i], portletId[i] );
ul.animate( { height: 'show' }, 125 );
});
});
}
});
});
});

Revision as of 02:06, October 24, 2011

$( function() {
  if ( mw.config.get( 'skin' ) == 'vector' ) {
    $( '#p-cactions' )
      .removeClass( 'vectorMenu' )
      .addClass( 'vectorTabs' )
      .css( 'margin-left', '0.5em' )
      .find( 'div.menu > ul' )
        .unwrap()
      .find( 'li > a' )
        .wrap( '<span></span>' );
  }
});