https://www.mediawiki.org/wiki/Special:Code/MediaWiki/112962

Revision: 112962
Author:   jeroendedauw
Date:     2012-03-03 21:08:56 +0000 (Sat, 03 Mar 2012)
Log Message:
-----------
add handling for when someone tries to enlist an already enlisted user

Modified Paths:
--------------
    trunk/extensions/EducationProgram/EducationProgram.i18n.php
    trunk/extensions/EducationProgram/EducationProgram.php
    trunk/extensions/EducationProgram/api/ApiEnlist.php
    trunk/extensions/EducationProgram/includes/EPCourse.php
    trunk/extensions/EducationProgram/includes/EPRoleObject.php
    trunk/extensions/EducationProgram/resources/ep.api.js
    trunk/extensions/EducationProgram/resources/ep.enlist.js
    trunk/extensions/EducationProgram/specials/SpecialDisenroll.php

Modified: trunk/extensions/EducationProgram/EducationProgram.i18n.php
===================================================================
--- trunk/extensions/EducationProgram/EducationProgram.i18n.php 2012-03-03 
20:34:29 UTC (rev 112961)
+++ trunk/extensions/EducationProgram/EducationProgram.i18n.php 2012-03-03 
21:08:56 UTC (rev 112962)
@@ -626,6 +626,7 @@
        'ep-instructor-adding' => 'Adding...',
        'ep-instructor-addittion-success' => '$1 has been successfully added as 
{{GENDER:$1|instructor}} for course $2!',
        'ep-instructor-addittion-self-success' => 'You have been successfully 
added as {{GENDER:$1|instructor}} for course $2!',
+       'ep-instructor-addittion-null' => '$1 has already been added as 
{{GENDER:$1|instructor}} to course $2',
        'ep-instructor-add-close-button' => 'Close',
        'ep-instructor-add-retry' => 'Retry',
        'ep-instructor-addittion-failed' => 'Something went wrong - could not 
add the instructor to the course.',
@@ -652,6 +653,7 @@
        'ep-online-adding' => 'Adding...',
        'ep-online-addittion-success' => '$1 has been successfully added as 
{{GENDER:$1|Online Ambassador}} for course $2!',
        'ep-online-addittion-self-success' => 'You have been successfully added 
as {{GENDER:$1|Online Ambassador}} for course $2!',
+       'ep-online-addittion-null' => '$1 has already been added as 
{{GENDER:$1|Online Ambassador}} to course $2',
        'ep-online-add-close-button' => 'Close',
        'ep-online-add-retry' => 'Retry',
        'ep-online-addittion-failed' => 'Something went wrong - could not add 
the Online Ambassador to the course.',
@@ -678,6 +680,7 @@
        'ep-campus-adding' => 'Adding...',
        'ep-campus-addittion-success' => '$1 has been successfully added as 
{{GENDER:$1|Campus Ambassador}} for course $2!',
        'ep-campus-addittion-self-success' => 'You have been successfully added 
as {{GENDER:$1|Campus Ambassador}} for course $2!',
+       'ep-campus-addittion-null' => '$1 has already been added as 
{{GENDER:$1|Campus Ambassador}} to course $2',
        'ep-campus-add-close-button' => 'Close',
        'ep-campus-add-retry' => 'Retry',
        'ep-campus-addittion-failed' => 'Something went wrong - could not add 
the Campus Ambassador to the course.',

Modified: trunk/extensions/EducationProgram/EducationProgram.php
===================================================================
--- trunk/extensions/EducationProgram/EducationProgram.php      2012-03-03 
20:34:29 UTC (rev 112961)
+++ trunk/extensions/EducationProgram/EducationProgram.php      2012-03-03 
21:08:56 UTC (rev 112962)
@@ -552,6 +552,9 @@
                'ep-instructor-addittion-self-success',
                'ep-online-addittion-self-success',
                'ep-campus-addittion-self-success',
+               'ep-instructor-addittion-null',
+               'ep-online-addittion-null',
+               'ep-campus-addittion-null',
                'ep-instructor-add-close-button',
                'ep-online-add-close-button',
                'ep-campus-add-close-button',

Modified: trunk/extensions/EducationProgram/api/ApiEnlist.php
===================================================================
--- trunk/extensions/EducationProgram/api/ApiEnlist.php 2012-03-03 20:34:29 UTC 
(rev 112961)
+++ trunk/extensions/EducationProgram/api/ApiEnlist.php 2012-03-03 21:08:56 UTC 
(rev 112962)
@@ -52,26 +52,32 @@
                        $this->dieUsage( wfMsg( 'ep-enlist-invalid-course' ), 
'invalid-course' );
                }
                
-               $success = false;
-
                $revAction = new EPRevisionAction();
                $revAction->setUser( $this->getUser() );
                $revAction->setComment( $params['reason'] );
 
                switch ( $params['subaction'] ) {
                        case 'add':
-                               $success = $course->enlistUsers( array( $userId 
), $params['role'], true, $revAction );
+                               $enlistmentResult = $course->enlistUsers( 
array( $userId ), $params['role'], true, $revAction );
                                break;
                        case 'remove':
-                               $success = $course->unenlistUsers( array( 
$userId ), $params['role'], true, $revAction );
+                               $enlistmentResult = $course->unenlistUsers( 
array( $userId ), $params['role'], true, $revAction );
                                break;
                }
                
                $this->getResult()->addValue(
                        null,
                        'success',
-                       $success
+                       $success = $enlistmentResult !== false
                );
+
+               if ( $enlistmentResult !== false ) {
+                       $this->getResult()->addValue(
+                               null,
+                               'count',
+                               $enlistmentResult
+                       );
+               }
        }
 
        /**

Modified: trunk/extensions/EducationProgram/includes/EPCourse.php
===================================================================
--- trunk/extensions/EducationProgram/includes/EPCourse.php     2012-03-03 
20:34:29 UTC (rev 112961)
+++ trunk/extensions/EducationProgram/includes/EPCourse.php     2012-03-03 
21:08:56 UTC (rev 112962)
@@ -565,7 +565,7 @@
         * @param boolean $save
         * @param EPRevisionAction|null $revAction
         *
-        * @return boolean Success indicator
+        * @return integer|false The amount of enlisted users or false on 
failiure
         */
        public function enlistUsers( $newUsers, $role, $save = true, 
EPRevisionAction $revAction = null ) {
                $roleMap = array(
@@ -595,10 +595,10 @@
                                $this->logRoleChange( $action, $role, 
$addedUsers, $revAction->getComment() );
                        }
 
-                       return $success;
+                       return $success ? count( $addedUsers ) : false;
                }
                else {
-                       return true;
+                       return 0;
                }
        }
 
@@ -614,7 +614,7 @@
         * @param boolean $save
         * @param EPRevisionAction|null $revAction
         *
-        * @return boolean Success indicator
+        * @return integer|false The amount of unenlisted users or false on 
failiure
         */
        public function unenlistUsers( $sadUsers, $role, $save = true, 
EPRevisionAction $revAction = null ) {
                $sadUsers = (array)$sadUsers;
@@ -656,10 +656,10 @@
                                $this->logRoleChange( $action, $role, 
$removedUsers, $revAction->getComment() );
                        }
 
-                       return $success;
+                       return $success ? count( $removedUsers ) : false;
                }
                else {
-                       return true;
+                       return 0;
                }
        }
 

Modified: trunk/extensions/EducationProgram/includes/EPRoleObject.php
===================================================================
--- trunk/extensions/EducationProgram/includes/EPRoleObject.php 2012-03-03 
20:34:29 UTC (rev 112961)
+++ trunk/extensions/EducationProgram/includes/EPRoleObject.php 2012-03-03 
21:08:56 UTC (rev 112962)
@@ -149,7 +149,7 @@
                foreach ( $courses as /* EPCourse */ $course ) {
                        $courseIds[] = $course->getId();
                        $course->setUpdateSummaries( false );
-                       $success = $course->enlistUsers( $this->getField( 
'user_id' ), $this->getRoleName() ) && $success;
+                       $success = $course->enlistUsers( $this->getField( 
'user_id' ), $this->getRoleName() ) !== false && $success;
                        $course->setUpdateSummaries( true );
                }
 

Modified: trunk/extensions/EducationProgram/resources/ep.api.js
===================================================================
--- trunk/extensions/EducationProgram/resources/ep.api.js       2012-03-03 
20:34:29 UTC (rev 112961)
+++ trunk/extensions/EducationProgram/resources/ep.api.js       2012-03-03 
21:08:56 UTC (rev 112962)
@@ -24,10 +24,10 @@
                                requestArgs,
                                function( data ) {
                                        if ( data.hasOwnProperty( 'success' ) 
&& data.success ) {
-                                               deferred.resolve();
+                                               deferred.resolve( data );
                                        }
                                        else {
-                                               deferred.reject();
+                                               deferred.reject( data );
                                        }
                                }
                        );

Modified: trunk/extensions/EducationProgram/resources/ep.enlist.js
===================================================================
--- trunk/extensions/EducationProgram/resources/ep.enlist.js    2012-03-03 
20:34:29 UTC (rev 112961)
+++ trunk/extensions/EducationProgram/resources/ep.enlist.js    2012-03-03 
21:08:56 UTC (rev 112962)
@@ -136,8 +136,8 @@
                        };
 
                        this.doAdd = function() {
-                               var $add = $( '#ep-' + role + '-add-button' );
-                               var $cancel = $( '#ep-' + role + 
'-add-cancel-button' );
+                               var $add = $( '#ep-' + role + '-add-button' ),
+                               $cancel = $( '#ep-' + role + 
'-add-cancel-button' );
 
                                $add.button( 'option', 'disabled', true );
                                $add.button( 'option', 'label', ep.msg( 'ep-' + 
role + '-adding' ) );
@@ -147,9 +147,18 @@
                                        'username': _this.getName(),
                                        'reason': _this.summaryInput.val(),
                                        'role': role
-                               } ).done( function() {
+                               } ).done( function( data ) {
+                                       var     messageKey = null;
+
+                                       if ( data.count === 0 ) {
+                                               messageKey = 'ep-' + role + 
'-addittion-null';
+                                       }
+                                       else {
+                                               messageKey = this.selfMode ? 
'ep-' + role + '-addittion-self-success' : 'ep-' + role + '-addittion-success';
+                                       }
+
                                        _this.$dialog.text( ep.msg(
-                                               _this.selfMode ? 'ep-' + role + 
'-addittion-self-success' : 'ep-' + role + '-addittion-success',
+                                               messageKey,
                                                _this.getName(),
                                                _this.courseName
                                        ) );
@@ -158,16 +167,18 @@
                                        $cancel.button( 'option', 'label', 
ep.msg( 'ep-' + role + '-add-close-button' ) );
                                        $cancel.focus();
 
-                                       // TODO: link name to user page and 
show control links
-                                       $ul = $( '#ep-course-' + role ).find( 
'ul' );
+                                       if ( data.count > 0 ) {
+                                               // TODO: link name to user page 
and show control links
+                                               $ul = $( '#ep-course-' + role 
).find( 'ul' );
 
-                                       if ( $ul.length < 1 ) {
-                                               $ul = $( '<ul>' );
-                                               $( '#ep-course-' + role ).html( 
$ul );
+                                               if ( $ul.length < 1 ) {
+                                                       $ul = $( '<ul>' );
+                                                       $( '#ep-course-' + role 
).html( $ul );
+                                               }
+
+                                               $ul.append( $( '<li>' ).text( 
_this.getName() ) );
                                        }
-
-                                       $ul.append( $( '<li>' ).text( 
_this.getName() ) )
-                               } ).fail( function() {
+                               } ).fail( function( data ) {
                                        // TODO: implement nicer handling for 
fails caused by invalid user name
 
                                        $add.button( 'option', 'disabled', 
false );

Modified: trunk/extensions/EducationProgram/specials/SpecialDisenroll.php
===================================================================
--- trunk/extensions/EducationProgram/specials/SpecialDisenroll.php     
2012-03-03 20:34:29 UTC (rev 112961)
+++ trunk/extensions/EducationProgram/specials/SpecialDisenroll.php     
2012-03-03 21:08:56 UTC (rev 112962)
@@ -172,7 +172,7 @@
                        'student',
                        true,
                        $revAction
-               );
+               ) !== false;
 
                if ( $success ) {
                        $this->showSuccess( wfMessage( 'ep-disenroll-success' ) 
);


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

Reply via email to