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