( function ( mw, $ ) {
var ProtectionForm,
reasonCodePointLimit = mw.config.get( 'wgCommentCodePointLimit' ),
reasonByteLimit = mw.config.get( 'wgCommentByteLimit' );
ProtectionForm = window.ProtectionForm = {
/**
* Set up the protection chaining interface (i.e. "unlock move permissions" checkbox)
* on the protection form
*
* @return {boolean}
*/
init: function () {
var $cell = $( '
' ),
$row = $( ' | ' ).append( $cell );
if ( !$( '#mwProtectSet' ).length ) {
return false;
}
if ( mw.config.get( 'wgCascadeableLevels' ) !== undefined ) {
$( 'form#mw-Protect-Form' ).submit( this.toggleUnchainedInputs.bind( ProtectionForm, true ) );
}
this.getExpirySelectors().each( function () {
$( this ).change( ProtectionForm.updateExpiryList.bind( ProtectionForm, this ) );
} );
this.getExpiryInputs().each( function () {
$( this ).on( 'keyup change', ProtectionForm.updateExpiry.bind( ProtectionForm, this ) );
} );
this.getLevelSelectors().each( function () {
$( this ).change( ProtectionForm.updateLevels.bind( ProtectionForm, this ) );
} );
$( '#mwProtectSet > tbody > tr:first' ).after( $row );
// If there is only one protection type, there is nothing to chain
if ( $( '[id ^= mw-protect-table-]' ).length > 1 ) {
$cell.append(
$( '' )
.attr( { id: 'mwProtectUnchained', type: 'checkbox' } )
.click( this.onChainClick.bind( this ) )
.prop( 'checked', !this.areAllTypesMatching() ),
document.createTextNode( ' ' ),
$( '