Polybuildr has uploaded a new change for review. https://gerrit.wikimedia.org/r/220742
Change subject: [WIP] Use AJAX to delete pages ...................................................................... [WIP] Use AJAX to delete pages Change-Id: Ib4e37e57c772fe92899209e03dbd8e28330d67ca --- M .jshintrc M static/js/ext.smitespam.retriever.js 2 files changed, 54 insertions(+), 26 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/SmiteSpam refs/changes/42/220742/1 diff --git a/.jshintrc b/.jshintrc index 96e2b21..aff9940 100644 --- a/.jshintrc +++ b/.jshintrc @@ -19,6 +19,7 @@ "globals": { "mediaWiki": false, - "mw": false + "mw": false, + "console": false } } diff --git a/static/js/ext.smitespam.retriever.js b/static/js/ext.smitespam.retriever.js index b30505b..1f6b4de 100644 --- a/static/js/ext.smitespam.retriever.js +++ b/static/js/ext.smitespam.retriever.js @@ -36,6 +36,7 @@ var displayPageSize = mw.config.get( 'displayPageSize' ); var results = []; results.push( [] ); + var editToken, deleteIndex = 0; var resultPageToDisplay = new Counter(); resultPageToDisplay.notify = function () { @@ -81,7 +82,8 @@ var pagination = { data: { - pagesToDelete: [] + pagesToDelete: [], + pagesDeleted: [] }, handlersAttached: false, attachHandlers: function () { @@ -142,42 +144,67 @@ } for ( var i = 0; i < displayPageSize; ++i ) { var page = results[resultPageToDisplay.getValue()][i]; - var $row = $( '<tr>' ); + var $row = $( '<tr>' ).attr( 'id', 'result-row-page-' + page.id ); $( '<td></td>' ).html( page.link ).appendTo( $row ); $( '<td></td>' ).text( page['spam-probability-text'] ).appendTo( $row ); $( '<td></td>' ).html( page['creator-link'] ).appendTo( $row ); $( '<td></td>' ).text( page.preview ).appendTo( $row ); - - var $checkbox = $( '<input>', { - type: 'checkbox', - value: page.id - } ) - .on( 'change', checkboxChanged ); - if ( $.inArray( $checkbox.val(), pagination.data.pagesToDelete ) !== -1 ) { - $checkbox.attr( 'checked', 'checked' ); + if ( $.inArray( page.id.toString(), pagination.data.pagesDeleted ) !== -1 ) { + $( '<td></td>' ).text( 'Deleted page' ).appendTo( $row ); + } else { + var $checkbox = $( '<input>', { + type: 'checkbox', + value: page.id + } ) + .on( 'change', checkboxChanged ); + if ( $.inArray( $checkbox.val(), pagination.data.pagesToDelete ) !== -1 ) { + $checkbox.attr( 'checked', 'checked' ); + } + $( '<td></td>' ).append( $checkbox ).appendTo( $row ); } - $( '<td></td>' ).append( $checkbox ).appendTo( $row ); $( '#smitespam-page-list' ).append( $row ); } } }; $( '#smitespam-delete-pages' ).on( 'submit', function () { - var toDelete = pagination.data.pagesToDelete; - $( '#smitespam-page-list' ).empty(); - var $this = $( this ); - for ( var i = 0; i < toDelete.length; ++i ) { - $( '<input>', { - type: 'checkbox', - name: 'delete[]', - value: toDelete[i], - checked: 'checked' - } ).hide().appendTo( $this ); - } + deletePage(); + return false; } ); - $( '<p id="results-loading"></p>' ).text( 'Loading...' ) - .appendTo( '#pagination' ); - resultPageToDisplay.notify(); + $.getJSON( mw.config.get( 'wgScriptPath' ) + '/api.php?action=query&meta=tokens&format=json', + function ( data ) { + editToken = data.query.tokens.csrftoken; + $( '<p id="results-loading"></p>' ).text( 'Loading...' ) + .appendTo( '#pagination' ); + resultPageToDisplay.notify(); + } + ); + function processDeletedPage( data ) { + if ( 'delete' in data ) { + var pageID = pagination.data.pagesToDelete[deleteIndex]; + pagination.data.pagesDeleted.push( pageID ); + var row = $( '#result-row-page-' + pageID ); + if ( row.length ) { + row.find( 'td' ).eq( 4 ).text( 'Deleted page' ); + } + deleteIndex++; + if ( deleteIndex < pagination.data.pagesToDelete.length ) { + deletePage(); + } + } else if ( 'error' in data ) { + console.log( 'error:', data ); + } + } + + function deletePage() { + $.post( mw.config.get( 'wgScriptPath' ) + '/api.php?action=delete&format=json', + { + token: editToken, + pageid: pagination.data.pagesToDelete[deleteIndex] + }, + 'json' + ).done( processDeletedPage ); + } } )( jQuery ); -- To view, visit https://gerrit.wikimedia.org/r/220742 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib4e37e57c772fe92899209e03dbd8e28330d67ca Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/SmiteSpam Gerrit-Branch: master Gerrit-Owner: Polybuildr <v.a.ghai...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits