summaryrefslogtreecommitdiff
path: root/www/wiki/resources/src/mediawiki/htmlform/cloner.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/resources/src/mediawiki/htmlform/cloner.js')
-rw-r--r--www/wiki/resources/src/mediawiki/htmlform/cloner.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/www/wiki/resources/src/mediawiki/htmlform/cloner.js b/www/wiki/resources/src/mediawiki/htmlform/cloner.js
new file mode 100644
index 00000000..ab81580b
--- /dev/null
+++ b/www/wiki/resources/src/mediawiki/htmlform/cloner.js
@@ -0,0 +1,36 @@
+/*
+ * HTMLForm enhancements:
+ * Add/remove cloner clones without having to resubmit the form.
+ */
+( function ( mw, $ ) {
+
+ var cloneCounter = 0;
+
+ mw.hook( 'htmlform.enhance' ).add( function ( $root ) {
+ $root.find( '.mw-htmlform-cloner-delete-button' ).filter( ':input' ).click( function ( ev ) {
+ ev.preventDefault();
+ $( this ).closest( 'li.mw-htmlform-cloner-li' ).remove();
+ } );
+
+ $root.find( '.mw-htmlform-cloner-create-button' ).filter( ':input' ).click( function ( ev ) {
+ var $ul, $li, html;
+
+ ev.preventDefault();
+
+ $ul = $( this ).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 );
+ } );
+ } );
+
+}( mediaWiki, jQuery ) );