Nikerabbit has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65099


Change subject: Accepting and rejecting users by age
......................................................................

Accepting and rejecting users by age

* No i18n yet
* No proper styling yet

Change-Id: Ie9862692f2fe60fc32b6b010cfb6561f965bd78a
---
M resources/css/ext.translate.special.translatesandbox.css
M resources/js/ext.translate.special.translatesandbox.js
M specials/SpecialTranslateSandbox.php
M utils/TranslateSandbox.php
4 files changed, 101 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Translate 
refs/changes/99/65099/1

diff --git a/resources/css/ext.translate.special.translatesandbox.css 
b/resources/css/ext.translate.special.translatesandbox.css
index e892902..e788d55 100644
--- a/resources/css/ext.translate.special.translatesandbox.css
+++ b/resources/css/ext.translate.special.translatesandbox.css
@@ -42,19 +42,26 @@
 
 .request .username,
 .request .selector {
-       height: 30px;
-       line-height: 30px;
+       height: 20px;
        font-size: 16px;
        text-wrap: nowrap;
 }
 
+.request .selector input {
+       height: 20px;
+       display: block;
+       margin: auto;
+}
+
 .request .email,
 .request .signup-age {
-       height: 20px;
-       line-height: 20px;
-       font-size: 12px;
        color: #6c6d70;
-       text-wrap: nowrap;
+}
+
+.request .email {
+       height: 30px;
+       line-height: 30px;
+       font-size: 12px;
 }
 
 .request .username,
@@ -64,6 +71,9 @@
 }
 
 .request .signup-age {
+       height: 30px;
+       line-height: 15px;
+       font-size: 12px;
        text-align: center;
        overflow: hidden;
 }
diff --git a/resources/js/ext.translate.special.translatesandbox.js 
b/resources/js/ext.translate.special.translatesandbox.js
index 6070f5d..5d528cb 100644
--- a/resources/js/ext.translate.special.translatesandbox.js
+++ b/resources/js/ext.translate.special.translatesandbox.js
@@ -7,6 +7,74 @@
 (function ( $, mw ) {
        'use strict';
 
+       function addSelectorStatusBar () {
+               var $selected, oldest, $older,
+                       $container = $( '.pane.requests' );
+
+               $selected = $( '.selector input:checked' );
+
+               $( '.statusbar' ).remove();
+
+               if ( $selected.length === 0 ) {
+                       return;
+               }
+
+               oldest = Number.MAX_VALUE;
+               $selected.each( function () {
+                       oldest = Math.min( oldest, $( this ).parents( 
'.request' ).data( 'data' ).registration );
+               } );
+
+               $older = $( '.selector input' ).not( ':checked' ).filter( 
function() {
+                       return $( this ).parents( '.request' ).data( 'data' 
).registration < oldest;
+               } );
+
+               $container.append(
+                       $( '<div>' )
+                               .text( $selected.length + ' selected' )
+                               .addClass( 'statusbar row' )
+                               .append(
+                                       $( '<button>' )
+                                               .text( 'Accept all' )
+                                               .addClass( 'accept green 
button' )
+                                               .click( function () {
+                                                       $selected.each( 
function () {
+                                                               var $parent = 
$( this ).parents( '.request' );
+                                                               doApiAction( {
+                                                                       userid: 
$parent.data( 'data' ).id,
+                                                                       'do': 
'promote'
+                                                               } );
+                                                               
$parent.remove();
+                                                               $( 
'.details.pane' ).empty();
+                                                               
addSelectorStatusBar();
+                                                       } );
+                                               } ),
+                                       $( '<button>' )
+                                               .text( 'Reject all' )
+                                               .addClass( 'delete red button' )
+                                               .click( function () {
+                                                       $selected.each( 
function () {
+                                                               var $parent = 
$( this ).parents( '.request' );
+                                                               doApiAction( {
+                                                                       userid: 
$parent.data( 'data' ).id,
+                                                                       'do': 
'delete'
+                                                               } );
+                                                               
$parent.remove();
+                                                               $( 
'.details.pane' ).empty();
+                                                               
addSelectorStatusBar();
+                                                       } );
+                                               } ),
+                                       $( '<a>' )
+                                               .text( $older.length + ' older 
requests' )
+                                               .prop( 'href', '#' )
+                                               .click( function ( event ) {
+                                                       event.preventDefault();
+                                                       $older.prop( 'checked', 
true );
+                                                       addSelectorStatusBar();
+                                               } )
+                               )
+               );
+       }
+
        function doApiAction( options ) {
                var api = new mw.Api();
 
@@ -15,10 +83,11 @@
                        token: $( '#token' ).val()
                }, options );
 
-               api.post( options )
-                       .done( function () { window.alert( 'Success' ); } )
-                       .fail( function () { window.alert( 'Failure' ); } )
-               ;
+               api
+                       .post( options )
+                       .fail( function () {
+                               mw.notify( 'Action ' + options.do + ' failed' );
+                       } );
        }
 
        /**
@@ -112,6 +181,8 @@
        $( document ).ready( function () {
                var $requests, $detailsPane;
 
+               $( '.selector input' ).click( addSelectorStatusBar );
+
                $detailsPane = $( '.details.pane' );
                $requests = $( '.requests .request' );
                $requests.on( 'click', function () {
@@ -141,6 +212,9 @@
                                                                        userid: 
$this.data( 'data' ).id,
                                                                        'do': 
'promote'
                                                                } );
+                                                               $this.remove();
+                                                               
$detailsPane.empty();
+                                                               
addSelectorStatusBar();
                                                        } ),
                                                $( '<button>' )
                                                        .addClass( 'remind 
button' )
@@ -150,12 +224,15 @@
                                                        } ),
                                                $( '<button>' )
                                                        .addClass( 'delete 
destructive button' )
-                                                       .text( 'Delete' )
+                                                       .text( 'Reject' )
                                                        .on( 'click', function 
() {
                                                                doApiAction( {
                                                                        userid: 
$this.data( 'data' ).id,
                                                                        'do': 
'delete'
                                                                } );
+                                                               $this.remove();
+                                                               
$detailsPane.empty();
+                                                               
addSelectorStatusBar();
                                                        } )
                                        )
                        );
diff --git a/specials/SpecialTranslateSandbox.php 
b/specials/SpecialTranslateSandbox.php
index 9c84521..cb23428 100644
--- a/specials/SpecialTranslateSandbox.php
+++ b/specials/SpecialTranslateSandbox.php
@@ -92,7 +92,7 @@
                <div class="row email">$emailEnc</div>
        </div>
        <div class="three columns approval">
-               <div class="row selector"></div>
+               <div class="row selector"><input type="checkbox"></div>
                <div class="row signup-age">$agoEnc</div>
        </div>
 </div>
diff --git a/utils/TranslateSandbox.php b/utils/TranslateSandbox.php
index f9a3acb..b6f0aba 100644
--- a/utils/TranslateSandbox.php
+++ b/utils/TranslateSandbox.php
@@ -75,8 +75,9 @@
                        'ug_group' => 'translate-sandboxed',
                        'ug_user = user_id',
                );
+               $options = array( 'ORDER BY' => 'user_id desc' );
 
-               $res = $dbw->select( $tables, $fields, $conds, __METHOD__ );
+               $res = $dbw->select( $tables, $fields, $conds, __METHOD__, 
$options );
 
                return UserArray::newFromResult( $res );
        }

-- 
To view, visit https://gerrit.wikimedia.org/r/65099
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie9862692f2fe60fc32b6b010cfb6561f965bd78a
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Translate
Gerrit-Branch: master
Gerrit-Owner: Nikerabbit <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to