%PDF- %PDF-
| Direktori : /www/varak.net/wiki.varak.net/resources/src/mediawiki.htmlform/ |
| Current File : /www/varak.net/wiki.varak.net/resources/src/mediawiki.htmlform/cloner.js |
/*
* HTMLForm enhancements:
* Add/remove cloner clones without having to resubmit the form.
*/
( function () {
var cloneCounter = 0;
/**
* Appends a new row with fields to the cloner.
*
* @ignore
* @param {jQuery} $createButton
*/
function appendToCloner( $createButton ) {
var $li,
$ul = $createButton.prev( 'ul.mw-htmlform-cloner-ul' ),
html = $ul.data( 'template' ).replace(
new RegExp( mw.RegExp.escape( $ul.data( 'uniqueId' ) ), 'g' ),
'clone' + ( ++cloneCounter )
);
$li = $( '<li>' )
.addClass( 'mw-htmlform-cloner-li' )
.html( html )
.appendTo( $ul );
mw.hook( 'htmlform.enhance' ).fire( $li );
}
mw.hook( 'htmlform.enhance' ).add( function ( $root ) {
var $deleteElement = $root.find( '.mw-htmlform-cloner-delete-button' ),
$createElement = $root.find( '.mw-htmlform-cloner-create-button' ),
createButton;
$deleteElement.each( function () {
var $element = $( this ),
deleteButton;
if ( $element.hasClass( 'oo-ui-widget' ) ) {
deleteButton = OO.ui.infuse( $element );
deleteButton.on( 'click', function () {
deleteButton.$element.closest( 'li.mw-htmlform-cloner-li' ).remove();
} );
} else {
$element.filter( ':input' ).click( function ( ev ) {
ev.preventDefault();
$( this ).closest( 'li.mw-htmlform-cloner-li' ).remove();
} );
}
} );
if ( $createElement.hasClass( 'oo-ui-widget' ) ) {
createButton = OO.ui.infuse( $createElement );
createButton.on( 'click', function () {
appendToCloner( createButton.$element );
} );
} else {
$createElement.filter( ':input' ).click( function ( ev ) {
ev.preventDefault();
appendToCloner( $( this ) );
} );
}
} );
}() );