X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=mw-config%2Fconfig.js;h=ab57b7b859fc5ef13fe7911b469e6c522f3e2348;hb=5a166c2a550152e4bcae799c9be7f06fa2a2278d;hp=acb9664aee1cbe01c56d225a8924cafbd3e4900a;hpb=296fe3b9009ec86aed06be88f9f08c400a09d78b;p=lhc%2Fweb%2Fwiklou.git diff --git a/mw-config/config.js b/mw-config/config.js index acb9664aee..ab57b7b859 100644 --- a/mw-config/config.js +++ b/mw-config/config.js @@ -1,3 +1,4 @@ +/* global extDependencyMap */ ( function ( $ ) { $( function () { var $label, labelText; @@ -100,5 +101,52 @@ $memc.hide( 'slow' ); } } ); + + function areReqsSatisfied( name ) { + var i, ext, skin, node; + if ( !extDependencyMap[ name ] ) { + return true; + } + + if ( extDependencyMap[ name ].extensions ) { + for ( i in extDependencyMap[ name ].extensions ) { + ext = extDependencyMap[ name ].extensions[ i ]; + node = document.getElementById( 'config_ext-' + ext ); + if ( !node || !node.checked ) { + return false; + } + } + } + if ( extDependencyMap[ name ].skins ) { + for ( i in extDependencyMap[ name ].skins ) { + skin = extDependencyMap[ name ].skins[ i ]; + node = document.getElementById( 'config_skin-' + skin ); + if ( !node || !node.checked ) { + return false; + } + } + } + + return true; + } + + // Disable checkboxes if the extension has dependencies + $( '.mw-ext-with-dependencies input' ).prop( 'disabled', true ); + $( 'input[data-name]' ).change( function () { + $( '.mw-ext-with-dependencies input' ).each( function () { + var $this = $( this ), + name = $this.data( 'name' ); + if ( areReqsSatisfied( name ) ) { + // Un-disable it! + $this.prop( 'disabled', false ); + } else { + // Disable the checkbox, and uncheck it if it is checked + $this.prop( 'disabled', true ); + if ( $this.prop( 'checked' ) ) { + $this.prop( 'checked', false ); + } + } + } ); + } ); } ); }( jQuery ) );