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

Reply via email to